Name: series-workflowwpq4k Phase: Failed StartedAt: 2026-09-14 11:52:52 +0000 UTC FinishedAt: 2026-09-14 11:59:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpq4k[0] Phase: Succeeded StartedAt: 2026-09-14 11:52:52 +0000 UTC FinishedAt: 2026-09-14 11:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpq4k[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 11:52:52 +0000 UTC FinishedAt: 2026-09-14 11:59:48 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTM4OTMyMmFiOTc5ZDhiOGI3NzY1MDQ4ZDRmY2Q0ODg5YjQyN2RjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDExOjU0OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbkBAIC0zMjIsMTAgJiM0MzszMjIsMTYgQEAgdm9pZCBfX3NobWVtX3dyaXRlYmFjayhzaXplX3Qgc2l6ZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpXG4gXHQgKiBhcyBub3JtYWwuXG4gXHQgKi9cbiBcdHdoaWxlICgoZm9saW8gPSB3cml0ZWJhY2tfaXRlcihtYXBwaW5nLCBcdTAwMjZ3YmMsIGZvbGlvLCBcdTAwMjZlcnJvcikpKSB7XG4tXHRcdGlmIChmb2xpb19tYXBwZWQoZm9saW8pKVxuJiM0MztcdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcbiBcdFx0XHRmb2xpb19yZWRpcnR5X2Zvcl93cml0ZXBhZ2UoXHUwMDI2d2JjLCBmb2xpbyk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyb3IgPSBzaG1lbV93cml0ZV9mb2xpbyhmb2xpbyk7XG4mIzQzO1x0XHRcdGlmIChlcnJvciA9PSBBT1BfV1JJVEVQQUdFX0FDVElWQVRFKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdFx0XHRlcnJvciA9IDA7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTM4OTMyMmFiOTc5ZDhiOGI3NzY1MDQ4ZDRmY2Q0ODg5YjQyN2RjNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDExOjU0OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwppbmRleCBlZjk0NDAxNjYyOTU1Li5lN2IxOGY3Zjk2NDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwpAQCAtMzIyLDEwICYjNDM7MzIyLDE2IEBAIHZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQogCSAqIGFzIG5vcm1hbC4KIAkgKi8KIAl3aGlsZSAoKGZvbGlvID0gd3JpdGViYWNrX2l0ZXIobWFwcGluZywgJmFtcDt3YmMsIGZvbGlvLCAmYW1wO2Vycm9yKSkpIHsKLQkJaWYgKGZvbGlvX21hcHBlZChmb2xpbykpCiYjNDM7CQlpZiAoZm9saW9fbWFwcGVkKGZvbGlvKSkgewogCQkJZm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKCZhbXA7d2JjLCBmb2xpbyk7Ci0JCWVsc2UKJiM0MzsJCQlmb2xpb191bmxvY2soZm9saW8pOwomIzQzOwkJfSBlbHNlIHsKIAkJCWVycm9yID0gc2htZW1fd3JpdGVfZm9saW8oZm9saW8pOwomIzQzOwkJCWlmIChlcnJvciA9PSBBT1BfV1JJVEVQQUdFX0FDVElWQVRFKSB7CiYjNDM7CQkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiYjNDM7CQkJCWVycm9yID0gMDsKJiM0MzsJCQl9CiYjNDM7CQl9CiAJfQogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgQ29udGV4dCBmb3IgQWNjZXNzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY2AuIFRoZSBjb2RlIGl0c2VsZiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIGFkanVzdGluZyB0aGUgaGFuZGxpbmcgb2YgZm9saW8gd3JpdGViYWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGxvY2tpbmcgYW5kIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBhIGZvbGlvIGlzbiYjMzk7dCBtYXBwZWQuIEJ1dCwgYXMgYW4gZXhwZXJ0IGluIHRoaXMsIEkga25vdyB0aGUgcmVhbCBxdWVzdGlvbiBpcyAqd2hlcmUqIHRoaXMgY29kZSBleGVjdXRlcyBhbmQgd2hldGhlciBpdCYjMzk7cyByZWxldmFudCBpbiBvdXIgdGVzdGluZyBjb250ZXh0LgoKVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYGk5MTVgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHRoZXNlIGVudmlyb25tZW50cyBhcmVuJiMzOTt0IHBlcmZlY3QgZW11bGF0b3JzIGZvciAqZXZlcnkqIHBpZWNlIG9mIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHNwZWNpYWxpemVkIGRldmljZXMuCgpUaGUgcHJvbXB0LCBzcGVjaWZpY2FsbHkgc2VjdGlvbiAyLCBoaWdobGlnaHRzICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsg4oCTIGFuZCBpdCBleHBsaWNpdGx5IGxpc3RzIHNldmVyYWwgZXhhbXBsZXMuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9uOiBpcyBgaTkxNWAgb25lIG9mIHRob3NlIHVucmVhY2hhYmxlIGNvbXBvbmVudHM/IFFFTVUsIGluIGdlbmVyYWwsIGRvZXNuJiMzOTt0IGVtdWxhdGUgaGFyZHdhcmUgbGlrZSBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzLiBJdCBvZmZlcnMgKm90aGVyKiB2aXJ0dWFsaXplZCBncmFwaGljcyBkZXZpY2VzIGxpa2UgYm9jaHMtZHJtLCB2aXJ0aW8tZ3B1LCBhbmQgc28gb24uIEJ1dCwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGZ1bGwgYGk5MTVgIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IGZvciByZWNlbnQgZ2VuZXJhdGlvbnMsIGlzIGEgbm8tZ28gaW4gc3RhbmRhcmQgUUVNVS4gSXQmIzM5O3MgZWl0aGVyIGhhcmR3YXJlIHBhc3N0aHJvdWdoIG9yLCBtYXliZSwgR1ZULWcsIHdoaWNoIGFsc28gaW1wbGllcyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb24gdGhlIGhvc3QuCgpUaGVyZWZvcmUsIGlzIGBpOTE1YCBsaWtlIGBhbWRncHVgIG9yIGBub3V2ZWF1YCwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmQgYW5kIHRodXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/CgpJIG5lZWQgdG8gY29uZmlybSBpZiBgaTkxNWAgZXZlbiAqaGFzKiBhIG1vY2sgb3IgZHVtbXkgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBpdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgaW4gdGhpcyBzY2VuYXJpbywgb3IgaWYgc3l6a2FsbGVyIHRhcmdldHMgaXQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBHaXQgbG9ncyB0byBnZXQgYSBzb2xpZCBhbnN3ZXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgKmFueSogdmlhYmxlIHBhdGggdG8gZnV6emluZyB0aGlzIGNvZGUgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzIG9yIHdpdGggc29tZSBzaW11bGF0ZWQvZW11bGF0ZWQgbW9kZS4gSSB3aWxsIGFsc28gcmUtcmVhZCB0aGUgcHJvbXB0IGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRFJNX0k5MTUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTM0MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL2k5MTUvLmt1bml0Y29uZmlnPTc9Q09ORklHX0RSTT15XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc6ODpDT05GSUdfRFJNX0k5MTU9eVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvLmt1bml0Y29uZmlnOjk6Q09ORklHX0RSTV9JOTE1X0tVTklUX1RFU1Q9eVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSAmIzQzOz0gJChjYWxsIGNjLW9wdGlvbiwgLVdmb3JtYXQtdHJ1bmNhdGlvbilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS05LSMgRW5hYmxlIC1XZXJyb3IgaW4gQ0kgYW5kIGRldmVsb3BtZW50XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZToxMDpzdWJkaXItY2NmbGFncy0kKENPTkZJR19EUk1fSTkxNV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0xMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT0zMzc9aTkxNS15ICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjM4NjppOTE1LSQoQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODctXHRkaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTozODk6b2JqLSQoQ09ORklHX0RSTV9JOTE1X0tVTklUX1RFU1QpICYjNDM7PSBkaXNwbGF5L3Rlc3RzL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtMzkwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6MzkxOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfR1ZUKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM5Mi1cdGRpc3BsYXkvaW50ZWxfZ3Z0X2FwaS5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9Mzk4PWk5MTUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MDItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MDM6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9QWFApICYjNDM7PSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDA0LVx0cHhwL2ludGVsX3B4cF9jbWQubyBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMS0jIFBvc3QtbW9ydGVtIGRlYnVnIGFuZCBHUFUgaGFuZyBzdGF0ZSBjYXB0dXJlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MTI6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMy1cdGk5MTVfZ3B1X2Vycm9yLm9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQxNDppOTE1LSQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxNS1cdGdlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5vIFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDI5PWk5MTUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MzI6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9HVlQpICYjNDM7PSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDMzLVx0aW50ZWxfZ3Z0Lm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00MzU9aW5jbHVkZSAkKHNyYykvZ3Z0L01ha2VmaWxlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0Mzc6b2JqLSQoQ09ORklHX0RSTV9JOTE1KSAmIzQzOz0gaTkxNS5vXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0Mzg6b2JqLSQoQ09ORklHX0RSTV9JOTE1X0dWVF9LVk1HVCkgJiM0Mzs9IGt2bWd0Lm9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQzOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NDEtI1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDQyOiMgRW5hYmxlIGxvY2FsbHkgZm9yIENPTkZJR19EUk1fSTkxNV9XRVJST1I9eS4gU2VlIGFsc28gc2NyaXB0cy9NYWtlZmlsZS5idWlsZFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDQzOmlmZGVmIENPTkZJR19EUk1fSTkxNV9XRVJST1JcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQ0NC0gICAgY21kX2NoZWNrZG9jID0gUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MSAkKFBZVEhPTjMpICQoS0VSTkVMRE9DKSAtbm9uZSAtV2Vycm9yICRcdTAwM2Ncbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00NTA9bm8taGVhZGVyLXRlc3QgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NTItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0NTM6YWx3YXlzLSQoQ09ORklHX0RSTV9JOTE1X1dFUlJPUikgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NTQtXHQkKHBhdHN1YnN0ICUuaCwlLmhkcnRlc3QsICQoZmlsdGVyLW91dCAkKG5vLWhlYWRlci10ZXN0KSwgXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz01ODc9dm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02NTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTY1OC1zdGF0aWMgdm9pZCBkYmdfdmJsYW5rX2V2YWRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBrdGltZV90IGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jPTQxMj1zdGF0aWMgdm9pZCBpbnRlbF9zY2FsZXJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMtNDQwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYzo0NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMtNDQyLXN0YXRpYyB2b2lkIGNydGNfdXBkYXRlc19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz01MjY9c3RhdGljIHZvaWQgX19hc3luY19wdXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNTM0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6NTM1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNTM2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTYxOT12ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy02MjItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzo2MjM6I2VuZGlmIC8qIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy02MjQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9OTk2PWludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29ya19zeW5jKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwMDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDA4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTAwOS0vKipcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDQ5PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDU3LVx0d2YgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkaXNwbGF5LCBkb21haW4pO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MTA1ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNTktXHRwb3dlcl9kb21haW5fc2V0LVx1MDAzZXdha2VyZWZzW2RvbWFpbl0gPSB3Zjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDY1PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldF9pZl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNzYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA3OC1cdHBvd2VyX2RvbWFpbl9zZXQtXHUwMDNld2FrZXJlZnNbZG9tYWluXSA9IHdmO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTEwODY9aW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfbWFza19pbl9zZXQoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXksXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA5Ny1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jOjEwOTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDk5LVx0XHR3ZiA9IGZldGNoX2FuZF96ZXJvKFx1MDAyNnBvd2VyX2RvbWFpbl9zZXQtXHUwMDNld2FrZXJlZnNbZG9tYWluXSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MjMyNT1zdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0yMzM4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MjMzOTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTIzNDAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmg9MTk1PXN0cnVjdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zZXQge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgtMTk2LVx0c3RydWN0IGludGVsX3Bvd2VyX2RvbWFpbl9tYXNrIG1hc2s7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoxOTc6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0xOTgtXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKndha2VyZWZzW1BPV0VSX0RPTUFJTl9OVU1dO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oPTI0MD12b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29yayhzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoyNDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0yNDItdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbC5jPTUxOD1pY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXksXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyX3dlbGwuYy01MzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbC5jOjUzODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oPTE0OTY9c3RydWN0IGludGVsX2NydGMge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oLTE1NjItXHRcdGludCBzY2FubGluZV9zdGFydDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oOjE1NjM6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19WQkxBTktfRVZBREVcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oLTE1NjQtXHRcdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaD0yMT1zdHJ1Y3QgaW50ZWxfbGlua19id19saW1pdHM7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oLTIyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaDoyMzojaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoSTkxNSkpIHx8IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oLTI0LVx0KElTX0VOQUJMRUQoQ09ORklHX0RSTV9YRV9EUF9UVU5ORUwpIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChJOTE1KSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oPTE1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZHBfdHVubmVsX21ncl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KSB7fVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oOjE1NzojZW5kaWYgLyogQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCB8fCBDT05GSUdfRFJNX1hFX0RQX1RVTk5FTCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTQ3PXN0cnVjdCBpbnRlbF90Y19wb3J0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtNTMtXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKmxvY2tfd2FrZXJlZjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy01NS1cdGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gbG9ja19wb3dlcl9kb21haW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE5NT10Y19jb2xkX2Jsb2NrKHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAwLVx0d2FrZXJlZiA9IF9fdGNfY29sZF9ibG9jayh0YywgXHUwMDI2ZG9tYWluKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAyLVx0dGMtXHUwMDNlbG9ja19wb3dlcl9kb21haW4gPSBkb21haW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTIxNz10Y19jb2xkX3VuYmxvY2soc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBzdHJ1Y3QgcmVmX3RyYWNrZXIgKndha2VyZWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTIyMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjIzLVx0ZHJtX1dBUk5fT04oZGlzcGxheS1cdTAwM2Vkcm0sIHRjLVx1MDAzZWxvY2tfcG93ZXJfZG9tYWluICE9IGRvbWFpbik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZT0zPXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS00LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSAmIzQzOz0gaTkxNV9kaXNwbGF5X3Rlc3Qub1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS02LWk5MTVfZGlzcGxheV90ZXN0LXkgPSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9OTc1PXN0YXRpYyBpbnQgaW50ZWxfY29udGV4dF9zZXRfZ2VtKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTk5OC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM6OTk5Olx0aWYgKENPTkZJR19EUk1fSTkxNV9SRVFVRVNUX1RJTUVPVVQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTEwMDAtXHQgICAgY3R4LVx1MDAzZWk5MTUtXHUwMDNlcGFyYW1zLnJlcXVlc3RfdGltZW91dF9tcykge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjExND1zdGF0aWMgaW50IHNldF9jb250ZXh0X2ltYWdlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yMTIzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyMTI0Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTIxMjUtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjY3Nj1pOTE1X2dlbV9lbmdpbmVzX2l0ZXJfbmV4dChzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTMtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI2OTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yNjk1LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjcwND1pbnQgX19pbml0IGk5MTVfZ2VtX2NvbnRleHRfbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI3MDktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfUkVQTEFZX0dQVV9IQU5HU19BUEkpKSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI3MTEtXHRcdHByX25vdGljZShcJiMzNDsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yNzE2LVx0XHRlbHNlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTc6XHRcdFx0cHJfbm90aWNlKFwmIzM0OyoqIENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSBidWlsZHMgYXJlIGludGVuZGVkICoqXFxuXCYjMzQ7KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxOC1cdFx0cHJfbm90aWNlKFwmIzM0OyoqIGZvciBzcGVjaWZpYyB1c2Vyc3BhY2UgZ3JhcGhpY3Mgc3RhY2sgZGV2ZWxvcGVycyBvbmx5ISAgICoqXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmM9MjgxPXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqaTkxNV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYzozNDQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvbW9ja19kbWFidWYuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM9NDk9ZW51bSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy03OC0vKiBDYXRjaCBlbWlzc2lvbiBvZiB1bmV4cGVjdGVkIGVycm9ycyBmb3IgQ0khICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jOjc5OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTgwLSN1bmRlZiBFSU5WQUxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTI0NT1zdHJ1Y3QgaTkxNV9leGVjYnVmZmVyIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTMxNC1cdHVuc2lnbmVkIGxvbmcgbnVtX2ZlbmNlcztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM6MzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0zMTYtXHRzdHJ1Y3QgaTkxNV9jYXB0dXJlX2xpc3QgKmNhcHR1cmVfbGlzdHNbTUFYX0VOR0lORV9JTlNUQU5DRSAmIzQzOyAxXTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTE5NzM9ZWJfZmluZF9maXJzdF9yZXF1ZXN0X2FkZGVkKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM6MTk4NjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUilcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4Ny1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTMzOD1zdGF0aWMgdm1fZmF1bHRfdCB2bV9mYXVsdF9ndHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy00NzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ3ODpcdGlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy00NzktXHRcdGludGVsX3dha2VyZWZfYXV0byhcdTAwMjZpOTE1LVx1MDAzZXJ1bnRpbWVfcG0udXNlcmZhdWx0X3dha2VyZWYsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ4MDpcdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTQ4MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTExMTY9aW50IGk5MTVfZ2VtX2ZiX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTUzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYzoxMTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtMTE1NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jPTk2MD1ib29sIGk5MTVfZ2VtX29iamVjdF9oYXNfdW5rbm93bl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYy05NzAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmM6OTcxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYy05NzItI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL2h1Z2VfZ2VtX29iamVjdC5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BoeXMuYz0yMjc9aW50IGk5MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgYWxpZ24pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BoeXMuYy0yNjMtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jOjI2NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jLTI2NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jPTU5Nz1zdGF0aWMgdm9pZCBkYmdfcG9pc29uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jLTYwMC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmM6NjAxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMtNjAyLVx0aWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoXHUwMDI2Z2d0dC1cdTAwM2VlcnJvcl9jYXB0dXJlKSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9MTA0Mj1zdGF0aWMgdm1fZmF1bHRfdCB2bV9mYXVsdF90dG0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM6MTE0MTpcdGlmICh3YWtlcmVmIFx1MDAyNlx1MDAyNiBDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EICE9IDApXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtMTE0Mi1cdFx0aW50ZWxfd2FrZXJlZl9hdXRvKFx1MDAyNnRvX2k5MTUob2JqLVx1MDAzZWJhc2UuZGV2KS1cdTAwM2VydW50aW1lX3BtLnVzZXJmYXVsdF93YWtlcmVmLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjExNDM6XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmMtMzItICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuYzozMzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuYy0zNC1zdGF0aWMgYm9vbCBmYWlsX2dwdV9taWdyYXRpb247XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jPTYzOD1ib29sIGludGVsX2NvbnRleHRfcmV2b2tlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jOjY0ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ5LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2NvbnRleHQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaD0zNzM9aW50ZWxfY29udGV4dF9jbGVhcl9ub3ByZWVtcHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaC0zNzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0Lmg6Mzc4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaC0zNzktc3RhdGljIGlubGluZSBib29sIGludGVsX2NvbnRleHRfaGFzX293bl9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oPTc3PXN0cnVjdCBpbnRlbF9jb250ZXh0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgtMzA4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oOjMwOTojaWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgtMzEwLVx0LyoqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzAxPWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdF9yZXNldChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMDIte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MzAzOlx0aWYgKCFDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgtMzA0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzM4PWludGVsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oLTMzOS17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaDozNDA6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zNDEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz00NDk9c3RhdGljIGludCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTEwLVx0ZW5naW5lLVx1MDAzZXByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcyA9XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTE6XHRcdENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUw7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTItXHRlbmdpbmUtXHUwMDNlcHJvcHMubWF4X2J1c3l3YWl0X2R1cmF0aW9uX25zID1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxMzpcdFx0Q09ORklHX0RSTV9JOTE1X01BWF9SRVFVRVNUX0JVU1lXQUlUO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTE0LVx0ZW5naW5lLVx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTU6XHRcdENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTYtXHRlbmdpbmUtXHUwMDNlcHJvcHMuc3RvcF90aW1lb3V0X21zID1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxNzpcdFx0Q09ORklHX0RSTV9JOTE1X1NUT1BfVElNRU9VVDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxOC1cdGVuZ2luZS1cdTAwM2Vwcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTE5Olx0XHRDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNFX0RVUkFUSU9OO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTIwLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyNy1cdGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTIgXHUwMDI2XHUwMDI2IChlbmdpbmUtXHUwMDNlZmxhZ3MgXHUwMDI2IEk5MTVfRU5HSU5FX0hBU19SQ1NfUkVHX1NUQVRFKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUyODpcdFx0ZW5naW5lLVx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVRfQ09NUFVURTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz0yNTQxPXZvaWQgeGVocF9lbmFibGVfY2NzX2VuZ2luZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTI1NTctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzoyNTU4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTI1NTktI2luY2x1ZGUgXCYjMzQ7bW9ja19lbmdpbmUuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYz0xMjA9cmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMTIxLXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoxMjI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0xMjMtXHRcdHNob3dfaGVhcnRiZWF0KHJxLCBlbmdpbmUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYz0yNDU9dm9pZCBpbnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMjQ2LXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoyNDc6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMjQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTM5Mz1pbnQgaW50ZWxfZW5naW5lX2ZsdXNoX2JhcnJpZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtNDI2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jOjQyNzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtNDI4LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jPTM1PXN0YXRpYyB2b2lkIGRiZ19wb2lzb25fY2Uoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMtMzYte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmM6Mzc6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zOC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jPTMxMT12b2lkIGludGVsX2VuZ2luZV9yZXNldF9waW5uZWRfY29udGV4dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jOjMyNjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zMjctI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfZW5naW5lX3BtLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaD02ODM9aW50ZWxfZW5naW5lX2hhc190aW1lc2xpY2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oLTY4NC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaDo2ODU6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT04pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC02ODYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jPTIwNj12b2lkIGludGVsX2VuZ2luZXNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMtMjYxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjM6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYy0yNjQtXHRcdHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNT1leGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nIHN0YXR1cylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMC1cdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0MjE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0dWVCkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NDcyPV9fZXhlY2xpc3RzX3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg1LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0ODY6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg3LVx0XHRscmNfY2hlY2tfcmVncyhjZSwgZW5naW5lLCBcJiMzNDtiZWZvcmVcJiMzNDspO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NTg2PXN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgcnEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy02MDAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjYwMTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy02MDItXHRcdGxyY19jaGVja19yZWdzKGNlLCBlbmdpbmUsIFwmIzM0O2FmdGVyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTk0MT1zdGF0aWMgYm9vbCBjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTk0Mi17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjk0MzpcdHJldHVybiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfR1ZUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtOTQ0LVx0XHRpbnRlbF9jb250ZXh0X2ZvcmNlX3NpbmdsZV9zdWJtaXNzaW9uKGNlKSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yMzI1PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTIzMjktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjIzMzA6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yMzMxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yNDEwPXN0YXRpYyBib29sIHByZWVtcHRfdGltZW91dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpjb25zdCBlbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yNDEzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyNDE0Olx0aWYgKCFDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yNDE1LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yODU0PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yODY2LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjI4Njc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjg2OC1cdFx0bWVtc2V0KGVuZ2luZS1cdTAwM2VzdGF0dXNfcGFnZS5hZGRyLCBQT0lTT05fSU5VU0UsIFBBR0VfU0laRSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0zNDcyLVx0XHRcdGVuZ2luZS1cdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfUFJFRU1QVElPTjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6MzQ3MzpcdFx0XHRpZiAoQ09ORklHX0RSTV9JOTE1X1RJTUVTTElDRV9EVVJBVElPTilcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQ3NC1cdFx0XHRcdGVuZ2luZS1cdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElNRVNMSUNFUztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNTk9dm9pZCBpbnRlbF9leGVjbGlzdHNfZHVtcF9hY3RpdmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDE3NC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDE3NTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzYtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfZXhlY2xpc3RzLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jPTYzMT1zdGF0aWMgaW50IF9fZW5naW5lc192ZXJpZnlfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jLTYzNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmM6NjM3Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYy02MzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmM9MTcyPXZvaWQgaW50ZWxfZ3RfaW5pdF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE4OS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmM6MTkwOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE5MS12b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmg9MTM9dm9pZCBpbnRlbF9ndF9pbml0X2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmgtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oOjE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oLTE2LXZvaWQgaW50ZWxfZ3RfY2hlY2tfY2xvY2tfZnJlcXVlbmN5KGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9NDE5PWt0aW1lX3QgaW50ZWxfZ3RfZ2V0X2F3YWtlX3RpbWUoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jLTQzMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6NDMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMtNDMzLSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2d0X3BtLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYz0zNDY9c3RhdGljIHZvaWQgcG9pc29uX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2NyYXRjaClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy0zNTEtXHR2YWwgPSAwO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmM6MzUyOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy0zNTMtXHRcdHZhbCA9IFBPSVNPTl9GUkVFO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTcxNj1fX3ZtX2NyZWF0ZV9zY3JhdGNoX2Zvcl9yZWFkX3Bpbm5lZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jLTczNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jOjczNTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy03MzYtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL21vY2tfZ3R0LmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0zNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjM3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9UUkFDRV9HVFQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0zOC0jZGVmaW5lIEdUVF9UUkFDRSguLi4pIHRyYWNlX3ByaW50ayhfX1ZBX0FSR1NfXylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYz0xNTc9dm9pZCBpbnRlbF9sbGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmMtMTYxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmM6MTYyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jLTE2My0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9sbGMuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jPTk2Nz1zZXRfcmVkem9uZSh2b2lkICp2YWRkciwgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTY4LXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjk2OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jPTk3OD1jaGVja19yZWR6b25lKGNvbnN0IHZvaWQgKnZhZGRyLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy05Nzkte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6OTgwOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTgxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTA3ND1fX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xMDgxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTA4MjpcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtMTA4My1cdFx0Y29udGV4dF9zaXplICYjNDM7PSBJOTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTkzMD1zdGF0aWMgdm9pZCBzdF9ydW50aW1lX3VuZGVyZmxvdyhzdHJ1Y3QgaW50ZWxfY29udGV4dF9zdGF0cyAqc3RhdHMsIHMzMiBkdClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzEte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTkzMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTMzLVx0c3RhdHMtXHUwMDNlcnVudGltZS5udW1fdW5kZXJmbG93JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz0xOTUwPXZvaWQgbHJjX3VwZGF0ZV9ydW50aW1lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTcyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTk3MzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTc0LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2xyYy5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jPTExNTE9dm9pZCBpbnRlbF9taWdyYXRlX2Zpbmkoc3RydWN0IGludGVsX21pZ3JhdGUgKm0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jLTExNjEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmM6MTE2MjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmMtMTE2My0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9taWdyYXRlLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmM9NjY2PXZvaWQgaW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4Ni1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYzo2ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4OC0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9tb2NzLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYz04NTc9dm9pZCBpbnRlbF9yYzZfcHJpbnRfcmVzaWRlbmN5KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqdGl0bGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODY5LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmM6ODcwOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5jLTg3MS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9yYzYuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTcxNz1ib29sIGludGVsX2VuZ2luZV9yZXNldF9uZWVkc193YV8yMjAxMTgwMjAzNyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTczMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTczMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTE3MzItI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfcmVzZXQuY1wmIzM0O1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDI3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvbXB0JiMzOTtzIEhhcmR3YXJlIExpbWl0YXRpb25zKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIExldCYjMzk7cyByZWFsbHkgZGlzc2VjdCB0aGlzIHByb21wdC4gSXQmIzM5O3MgaGlnaGxpZ2h0aW5nICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMuIFRoZSBleGFtcGxlcyBnaXZlbiDigJMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUg4oCTIGFsbCBoYXZlIHRoaXMgY2F2ZWF0OiB0aGV5ICpyZXF1aXJlKiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIGFuZCBjcml0aWNhbGx5LCB0aGVzZSBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaTkxNS4gSXMgKml0KiBzdWJqZWN0IHRvIHRoZSBzYW1lIGxpbWl0YXRpb25zPyBEb2VzIGk5MTUgZGVtYW5kIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgb3IgY291bGQgaXQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50PwoKVGhlIGNvcmUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBEb2VzIFFFTVUsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBvZmZlciBhbnkgZW11bGF0aW9uIHN1cHBvcnQgZm9yIEludGVsJiMzOTtzIGludGVncmF0ZWQgR1BVcywgc3BlY2lmaWNhbGx5IHRoZSBpOTE1PyBUaGF0JiMzOTtzIGEgcmVzb3VuZGluZyAmIzM0O25vJiMzNDsgYmFzZWQgb24gbXkgZXhwZXJpZW5jZS4gUUVNVSBoYXNuJiMzOTt0IGhpc3RvcmljYWxseSBpbmNsdWRlZCBhbiBJbnRlbCBpbnRlZ3JhdGVkIEdQVSBlbXVsYXRvciBmb3IgaTkxNS4KClNvLCB0aGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiBpOTE1IGNhbiBldmVuIGJlIHByb2JlZCBvciBpbml0aWFsaXplZCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIOKAkyBwb3RlbnRpYWxseSBkaXZpbmcgaW50byBgaTkxNV9wY2kuY2Agb3IgZXhhbWluaW5nIGhvdyBpOTE1IGJpbmRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCByZXF1aXJlcyBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlci4qaTkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmM9MTAzNz1pbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jLTEwMzgte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYzoxMDM5Olx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMtMTA0MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMjIKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBpOTE1IFBDSSBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBpOTE1X3BjaV9kcml2ZXJgLCBhbmQgSSYjMzk7bGwganVtcCByaWdodCBpbnRvIGBpOTE1X3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGhvdyBpdCYjMzk7cyBtYW5hZ2luZyB0aGUgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZDogdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY2Vzc2VzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgQkFSIG1hcHBpbmdzIG9yIGludGVycnVwdCBoYW5kbGluZyBzdHJhdGVnaWVzPyBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgbW1pbyByZWdpb25zIGFuZCBoYW5kbGluZyB0aGUgdmFyaW91cyBwbGF0Zm9ybSBxdWlya3MgdGhhdCBhbHdheXMgc2VlbSB0byBwb3AgdXAuIFRoaXMgZmlsZSBpcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMjA6XHRcbjEwMjE6XHRzdGF0aWMgdm9pZCBpOTE1X3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjEwMjI6XHR7XG4xMDIzOlx0XHRzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHBkZXZfdG9faTkxNShwZGV2KTtcbjEwMjQ6XHRcbjEwMjU6XHRcdGk5MTVfZHJpdmVyX3NodXRkb3duKGk5MTUpO1xuMTAyNjpcdH1cbjEwMjc6XHRcbjEwMjg6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaTkxNV9wY2lfZHJpdmVyID0ge1xuMTAyOTpcdFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbjEwMzA6XHRcdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcbjEwMzE6XHRcdC5wcm9iZSA9IGk5MTVfcGNpX3Byb2JlLFxuMTAzMjpcdFx0LnJlbW92ZSA9IGk5MTVfcGNpX3JlbW92ZSxcbjEwMzM6XHRcdC5zaHV0ZG93biA9IGk5MTVfcGNpX3NodXRkb3duLFxuMTAzNDpcdFx0LmRyaXZlci5wbSA9IFx1MDAyNmk5MTVfcG1fb3BzLFxuMTAzNTpcdH07XG4xMDM2Olx0XG4xMDM3Olx0aW50IGk5MTVfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuMTAzODpcdHtcbjEwMzk6XHRcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmk5MTVfcGNpX2RyaXZlcik7XG4xMDQwOlx0fVxuMTA0MTpcdFxuMTA0MjpcdHZvaWQgaTkxNV9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEwNDM6XHR7XG4xMDQ0Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcbjEwNDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3OTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgaTkxNSBQQ0kgSUQgTGlzdCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBJbnRlbCBpOTE1IGdyYXBoaWNzIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gdGhlIFBDSSBidXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBpOTE1X3BjaS5jYCBzb3VyY2UgY29kZS4gVGhlIGBwY2lpZGxpc3RgIHZhcmlhYmxlIGlzIG15IGZpcnN0IHN0b3AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIG1hdGNoaW5nIG1hZ2ljIGxpa2VseSBoYXBwZW5zLCB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBrbm93aW5nIHdoaWNoIGRldmljZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbmQgaG93IHRvIGhhbmRsZSB0aGVtIGNvcnJlY3RseS4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgZW51bWVyYXRlZCwgaG93IHRoZSBJRHMgYXJlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IHZlbmRvci9kZXZpY2UgY29tYmluYXRpb25zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgbGlzdCBvZiBQQ0kgZGV2aWNlIElEcyB0aGF0IHRoZSBkcml2ZXIgcmVjb2duaXplcywgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIGZsYWdzIG9yIGRhdGEgdGhhdCB0ZWxsIHRoZSBkcml2ZXIgaG93IHRvIGluaXRpYWxpemUgb3IgaW50ZXJhY3Qgd2l0aCBlYWNoIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IHN1Z2dlc3QgdGhlIGFkZGl0aW9uIG9yIGFsdGVyYXRpb24gb2YgZGV2aWNlIHN1cHBvcnQgb3ZlciB0aW1lLCBhbmQgYW55IHRyZW5kcyBpbiBob3cgZGlmZmVyZW50IHJldmlzaW9ucyBhcmUgaGFuZGxlZC4gVGhlcmUgbWlnaHQgYmUgc29tZSBpbnRlcmVzdGluZyBxdWlya3MgaW4gdGhlIGxpc3QgdG9vLCBwb3RlbnRpYWxseSBzb21lIGVudHJpZXMgdGhhdCByZXF1aXJlZCBzcGVjaWZpYyB3b3JrYXJvdW5kcyBvciBoYW5kbGluZyBvZiBlZGdlIGNhc2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NTA6XHRzdGF0aWMgYm9vbCBpbnRlbF9tbWlvX2Jhcl92YWxpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbnRlbF9pbmZvKVxuIDk1MTpcdHtcbiA5NTI6XHRcdHJldHVybiBpOTE1X3BjaV9yZXNvdXJjZV92YWxpZChwZGV2LCBpbnRlbF9tbWlvX2JhcihpbnRlbF9pbmZvLVx1MDAzZV9fcnVudGltZS5ncmFwaGljcy5pcC52ZXIpKTtcbiA5NTM6XHR9XG4gOTU0Olx0XG4gOTU1Olx0c3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiA5NTY6XHR7XG4gOTU3Olx0XHRzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmludGVsX2luZm8gPVxuIDk1ODpcdFx0XHQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICopIGVudC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiA5NTk6XHRcdGludCBlcnI7XG4gOTYwOlx0XG4gOTYxOlx0XHRpZiAoIWludGVsX2luZm8pXG4gOTYyOlx0XHRcdHJldHVybiAtRU5PREVWO1xuIDk2MzpcdFxuIDk2NDpcdFx0aWYgKGludGVsX2luZm8tXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSBcdTAwMjZcdTAwMjYgIWlkX2ZvcmNlZChwZGV2LVx1MDAzZWRldmljZSkpIHtcbiA5NjU6XHRcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gOTY2Olx0XHRcdFx0IFwmIzM0O1lvdXIgZ3JhcGhpY3MgZGV2aWNlICUwNHggaXMgbm90IHByb3Blcmx5IHN1cHBvcnRlZCBieSBpOTE1IGluIHRoaXNcXG5cJiMzNDtcbiA5Njc6XHRcdFx0XHQgXCYjMzQ7a2VybmVsIHZlcnNpb24uIFRvIGZvcmNlIGRyaXZlciBwcm9iZSBhbnl3YXksIHVzZSBpOTE1LmZvcmNlX3Byb2JlPSUwNHhcXG5cJiMzNDtcbiA5Njg6XHRcdFx0XHQgXCYjMzQ7bW9kdWxlIHBhcmFtZXRlciBvciBDT05GSUdfRFJNX0k5MTVfRk9SQ0VfUFJPQkU9JTA0eCBjb25maWd1cmF0aW9uIG9wdGlvbixcXG5cJiMzNDtcbiA5Njk6XHRcdFx0XHQgXCYjMzQ7b3IgKHJlY29tbWVuZGVkKSBjaGVjayBmb3Iga2VybmVsIHVwZGF0ZXMuXFxuXCYjMzQ7LFxuIDk3MDpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSwgcGRldi1cdTAwM2VkZXZpY2UsIHBkZXYtXHUwMDNlZGV2aWNlKTtcbiA5NzE6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gOTcyOlx0XHR9XG4gOTczOlx0XG4gOTc0Olx0XHRpZiAoaWRfYmxvY2tlZChwZGV2LVx1MDAzZWRldmljZSkpIHtcbiA5NzU6XHRcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0k5MTUgcHJvYmUgYmxvY2tlZCBmb3IgRGV2aWNlIElEICUwNHguXFxuXCYjMzQ7LFxuIDk3NjpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSk7XG4gOTc3Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDk3ODpcdFx0fVxuIDk3OTpcdFxuIDk4MDpcdFx0aWYgKGludGVsX2luZm8tXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSkge1xuIDk4MTpcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Rm9yY2UgcHJvYmluZyB1bnN1cHBvcnRlZCBEZXZpY2UgSUQgJTA0eCwgdGFpbnRpbmcga2VybmVsXFxuXCYjMzQ7LFxuIDk4MjpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSk7XG4gOTgzOlx0XHRcdGFkZF90YWludChUQUlOVF9VU0VSLCBMT0NLREVQX1NUSUxMX09LKTtcbiA5ODQ6XHRcdH1cbiA5ODU6XHRcbiA5ODY6XHRcdC8qIE9ubHkgYmluZCB0byBmdW5jdGlvbiAwIG9mIHRoZSBkZXZpY2UuIEVhcmx5IGdlbmVyYXRpb25zXG4gOTg3Olx0XHQgKiB1c2VkIGZ1bmN0aW9uIDEgYXMgYSBwbGFjZWhvbGRlciBmb3IgbXVsdGktaGVhZC4gVGhpcyBjYXVzZXNcbiA5ODg6XHRcdCAqIHVzIGNvbmZ1c2lvbiBpbnN0ZWFkLCBlc3BlY2lhbGx5IG9uIHRoZSBzeXN0ZW1zIHdoZXJlIGJvdGhcbiA5ODk6XHRcdCAqIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIFBDSS1JRCFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTEKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYF9fc2htZW1fd3JpdGViYWNrYC4gU2VlbXMgbGlrZSB0aGlzIGlzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIG5hbWUgaGludHMgYXQgc29tZSBraW5kIG9mIHNoYXJlZCBtZW1vcnkgd3JpdGViYWNrIG9wZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgaXQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQsIGV2ZW4gbW9yZSBpbXBvcnRhbnRseSwgKndobyogaXMgY2FsbGluZyB0aGlzIHRoaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBncmVhdGVyIHNjaGVtZSBvZiB0aGluZ3MuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBsaWtlbHkgY2FuZGlkYXRlOiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSByZWxhdGVkIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0XHRzaG1lbV90cnVuY2F0ZV9yYW5nZShmaWxlX2lub2RlKG9iai1cdTAwM2ViYXNlLmZpbHApLCAwLCAobG9mZl90KS0xKTtcbiAzMDE6XHRcdG9iai1cdTAwM2VtbS5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEO1xuIDMwMjpcdFx0b2JqLVx1MDAzZW1tLnBhZ2VzID0gRVJSX1BUUigtRUZBVUxUKTtcbiAzMDM6XHRcbiAzMDQ6XHRcdHJldHVybiAwO1xuIDMwNTpcdH1cbiAzMDY6XHRcbiAzMDc6XHR2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcbiAzMDg6XHR7XG4gMzA5Olx0XHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgd2JjID0ge1xuIDMxMDpcdFx0XHQuc3luY19tb2RlID0gV0JfU1lOQ19OT05FLFxuIDMxMTpcdFx0XHQubnJfdG9fd3JpdGUgPSBTV0FQX0NMVVNURVJfTUFYLFxuIDMxMjpcdFx0XHQucmFuZ2Vfc3RhcnQgPSAwLFxuIDMxMzpcdFx0XHQucmFuZ2VfZW5kID0gTExPTkdfTUFYLFxuIDMxNDpcdFx0fTtcbiAzMTU6XHRcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBOVUxMO1xuIDMxNjpcdFx0aW50IGVycm9yID0gMDtcbiAzMTc6XHRcbiAzMTg6XHRcdC8qXG4gMzE5Olx0XHQgKiBMZWF2ZSBtbWFwaW5ncyBpbnRhY3QgKEdUVCB3aWxsIGhhdmUgYmVlbiByZXZva2VkIG9uIHVuYmluZGluZyxcbiAzMjA6XHRcdCAqIGxlYXZpbmcgb25seSBDUFUgbW1hcGluZ3MgYXJvdW5kKSBhbmQgYWRkIHRob3NlIGZvbGlvcyB0byB0aGUgTFJVXG4gMzIxOlx0XHQgKiBpbnN0ZWFkIG9mIGludm9raW5nIHdyaXRlYmFjayBzbyB0aGV5IGFyZSBhZ2VkIGFuZCBwYWdlZCBvdXRcbiAzMjI6XHRcdCAqIGFzIG5vcm1hbC5cbiAzMjM6XHRcdCAqL1xuIDMyNDpcdFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFx1MDAyNndiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpIHtcbiAzMjU6XHRcdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcbiAzMjY6XHRcdFx0XHRmb2xpb19yZWRpcnR5X2Zvcl93cml0ZXBhZ2UoXHUwMDI2d2JjLCBmb2xpbyk7XG4gMzI3Olx0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiAzMjg6XHRcdFx0fSBlbHNlIHtcbiAzMjk6XHRcdFx0XHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcbiAzMzA6XHRcdFx0XHRpZiAoZXJyb3IgPT0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURSkge1xuIDMzMTpcdFx0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiAzMzI6XHRcdFx0XHRcdGVycm9yID0gMDtcbiAzMzM6XHRcdFx0XHR9XG4gMzM0Olx0XHRcdH1cbiAzMzU6XHRcdH1cbiAzMzY6XHR9XG4gMzM3Olx0XG4gMzM4Olx0c3RhdGljIHZvaWRcbiAzMzk6XHRzaG1lbV93cml0ZWJhY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iailcbiAzNDA6XHR7XG4gMzQxOlx0XHRfX3NobWVtX3dyaXRlYmFjayhvYmotXHUwMDNlYmFzZS5zaXplLCBvYmotXHUwMDNlYmFzZS5maWxwLVx1MDAzZWZfbWFwcGluZyk7XG4gMzQyOlx0fVxuIDM0MzpcdFxuIDM0NDpcdHN0YXRpYyBpbnQgc2htZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcbiAzNDU6XHR7XG4gMzQ2Olx0XHRzd2l0Y2ggKG9iai1cdTAwM2VtbS5tYWR2KSB7XG4gMzQ3Olx0XHRjYXNlIEk5MTVfTUFEVl9ET05UTkVFRDpcbiAzNDg6XHRcdFx0cmV0dXJuIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopO1xuIDM0OTpcdFx0Y2FzZSBfX0k5MTVfTUFEVl9QVVJHRUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTM1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgX19zaG1lbV93cml0ZWJhY2tgLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYHNobWVtX3dyaXRlYmFjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKWAgaXMgb25lIGVudHJ5IHBvaW50LiBCdXQsIGFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgb25lIHNwZWNpZmljIGNhbGxpbmcgZnVuY3Rpb24gaXMgcmFyZWx5IHRoZSB3aG9sZSBzdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFdoZXJlICplbHNlKiBpcyB0aGlzIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSBpdHMgY2FsbCBncmFwaC4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGZvcm1pbmcgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUmIzM5O3MgYmVoYXZpb3IsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgdGhpcyBmdW5jdGlvbiBtaWdodCBpbnRyb2R1Y2UgYWNyb3NzIHRoZSBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIGFsbCBvZiB0aGUgb3RoZXIgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zaG1lbV93cml0ZWJhY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oPTg0ND12b2lkIHNobWVtX3NnX2ZyZWVfdGFibGUoc3RydWN0IHNnX3RhYmxlICpzdCwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODQ1LVx0XHRcdCBib29sIGRpcnR5LCBib29sIGJhY2t1cCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg6ODQ2OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaC04NDctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM9MjkyPXNobWVtX3RydW5jYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzA2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzA3OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzA4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYz0zMzk9c2htZW1fd3JpdGViYWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYy0zNDAte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzQxOlx0X19zaG1lbV93cml0ZWJhY2sob2JqLVx1MDAzZWJhc2Uuc2l6ZSwgb2JqLVx1MDAzZWJhc2UuZmlscC1cdTAwM2VmX21hcHBpbmcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzQyLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9NDYzPXN0YXRpYyBpbnQgaTkxNV90dG1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtNTA0LVx0aWYgKGZsYWdzIFx1MDAyNiBJOTE1X0dFTV9PQkpFQ1RfU0hSSU5LX1dSSVRFQkFDSylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYzo1MDU6XHRcdF9fc2htZW1fd3JpdGViYWNrKG9iai1cdTAwM2ViYXNlLnNpemUsIGk5MTVfdHQtXHUwMDNlZmlscC1cdTAwM2VmX21hcHBpbmcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTUwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgaTkxNSBpbiB0aGlzIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdoZXJlIGBfX3NobWVtX3dyaXRlYmFja2AgaXMgY2FsbGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBzaG1lbV93cml0ZWJhY2tgIGFuZCBgaTkxNV90dG1fc2hyaW5rYCwgYm90aCBjbGVhcmx5IHRpZWQgdG8gYGk5MTVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgaTkxNWAgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IGFzIHRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb25zIGRlZmluZS4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZSwgc28gSSYjMzk7bSByZS1yZWFkaW5nIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiAgSXQgbGF5cyBvdXQgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmU6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yICpHUFUgZHJpdmVycyogcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuICBDcnVjaWFsbHksIHRoZSBwcm9tcHQgZ2l2ZXMgZXhhbXBsZXM6IG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LgoKTm93LCBkb2VzIGBpOTE1YCBmaXQgdGhhdCBkZXNjcmlwdGlvbj8gIEFic29sdXRlbHkhICBgaTkxNWAgcmVwcmVzZW50cyBJbnRlbCYjMzk7cyBncmFwaGljcyBkcml2ZXJzLCB3aGljaCBhcmUgaW50aW1hdGVseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIGludGVncmF0ZWQgR1BVcyBpbiBJbnRlbCBDUFVzIG9yIGRpc2NyZXRlIEludGVsIEdQVXMgbGlrZSBJbnRlbCBBcmMuICBBbmQgc3RhbmRhcmQgUUVNVSwgdGhlIGtpbmQgdXNlZCBieSBzb21ldGhpbmcgbGlrZSBHQ0UgVk1zLCAqZG9lc24mIzM5O3QqIGVtdWxhdGUgdGhvc2UgSW50ZWwgZ3JhcGhpY3MgY2hpcHMuICBJdCYjMzk7cyBqdXN0IG5vdCBzZXQgdXAgdG8gZG8gdGhhdC4KClNvLCBhbSBJIGFibGUgdG8gdXNlIHN5emthbGxlciBvbiB0aGlzPyBUaGUgcHJvbXB0IHNheXMgSSBjYW4mIzM5O3QgbG9vayBhdCBzeXprYWxsZXIgc3l6bGFuZyBkZXNjcmlwdGlvbnMgb3IgYW55dGhpbmcgd2l0aCAmIzM0O2xvbmcgc3l6XyYjMzQ7LiBJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgYHN5ei1ncmVwcGVyYCBhbmQgYHJlYWQtc3l6LXNwZWNgIGFyZSBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGFzIHRoZSB0b29scyB0byBkbyB0aGF0LCBzbyBJIHdpbGwgaGF2ZSB0byBsb29rIGF0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0b29scy4gIExldCYjMzk7cyBzZWUgd2hhdCBpcyBhdmFpbGFibGU6CjEuIGBncmVwcGVyYAoyLiBgcmVhZC1maWxlYAozLiBgY29kZXNlYXJjaC1kaXItaW5kZXhgCjQuIGBzZXQtcmVzdWx0c2AKCk5vcGUsIGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgbm90IGF2YWlsYWJsZSBoZXJlLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuICBJcyBgaTkxNWAgYSAqdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIqIHRoYXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBleGFtcGxlcyBpbiBTZWN0aW9uIDIgYXJlIGNydWNpYWwgaGVyZTogc3BlY2lmaWNhbGx5LCB0aGUgbGlzdCBvZiAqR1BVIGRyaXZlcnMqIGxpa2UgYW1kZ3B1LiAgVGhhdCByZWluZm9yY2VzIHRoZSBwb2ludDogSTkxNSBpcyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBBTUQgb3IgTm91dmVhdSBvciBhbnkgb2YgdGhlIG90aGVyIEdQVXMhICBOZWl0aGVyIEFNRCBub3IgSW50ZWwgbm9yIE5WSURJQSBHUFVzIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGFyZSBhdmFpbGFibGUgaW4gR0NFL1FFTVUgdmlydHVhbCBtYWNoaW5lcyB1c2VkIGJ5IHN5emthbGxlci4KCldoYXQgRE9FUyBydW4gaW4gUUVNVT8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiAgSSBrbm93IHRoYXQgdmlydGlvLWdwdSwgYm9jaHMtZHJtLCBjaXJydXMsIHF4bCwgdm13Z2Z4LCB2a21zLCBzaW1wbGVkcm0gY2FuIGFsbCB3b3JrIGluIFFFTVUsIGJ1dCBub3QgSTkxNSEKCk5vdywgKmlzKiB0aGVyZSBhbnl0aGluZyBpbiBgaTkxNWAgdGhhdCAqbWlnaHQqIGJlIGFjY2Vzc2libGUgaW4gUUVNVT8gIE1heWJlIHNvbWUga2luZCBvZiBtb2NrIGRldmljZSwgYSBkdW1teSBkcml2ZXI/IExldCYjMzk7cyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoYXQgZWFybGllciBncmVwLiBBaCEgJiMzNDtpOTE1LSQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKSAmIzQzOz0gZ2VtL3NlbGZ0ZXN0cy8uLi4mIzM0OyAgVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gYHNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jYCwgYHNlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY2AsIGBzZWxmdGVzdHMvbW9ja19ndHQuY2AuIFRoYXQgc291bmRzIGxpa2UgaXQhICBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVGAgaW4gS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoYXQgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zz0xNzg9Y29uZmlnIERSTV9JOTE1X0RFQlVHX0dVQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1ZzoxOTE6Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTE5Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHNlbGZ0ZXN0cyB1cG9uIGRyaXZlciBsb2FkXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zy0yMDgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnOjIwOTpjb25maWcgRFJNX0k5MTVfU0VMRlRFU1RfQlJPS0VOXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTIxMC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJyb2tlbiBhbmQgZGFuZ2Vyb3VzIHNlbGZ0ZXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk5MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgSW50ZWwgR1BVIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEludGVsIEdQVSBkcml2ZXImIzM5O3MgZGVidWcgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYEtjb25maWcuZGVidWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYCBkaXJlY3RvcnkuIExpbmUgMTkxIGlzIGEgbGlrZWx5IHNwb3QgdG8gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi4gSXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgYSByZWxldmFudCBkZWJ1ZyBvcHRpb24sIG9yIHNlY3Rpb24gb2YgdGhlbSwgaXMgZGVmaW5lZCBvciBpbnRyb2R1Y2VkLiBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gS25vd2luZyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgYWRqdXN0IGRlYnVnIGxvZ2dpbmcgd2l0aGluIHRoZSBpOTE1IGRyaXZlciBmb3IgSW50ZWwgR1BVcy4gVGhpcyBraW5kIG9mIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFueSByZWFsIGRlZXAgZGl2ZSBpbnRvIHRoaXMgYXJlYS4gSXQmIzM5O2xsIGdpdmUgbWUgYSBzdHJvbmcgZm91bmRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NTpcdFx0ICBwZXJmb3JtYW5jZSBidXQgd2lsbCBoZWxwIHJlc29sdmUgR3VDIHJlbGF0ZWQgaXNzdWVzLlxuIDE4NjpcdFxuIDE4NzpcdFx0ICBSZWNvbW1lbmRlZCBmb3IgZHJpdmVyIGRldmVsb3BlcnMgb25seS5cbiAxODg6XHRcbiAxODk6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBcJiMzNDtOXCYjMzQ7LlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVFxuIDE5MjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgc2VsZnRlc3RzIHVwb24gZHJpdmVyIGxvYWRcJiMzNDtcbiAxOTM6XHRcdGRlcGVuZHMgb24gRFJNX0k5MTVcbiAxOTQ6XHRcdGRlZmF1bHQgblxuIDE5NTpcdFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cbiAxOTY6XHRcdHNlbGVjdCBGQVVMVF9JTkpFQ1RJT05cbiAxOTc6XHRcdHNlbGVjdCBQUklNRV9OVU1CRVJTXG4gMTk4Olx0XHRzZWxlY3QgQ1JDMzJcbiAxOTk6XHRcdGhlbHBcbiAyMDA6XHRcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGFsbG93IHRoZSBkcml2ZXIgdG8gcGVyZm9ybSBzZWxmdGVzdHMgdXBvblxuIDIwMTpcdFx0ICBsb2FkaW5nOyBhbHNvIHJlcXVpcmVzIHRoZSBpOTE1LnNlbGZ0ZXN0PTEgbW9kdWxlIHBhcmFtZXRlci4gVG9cbiAyMDI6XHRcdCAgZXhpdCB0aGUgbW9kdWxlIGFmdGVyIHJ1bm5pbmcgdGhlIHNlbGZ0ZXN0cyAoaS5lLiB0byBwcmV2ZW50IG5vcm1hbFxuIDIwMzpcdFx0ICBtb2R1bGUgaW5pdGlhbGlzYXRpb24gYWZ0ZXJ3YXJkcykgdXNlIGk5MTUuc2VsZnRlc3Q9LTEuXG4gMjA0Olx0XG4gMjA1Olx0XHQgIFJlY29tbWVuZGVkIGZvciBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxuIDIwNjpcdFxuIDIwNzpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gMjA4Olx0XG4gMjA5Olx0Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUX0JST0tFTlxuIDIxMDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnJva2VuIGFuZCBkYW5nZXJvdXMgc2VsZnRlc3RzXCYjMzQ7XG4gMjExOlx0XHRkZXBlbmRzIG9uIERSTV9JOTE1X1NFTEZURVNUXG4gMjEyOlx0XHRkZXBlbmRzIG9uIEJST0tFTlxuIDIxMzpcdFx0ZGVmYXVsdCBuXG4gMjE0Olx0XHRoZWxwXG4gMjE1Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGV4ZWN1dGlvbiBvZiBzZWxmdGVzdHMgdGhhdCBhcmUgXCYjMzQ7ZGFuZ2Vyb3VzXCYjMzQ7XG4gMjE2Olx0XHQgIGFuZCBtYXkgdHJpZ2dlciB1bmludGVuZGVkIEhXIHNpZGUtZWZmZWN0cyBhcyB0aGV5IGJyZWFrIHN0cmljdFxuIDIxNzpcdFx0ICBydWxlcyBnaXZlbiBpbiB0aGUgSFcgc3BlY2lmaWNhdGlvbi4gRm9yIHNjaWVuY2UuXG4gMjE4Olx0XG4gMjE5Olx0XHQgIFJlY29tbWVuZGVkIGZvciBtYXNvY2hpc3RpYyBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxuIDIyMDpcdFxuIDIyMTpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gMjIyOlx0XG4gMjIzOlx0Y29uZmlnIERSTV9JOTE1X0tVTklUX1RFU1RcbiAyMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciB0aGUgZHJtIGk5MTUgZHJpdmVyXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaTkxNSBEcml2ZXIgU2VsZnRlc3QqKgoKT2theSwgc28gYENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVGAgaXMgcmVhbGx5IGp1c3QgZW5hYmxpbmcgYSBzZWxmLXRlc3Qgcm91dGluZSB0aGF0IGhhcHBlbnMgd2hlbiB0aGUgZHJpdmVyLCBgaTkxNS5rb2AsIGlzIGxvYWRlZC4gTWFrZXMgc2Vuc2UsIGEgbG9hZC10aW1lIHNlbGZ0ZXN0LiBCdXQsIG9mIGNvdXJzZSwgdGhlIGk5MTUgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIGhhcmR3YXJlLCBzbyB0aGUgZHJpdmVyICpuZWVkcyogdG8gZmluZCBJbnRlbCBoYXJkd2FyZSB0byBldmVuIGRvIGFueXRoaW5nLCByaWdodD8KCkFscmlnaHQsIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIGlmIHRoZXJlJiMzOTtzIG5vIEludGVsIFBDSSBHUFUgZGV2aWNlLCBkb2VzIGBpOTE1LmtvYCBldmVuIGJvdGhlciBwcm9iaW5nPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBpOTE1X3BjaV9wcm9iZSgpYC4gTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjb2RlLi4uIGBzdGF0aWMgaW50IGk5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KWAuIFllcCwgdGhhdCYjMzk7cyBpdC4gQW5kLCB0aGUgUENJIGNvcmUgKm9ubHkqIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSBJRCBmcm9tIHRoZSBgcGNpaWRsaXN0YCBvbiB0aGUgUENJIGJ1cy4gU28sIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgLSB0aG9zZSB0aGF0IGRvbiYjMzk7dCBoYXZlIGFuIEludGVsIEdQVSAtIHRoZSBkcml2ZXIgd291bGRuJiMzOTt0IGZpbmQgYW55IFBDSSBkZXZpY2VzIHRvIG1hdGNoIGFnYWluc3QsIGFuZCBgaTkxNV9wY2lfcHJvYmUoKWAgd291bGRuJiMzOTt0IGV2ZXIgcnVuLiBUaGF0IG1lYW5zIGV2ZW4gaWYgc29tZW9uZSAqZm9yY2VkKiB0aGUgYGk5MTVgIG1vZHVsZSB0byBsb2FkLCBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgYW5kIGJhaWwuCgpCdXQgd2FpdCwgaG9sZCBvbi4uLiBDYW4gYGk5MTVgIGJlIGxvYWRlZCwgYW5kIHRoZW4gcnVuIG1vY2sgc2VsZnRlc3RzPyBIbW0sIHRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSB0aGF0IGltcGxlbWVudHMgdGhlIG1vY2sgc2VsZnRlc3RzLCBgaTkxNV9tb2NrX3NlbGZ0ZXN0c2AsIG9yIG1heWJlIGBpOTE1X3BjaS5jYC4gSSBoYXZlIHRvIHNlZSBob3cgaXQgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k5MTVfc2VsZnRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00MTQ9aTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDE3LVx0c2VsZnRlc3RzL2k5MTVfcmFuZG9tLm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQxODpcdHNlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxOS1cdHNlbGZ0ZXN0cy9pZ3RfYXRvbWljLm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtMTUtI2luY2x1ZGUgXCYjMzQ7aTkxNV9hY3RpdmUuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oOjE2OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTE3LSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hX3Jlc291cmNlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC05LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmg6MTA6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC0xMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYy0xMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5jOjg6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQuYy05LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jOjE1OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYy0xNi0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9yYW5kb20uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTE2LSNpbmNsdWRlIFwmIzM0O2d0L2ludGVsX3Jlc2V0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jOjE3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmM9MzM9c3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTExMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jOjExMjpcdFx0ZW5kX3RpbWUgPSBqaWZmaWVzICYjNDM7IGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTEzLVx0XHRmb3JfZWFjaF9wcmltZV9udW1iZXJfZnJvbShwcmltZSwgMiwgODE5Mikge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMtNy0jaW5jbHVkZSBcJiMzNDtpOTE1X2Rydi5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jOjg6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jLTktI2luY2x1ZGUgXCYjMzQ7Z2VtL2k5MTVfZ2VtX2NvbnRleHQuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jLTI1LSNpbmNsdWRlIFwmIzM0O2h1Z2VfZ2VtX29iamVjdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYzoyNjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jLTI3LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy02LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYzo3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy04LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYzo3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmMtOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNS0jaW5jbHVkZSBcJiMzNDtpOTE1X3JlcXVlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MTY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNy0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfdHlwZXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oLTIyLSNpbmNsdWRlIFwmIzM0O2k5MTVfcHJpb2xpc3RfdHlwZXMuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmg6MjM6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC0yNC0jaW5jbHVkZSBcJiMzNDtpbnRlbF9zc2V1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0yOC0jaW5jbHVkZSBcJiMzNDtndC9pbnRlbF9yZXNldC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaDoyOTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTMwLSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hX3Jlc291cmNlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMtNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYzo4OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jLTktI2luY2x1ZGUgXCYjMzQ7aW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmMtNS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5jOjY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy03LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2VuZ2luZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMtMTEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYzoxMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jLTEzLSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jLTEwLSNpbmNsdWRlIFwmIzM0O2ludGVsX2d0X3JlcXVlc3RzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYzoxMTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYy0xMi0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYy04LSNpbmNsdWRlIFwmIzM0O2d0L2ludGVsX2d0X3ByaW50LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jOjk6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYy0xMC0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfcmVncy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMTYtI2luY2x1ZGUgXCYjMzQ7aTkxNV9qaWZmaWVzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMTgtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYz0zNjM4PXN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X3Ntb2tlKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0zNjQxLVx0XHQuZ3QgPSBhcmcsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYzozNjQyOlx0XHQucHJuZyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMzY0My1cdFx0Lm5jb250ZXh0ID0gMjU2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jLTE2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmM6MTc6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYy0xOC0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9yYW5kb20uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jLTEwLSNpbmNsdWRlIFwmIzM0O2k5MTVfZHJ2LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMtMTItI2luY2x1ZGUgXCYjMzQ7aW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTctI2luY2x1ZGUgXCYjMzQ7Z3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYzo4OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0xMC0jaW5jbHVkZSBcJiMzNDtpOTE1X21lbWNweS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0xMi0jaW5jbHVkZSBcJiMzNDtpbnRlbF9ncHVfY29tbWFuZHMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTUtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYzo2OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMtNy0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfcG0uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMTktI2luY2x1ZGUgXCYjMzQ7Li4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MjA6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTIxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM9MTQyPXN0YXRpYyBpbnQgbW9ja19od3NwX2ZyZWVsaXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2MS1cdElOSVRfUkFESVhfVFJFRShcdTAwMjZzdGF0ZS5jYWNoZWxpbmVzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MTYyOlx0c3RhdGUucHJuZyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0xNjMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYz0yODc9c3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwMi1cdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMDM6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwNC1cdGNvdW50ID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMyMC1cdC8qIEJlbmNobWFyayAob25seSkgc2V0dGluZyByYW5kb20gY29udGV4dCBpZHMgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MzIxOlx0cHJhbmRvbV9zZWVkX3N0YXRlKFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zMjItXHRjb3VudCA9IDA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zMzYtXHQvKiBCZW5jaG1hcmsgbG9va2luZyB1cCB0aGUgZXhhY3Qgc2FtZSBjb250ZXh0IGlkcyBhcyB3ZSBqdXN0IHNldCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMzc6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMzOC1cdGVuZF90aW1lID0gY291bnQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zODktXHQvKiBCZW5jaG1hcmsgc2VhcmNoaW5nIGZvciBhIHJhbmRvbSBjb250ZXh0IGlkIGFuZCBtYXliZSBjaGFuZ2luZyBpdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozOTA6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTM5MS1cdGNvdW50ID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90bGIuYy0xMS0jaW5jbHVkZSBcJiMzNDtpOTE1X2dlbV93dy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90bGIuYzoxMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jLTEzLSNpbmNsdWRlIFwmIzM0O2k5MTVfd2FpdF91dGlsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jLTktI2luY2x1ZGUgXCYjMzQ7Z3QvaW50ZWxfZ3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYzoxMDojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMtMTEtI2luY2x1ZGUgXCYjMzQ7aW50ZWxfcmVzZXQuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg9MTU1PXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTE2My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg6MTY0OnN0cnVjdCBpOTE1X3NlbGZ0ZXN0X3N0YXNoIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgtMTY1LVx0YXRvbWljX3QgY291bnRlcjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oPTE2OT1zdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0zMTktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oOjMyMDpcdEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCBzZWxmdGVzdDspXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTMyMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTE4LSNpbmNsdWRlIFwmIzM0O2k5MTVfc2NoZWR1bGVyLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmM6MTk6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTIwLSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaC00My0jaW5jbHVkZSBcJiMzNDtpOTE1X3NjaGVkdWxlci5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaDo0NDojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oLTQ1LSNpbmNsdWRlIFwmIzM0O2k5MTVfc3dfZmVuY2UuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaD0zMj1zdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zMy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDozNDpzdHJ1Y3QgaTkxNV9zZWxmdGVzdCB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMzUtXHR1bnNpZ25lZCBsb25nIHRpbWVvdXRfamlmZmllcztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtNDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6NDg6ZXh0ZXJuIHN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3Q7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtNDktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTEyMT1zdGF0aWMgaW5saW5lIGludCBpOTE1X3BlcmZfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEyOC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDoxMjk6LyogVXNpbmcgdGhlIGk5MTVfc2VsZnRlc3RfIHByZWZpeCBiZWNvbWVzIGEgbGl0dGxlIHVud2llbGR5IHdpdGggdGhlIGhlbHBlcnMuXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTMwLSAqIEluc3RlYWQgd2UgdXNlIHRoZSBpZ3RfIHNob3J0aGFuZCwgaW4gcmVmZXJlbmNlIHRvIHRoZSBpbnRlbC1ncHUtdG9vbHNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTM0LSNkZWZpbmUgSUdUX1RJTUVPVVQobmFtZV9fKSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oOjEzNTpcdHVuc2lnbmVkIGxvbmcgbmFtZV9fID0gamlmZmllcyAmIzQzOyBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllc1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEzNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTItI2luY2x1ZGUgXCYjMzQ7aTkxNV9zd19mZW5jZS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmM6MTM6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmMtMjktI2luY2x1ZGUgXCYjMzQ7aTkxNV9nZW0uaFwmIzM0OyAvKiBHRU1fQlVHX09OKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luY21hcC5jOjMwOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmMtMzEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oLTktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmg6MTA6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmgtMTEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYzoxNTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jLTE2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jLTE1LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmM6MTY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYy0xNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYy0zMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jOjMyOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMtMzMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jLTM3LSNpbmNsdWRlIFwmIzM0O2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYzozODojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYy0zOS0jaW5jbHVkZSBcJiMzNDtpOTE1X3ZtYV9yZXNvdXJjZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaC0xNS0gKlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgtMTctICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNS0gKlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgtMTctICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jLTExLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jOjEyOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jLTEzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmgtMTUtICpcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmg6MTY6ICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5IGlndC9pOTE1X3NlbGZ0ZXN0XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE3LSAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTMwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6MzE6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zMi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zOS0jZGVmaW5lIEk5MTVfUk5EX1NUQVRFKG5hbWVfXykgXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oOjQwOlx0c3RydWN0IHJuZF9zdGF0ZSBuYW1lX18gPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgtNDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTQyLSNpbmNsdWRlIFwmIzM0O2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo0MzojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy00NC0jaW5jbHVkZSBcJiMzNDtpOTE1X3dhaXRfdXRpbC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jPTQ1NT1zdGF0aWMgaW50IG1vY2tfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTEyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jOjUxMzpcdG1zbGVlcChqaWZmaWVzX3RvX21zZWNzKGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTE0LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz0xNTQyPXN0YXRpYyBpbnQgd2FpdF9mb3JfYWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xNTQ4LVx0XHRcdFx0ICAgIWF0b21pY19yZWFkKFx1MDAyNmk5MTUtXHUwMDNlc2VsZnRlc3QuY291bnRlciksXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmM6MTU0OTpcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xNTUwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmM9MTcyNT1zdGF0aWMgaW50IGxpdmVfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTgyNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzoxODI1Olx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xODI2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMtI2luY2x1ZGUgXCYjMzQ7aTkxNV9qaWZmaWVzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzQ6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1LSNpbmNsdWRlIFwmIzM0O2k5MTVfd2FpdF91dGlsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODpzdHJ1Y3QgaTkxNV9zZWxmdGVzdCBpOTE1X3NlbGZ0ZXN0IF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM5LVx0LnRpbWVvdXRfbXMgPSA1MDAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0yMjI9c3RhdGljIGludCBfX3J1bl9zZWxmdGVzdHMoY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTIzMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMxOlx0aWYgKGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMyOlx0XHR1X3BpZF9uciA9IGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzQ6XHR3aGlsZSAoIWk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzNTpcdFx0aTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCA9IGdldF9yYW5kb21fdTMyKCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTIzNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM3Olx0aTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMgPVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzg6XHRcdGk5MTVfc2VsZnRlc3QudGltZW91dF9tcyA/XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzOTpcdFx0bXNlY3NfdG9famlmZmllc190aW1lb3V0KGk5MTVfc2VsZnRlc3QudGltZW91dF9tcykgOlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0yNDAtXHRcdE1BWF9TQ0hFRFVMRV9USU1FT1VUO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjQ0LVx0cHJfaW5mbyhEUklWRVJfTkFNRSBcJiMzNDs6IFBlcmZvcm1pbmcgJXMgc2VsZnRlc3RzIHdpdGggc3RfcmFuZG9tX3NlZWQ9MHgleCBzdF90aW1lb3V0PSV1XFxuXCYjMzQ7LFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyNDU6XHRcdG5hbWUsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQsIGk5MTVfc2VsZnRlc3QudGltZW91dF9tcyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTMwNT1pbnQgaTkxNV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzA4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozMDk6XHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzEwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxMy1cdGlmIChlcnIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE0Olx0XHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSBlcnI7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxNS1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMTctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxODpcdGlmIChpOTE1X3NlbGZ0ZXN0Lm1vY2sgXHUwMDNjIDApIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE5Olx0XHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSAtRU5PVFRZO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMjAtXHRcdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzI2PWludCBpOTE1X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozMzQ6XHRpZiAoIWk5MTVfc2VsZnRlc3QubGl2ZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzM1LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1NC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU1Olx0XHRpOTE1X3NlbGZ0ZXN0LmxpdmUgPSBlcnI7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1Ni1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1OC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU5Olx0aWYgKGk5MTVfc2VsZnRlc3QubGl2ZSBcdTAwM2MgMCkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozNjA6XHRcdGk5MTVfc2VsZnRlc3QubGl2ZSA9IC1FTk9UVFk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM2MS1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0zNjc9aW50IGk5MTVfcGVyZl9zZWxmdGVzdHMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM3MjpcdGlmICghaTkxNV9zZWxmdGVzdC5wZXJmKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNzMtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzc5LVx0aWYgKGVycikge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODA6XHRcdGk5MTVfc2VsZnRlc3QucGVyZiA9IGVycjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgxLVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODQ6XHRpZiAoaTkxNV9zZWxmdGVzdC5wZXJmIFx1MDAzYyAwKSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4NTpcdFx0aTkxNV9zZWxmdGVzdC5wZXJmID0gLUVOT1RUWTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzg2LVx0XHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTM5Mj1zdGF0aWMgYm9vbCBhcHBseV9zdWJ0ZXN0X2ZpbHRlcihjb25zdCBjaGFyICpjYWxsZXIsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zOTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM5NzpcdGZpbHRlciA9IGtzdHJkdXAoaTkxNV9zZWxmdGVzdC5maWx0ZXIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zOTgtXHRmb3IgKHNlcCA9IGZpbHRlcjsgKHRvayA9IHN0cnNlcChcdTAwMjZzZXAsIFwmIzM0OyxcJiMzNDspKTspIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTU0OD12b2lkIGlndF9oZXhkdW1wKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU3Ni1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc3Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9yYW5kb21fc2VlZCwgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCwgdWludCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU3ODptb2R1bGVfcGFyYW1fbmFtZWQoc3RfdGltZW91dCwgaTkxNV9zZWxmdGVzdC50aW1lb3V0X21zLCB1aW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc5Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9maWx0ZXIsIGk5MTVfc2VsZnRlc3QuZmlsdGVyLCBjaGFycCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4MDptb2R1bGVfcGFyYW1fbmFtZWQoc3RfdXNlcnNwYWNlX3BpZCwgaTkxNV9zZWxmdGVzdC51c2Vyc3BhY2VfcGlkLCB1aW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTgxLU1PRFVMRV9QQVJNX0RFU0Moc3RfdXNlcnNwYWNlX3BpZCwgXCYjMzQ7Rm9yIHVzYWdlIGluIHRlc3RzIHRoYXQgbWFwIHVzZXJzcGFjZSBtZW1vcnkgYW5kIHJlcXVpcmUgYWRkcmVzcyBzcGFjZSB3aXRoIGNvbnRyb2xsYWJsZSBsaWZldGltZS5cJiMzNDspO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Mzptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG1vY2tfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0Lm1vY2ssIGludCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NC1NT0RVTEVfUEFSTV9ERVNDKG1vY2tfc2VsZnRlc3RzLCBcJiMzNDtSdW4gc2VsZnRlc3RzIGJlZm9yZSBsb2FkaW5nLCB1c2luZyBtb2NrIGhhcmR3YXJlICgwOmRpc2FibGVkIFtkZWZhdWx0XSwgMTpydW4gdGVzdHMgdGhlbiBsb2FkIGRyaXZlciwgLTE6cnVuIHRlc3RzLi4uXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTg2Om1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUobGl2ZV9zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubGl2ZSwgaW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTg3LU1PRFVMRV9QQVJNX0RFU0MobGl2ZV9zZWxmdGVzdHMsIFwmIzM0O1J1biBzZWxmdGVzdHMgYWZ0ZXIgZHJpdmVyIGluaXRpYWxpc2F0aW9uIG9uIHRoZSBsaXZlIHN5c3RlbSAoMDpkaXNhYmxlZCBbZGVmYXVsdF0sIDE6cnVuIHRlc3RzIHRoZW4gY29udGludWUsIC0xOnIuLi5cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTg4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzo1ODk6bW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShwZXJmX3NlbGZ0ZXN0cywgaTkxNV9zZWxmdGVzdC5wZXJmLCBpbnQsIDA0MDApO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01OTAtTU9EVUxFX1BBUk1fREVTQyhwZXJmX3NlbGZ0ZXN0cywgXCYjMzQ7UnVuIHBlcmZvcm1hbmNlIG9yaWVudGF0ZWQgc2VsZnRlc3RzIGFmdGVyIGRyaXZlciBpbml0aWFsaXNhdGlvbiBvbiB0aGUgbGl2ZSBzeXN0ZW0gKDA6ZGlzYWJsZWQgW2RlZmF1bHRdLCAxOnJ1biB0ZS4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMjgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jOjI5OiNpbmNsdWRlIFwmIzM0Oy4uL2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy0zMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTU3OT1zdGF0aWMgaW50IHRlc3RfdGltZXIodm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNTkyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo1OTM6XHRmb3JfZWFjaF9wcmltZV9udW1iZXIoZGVsYXksIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzLzIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNTk0LVx0XHRwcmVlbXB0X2Rpc2FibGUoKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTY2OT1zdGF0aWMgaW50IHRlc3RfZG1hX2ZlbmNlKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jLTY3MS1cdHN0cnVjdCBpOTE1X3N3X2ZlbmNlICp0aW1lb3V0ID0gTlVMTCwgKm5vdCA9IE5VTEw7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jOjY3MjpcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllcztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjczLVx0dW5zaWduZWQgbG9uZyBlbmQsIHNsZWVwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi9pOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNi0jaW5jbHVkZSBcJiMzNDtpOTE1X3JhbmRvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMtMzEtI2luY2x1ZGUgXCYjMzQ7aTkxNV9zY2F0dGVybGlzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYzozMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jLTMzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jLTEwLSNpbmNsdWRlIFwmIzM0O2k5MTVfZHJ2LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2ZV90ZXN0LmM6MTE6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jLTEyLSNpbmNsdWRlIFwmIzM0O2lndF9mbHVzaF90ZXN0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaC0xNC0jaW5jbHVkZSBcJiMzNDtpOTE1X3JlcXVlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmg6MTU6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaC0xNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jLTEwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYzoxMTojaW5jbHVkZSBcJiMzNDsuLi9pOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMtMTAtI2luY2x1ZGUgXCYjMzQ7aTkxNV9kcnYuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmM6MTE6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuYy0xMi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmM6MjU6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzoyNzojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTI4LSNpbmNsdWRlIFwmIzM0O2k5MTVfdXRpbHMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jPTI3OD1zdGF0aWMgaW50IGlndF9zZ19hbGxvYyh2b2lkICppZ25vcmVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTI5Ny1cdFx0XHRcdHByYW5kb21fc2VlZF9zdGF0ZShcdTAwMjZwcm5nLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6Mjk4Olx0XHRcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjk5LVx0XHRcdFx0ZXJyID0gYWxsb2NfdGFibGUoXHUwMDI2cHQsIHN6LCBzeiwgKm5wYWdlcywgXHUwMDI2cHJuZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zMDYtXHRcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZyxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjMwNzpcdFx0XHRcdFx0XHQgICBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMwOC1cdFx0XHRcdGVyciA9IGV4cGVjdF9wZm5fc2d0YWJsZShcdTAwMjZwdCwgKm5wYWdlcywgXHUwMDI2cHJuZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYz0zMjU9c3RhdGljIGludCBpZ3Rfc2dfdHJpbSh2b2lkICppZ25vcmVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMzOS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjM0MDpcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zNDEtXHRcdFx0ZXJyID0gYWxsb2NfdGFibGUoXHUwMDI2cHQsIHByaW1lLCBtYXgsICpucGFnZXMsIFx1MDAyNnBybmcsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzU1LVx0XHRcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZyxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjM1NjpcdFx0XHRcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzU3LVx0XHRcdFx0XHRlcnIgPSBleHBlY3RfcGZuX3NndGFibGUoXHUwMDI2cHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDA2CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaTkxNSBTZWxmdGVzdCBQYXJhbWV0ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmVgIGRlY2xhcmF0aW9uOiBgbW9ja19zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubW9jaywgaW50LCAwNDAwYC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2V0dGluZyB1cCBhbiBvcHRpb24gdG8gcnVuIHNlbGZ0ZXN0cyBmb3IgdGhlIGk5MTUgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCBsZXRzIHlvdSBydW4gdGhlc2UgdGVzdHMgdXNpbmcgJiMzNDttb2NrIGhhcmR3YXJlJiMzNDsuIFRoZSBwYXJhbWV0ZXIgaXRzZWxmLCBgaTkxNS5tb2NrX3NlbGZ0ZXN0c2AsIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGAwYCBkaXNhYmxlcyBpdCAod2hpY2ggaXMgdGhlIGRlZmF1bHQsIG1ha2VzIHNlbnNlKSwgYDFgIHJ1bnMgdGhlIHRlc3RzIGJlZm9yZSBsb2FkaW5nIHRoZSBkcml2ZXIsIGFuZCBgLTFgIHJ1bnMgdGhlIHRlc3RzIGFuZCB0aGVuIGV4aXRzLiAKClRoaXMgaXMgY2xlYXJseSBhbiBpbnRlcm5hbCBmcmFtZXdvcmssIGZvciB1bml0IHRlc3RzIHNwZWNpZmljYWxseS4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBmb3IgaTkxNSwgYmVjYXVzZSBpdCYjMzk7cyBpbiB0aGUgYGk5MTVfc2VsZnRlc3RgIG5hbWVzcGFjZS4gQnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBleGFjdCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGNyZWF0ZXMgYSBkZXZpY2Ugbm9kZSBvciBzb21lIGNoYXJhY3RlciBkZXZpY2UsIG9yIG9wZW5zIGl0c2VsZiB1cCB0byB1c2VybGFuZCBpbnRlcmFjdGlvbiB3aXRoIGFueSBmdXp6ZXJzLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCB0cnVseSB3b3JrcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBgaTkxNV9tb2NrX3NlbGZ0ZXN0cygpYCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0fVxuIDMwMTpcdFxuIDMwMjpcdCNkZWZpbmUgcnVuX3NlbGZ0ZXN0cyh4LCBkYXRhKSBcXFxuIDMwMzpcdFx0X19ydW5fc2VsZnRlc3RzKCN4LCB4IyNfc2VsZnRlc3RzLCBBUlJBWV9TSVpFKHgjI19zZWxmdGVzdHMpLCBkYXRhKVxuIDMwNDpcdFxuIDMwNTpcdGludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXG4gMzA2Olx0e1xuIDMwNzpcdFx0aW50IGVycjtcbiAzMDg6XHRcbiAzMDk6XHRcdGlmICghaTkxNV9zZWxmdGVzdC5tb2NrKVxuIDMxMDpcdFx0XHRyZXR1cm4gMDtcbiAzMTE6XHRcbiAzMTI6XHRcdGVyciA9IHJ1bl9zZWxmdGVzdHMobW9jaywgTlVMTCk7XG4gMzEzOlx0XHRpZiAoZXJyKSB7XG4gMzE0Olx0XHRcdGk5MTVfc2VsZnRlc3QubW9jayA9IGVycjtcbiAzMTU6XHRcdFx0cmV0dXJuIDE7XG4gMzE2Olx0XHR9XG4gMzE3Olx0XG4gMzE4Olx0XHRpZiAoaTkxNV9zZWxmdGVzdC5tb2NrIFx1MDAzYyAwKSB7XG4gMzE5Olx0XHRcdGk5MTVfc2VsZnRlc3QubW9jayA9IC1FTk9UVFk7XG4gMzIwOlx0XHRcdHJldHVybiAxO1xuIDMyMTpcdFx0fVxuIDMyMjpcdFxuIDMyMzpcdFx0cmV0dXJuIDA7XG4gMzI0Olx0fVxuIDMyNTpcdFxuIDMyNjpcdGludCBpOTE1X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIDMyNzpcdHtcbiAzMjg6XHRcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xuIDMyOTpcdFx0c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gXHUwMDI2aTkxNS1cdTAwM2V1bmNvcmU7XG4gMzMwOlx0XHRpbnQgZXJyO1xuIDMzMTpcdFx0dTMyIHBnX2VuYWJsZTtcbiAzMzI6XHRcdGludGVsX3dha2VyZWZfdCB3YWtlcmVmO1xuIDMzMzpcdFxuIDMzNDpcdFx0aWYgKCFpOTE1X3NlbGZ0ZXN0LmxpdmUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTgzCgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDExODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgbW9ja19zZWxmdGVzdHNgIGFyZSBpbnRlcm5hbCBhbmQgZG9uJiMzOTt0IGNyZWF0ZSBhIERSTSBkZXZpY2UsIHdoaWNoIGlzbiYjMzk7dCByZWxldmFudCBoZXJlIGFueXdheS4gYGk5MTVfcGNpX3Byb2JlYCBuZWVkcyBJbnRlbCBQQ0kgaGFyZHdhcmUuICBUaGUga2V5IGlzIHRoZSBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYXMgb3V0bGluZWQgaW4gc2VjdGlvbiAyIG9mIHRoZSBzeXN0ZW0gcHJvbXB0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmRpdGlvbiByZWxhdGVkIHRvIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4KClRoZSBwcmltYXJ5IGNoYW5nZSBpcyBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYGRybS9pOTE1YCBmYWxscyB1bmRlciB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBhbWRncHVgIHdoaWNoIGFsc28gbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUgdG8gdGVzdCBpbiBhIG1lYW5pbmdmdWwgd2F5LgoKWWVzLCBgZHJtL2k5MTVgICppcyogSW50ZWwmIzM5O3MgR1BVIGRyaXZlciwgc3VwcG9ydGluZyBJbnRlbCBpbnRlZ3JhdGVkIGFuZCBkaXNjcmV0ZSBHUFVzLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYywgcmVxdWlyaW5nIEludGVsIGhhcmR3YXJlLCBhbmQgY3J1Y2lhbGx5LCBpdCB3b24mIzM5O3QgcnVuIGNvcnJlY3RseSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMuIEkgZG91YmxlLWNoZWNrZWQ7IHRoZSBjb2RlIGlzICplbnRpcmVseSogY29udGFpbmVkIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYC4gTm8gb3RoZXIgY2FsbGVycyBvdXRzaWRlIHRoZSBgZHJtL2k5MTVgIGRyaXZlci4KClNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIGlzIHdpdGhpbiBhIGRyaXZlciB0aGF0IG5lZWRzIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGl0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzZXQ6CgoqICAgYFdvcnRoRnV6emluZyA9IGZhbHNlYAoqICAgYEZvY3VzU3ltYm9scyA9IFtdYAoqICAgYEVuYWJsZUNvbmZpZ3MgPSBbXWAKClRoZSByZWFzb25pbmcgaXMgY29uY2lzZSBhbmQgY2xlYXI6IHRoZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBJbnRlbCBpOTE1IERSTSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIEdQVSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBjb2RlIHBhdGggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiBBbGwgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX3NobWVtX3dyaXRlYmFja2AgaW4gYGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgSW50ZWwgaTkxNSBHUFUgZHJpdmVyLiBpOTE1IGlzIGEgdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGdyYXBoaWNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAoR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTQ6NTEuODc4NDQxMzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDQ2NzcxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1MS44Nzg0NDY0OTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzk2Njk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEzODkzMjJhYjk3OWQ4YjhiNzc2NTA0OGQ0ZmNkNDg4OWI0MjdkYzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTE6NTQ6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xcbkBAIC0zMjIsMTAgKzMyMiwxNiBAQCB2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcXG4gXFx0ICogYXMgbm9ybWFsLlxcbiBcXHQgKi9cXG4gXFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFxcdTAwMjZ3YmMsIGZvbGlvLCBcXHUwMDI2ZXJyb3IpKSkge1xcbi1cXHRcXHRpZiAoZm9saW9fbWFwcGVkKGZvbGlvKSlcXG4rXFx0XFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcXG4gXFx0XFx0XFx0Zm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKFxcdTAwMjZ3YmMsIGZvbGlvKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcXG4rXFx0XFx0XFx0aWYgKGVycm9yID09IEFPUF9XUklURVBBR0VfQUNUSVZBVEUpIHtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4rXFx0XFx0XFx0XFx0ZXJyb3IgPSAwO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1Mi4zMzcxNjU3ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4NTU4ODAzMjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEzODkzMjJhYjk3OWQ4YjhiNzc2NTA0OGQ0ZmNkNDg4OWI0MjdkYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAxMTo1NDo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbkBAIC0zMjIsMTAgKzMyMiwxNiBAQCB2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcbiBcdCAqIGFzIG5vcm1hbC5cbiBcdCAqL1xuIFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFx1MDAyNndiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpIHtcbi1cdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpXG4rXHRcdGlmIChmb2xpb19tYXBwZWQoZm9saW8pKSB7XG4gXHRcdFx0Zm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKFx1MDAyNndiYywgZm9saW8pO1xuLVx0XHRlbHNlXG4rXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcbitcdFx0XHRpZiAoZXJyb3IgPT0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURSkge1xuK1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0XHRcdGVycm9yID0gMDtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1Mi4zMzcxNjc4MjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODI4MTE0MTAwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgQ29udGV4dCBmb3IgQWNjZXNzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLiBUaGUgY29kZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGFkanVzdGluZyB0aGUgaGFuZGxpbmcgb2YgZm9saW8gd3JpdGViYWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGxvY2tpbmcgYW5kIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBhIGZvbGlvIGlzbid0IG1hcHBlZC4gQnV0LCBhcyBhbiBleHBlcnQgaW4gdGhpcywgSSBrbm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzICp3aGVyZSogdGhpcyBjb2RlIGV4ZWN1dGVzIGFuZCB3aGV0aGVyIGl0J3MgcmVsZXZhbnQgaW4gb3VyIHRlc3RpbmcgY29udGV4dC5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYGk5MTVgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHRoZXNlIGVudmlyb25tZW50cyBhcmVuJ3QgcGVyZmVjdCBlbXVsYXRvcnMgZm9yICpldmVyeSogcGllY2Ugb2YgaGFyZHdhcmUsIGVzcGVjaWFsbHkgc3BlY2lhbGl6ZWQgZGV2aWNlcy5cblxuVGhlIHByb21wdCwgc3BlY2lmaWNhbGx5IHNlY3Rpb24gMiwgaGlnaGxpZ2h0cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBhbmQgaXQgZXhwbGljaXRseSBsaXN0cyBzZXZlcmFsIGV4YW1wbGVzLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBpbXBsaWNhdGlvbjogaXMgYGk5MTVgIG9uZSBvZiB0aG9zZSB1bnJlYWNoYWJsZSBjb21wb25lbnRzPyBRRU1VLCBpbiBnZW5lcmFsLCBkb2Vzbid0IGVtdWxhdGUgaGFyZHdhcmUgbGlrZSBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzLiBJdCBvZmZlcnMgKm90aGVyKiB2aXJ0dWFsaXplZCBncmFwaGljcyBkZXZpY2VzIGxpa2UgYm9jaHMtZHJtLCB2aXJ0aW8tZ3B1LCBhbmQgc28gb24uIEJ1dCwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGZ1bGwgYGk5MTVgIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IGZvciByZWNlbnQgZ2VuZXJhdGlvbnMsIGlzIGEgbm8tZ28gaW4gc3RhbmRhcmQgUUVNVS4gSXQncyBlaXRoZXIgaGFyZHdhcmUgcGFzc3Rocm91Z2ggb3IsIG1heWJlLCBHVlQtZywgd2hpY2ggYWxzbyBpbXBsaWVzIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBvbiB0aGUgaG9zdC5cblxuVGhlcmVmb3JlLCBpcyBgaTkxNWAgbGlrZSBgYW1kZ3B1YCBvciBgbm91dmVhdWAsIHJlcXVpcmluZyBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkIGFuZCB0aHVzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VP1xuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgaTkxNWAgZXZlbiAqaGFzKiBhIG1vY2sgb3IgZHVtbXkgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGNvbnNpZGVyZWQgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBpbiB0aGlzIHNjZW5hcmlvLCBvciBpZiBzeXprYWxsZXIgdGFyZ2V0cyBpdC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgR2l0IGxvZ3MgdG8gZ2V0IGEgc29saWQgYW5zd2VyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgKmFueSogdmlhYmxlIHBhdGggdG8gZnV6emluZyB0aGlzIGNvZGUgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzIG9yIHdpdGggc29tZSBzaW11bGF0ZWQvZW11bGF0ZWQgbW9kZS4gSSB3aWxsIGFsc28gcmUtcmVhZCB0aGUgcHJvbXB0IGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTc6NTUuMTQ4NTgwNzMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTgyMTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFJNX0k5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc9Nz1DT05GSUdfRFJNPXlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc6ODpDT05GSUdfRFJNX0k5MTU9eVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1Ly5rdW5pdGNvbmZpZzo5OkNPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUPXlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAkKGNhbGwgY2Mtb3B0aW9uLCAtV2Zvcm1hdC10cnVuY2F0aW9uKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtOS0jIEVuYWJsZSAtV2Vycm9yIGluIENJIGFuZCBkZXZlbG9wbWVudFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjEwOnN1YmRpci1jY2ZsYWdzLSQoQ09ORklHX0RSTV9JOTE1X1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTExLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9MzM3PWk5MTUteSArPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6Mzg2Omk5MTUtJChDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtMzg3LVxcdGRpc3BsYXkvaW50ZWxfZHBfdHVubmVsLm9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6Mzg5Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSArPSBkaXNwbGF5L3Rlc3RzL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM5MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTozOTE6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9HVlQpICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zOTItXFx0ZGlzcGxheS9pbnRlbF9ndnRfYXBpLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTM5OD1pOTE1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDAyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQwMzppOTE1LSQoQ09ORklHX0RSTV9JOTE1X1BYUCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQwNC1cXHRweHAvaW50ZWxfcHhwX2NtZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMS0jIFBvc3QtbW9ydGVtIGRlYnVnIGFuZCBHUFUgaGFuZyBzdGF0ZSBjYXB0dXJlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDEyOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMy1cXHRpOTE1X2dwdV9lcnJvci5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDE0Omk5MTUtJChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MTUtXFx0Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDI5PWk5MTUteSArPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDMyOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfR1ZUKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDMzLVxcdGludGVsX2d2dC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTQzNT1pbmNsdWRlICQoc3JjKS9ndnQvTWFrZWZpbGVcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDM3Om9iai0kKENPTkZJR19EUk1fSTkxNSkgKz0gaTkxNS5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDM4Om9iai0kKENPTkZJR19EUk1fSTkxNV9HVlRfS1ZNR1QpICs9IGt2bWd0Lm9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NDEtI1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQ0MjojIEVuYWJsZSBsb2NhbGx5IGZvciBDT05GSUdfRFJNX0k5MTVfV0VSUk9SPXkuIFNlZSBhbHNvIHNjcmlwdHMvTWFrZWZpbGUuYnVpbGRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0NDM6aWZkZWYgQ09ORklHX0RSTV9JOTE1X1dFUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQ0NC0gICAgY21kX2NoZWNrZG9jID0gUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MSAkKFBZVEhPTjMpICQoS0VSTkVMRE9DKSAtbm9uZSAtV2Vycm9yICRcXHUwMDNjXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00NTA9bm8taGVhZGVyLXRlc3QgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDUyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQ1MzphbHdheXMtJChDT05GSUdfRFJNX0k5MTVfV0VSUk9SKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDU0LVxcdCQocGF0c3Vic3QgJS5oLCUuaGRydGVzdCwgJChmaWx0ZXItb3V0ICQobm8taGVhZGVyLXRlc3QpLCBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz01ODc9dm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTY1Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02NTgtc3RhdGljIHZvaWQgZGJnX3ZibGFua19ldmFkZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywga3RpbWVfdCBlbmQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jPTQxMj1zdGF0aWMgdm9pZCBpbnRlbF9zY2FsZXJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYy00NDAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYzo0NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jLTQ0Mi1zdGF0aWMgdm9pZCBjcnRjX3VwZGF0ZXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz01MjY9c3RhdGljIHZvaWQgX19hc3luY19wdXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy01MzQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6NTM1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTUzNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTYxOT12ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTYyMi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzo2MjM6I2VuZGlmIC8qIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNjI0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9OTk2PWludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29ya19zeW5jKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTAwNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDA4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwMDktLyoqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDQ5PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNTctXFx0d2YgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkaXNwbGF5LCBkb21haW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jOjEwNTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA1OS1cXHRwb3dlcl9kb21haW5fc2V0LVxcdTAwM2V3YWtlcmVmc1tkb21haW5dID0gd2Y7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDY1PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldF9pZl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNzgtXFx0cG93ZXJfZG9tYWluX3NldC1cXHUwMDNld2FrZXJlZnNbZG9tYWluXSA9IHdmO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MTA4Nj1pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9tYXNrX2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwOTctXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MTA5ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDk5LVxcdFxcdHdmID0gZmV0Y2hfYW5kX3plcm8oXFx1MDAyNnBvd2VyX2RvbWFpbl9zZXQtXFx1MDAzZXdha2VyZWZzW2RvbWFpbl0pO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MjMyNT1zdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTIzMzgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MjMzOTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0yMzQwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmg9MTk1PXN0cnVjdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zZXQge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oLTE5Ni1cXHRzdHJ1Y3QgaW50ZWxfcG93ZXJfZG9tYWluX21hc2sgbWFzaztcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoxOTc6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgtMTk4LVxcdHN0cnVjdCByZWZfdHJhY2tlciAqd2FrZXJlZnNbUE9XRVJfRE9NQUlOX05VTV07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaD0yNDA9dm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oOjI0MTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0yNDItdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmM9NTE4PWljbF9jb21ib19waHlfYXV4X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmM6NTM4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmg9MTQ5Nj1zdHJ1Y3QgaW50ZWxfY3J0YyB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaC0xNTYyLVxcdFxcdGludCBzY2FubGluZV9zdGFydDtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaDoxNTYzOiNpZmRlZiBDT05GSUdfRFJNX0k5MTVfREVCVUdfVkJMQU5LX0VWQURFXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgtMTU2NC1cXHRcXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaD0yMT1zdHJ1Y3QgaW50ZWxfbGlua19id19saW1pdHM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0yMi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oOjIzOiNpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKEk5MTUpKSB8fCBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0yNC1cXHQoSVNfRU5BQkxFRChDT05GSUdfRFJNX1hFX0RQX1RVTk5FTCkgXFx1MDAyNlxcdTAwMjYgIWRlZmluZWQoSTkxNSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oPTE1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZHBfdHVubmVsX21ncl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KSB7fVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfdHVubmVsLmgtMTU2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfdHVubmVsLmg6MTU3OiNlbmRpZiAvKiBDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMIHx8IENPTkZJR19EUk1fWEVfRFBfVFVOTkVMICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9NDc9c3RydWN0IGludGVsX3RjX3BvcnQge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTUzLVxcdHN0cnVjdCByZWZfdHJhY2tlciAqbG9ja193YWtlcmVmO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtNTUtXFx0ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBsb2NrX3Bvd2VyX2RvbWFpbjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xOTU9dGNfY29sZF9ibG9jayhzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAwLVxcdHdha2VyZWYgPSBfX3RjX2NvbGRfYmxvY2sodGMsIFxcdTAwMjZkb21haW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTIwMi1cXHR0Yy1cXHUwMDNlbG9ja19wb3dlcl9kb21haW4gPSBkb21haW47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9MjE3PXRjX2NvbGRfdW5ibG9jayhzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIHN0cnVjdCByZWZfdHJhY2tlciAqd2FrZXJlZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0yMjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjIyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjIzLVxcdGRybV9XQVJOX09OKGRpc3BsYXktXFx1MDAzZWRybSwgdGMtXFx1MDAzZWxvY2tfcG93ZXJfZG9tYWluICE9IGRvbWFpbik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Rlc3RzL01ha2VmaWxlPTM9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Rlc3RzL01ha2VmaWxlLTQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSArPSBpOTE1X2Rpc3BsYXlfdGVzdC5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS02LWk5MTVfZGlzcGxheV90ZXN0LXkgPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTk3NT1zdGF0aWMgaW50IGludGVsX2NvbnRleHRfc2V0X2dlbShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTk5OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjk5OTpcXHRpZiAoQ09ORklHX0RSTV9JOTE1X1JFUVVFU1RfVElNRU9VVCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMTAwMC1cXHQgICAgY3R4LVxcdTAwM2VpOTE1LVxcdTAwM2VwYXJhbXMucmVxdWVzdF90aW1lb3V0X21zKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTIxMTQ9c3RhdGljIGludCBzZXRfY29udGV4dF9pbWFnZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yMTIzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM6MjEyNDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTIxMjUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTI2NzY9aTkxNV9nZW1fZW5naW5lc19pdGVyX25leHQoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciAqaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyNjk0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTUtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjcwND1pbnQgX19pbml0IGk5MTVfZ2VtX2NvbnRleHRfbW9kdWxlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcwOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxMS1cXHRcXHRwcl9ub3RpY2UoXFxcIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxNi1cXHRcXHRlbHNlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyNzE3OlxcdFxcdFxcdHByX25vdGljZShcXFwiKiogQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJIGJ1aWxkcyBhcmUgaW50ZW5kZWQgKipcXFxcblxcXCIpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxOC1cXHRcXHRwcl9ub3RpY2UoXFxcIioqIGZvciBzcGVjaWZpYyB1c2Vyc3BhY2UgZ3JhcGhpY3Mgc3RhY2sgZGV2ZWxvcGVycyBvbmx5ISAgICoqXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYz0yODE9c3RydWN0IGRybV9nZW1fb2JqZWN0ICppOTE1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYy0zNDMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jOjM0NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0NS0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL21vY2tfZG1hYnVmLmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTQ5PWVudW0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy03OC0vKiBDYXRjaCBlbWlzc2lvbiBvZiB1bmV4cGVjdGVkIGVycm9ycyBmb3IgQ0khICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzo3OTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtODAtI3VuZGVmIEVJTlZBTFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYz0yNDU9c3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTMxNC1cXHR1bnNpZ25lZCBsb25nIG51bV9mZW5jZXM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzozMTU6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0zMTYtXFx0c3RydWN0IGk5MTVfY2FwdHVyZV9saXN0ICpjYXB0dXJlX2xpc3RzW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM9MTk3Mz1lYl9maW5kX2ZpcnN0X3JlcXVlc3RfYWRkZWQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTE5ODUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzoxOTg2OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4Ny1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM9MzM4PXN0YXRpYyB2bV9mYXVsdF90IHZtX2ZhdWx0X2d0dChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDc3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6NDc4OlxcdGlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDc5LVxcdFxcdGludGVsX3dha2VyZWZfYXV0byhcXHUwMDI2aTkxNS1cXHUwMDNlcnVudGltZV9wbS51c2VyZmF1bHRfd2FrZXJlZixcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ4MDpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDgxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYz0xMTE2PWludCBpOTE1X2dlbV9mYl9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTUzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6MTE1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTU1LSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jPTk2MD1ib29sIGk5MTVfZ2VtX29iamVjdF9oYXNfdW5rbm93bl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jLTk3MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmM6OTcxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMtOTcyLSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvaHVnZV9nZW1fb2JqZWN0LmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jPTIyNz1pbnQgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBhbGlnbilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlzLmMtMjYzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlzLmM6MjY0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jLTI2NS0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYz01OTc9c3RhdGljIHZvaWQgZGJnX3BvaXNvbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jLTYwMC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jOjYwMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYy02MDItXFx0aWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoXFx1MDAyNmdndHQtXFx1MDAzZWVycm9yX2NhcHR1cmUpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jPTEwNDI9c3RhdGljIHZtX2ZhdWx0X3Qgdm1fZmF1bHRfdHRtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjExNDE6XFx0aWYgKHdha2VyZWYgXFx1MDAyNlxcdTAwMjYgQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCAhPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy0xMTQyLVxcdFxcdGludGVsX3dha2VyZWZfYXV0byhcXHUwMDI2dG9faTkxNShvYmotXFx1MDAzZWJhc2UuZGV2KS1cXHUwMDNlcnVudGltZV9wbS51c2VyZmF1bHRfd2FrZXJlZixcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM6MTE0MzpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy0xMTQ0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmMtMzItICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmM6MzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fbW92ZS5jLTM0LXN0YXRpYyBib29sIGZhaWxfZ3B1X21pZ3JhdGlvbjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYz02Mzg9Ym9vbCBpbnRlbF9jb250ZXh0X3Jldm9rZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYzo2NDg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYy02NDktI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2NvbnRleHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaD0zNzM9aW50ZWxfY29udGV4dF9jbGVhcl9ub3ByZWVtcHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oLTM3Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0Lmg6Mzc4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgtMzc5LXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9jb250ZXh0X2hhc19vd25fc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oPTc3PXN0cnVjdCBpbnRlbF9jb250ZXh0IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaC0zMDgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oOjMwOTojaWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oLTMxMC1cXHQvKipcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oPTMwMT1pbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRfcmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oLTMwMi17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MzAzOlxcdGlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMDQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzM4PWludGVsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMzkte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oOjM0MDpcXHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgtMzQxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jPTQ0OT1zdGF0aWMgaW50IGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxMC1cXHRlbmdpbmUtXFx1MDAzZXByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcyA9XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTExOlxcdFxcdENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUw7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTEyLVxcdGVuZ2luZS1cXHUwMDNlcHJvcHMubWF4X2J1c3l3YWl0X2R1cmF0aW9uX25zID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTM6XFx0XFx0Q09ORklHX0RSTV9JOTE1X01BWF9SRVFVRVNUX0JVU1lXQUlUO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxNC1cXHRlbmdpbmUtXFx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTE1OlxcdFxcdENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVQ7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTE2LVxcdGVuZ2luZS1cXHUwMDNlcHJvcHMuc3RvcF90aW1lb3V0X21zID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTc6XFx0XFx0Q09ORklHX0RSTV9JOTE1X1NUT1BfVElNRU9VVDtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTgtXFx0ZW5naW5lLVxcdTAwM2Vwcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxOTpcXHRcXHRDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNFX0RVUkFUSU9OO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyNy1cXHRpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDEyIFxcdTAwMjZcXHUwMDI2IChlbmdpbmUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSTkxNV9FTkdJTkVfSEFTX1JDU19SRUdfU1RBVEUpKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUyODpcXHRcXHRlbmdpbmUtXFx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVRfQ09NUFVURTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MjktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz0yNTQxPXZvaWQgeGVocF9lbmFibGVfY2NzX2VuZ2luZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtMjU1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzoyNTU4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy0yNTU5LSNpbmNsdWRlIFxcXCJtb2NrX2VuZ2luZS5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTEyMD1yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMTIxLXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmM6MTIyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0xMjMtXFx0XFx0c2hvd19oZWFydGJlYXQocnEsIGVuZ2luZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmM9MjQ1PXZvaWQgaW50ZWxfZW5naW5lX3VucGFya19oZWFydGJlYXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0yNDYte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoyNDc6XFx0aWYgKCFDT05GSUdfRFJNX0k5MTVfSEVBUlRCRUFUX0lOVEVSVkFMKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0yNDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTM5Mz1pbnQgaW50ZWxfZW5naW5lX2ZsdXNoX2JhcnJpZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy00MjYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jOjQyNzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jLTQyOC0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmM9MzU9c3RhdGljIHZvaWQgZGJnX3BvaXNvbl9jZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMtMzYte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jOjM3OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYz0zMTE9dm9pZCBpbnRlbF9lbmdpbmVfcmVzZXRfcGlubmVkX2NvbnRleHRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYzozMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNy0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX3BtLmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaD02ODM9aW50ZWxfZW5naW5lX2hhc190aW1lc2xpY2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC02ODQte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oOjY4NTpcXHRpZiAoIUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT04pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgtNjg2LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmM9MjA2PXZvaWQgaW50ZWxfZW5naW5lc19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jLTI2MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jOjI2MjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjM6XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jLTI2NC1cXHRcXHRzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNT1leGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nIHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDIwLVxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDIxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfR1ZUKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQ3Mj1fX2V4ZWNsaXN0c19zY2hlZHVsZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg1LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDg2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg3LVxcdFxcdGxyY19jaGVja19yZWdzKGNlLCBlbmdpbmUsIFxcXCJiZWZvcmVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NTg2PXN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgcnEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTYwMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjYwMTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTYwMi1cXHRcXHRscmNfY2hlY2tfcmVncyhjZSwgZW5naW5lLCBcXFwiYWZ0ZXJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9OTQxPXN0YXRpYyBib29sIGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTk0Mi17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo5NDM6XFx0cmV0dXJuIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9HVlQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy05NDQtXFx0XFx0aW50ZWxfY29udGV4dF9mb3JjZV9zaW5nbGVfc3VibWlzc2lvbihjZSkpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yMzI1PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjMyOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjIzMzA6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTIzMzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yNDEwPXN0YXRpYyBib29sIHByZWVtcHRfdGltZW91dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpjb25zdCBlbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI0MTMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyNDE0OlxcdGlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI0MTUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yODU0PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI4NjYtXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyODY3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjg2OC1cXHRcXHRtZW1zZXQoZW5naW5lLVxcdTAwM2VzdGF0dXNfcGFnZS5hZGRyLCBQT0lTT05fSU5VU0UsIFBBR0VfU0laRSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTM0Mjc9bG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQ3Mi1cXHRcXHRcXHRlbmdpbmUtXFx1MDAzZWZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6MzQ3MzpcXHRcXHRcXHRpZiAoQ09ORklHX0RSTV9JOTE1X1RJTUVTTElDRV9EVVJBVElPTilcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTM0NzQtXFx0XFx0XFx0XFx0ZW5naW5lLVxcdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElNRVNMSUNFUztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NDE1OT12b2lkIGludGVsX2V4ZWNsaXN0c19kdW1wX2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0MTc1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzYtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2V4ZWNsaXN0cy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYz02MzE9c3RhdGljIGludCBfX2VuZ2luZXNfdmVyaWZ5X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jLTYzNi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jOjYzNzpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYy02MzgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jPTE3Mj12b2lkIGludGVsX2d0X2luaXRfY2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE4OS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jOjE5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMtMTkxLXZvaWQgaW50ZWxfZ3RfY2hlY2tfY2xvY2tfZnJlcXVlbmN5KGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oPTEzPXZvaWQgaW50ZWxfZ3RfaW5pdF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX2d0ICpndCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuaC0xNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oOjE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuaC0xNi12b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9NDE5PWt0aW1lX3QgaW50ZWxfZ3RfZ2V0X2F3YWtlX3RpbWUoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMtNDMxLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6NDMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jLTQzMy0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZ3RfcG0uY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTM0Nj1zdGF0aWMgdm9pZCBwb2lzb25fc2NyYXRjaF9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpzY3JhdGNoKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtMzUxLVxcdHZhbCA9IDA7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmM6MzUyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jLTM1My1cXHRcXHR2YWwgPSBQT0lTT05fRlJFRTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTcxNj1fX3ZtX2NyZWF0ZV9zY3JhdGNoX2Zvcl9yZWFkX3Bpbm5lZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdW5zaWduZWQgbG9uZyBzaXplKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtNzM0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jOjczNTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtNzM2LSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvbW9ja19ndHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTM2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjM3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9UUkFDRV9HVFQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgtMzgtI2RlZmluZSBHVFRfVFJBQ0UoLi4uKSB0cmFjZV9wcmludGsoX19WQV9BUkdTX18pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYz0xNTc9dm9pZCBpbnRlbF9sbGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYy0xNjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmM6MTYyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYy0xNjMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2xsYy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9OTY3PXNldF9yZWR6b25lKHZvaWQgKnZhZGRyLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTY4LXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYzo5Njk6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz05Nzg9Y2hlY2tfcmVkem9uZShjb25zdCB2b2lkICp2YWRkciwgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3OS17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6OTgwOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy05ODEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTA3ND1fX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTEwODEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTA4MjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xMDgzLVxcdFxcdGNvbnRleHRfc2l6ZSArPSBJOTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz0xOTMwPXN0YXRpYyB2b2lkIHN0X3J1bnRpbWVfdW5kZXJmbG93KHN0cnVjdCBpbnRlbF9jb250ZXh0X3N0YXRzICpzdGF0cywgczMyIGR0KVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzEte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjE5MzI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzMtXFx0c3RhdHMtXFx1MDAzZXJ1bnRpbWUubnVtX3VuZGVyZmxvdysrO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTk1MD12b2lkIGxyY191cGRhdGVfcnVudGltZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjE5NzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5NzQtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2xyYy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jPTExNTE9dm9pZCBpbnRlbF9taWdyYXRlX2Zpbmkoc3RydWN0IGludGVsX21pZ3JhdGUgKm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmMtMTE2MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmM6MTE2MjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jLTExNjMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X21pZ3JhdGUuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYz02NjY9dm9pZCBpbnRlbF9tb2NzX2luaXQoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYy02ODYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jOjY4NzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4OC0jaW5jbHVkZSBcXFwic2VsZnRlc3RfbW9jcy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmM9ODU3PXZvaWQgaW50ZWxfcmM2X3ByaW50X3Jlc2lkZW5jeShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKnRpdGxlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODY5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5jOjg3MDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODcxLSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9yYzYuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTcxNz1ib29sIGludGVsX2VuZ2luZV9yZXNldF9uZWVkc193YV8yMjAxMTgwMjAzNyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNzMwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTczMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNzMyLSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9yZXNldC5jXFxcIlxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU3OjU1LjYwNDQwNzI5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ0NTMzMTU2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9tcHQncyBIYXJkd2FyZSBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIExldCdzIHJlYWxseSBkaXNzZWN0IHRoaXMgcHJvbXB0LiBJdCdzIGhpZ2hsaWdodGluZyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBzcGVjaWZpY2FsbHkgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzLiBUaGUgZXhhbXBsZXMgZ2l2ZW4g4oCTIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1IOKAkyBhbGwgaGF2ZSB0aGlzIGNhdmVhdDogdGhleSAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBhbmQgY3JpdGljYWxseSwgdGhlc2UgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBpOTE1LiBJcyAqaXQqIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnM/IERvZXMgaTkxNSBkZW1hbmQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBjb3VsZCBpdCBwb3RlbnRpYWxseSBiZSBlbXVsYXRlZCB3aXRoaW4gdGhlIFFFTVUgZW52aXJvbm1lbnQ/XG5cblRoZSBjb3JlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogRG9lcyBRRU1VLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgb2ZmZXIgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGZvciBJbnRlbCdzIGludGVncmF0ZWQgR1BVcywgc3BlY2lmaWNhbGx5IHRoZSBpOTE1PyBUaGF0J3MgYSByZXNvdW5kaW5nIFwibm9cIiBiYXNlZCBvbiBteSBleHBlcmllbmNlLiBRRU1VIGhhc24ndCBoaXN0b3JpY2FsbHkgaW5jbHVkZWQgYW4gSW50ZWwgaW50ZWdyYXRlZCBHUFUgZW11bGF0b3IgZm9yIGk5MTUuXG5cblNvLCB0aGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiBpOTE1IGNhbiBldmVuIGJlIHByb2JlZCBvciBpbml0aWFsaXplZCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIOKAkyBwb3RlbnRpYWxseSBkaXZpbmcgaW50byBgaTkxNV9wY2kuY2Agb3IgZXhhbWluaW5nIGhvdyBpOTE1IGJpbmRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCByZXF1aXJlcyBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDI3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjAwLjA1NzcyNTM1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ4ODY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyLippOTE1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmM9MTAzNz1pbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYy0xMDM4LXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jOjEwMzk6XFx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmk5MTVfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYy0xMDQwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6MDAuMTE3MjIyNjYxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjk0MjQyNzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgaTkxNSBQQ0kgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIExldCdzIHN0YXJ0IHdpdGggYGk5MTVfcGNpX2RyaXZlcmAsIGFuZCBJJ2xsIGp1bXAgcmlnaHQgaW50byBgaTkxNV9wY2kuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUENJIGRyaXZlciBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBob3cgaXQncyBtYW5hZ2luZyB0aGUgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZDogdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY2Vzc2VzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgQkFSIG1hcHBpbmdzIG9yIGludGVycnVwdCBoYW5kbGluZyBzdHJhdGVnaWVzPyBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBzZXR0aW5nIHVwIHRoZSBtbWlvIHJlZ2lvbnMgYW5kIGhhbmRsaW5nIHRoZSB2YXJpb3VzIHBsYXRmb3JtIHF1aXJrcyB0aGF0IGFsd2F5cyBzZWVtIHRvIHBvcCB1cC4gVGhpcyBmaWxlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEyMiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjAzLjA1OTY1ODM2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODE0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMjA6XFx0XFxuMTAyMTpcXHRzdGF0aWMgdm9pZCBpOTE1X3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4xMDIyOlxcdHtcXG4xMDIzOlxcdFxcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xcbjEwMjQ6XFx0XFxuMTAyNTpcXHRcXHRpOTE1X2RyaXZlcl9zaHV0ZG93bihpOTE1KTtcXG4xMDI2OlxcdH1cXG4xMDI3OlxcdFxcbjEwMjg6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGk5MTVfcGNpX2RyaXZlciA9IHtcXG4xMDI5OlxcdFxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuMTAzMDpcXHRcXHQuaWRfdGFibGUgPSBwY2lpZGxpc3QsXFxuMTAzMTpcXHRcXHQucHJvYmUgPSBpOTE1X3BjaV9wcm9iZSxcXG4xMDMyOlxcdFxcdC5yZW1vdmUgPSBpOTE1X3BjaV9yZW1vdmUsXFxuMTAzMzpcXHRcXHQuc2h1dGRvd24gPSBpOTE1X3BjaV9zaHV0ZG93bixcXG4xMDM0OlxcdFxcdC5kcml2ZXIucG0gPSBcXHUwMDI2aTkxNV9wbV9vcHMsXFxuMTAzNTpcXHR9O1xcbjEwMzY6XFx0XFxuMTAzNzpcXHRpbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuMTAzODpcXHR7XFxuMTAzOTpcXHRcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcXG4xMDQwOlxcdH1cXG4xMDQxOlxcdFxcbjEwNDI6XFx0dm9pZCBpOTE1X3BjaV91bnJlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbjEwNDM6XFx0e1xcbjEwNDQ6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZpOTE1X3BjaV9kcml2ZXIpO1xcbjEwNDU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODowMy4wNTk3Njg2NzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNDk2MzM2ODQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGk5MTUgUENJIElEIExpc3QqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBJbnRlbCBpOTE1IGdyYXBoaWNzIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gdGhlIFBDSSBidXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBpOTE1X3BjaS5jYCBzb3VyY2UgY29kZS4gVGhlIGBwY2lpZGxpc3RgIHZhcmlhYmxlIGlzIG15IGZpcnN0IHN0b3AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgbWF0Y2hpbmcgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGtub3dpbmcgd2hpY2ggZGV2aWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGggYW5kIGhvdyB0byBoYW5kbGUgdGhlbSBjb3JyZWN0bHkuIEkgd2FudCB0byBzZWUgaG93IHRoZXkncmUgZW51bWVyYXRlZCwgaG93IHRoZSBJRHMgYXJlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IHZlbmRvci9kZXZpY2UgY29tYmluYXRpb25zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBsaXN0IG9mIFBDSSBkZXZpY2UgSURzIHRoYXQgdGhlIGRyaXZlciByZWNvZ25pemVzLCBhbG9uZyB3aXRoIGFzc29jaWF0ZWQgZmxhZ3Mgb3IgZGF0YSB0aGF0IHRlbGwgdGhlIGRyaXZlciBob3cgdG8gaW5pdGlhbGl6ZSBvciBpbnRlcmFjdCB3aXRoIGVhY2ggc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudC4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgdGhhdCBzdWdnZXN0IHRoZSBhZGRpdGlvbiBvciBhbHRlcmF0aW9uIG9mIGRldmljZSBzdXBwb3J0IG92ZXIgdGltZSwgYW5kIGFueSB0cmVuZHMgaW4gaG93IGRpZmZlcmVudCByZXZpc2lvbnMgYXJlIGhhbmRsZWQuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJlc3RpbmcgcXVpcmtzIGluIHRoZSBsaXN0IHRvbywgcG90ZW50aWFsbHkgc29tZSBlbnRyaWVzIHRoYXQgcmVxdWlyZWQgc3BlY2lmaWMgd29ya2Fyb3VuZHMgb3IgaGFuZGxpbmcgb2YgZWRnZSBjYXNlcy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc5MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6MTguMDIzMTQxNzg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk1MDpcXHRzdGF0aWMgYm9vbCBpbnRlbF9tbWlvX2Jhcl92YWxpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbnRlbF9pbmZvKVxcbiA5NTE6XFx0e1xcbiA5NTI6XFx0XFx0cmV0dXJuIGk5MTVfcGNpX3Jlc291cmNlX3ZhbGlkKHBkZXYsIGludGVsX21taW9fYmFyKGludGVsX2luZm8tXFx1MDAzZV9fcnVudGltZS5ncmFwaGljcy5pcC52ZXIpKTtcXG4gOTUzOlxcdH1cXG4gOTU0OlxcdFxcbiA5NTU6XFx0c3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gOTU2OlxcdHtcXG4gOTU3OlxcdFxcdHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW50ZWxfaW5mbyA9XFxuIDk1ODpcXHRcXHRcXHQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICopIGVudC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDk1OTpcXHRcXHRpbnQgZXJyO1xcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHRpZiAoIWludGVsX2luZm8pXFxuIDk2MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gOTYzOlxcdFxcbiA5NjQ6XFx0XFx0aWYgKGludGVsX2luZm8tXFx1MDAzZXJlcXVpcmVfZm9yY2VfcHJvYmUgXFx1MDAyNlxcdTAwMjYgIWlkX2ZvcmNlZChwZGV2LVxcdTAwM2VkZXZpY2UpKSB7XFxuIDk2NTpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiA5NjY6XFx0XFx0XFx0XFx0IFxcXCJZb3VyIGdyYXBoaWNzIGRldmljZSAlMDR4IGlzIG5vdCBwcm9wZXJseSBzdXBwb3J0ZWQgYnkgaTkxNSBpbiB0aGlzXFxcXG5cXFwiXFxuIDk2NzpcXHRcXHRcXHRcXHQgXFxcImtlcm5lbCB2ZXJzaW9uLiBUbyBmb3JjZSBkcml2ZXIgcHJvYmUgYW55d2F5LCB1c2UgaTkxNS5mb3JjZV9wcm9iZT0lMDR4XFxcXG5cXFwiXFxuIDk2ODpcXHRcXHRcXHRcXHQgXFxcIm1vZHVsZSBwYXJhbWV0ZXIgb3IgQ09ORklHX0RSTV9JOTE1X0ZPUkNFX1BST0JFPSUwNHggY29uZmlndXJhdGlvbiBvcHRpb24sXFxcXG5cXFwiXFxuIDk2OTpcXHRcXHRcXHRcXHQgXFxcIm9yIChyZWNvbW1lbmRlZCkgY2hlY2sgZm9yIGtlcm5lbCB1cGRhdGVzLlxcXFxuXFxcIixcXG4gOTcwOlxcdFxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZWRldmljZSwgcGRldi1cXHUwMDNlZGV2aWNlKTtcXG4gOTcxOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA5NzI6XFx0XFx0fVxcbiA5NzM6XFx0XFxuIDk3NDpcXHRcXHRpZiAoaWRfYmxvY2tlZChwZGV2LVxcdTAwM2VkZXZpY2UpKSB7XFxuIDk3NTpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSTkxNSBwcm9iZSBibG9ja2VkIGZvciBEZXZpY2UgSUQgJTA0eC5cXFxcblxcXCIsXFxuIDk3NjpcXHRcXHRcXHRcXHQgcGRldi1cXHUwMDNlZGV2aWNlKTtcXG4gOTc3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA5Nzg6XFx0XFx0fVxcbiA5Nzk6XFx0XFxuIDk4MDpcXHRcXHRpZiAoaW50ZWxfaW5mby1cXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSkge1xcbiA5ODE6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZvcmNlIHByb2JpbmcgdW5zdXBwb3J0ZWQgRGV2aWNlIElEICUwNHgsIHRhaW50aW5nIGtlcm5lbFxcXFxuXFxcIixcXG4gOTgyOlxcdFxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UpO1xcbiA5ODM6XFx0XFx0XFx0YWRkX3RhaW50KFRBSU5UX1VTRVIsIExPQ0tERVBfU1RJTExfT0spO1xcbiA5ODQ6XFx0XFx0fVxcbiA5ODU6XFx0XFxuIDk4NjpcXHRcXHQvKiBPbmx5IGJpbmQgdG8gZnVuY3Rpb24gMCBvZiB0aGUgZGV2aWNlLiBFYXJseSBnZW5lcmF0aW9uc1xcbiA5ODc6XFx0XFx0ICogdXNlZCBmdW5jdGlvbiAxIGFzIGEgcGxhY2Vob2xkZXIgZm9yIG11bHRpLWhlYWQuIFRoaXMgY2F1c2VzXFxuIDk4ODpcXHRcXHQgKiB1cyBjb25mdXNpb24gaW5zdGVhZCwgZXNwZWNpYWxseSBvbiB0aGUgc3lzdGVtcyB3aGVyZSBib3RoXFxuIDk4OTpcXHRcXHQgKiBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBQQ0ktSUQhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjE4LjAyMzMzNjA5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzc0MTgwMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBgX19zaG1lbV93cml0ZWJhY2tgLiBTZWVtcyBsaWtlIHRoaXMgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgbmFtZSBoaW50cyBhdCBzb21lIGtpbmQgb2Ygc2hhcmVkIG1lbW9yeSB3cml0ZWJhY2sgb3BlcmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBnZXQgYSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiBpdC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZCBhbmQsIGV2ZW4gbW9yZSBpbXBvcnRhbnRseSwgKndobyogaXMgY2FsbGluZyB0aGlzIHRoaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBncmVhdGVyIHNjaGVtZSBvZiB0aGluZ3MuIExldCdzIHN0YXJ0IHdpdGggdGhlIGxpa2VseSBjYW5kaWRhdGU6IGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSByZWxhdGVkIGNvZGUuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODUxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODoyMS43OTc1MTk3NzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdHNobWVtX3RydW5jYXRlX3JhbmdlKGZpbGVfaW5vZGUob2JqLVxcdTAwM2ViYXNlLmZpbHApLCAwLCAobG9mZl90KS0xKTtcXG4gMzAxOlxcdFxcdG9iai1cXHUwMDNlbW0ubWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDtcXG4gMzAyOlxcdFxcdG9iai1cXHUwMDNlbW0ucGFnZXMgPSBFUlJfUFRSKC1FRkFVTFQpO1xcbiAzMDM6XFx0XFxuIDMwNDpcXHRcXHRyZXR1cm4gMDtcXG4gMzA1OlxcdH1cXG4gMzA2OlxcdFxcbiAzMDc6XFx0dm9pZCBfX3NobWVtX3dyaXRlYmFjayhzaXplX3Qgc2l6ZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpXFxuIDMwODpcXHR7XFxuIDMwOTpcXHRcXHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgd2JjID0ge1xcbiAzMTA6XFx0XFx0XFx0LnN5bmNfbW9kZSA9IFdCX1NZTkNfTk9ORSxcXG4gMzExOlxcdFxcdFxcdC5ucl90b193cml0ZSA9IFNXQVBfQ0xVU1RFUl9NQVgsXFxuIDMxMjpcXHRcXHRcXHQucmFuZ2Vfc3RhcnQgPSAwLFxcbiAzMTM6XFx0XFx0XFx0LnJhbmdlX2VuZCA9IExMT05HX01BWCxcXG4gMzE0OlxcdFxcdH07XFxuIDMxNTpcXHRcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvID0gTlVMTDtcXG4gMzE2OlxcdFxcdGludCBlcnJvciA9IDA7XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdC8qXFxuIDMxOTpcXHRcXHQgKiBMZWF2ZSBtbWFwaW5ncyBpbnRhY3QgKEdUVCB3aWxsIGhhdmUgYmVlbiByZXZva2VkIG9uIHVuYmluZGluZyxcXG4gMzIwOlxcdFxcdCAqIGxlYXZpbmcgb25seSBDUFUgbW1hcGluZ3MgYXJvdW5kKSBhbmQgYWRkIHRob3NlIGZvbGlvcyB0byB0aGUgTFJVXFxuIDMyMTpcXHRcXHQgKiBpbnN0ZWFkIG9mIGludm9raW5nIHdyaXRlYmFjayBzbyB0aGV5IGFyZSBhZ2VkIGFuZCBwYWdlZCBvdXRcXG4gMzIyOlxcdFxcdCAqIGFzIG5vcm1hbC5cXG4gMzIzOlxcdFxcdCAqL1xcbiAzMjQ6XFx0XFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFxcdTAwMjZ3YmMsIGZvbGlvLCBcXHUwMDI2ZXJyb3IpKSkge1xcbiAzMjU6XFx0XFx0XFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcXG4gMzI2OlxcdFxcdFxcdFxcdGZvbGlvX3JlZGlydHlfZm9yX3dyaXRlcGFnZShcXHUwMDI2d2JjLCBmb2xpbyk7XFxuIDMyNzpcXHRcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbiAzMjg6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzI5OlxcdFxcdFxcdFxcdGVycm9yID0gc2htZW1fd3JpdGVfZm9saW8oZm9saW8pO1xcbiAzMzA6XFx0XFx0XFx0XFx0aWYgKGVycm9yID09IEFPUF9XUklURVBBR0VfQUNUSVZBVEUpIHtcXG4gMzMxOlxcdFxcdFxcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIDMzMjpcXHRcXHRcXHRcXHRcXHRlcnJvciA9IDA7XFxuIDMzMzpcXHRcXHRcXHRcXHR9XFxuIDMzNDpcXHRcXHRcXHR9XFxuIDMzNTpcXHRcXHR9XFxuIDMzNjpcXHR9XFxuIDMzNzpcXHRcXG4gMzM4OlxcdHN0YXRpYyB2b2lkXFxuIDMzOTpcXHRzaG1lbV93cml0ZWJhY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iailcXG4gMzQwOlxcdHtcXG4gMzQxOlxcdFxcdF9fc2htZW1fd3JpdGViYWNrKG9iai1cXHUwMDNlYmFzZS5zaXplLCBvYmotXFx1MDAzZWJhc2UuZmlscC1cXHUwMDNlZl9tYXBwaW5nKTtcXG4gMzQyOlxcdH1cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0c3RhdGljIGludCBzaG1lbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IGZsYWdzKVxcbiAzNDU6XFx0e1xcbiAzNDY6XFx0XFx0c3dpdGNoIChvYmotXFx1MDAzZW1tLm1hZHYpIHtcXG4gMzQ3OlxcdFxcdGNhc2UgSTkxNV9NQURWX0RPTlRORUVEOlxcbiAzNDg6XFx0XFx0XFx0cmV0dXJuIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopO1xcbiAzNDk6XFx0XFx0Y2FzZSBfX0k5MTVfTUFEVl9QVVJHRUQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjIxLjc5NzYxMDM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTEwMTA3MjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYF9fc2htZW1fd3JpdGViYWNrYCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYHNobWVtX3dyaXRlYmFjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKWAgaXMgb25lIGVudHJ5IHBvaW50LiBCdXQsIGFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgb25lIHNwZWNpZmljIGNhbGxpbmcgZnVuY3Rpb24gaXMgcmFyZWx5IHRoZSB3aG9sZSBzdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFdoZXJlICplbHNlKiBpcyB0aGlzIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSBpdHMgY2FsbCBncmFwaC4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGZvcm1pbmcgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBiZWhhdmlvciwgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBzdWJ0bGUgc2lkZSBlZmZlY3RzIG9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGludHJvZHVjZSBhY3Jvc3MgdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgYWxsIG9mIHRoZSBvdGhlciBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkzNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6NDIuODk4Njg1MTE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk3OTg2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2htZW1fd3JpdGViYWNrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaD04NDQ9dm9pZCBzaG1lbV9zZ19mcmVlX3RhYmxlKHN0cnVjdCBzZ190YWJsZSAqc3QsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaC04NDUtXFx0XFx0XFx0IGJvb2wgZGlydHksIGJvb2wgYmFja3VwKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg6ODQ2OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODQ3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM9MjkyPXNobWVtX3RydW5jYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYy0zMDYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzA3OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jLTMwOC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYz0zMzk9c2htZW1fd3JpdGViYWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzQwLXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYzozNDE6XFx0X19zaG1lbV93cml0ZWJhY2sob2JqLVxcdTAwM2ViYXNlLnNpemUsIG9iai1cXHUwMDNlYmFzZS5maWxwLVxcdTAwM2VmX21hcHBpbmcpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jLTM0Mi19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9NDYzPXN0YXRpYyBpbnQgaTkxNV90dG1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy01MDQtXFx0aWYgKGZsYWdzIFxcdTAwMjYgSTkxNV9HRU1fT0JKRUNUX1NIUklOS19XUklURUJBQ0spXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjUwNTpcXHRcXHRfX3NobWVtX3dyaXRlYmFjayhvYmotXFx1MDAzZWJhc2Uuc2l6ZSwgaTkxNV90dC1cXHUwMDNlZmlscC1cXHUwMDNlZl9tYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtNTA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo0NC42OTY2OTkwN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3OTg3MTM0NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgaTkxNSBpbiB0aGlzIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB3aGVyZSBgX19zaG1lbV93cml0ZWJhY2tgIGlzIGNhbGxlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc2htZW1fd3JpdGViYWNrYCBhbmQgYGk5MTVfdHRtX3Nocmlua2AsIGJvdGggY2xlYXJseSB0aWVkIHRvIGBpOTE1YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGk5MTVgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBhcyB0aGUgcHJvbXB0IGluc3RydWN0aW9ucyBkZWZpbmUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGhlcmUsIHNvIEknbSByZS1yZWFkaW5nIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiAgSXQgbGF5cyBvdXQgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmU6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yICpHUFUgZHJpdmVycyogcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVS4gIENydWNpYWxseSwgdGhlIHByb21wdCBnaXZlcyBleGFtcGxlczogbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUuXG5cbk5vdywgZG9lcyBgaTkxNWAgZml0IHRoYXQgZGVzY3JpcHRpb24/ICBBYnNvbHV0ZWx5ISAgYGk5MTVgIHJlcHJlc2VudHMgSW50ZWwncyBncmFwaGljcyBkcml2ZXJzLCB3aGljaCBhcmUgaW50aW1hdGVseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIGludGVncmF0ZWQgR1BVcyBpbiBJbnRlbCBDUFVzIG9yIGRpc2NyZXRlIEludGVsIEdQVXMgbGlrZSBJbnRlbCBBcmMuICBBbmQgc3RhbmRhcmQgUUVNVSwgdGhlIGtpbmQgdXNlZCBieSBzb21ldGhpbmcgbGlrZSBHQ0UgVk1zLCAqZG9lc24ndCogZW11bGF0ZSB0aG9zZSBJbnRlbCBncmFwaGljcyBjaGlwcy4gIEl0J3MganVzdCBub3Qgc2V0IHVwIHRvIGRvIHRoYXQuXG5cblNvLCBhbSBJIGFibGUgdG8gdXNlIHN5emthbGxlciBvbiB0aGlzPyBUaGUgcHJvbXB0IHNheXMgSSBjYW4ndCBsb29rIGF0IHN5emthbGxlciBzeXpsYW5nIGRlc2NyaXB0aW9ucyBvciBhbnl0aGluZyB3aXRoIFwibG9uZyBzeXpfXCIuIEknbSByZW1lbWJlcmluZyB0aGF0IGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhcyB0aGUgdG9vbHMgdG8gZG8gdGhhdCwgc28gSSB3aWxsIGhhdmUgdG8gbG9vayBhdCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgdG9vbHMuICBMZXQncyBzZWUgd2hhdCBpcyBhdmFpbGFibGU6XG4xLiBgZ3JlcHBlcmBcbjIuIGByZWFkLWZpbGVgXG4zLiBgY29kZXNlYXJjaC1kaXItaW5kZXhgXG40LiBgc2V0LXJlc3VsdHNgXG5cbk5vcGUsIGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgbm90IGF2YWlsYWJsZSBoZXJlLlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LiAgSXMgYGk5MTVgIGEgKnZlbmRvci1zcGVjaWZpYyBHUFUgZHJpdmVyKiB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGUgZXhhbXBsZXMgaW4gU2VjdGlvbiAyIGFyZSBjcnVjaWFsIGhlcmU6IHNwZWNpZmljYWxseSwgdGhlIGxpc3Qgb2YgKkdQVSBkcml2ZXJzKiBsaWtlIGFtZGdwdS4gIFRoYXQgcmVpbmZvcmNlcyB0aGUgcG9pbnQ6IEk5MTUgaXMgaW4gdGhlIHNhbWUgY2F0ZWdvcnkgYXMgQU1EIG9yIE5vdXZlYXUgb3IgYW55IG9mIHRoZSBvdGhlciBHUFVzISAgTmVpdGhlciBBTUQgbm9yIEludGVsIG5vciBOVklESUEgR1BVcyBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBhcmUgYXZhaWxhYmxlIGluIEdDRS9RRU1VIHZpcnR1YWwgbWFjaGluZXMgdXNlZCBieSBzeXprYWxsZXIuXG5cbldoYXQgRE9FUyBydW4gaW4gUUVNVT8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiAgSSBrbm93IHRoYXQgdmlydGlvLWdwdSwgYm9jaHMtZHJtLCBjaXJydXMsIHF4bCwgdm13Z2Z4LCB2a21zLCBzaW1wbGVkcm0gY2FuIGFsbCB3b3JrIGluIFFFTVUsIGJ1dCBub3QgSTkxNSFcblxuTm93LCAqaXMqIHRoZXJlIGFueXRoaW5nIGluIGBpOTE1YCB0aGF0ICptaWdodCogYmUgYWNjZXNzaWJsZSBpbiBRRU1VPyAgTWF5YmUgc29tZSBraW5kIG9mIG1vY2sgZGV2aWNlLCBhIGR1bW15IGRyaXZlcj8gTGV0J3MgZ28gYmFjayBhbmQgbG9vayBhdCB0aGF0IGVhcmxpZXIgZ3JlcC4gQWghIFwiaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgKz0gZ2VtL3NlbGZ0ZXN0cy8uLi5cIiAgVGhhdCdzIGludGVyZXN0aW5nLiBgc2VsZnRlc3RzL21vY2tfZW5naW5lLmNgLCBgc2VsZnRlc3RzL21vY2tfY29udGV4dC5jYCwgYHNlbGZ0ZXN0cy9tb2NrX2d0dC5jYC4gVGhhdCBzb3VuZHMgbGlrZSBpdCEgIEkgbmVlZCB0byBjaGVjayBgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUYCBpbiBLY29uZmlnIHRvIHVuZGVyc3RhbmQgdGhhdCBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkwOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6NTIuNjgzODM2NjM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgyNTM3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9JOTE1X1NFTEZURVNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc9MTc4PWNvbmZpZyBEUk1fSTkxNV9ERUJVR19HVUNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc6MTkxOmNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkyLVxcdGJvb2wgXFxcIkVuYWJsZSBzZWxmdGVzdHMgdXBvbiBkcml2ZXIgbG9hZFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMjA4LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc6MjA5OmNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVF9CUk9LRU5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTIxMC1cXHRib29sIFxcXCJFbmFibGUgYnJva2VuIGFuZCBkYW5nZXJvdXMgc2VsZnRlc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1My4wMDIxMTAwMTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjMxNTQ4MzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJbnRlbCBHUFUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBJbnRlbCBHUFUgZHJpdmVyJ3MgZGVidWcgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZy5kZWJ1Z2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9gIGRpcmVjdG9yeS4gTGluZSAxOTEgaXMgYSBsaWtlbHkgc3BvdCB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLiBJdCdzIHByb2JhYmx5IHdoZXJlIGEgcmVsZXZhbnQgZGVidWcgb3B0aW9uLCBvciBzZWN0aW9uIG9mIHRoZW0sIGlzIGRlZmluZWQgb3IgaW50cm9kdWNlZC4gSeKAmW0gaG9waW5nIHRvIHVuZGVyc3RhbmQgaG93IGRlYnVnZ2luZyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGFkanVzdCBkZWJ1ZyBsb2dnaW5nIHdpdGhpbiB0aGUgaTkxNSBkcml2ZXIgZm9yIEludGVsIEdQVXMuIFRoaXMga2luZCBvZiBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbnkgcmVhbCBkZWVwIGRpdmUgaW50byB0aGlzIGFyZWEuIEl0J2xsIGdpdmUgbWUgYSBzdHJvbmcgZm91bmRhdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1NS4zMTc2MDA3MjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzczMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Z1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODU6XFx0XFx0ICBwZXJmb3JtYW5jZSBidXQgd2lsbCBoZWxwIHJlc29sdmUgR3VDIHJlbGF0ZWQgaXNzdWVzLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFJlY29tbWVuZGVkIGZvciBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxcbiAxODg6XFx0XFxuIDE4OTpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgXFxcIk5cXFwiLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFJNX0k5MTVfU0VMRlRFU1RcXG4gMTkyOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBzZWxmdGVzdHMgdXBvbiBkcml2ZXIgbG9hZFxcXCJcXG4gMTkzOlxcdFxcdGRlcGVuZHMgb24gRFJNX0k5MTVcXG4gMTk0OlxcdFxcdGRlZmF1bHQgblxcbiAxOTU6XFx0XFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cXG4gMTk2OlxcdFxcdHNlbGVjdCBGQVVMVF9JTkpFQ1RJT05cXG4gMTk3OlxcdFxcdHNlbGVjdCBQUklNRV9OVU1CRVJTXFxuIDE5ODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTk5OlxcdFxcdGhlbHBcXG4gMjAwOlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGFsbG93IHRoZSBkcml2ZXIgdG8gcGVyZm9ybSBzZWxmdGVzdHMgdXBvblxcbiAyMDE6XFx0XFx0ICBsb2FkaW5nOyBhbHNvIHJlcXVpcmVzIHRoZSBpOTE1LnNlbGZ0ZXN0PTEgbW9kdWxlIHBhcmFtZXRlci4gVG9cXG4gMjAyOlxcdFxcdCAgZXhpdCB0aGUgbW9kdWxlIGFmdGVyIHJ1bm5pbmcgdGhlIHNlbGZ0ZXN0cyAoaS5lLiB0byBwcmV2ZW50IG5vcm1hbFxcbiAyMDM6XFx0XFx0ICBtb2R1bGUgaW5pdGlhbGlzYXRpb24gYWZ0ZXJ3YXJkcykgdXNlIGk5MTUuc2VsZnRlc3Q9LTEuXFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdCAgUmVjb21tZW5kZWQgZm9yIGRyaXZlciBkZXZlbG9wZXJzIG9ubHkuXFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiTlxcXCIuXFxuIDIwODpcXHRcXG4gMjA5OlxcdGNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVF9CUk9LRU5cXG4gMjEwOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicm9rZW4gYW5kIGRhbmdlcm91cyBzZWxmdGVzdHNcXFwiXFxuIDIxMTpcXHRcXHRkZXBlbmRzIG9uIERSTV9JOTE1X1NFTEZURVNUXFxuIDIxMjpcXHRcXHRkZXBlbmRzIG9uIEJST0tFTlxcbiAyMTM6XFx0XFx0ZGVmYXVsdCBuXFxuIDIxNDpcXHRcXHRoZWxwXFxuIDIxNTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGV4ZWN1dGlvbiBvZiBzZWxmdGVzdHMgdGhhdCBhcmUgXFxcImRhbmdlcm91c1xcXCJcXG4gMjE2OlxcdFxcdCAgYW5kIG1heSB0cmlnZ2VyIHVuaW50ZW5kZWQgSFcgc2lkZS1lZmZlY3RzIGFzIHRoZXkgYnJlYWsgc3RyaWN0XFxuIDIxNzpcXHRcXHQgIHJ1bGVzIGdpdmVuIGluIHRoZSBIVyBzcGVjaWZpY2F0aW9uLiBGb3Igc2NpZW5jZS5cXG4gMjE4OlxcdFxcbiAyMTk6XFx0XFx0ICBSZWNvbW1lbmRlZCBmb3IgbWFzb2NoaXN0aWMgZHJpdmVyIGRldmVsb3BlcnMgb25seS5cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIi5cXG4gMjIyOlxcdFxcbiAyMjM6XFx0Y29uZmlnIERSTV9JOTE1X0tVTklUX1RFU1RcXG4gMjI0OlxcdFxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgdGhlIGRybSBpOTE1IGRyaXZlclxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1NS4zMTc2ODE4NThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTQ4MDc2MzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpOTE1IERyaXZlciBTZWxmdGVzdCoqXG5cbk9rYXksIHNvIGBDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1RgIGlzIHJlYWxseSBqdXN0IGVuYWJsaW5nIGEgc2VsZi10ZXN0IHJvdXRpbmUgdGhhdCBoYXBwZW5zIHdoZW4gdGhlIGRyaXZlciwgYGk5MTUua29gLCBpcyBsb2FkZWQuIE1ha2VzIHNlbnNlLCBhIGxvYWQtdGltZSBzZWxmdGVzdC4gQnV0LCBvZiBjb3Vyc2UsIHRoZSBpOTE1IGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBoYXJkd2FyZSwgc28gdGhlIGRyaXZlciAqbmVlZHMqIHRvIGZpbmQgSW50ZWwgaGFyZHdhcmUgdG8gZXZlbiBkbyBhbnl0aGluZywgcmlnaHQ/XG5cbkFscmlnaHQsIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIGlmIHRoZXJlJ3Mgbm8gSW50ZWwgUENJIEdQVSBkZXZpY2UsIGRvZXMgYGk5MTUua29gIGV2ZW4gYm90aGVyIHByb2Jpbmc/IEknbSB0aGlua2luZyBhYm91dCBgaTkxNV9wY2lfcHJvYmUoKWAuIExldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGUgY29kZS4uLiBgc3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClgLiBZZXAsIHRoYXQncyBpdC4gQW5kLCB0aGUgUENJIGNvcmUgKm9ubHkqIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSBJRCBmcm9tIHRoZSBgcGNpaWRsaXN0YCBvbiB0aGUgUENJIGJ1cy4gU28sIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgLSB0aG9zZSB0aGF0IGRvbid0IGhhdmUgYW4gSW50ZWwgR1BVIC0gdGhlIGRyaXZlciB3b3VsZG4ndCBmaW5kIGFueSBQQ0kgZGV2aWNlcyB0byBtYXRjaCBhZ2FpbnN0LCBhbmQgYGk5MTVfcGNpX3Byb2JlKClgIHdvdWxkbid0IGV2ZXIgcnVuLiBUaGF0IG1lYW5zIGV2ZW4gaWYgc29tZW9uZSAqZm9yY2VkKiB0aGUgYGk5MTVgIG1vZHVsZSB0byBsb2FkLCBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgYW5kIGJhaWwuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLi4uIENhbiBgaTkxNWAgYmUgbG9hZGVkLCBhbmQgdGhlbiBydW4gbW9jayBzZWxmdGVzdHM/IEhtbSwgdGltZSB0byBkaWcgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgdGhhdCBpbXBsZW1lbnRzIHRoZSBtb2NrIHNlbGZ0ZXN0cywgYGk5MTVfbW9ja19zZWxmdGVzdHNgLCBvciBtYXliZSBgaTkxNV9wY2kuY2AuIEkgaGF2ZSB0byBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTg1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjAwLjc5ODQ0ODQxNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNTUwMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImk5MTVfc2VsZnRlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDE0PWk5MTUtJChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxNy1cXHRzZWxmdGVzdHMvaTkxNV9yYW5kb20ubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDE4OlxcdHNlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0Lm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxOS1cXHRzZWxmdGVzdHMvaWd0X2F0b21pYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaC0xNS0jaW5jbHVkZSBcXFwiaTkxNV9hY3RpdmUuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg6MTY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtMTctI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC05LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fbW92ZS5oOjEwOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmgtMTEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jLTEyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtOS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYzoxNTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTYtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTYtI2luY2x1ZGUgXFxcImd0L2ludGVsX3Jlc2V0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmM6MTc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYy0xOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jPTMzPXN0YXRpYyBpbnQgbGl2ZV9ub3Bfc3dpdGNoKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTExMS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYzoxMTI6XFx0XFx0ZW5kX3RpbWUgPSBqaWZmaWVzICsgaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTEzLVxcdFxcdGZvcl9lYWNoX3ByaW1lX251bWJlcl9mcm9tKHByaW1lLCAyLCA4MTkyKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jLTctI2luY2x1ZGUgXFxcImk5MTVfZHJ2LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYy05LSNpbmNsdWRlIFxcXCJnZW0vaTkxNV9nZW1fY29udGV4dC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMtMjUtI2luY2x1ZGUgXFxcImh1Z2VfZ2VtX29iamVjdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jOjI2OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMtMjctI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy02LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmM6NzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMtOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmM6NzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNS0jaW5jbHVkZSBcXFwiaTkxNV9yZXF1ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MTY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNy0jaW5jbHVkZSBcXFwiaW50ZWxfZW5naW5lX3R5cGVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC0yMi0jaW5jbHVkZSBcXFwiaTkxNV9wcmlvbGlzdF90eXBlcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oOjIzOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgtMjQtI2luY2x1ZGUgXFxcImludGVsX3NzZXUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTI4LSNpbmNsdWRlIFxcXCJndC9pbnRlbF9yZXNldC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjI5OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgtMzAtI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMtNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmM6ODojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYy05LSNpbmNsdWRlIFxcXCJpbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy01LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5jOjY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy03LSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9lbmdpbmUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jLTExLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jOjEyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMtMTMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jLTEwLSNpbmNsdWRlIFxcXCJpbnRlbF9ndF9yZXF1ZXN0cy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYy0xMi0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMtOC0jaW5jbHVkZSBcXFwiZ3QvaW50ZWxfZ3RfcHJpbnQuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYzo5OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMtMTAtI2luY2x1ZGUgXFxcImludGVsX2VuZ2luZV9yZWdzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0xNi0jaW5jbHVkZSBcXFwiaTkxNV9qaWZmaWVzLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmM6MTc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0xOC0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYz0zNjM4PXN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X3Ntb2tlKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jLTM2NDEtXFx0XFx0Lmd0ID0gYXJnLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jOjM2NDI6XFx0XFx0LnBybmcgPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKSxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0zNjQzLVxcdFxcdC5uY29udGV4dCA9IDI1NixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jLTE2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jOjE3OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMtMTgtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMtMTAtI2luY2x1ZGUgXFxcImk5MTVfZHJ2LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmM6MTE6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYy0xMi0jaW5jbHVkZSBcXFwiaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTctI2luY2x1ZGUgXFxcImd0L2ludGVsX2dwdV9jb21tYW5kcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTEwLSNpbmNsdWRlIFxcXCJpOTE1X21lbWNweS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmM6MTE6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTEyLSNpbmNsdWRlIFxcXCJpbnRlbF9ncHVfY29tbWFuZHMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmM6NjojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTctI2luY2x1ZGUgXFxcImludGVsX2VuZ2luZV9wbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0xOS0jaW5jbHVkZSBcXFwiLi4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzoyMDojaW5jbHVkZSBcXFwiLi4vaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMjEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jPTE0Mj1zdGF0aWMgaW50IG1vY2tfaHdzcF9mcmVlbGlzdCh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2MS1cXHRJTklUX1JBRElYX1RSRUUoXFx1MDAyNnN0YXRlLmNhY2hlbGluZXMsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MTYyOlxcdHN0YXRlLnBybmcgPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM9Mjg3PXN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwMi1cXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjMwMzpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzA0LVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzIwLVxcdC8qIEJlbmNobWFyayAob25seSkgc2V0dGluZyByYW5kb20gY29udGV4dCBpZHMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjMyMTpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzIyLVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzM2LVxcdC8qIEJlbmNobWFyayBsb29raW5nIHVwIHRoZSBleGFjdCBzYW1lIGNvbnRleHQgaWRzIGFzIHdlIGp1c3Qgc2V0ICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMzc6XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMzOC1cXHRlbmRfdGltZSA9IGNvdW50O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zODktXFx0LyogQmVuY2htYXJrIHNlYXJjaGluZyBmb3IgYSByYW5kb20gY29udGV4dCBpZCBhbmQgbWF5YmUgY2hhbmdpbmcgaXQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjM5MDpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzkxLVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jLTExLSNpbmNsdWRlIFxcXCJpOTE1X2dlbV93dy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jOjEyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGxiLmMtMTMtI2luY2x1ZGUgXFxcImk5MTVfd2FpdF91dGlsLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jLTktI2luY2x1ZGUgXFxcImd0L2ludGVsX2d0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYzoxMDojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMtMTEtI2luY2x1ZGUgXFxcImludGVsX3Jlc2V0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oPTE1NT1zdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTE2My1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oOjE2NDpzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0xNjUtXFx0YXRvbWljX3QgY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg9MTY5PXN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgtMzE5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg6MzIwOlxcdEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCBzZWxmdGVzdDspXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0zMjEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTE4LSNpbmNsdWRlIFxcXCJpOTE1X3NjaGVkdWxlci5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmM6MTk6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTIwLSNpbmNsdWRlIFxcXCJpOTE1X3ZtYS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgtNDMtI2luY2x1ZGUgXFxcImk5MTVfc2NoZWR1bGVyLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0Lmg6NDQ6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaC00NS0jaW5jbHVkZSBcXFwiaTkxNV9zd19mZW5jZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTMyPXN0cnVjdCBkcm1faTkxNV9wcml2YXRlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zMy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6MzQ6c3RydWN0IGk5MTVfc2VsZnRlc3Qge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zNS1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXRfamlmZmllcztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC00Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6NDg6ZXh0ZXJuIHN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3Q7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTQ5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTEyMT1zdGF0aWMgaW5saW5lIGludCBpOTE1X3BlcmZfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTI4LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDoxMjk6LyogVXNpbmcgdGhlIGk5MTVfc2VsZnRlc3RfIHByZWZpeCBiZWNvbWVzIGEgbGl0dGxlIHVud2llbGR5IHdpdGggdGhlIGhlbHBlcnMuXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEzMC0gKiBJbnN0ZWFkIHdlIHVzZSB0aGUgaWd0XyBzaG9ydGhhbmQsIGluIHJlZmVyZW5jZSB0byB0aGUgaW50ZWwtZ3B1LXRvb2xzXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTM0LSNkZWZpbmUgSUdUX1RJTUVPVVQobmFtZV9fKSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oOjEzNTpcXHR1bnNpZ25lZCBsb25nIG5hbWVfXyA9IGppZmZpZXMgKyBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllc1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0xMzYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTItI2luY2x1ZGUgXFxcImk5MTVfc3dfZmVuY2UuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmM6MTM6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmNtYXAuYy0yOS0jaW5jbHVkZSBcXFwiaTkxNV9nZW0uaFxcXCIgLyogR0VNX0JVR19PTigpICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmM6MzA6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmNtYXAuYy0zMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaC05LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaDoxMDojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaC0xMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jLTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jOjE1OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMtMTYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYy0xNS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYzoxNjojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jLTE3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMtMzEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmM6MzI6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYy0zMy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYy0zNy0jaW5jbHVkZSBcXFwiaTkxNV9yYW5kb20uaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmM6Mzg6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMtMzktI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oLTE1LSAqXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oLTE3LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmg6MTY6ICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5IGlndC9pOTE1X3NlbGZ0ZXN0XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNy0gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYy0xMS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmM6MTI6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMtMTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE1LSAqXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZl9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE3LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgtMzAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6MzE6I2luY2x1ZGUgXFxcIi4uL2k5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTM5LSNkZWZpbmUgSTkxNV9STkRfU1RBVEUobmFtZV9fKSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6NDA6XFx0c3RydWN0IHJuZF9zdGF0ZSBuYW1lX18gPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTQxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTQyLSNpbmNsdWRlIFxcXCJpOTE1X3JhbmRvbS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo0MzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy00NC0jaW5jbHVkZSBcXFwiaTkxNV93YWl0X3V0aWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz00NTU9c3RhdGljIGludCBtb2NrX2JyZWFkY3J1bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTEyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo1MTM6XFx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTE0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jPTE1NDI9c3RhdGljIGludCB3YWl0X2Zvcl9hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTU0OC1cXHRcXHRcXHRcXHQgICAhYXRvbWljX3JlYWQoXFx1MDAyNmk5MTUtXFx1MDAzZXNlbGZ0ZXN0LmNvdW50ZXIpLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzoxNTQ5OlxcdFxcdFxcdFxcdCAgIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTU1MC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz0xNzI1PXN0YXRpYyBpbnQgbGl2ZV9icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTE4MjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jOjE4MjU6XFx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTgyNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMtI2luY2x1ZGUgXFxcImk5MTVfamlmZmllcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzQ6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1LSNpbmNsdWRlIFxcXCJpOTE1X3dhaXRfdXRpbC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4OnN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3QgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM5LVxcdC50aW1lb3V0X21zID0gNTAwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0yMjI9c3RhdGljIGludCBfX3J1bl9zZWxmdGVzdHMoY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjMwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMxOlxcdGlmIChpOTE1X3NlbGZ0ZXN0LnVzZXJzcGFjZV9waWQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzI6XFx0XFx0dV9waWRfbnIgPSBpOTE1X3NlbGZ0ZXN0LnVzZXJzcGFjZV9waWQ7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0yMzMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzQ6XFx0d2hpbGUgKCFpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM1OlxcdFxcdGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQgPSBnZXRfcmFuZG9tX3UzMigpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM3OlxcdGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzODpcXHRcXHRpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMgP1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM5OlxcdFxcdG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dChpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMpIDpcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0MC1cXHRcXHRNQVhfU0NIRURVTEVfVElNRU9VVDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjQ0LVxcdHByX2luZm8oRFJJVkVSX05BTUUgXFxcIjogUGVyZm9ybWluZyAlcyBzZWxmdGVzdHMgd2l0aCBzdF9yYW5kb21fc2VlZD0weCV4IHN0X3RpbWVvdXQ9JXVcXFxcblxcXCIsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyNDU6XFx0XFx0bmFtZSwgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCwgaTkxNV9zZWxmdGVzdC50aW1lb3V0X21zKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzA1PWludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMwOC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMwOTpcXHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxMC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzEzLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxNDpcXHRcXHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSBlcnI7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMTUtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxODpcXHRpZiAoaTkxNV9zZWxmdGVzdC5tb2NrIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE5OlxcdFxcdGk5MTVfc2VsZnRlc3QubW9jayA9IC1FTk9UVFk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMjAtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTMyNj1pbnQgaTkxNV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzM0OlxcdGlmICghaTkxNV9zZWxmdGVzdC5saXZlKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzM1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNTQtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU1OlxcdFxcdGk5MTVfc2VsZnRlc3QubGl2ZSA9IGVycjtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1Ni1cXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNTgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozNTk6XFx0aWYgKGk5MTVfc2VsZnRlc3QubGl2ZSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM2MDpcXHRcXHRpOTE1X3NlbGZ0ZXN0LmxpdmUgPSAtRU5PVFRZO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzYxLVxcdFxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0zNjc9aW50IGk5MTVfcGVyZl9zZWxmdGVzdHMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM3MjpcXHRpZiAoIWk5MTVfc2VsZnRlc3QucGVyZilcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzc5LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4MDpcXHRcXHRpOTE1X3NlbGZ0ZXN0LnBlcmYgPSBlcnI7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zODEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6Mzg0OlxcdGlmIChpOTE1X3NlbGZ0ZXN0LnBlcmYgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODU6XFx0XFx0aTkxNV9zZWxmdGVzdC5wZXJmID0gLUVOT1RUWTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM4Ni1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzkyPXN0YXRpYyBib29sIGFwcGx5X3N1YnRlc3RfZmlsdGVyKGNvbnN0IGNoYXIgKmNhbGxlciwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzk2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6Mzk3OlxcdGZpbHRlciA9IGtzdHJkdXAoaTkxNV9zZWxmdGVzdC5maWx0ZXIsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzk4LVxcdGZvciAoc2VwID0gZmlsdGVyOyAodG9rID0gc3Ryc2VwKFxcdTAwMjZzZXAsIFxcXCIsXFxcIikpOykge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz01NDg9dm9pZCBpZ3RfaGV4ZHVtcChjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU3Nzptb2R1bGVfcGFyYW1fbmFtZWQoc3RfcmFuZG9tX3NlZWQsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQsIHVpbnQsIDA0MDApO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc4Om1vZHVsZV9wYXJhbV9uYW1lZChzdF90aW1lb3V0LCBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMsIHVpbnQsIDA0MDApO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc5Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9maWx0ZXIsIGk5MTVfc2VsZnRlc3QuZmlsdGVyLCBjaGFycCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzo1ODA6bW9kdWxlX3BhcmFtX25hbWVkKHN0X3VzZXJzcGFjZV9waWQsIGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZCwgdWludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODEtTU9EVUxFX1BBUk1fREVTQyhzdF91c2Vyc3BhY2VfcGlkLCBcXFwiRm9yIHVzYWdlIGluIHRlc3RzIHRoYXQgbWFwIHVzZXJzcGFjZSBtZW1vcnkgYW5kIHJlcXVpcmUgYWRkcmVzcyBzcGFjZSB3aXRoIGNvbnRyb2xsYWJsZSBsaWZldGltZS5cXFwiKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Mzptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG1vY2tfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0Lm1vY2ssIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODQtTU9EVUxFX1BBUk1fREVTQyhtb2NrX3NlbGZ0ZXN0cywgXFxcIlJ1biBzZWxmdGVzdHMgYmVmb3JlIGxvYWRpbmcsIHVzaW5nIG1vY2sgaGFyZHdhcmUgKDA6ZGlzYWJsZWQgW2RlZmF1bHRdLCAxOnJ1biB0ZXN0cyB0aGVuIGxvYWQgZHJpdmVyLCAtMTpydW4gdGVzdHMuLi5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Njptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGxpdmVfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0LmxpdmUsIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODctTU9EVUxFX1BBUk1fREVTQyhsaXZlX3NlbGZ0ZXN0cywgXFxcIlJ1biBzZWxmdGVzdHMgYWZ0ZXIgZHJpdmVyIGluaXRpYWxpc2F0aW9uIG9uIHRoZSBsaXZlIHN5c3RlbSAoMDpkaXNhYmxlZCBbZGVmYXVsdF0sIDE6cnVuIHRlc3RzIHRoZW4gY29udGludWUsIC0xOnIuLi5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4OTptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHBlcmZfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0LnBlcmYsIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01OTAtTU9EVUxFX1BBUk1fREVTQyhwZXJmX3NlbGZ0ZXN0cywgXFxcIlJ1biBwZXJmb3JtYW5jZSBvcmllbnRhdGVkIHNlbGZ0ZXN0cyBhZnRlciBkcml2ZXIgaW5pdGlhbGlzYXRpb24gb24gdGhlIGxpdmUgc3lzdGVtICgwOmRpc2FibGVkIFtkZWZhdWx0XSwgMTpydW4gdGUuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMjgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzoyOTojaW5jbHVkZSBcXFwiLi4vaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTU3OT1zdGF0aWMgaW50IHRlc3RfdGltZXIodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy01OTItXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo1OTM6XFx0Zm9yX2VhY2hfcHJpbWVfbnVtYmVyKGRlbGF5LCBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllcy8yKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy01OTQtXFx0XFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTY2OT1zdGF0aWMgaW50IHRlc3RfZG1hX2ZlbmNlKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjcxLVxcdHN0cnVjdCBpOTE1X3N3X2ZlbmNlICp0aW1lb3V0ID0gTlVMTCwgKm5vdCA9IE5VTEw7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo2NzI6XFx0dW5zaWduZWQgbG9uZyBkZWxheSA9IGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjczLVxcdHVuc2lnbmVkIGxvbmcgZW5kLCBzbGVlcDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zeW5jbWFwLmM6MjU6I2luY2x1ZGUgXFxcIi4uL2k5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zeW5jbWFwLmMtMjYtI2luY2x1ZGUgXFxcImk5MTVfcmFuZG9tLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYy0zMS0jaW5jbHVkZSBcXFwiaTkxNV9zY2F0dGVybGlzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jOjMyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMtMzMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYy0xMC0jaW5jbHVkZSBcXFwiaTkxNV9kcnYuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jLTEyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jOjExOiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMi0jaW5jbHVkZSBcXFwiaWd0X2ZsdXNoX3Rlc3QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oLTE0LSNpbmNsdWRlIFxcXCJpOTE1X3JlcXVlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaDoxNTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oLTE2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jOjExOiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYy0xMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jLTEwLSNpbmNsdWRlIFxcXCJpOTE1X2Rydi5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jOjExOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jOjI1OiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jLTI2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6Mjc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOC0jaW5jbHVkZSBcXFwiaTkxNV91dGlscy5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM9Mjc4PXN0YXRpYyBpbnQgaWd0X3NnX2FsbG9jKHZvaWQgKmlnbm9yZWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOTctXFx0XFx0XFx0XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjI5ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOTktXFx0XFx0XFx0XFx0ZXJyID0gYWxsb2NfdGFibGUoXFx1MDAyNnB0LCBzeiwgc3osICpucGFnZXMsIFxcdTAwMjZwcm5nLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzA2LVxcdFxcdFxcdFxcdHByYW5kb21fc2VlZF9zdGF0ZShcXHUwMDI2cHJuZyxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzozMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzA4LVxcdFxcdFxcdFxcdGVyciA9IGV4cGVjdF9wZm5fc2d0YWJsZShcXHUwMDI2cHQsICpucGFnZXMsIFxcdTAwMjZwcm5nLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM9MzI1PXN0YXRpYyBpbnQgaWd0X3NnX3RyaW0odm9pZCAqaWdub3JlZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMzOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzozNDA6XFx0XFx0XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zNDEtXFx0XFx0XFx0ZXJyID0gYWxsb2NfdGFibGUoXFx1MDAyNnB0LCBwcmltZSwgbWF4LCAqbnBhZ2VzLCBcXHUwMDI2cHJuZyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTM1NS1cXHRcXHRcXHRcXHRcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6MzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTM1Ny1cXHRcXHRcXHRcXHRcXHRlcnIgPSBleHBlY3RfcGZuX3NndGFibGUoXFx1MDAyNnB0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OTowMC45OTIwMDUxMDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjI0ODI4Mzc2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpOTE1IFNlbGZ0ZXN0IFBhcmFtZXRlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmVgIGRlY2xhcmF0aW9uOiBgbW9ja19zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubW9jaywgaW50LCAwNDAwYC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyBzZXR0aW5nIHVwIGFuIG9wdGlvbiB0byBydW4gc2VsZnRlc3RzIGZvciB0aGUgaTkxNSBkcml2ZXIuIFRoZSBkZXNjcmlwdGlvbiBzYXlzIGl0IGxldHMgeW91IHJ1biB0aGVzZSB0ZXN0cyB1c2luZyBcIm1vY2sgaGFyZHdhcmVcIi4gVGhlIHBhcmFtZXRlciBpdHNlbGYsIGBpOTE1Lm1vY2tfc2VsZnRlc3RzYCwgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYDBgIGRpc2FibGVzIGl0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCwgbWFrZXMgc2Vuc2UpLCBgMWAgcnVucyB0aGUgdGVzdHMgYmVmb3JlIGxvYWRpbmcgdGhlIGRyaXZlciwgYW5kIGAtMWAgcnVucyB0aGUgdGVzdHMgYW5kIHRoZW4gZXhpdHMuIFxuXG5UaGlzIGlzIGNsZWFybHkgYW4gaW50ZXJuYWwgZnJhbWV3b3JrLCBmb3IgdW5pdCB0ZXN0cyBzcGVjaWZpY2FsbHkuIEknbSBhc3N1bWluZyBpdCdzIGZvciBpOTE1LCBiZWNhdXNlIGl0J3MgaW4gdGhlIGBpOTE1X3NlbGZ0ZXN0YCBuYW1lc3BhY2UuIEJ1dCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgZXhhY3QgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGNyZWF0ZXMgYSBkZXZpY2Ugbm9kZSBvciBzb21lIGNoYXJhY3RlciBkZXZpY2UsIG9yIG9wZW5zIGl0c2VsZiB1cCB0byB1c2VybGFuZCBpbnRlcmFjdGlvbiB3aXRoIGFueSBmdXp6ZXJzLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCB0cnVseSB3b3JrcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBgaTkxNV9tb2NrX3NlbGZ0ZXN0cygpYCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDA2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjIzLjQ3NDg0NTc1NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHR9XFxuIDMwMTpcXHRcXG4gMzAyOlxcdCNkZWZpbmUgcnVuX3NlbGZ0ZXN0cyh4LCBkYXRhKSBcXFxcXFxuIDMwMzpcXHRcXHRfX3J1bl9zZWxmdGVzdHMoI3gsIHgjI19zZWxmdGVzdHMsIEFSUkFZX1NJWkUoeCMjX3NlbGZ0ZXN0cyksIGRhdGEpXFxuIDMwNDpcXHRcXG4gMzA1OlxcdGludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXFxuIDMwNjpcXHR7XFxuIDMwNzpcXHRcXHRpbnQgZXJyO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcXG4gMzEwOlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHRlcnIgPSBydW5fc2VsZnRlc3RzKG1vY2ssIE5VTEwpO1xcbiAzMTM6XFx0XFx0aWYgKGVycikge1xcbiAzMTQ6XFx0XFx0XFx0aTkxNV9zZWxmdGVzdC5tb2NrID0gZXJyO1xcbiAzMTU6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDMxNjpcXHRcXHR9XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdGlmIChpOTE1X3NlbGZ0ZXN0Lm1vY2sgXFx1MDAzYyAwKSB7XFxuIDMxOTpcXHRcXHRcXHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSAtRU5PVFRZO1xcbiAzMjA6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDMyMTpcXHRcXHR9XFxuIDMyMjpcXHRcXG4gMzIzOlxcdFxcdHJldHVybiAwO1xcbiAzMjQ6XFx0fVxcbiAzMjU6XFx0XFxuIDMyNjpcXHRpbnQgaTkxNV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMzI3OlxcdHtcXG4gMzI4OlxcdFxcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xcbiAzMjk6XFx0XFx0c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gXFx1MDAyNmk5MTUtXFx1MDAzZXVuY29yZTtcXG4gMzMwOlxcdFxcdGludCBlcnI7XFxuIDMzMTpcXHRcXHR1MzIgcGdfZW5hYmxlO1xcbiAzMzI6XFx0XFx0aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7XFxuIDMzMzpcXHRcXG4gMzM0OlxcdFxcdGlmICghaTkxNV9zZWxmdGVzdC5saXZlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OToyMy40NzQ5MzYyOTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTQ0NTAyMzE4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYG1vY2tfc2VsZnRlc3RzYCBhcmUgaW50ZXJuYWwgYW5kIGRvbid0IGNyZWF0ZSBhIERSTSBkZXZpY2UsIHdoaWNoIGlzbid0IHJlbGV2YW50IGhlcmUgYW55d2F5LiBgaTkxNV9wY2lfcHJvYmVgIG5lZWRzIEludGVsIFBDSSBoYXJkd2FyZS4gIFRoZSBrZXkgaXMgdGhlIGNyaXRlcmlhIGZvciAqbm90KiBmdXp6aW5nLCBhcyBvdXRsaW5lZCBpbiBzZWN0aW9uIDIgb2YgdGhlIHN5c3RlbSBwcm9tcHQuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25kaXRpb24gcmVsYXRlZCB0byBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZSBwcmltYXJ5IGNoYW5nZSBpcyBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYGRybS9pOTE1YCBmYWxscyB1bmRlciB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBhbWRncHVgIHdoaWNoIGFsc28gbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUgdG8gdGVzdCBpbiBhIG1lYW5pbmdmdWwgd2F5LlxuXG5ZZXMsIGBkcm0vaTkxNWAgKmlzKiBJbnRlbCdzIEdQVSBkcml2ZXIsIHN1cHBvcnRpbmcgSW50ZWwgaW50ZWdyYXRlZCBhbmQgZGlzY3JldGUgR1BVcy4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMsIHJlcXVpcmluZyBJbnRlbCBoYXJkd2FyZSwgYW5kIGNydWNpYWxseSwgaXQgd29uJ3QgcnVuIGNvcnJlY3RseSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMuIEkgZG91YmxlLWNoZWNrZWQ7IHRoZSBjb2RlIGlzICplbnRpcmVseSogY29udGFpbmVkIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYC4gTm8gb3RoZXIgY2FsbGVycyBvdXRzaWRlIHRoZSBgZHJtL2k5MTVgIGRyaXZlci5cblxuU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgaXMgd2l0aGluIGEgZHJpdmVyIHRoYXQgbmVlZHMgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuIFRoZXJlZm9yZSwgSSBjYW4gY29uZmlkZW50bHkgc2V0OlxuXG4qICAgYFdvcnRoRnV6emluZyA9IGZhbHNlYFxuKiAgIGBGb2N1c1N5bWJvbHMgPSBbXWBcbiogICBgRW5hYmxlQ29uZmlncyA9IFtdYFxuXG5UaGUgcmVhc29uaW5nIGlzIGNvbmNpc2UgYW5kIGNsZWFyOiB0aGUgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiB0aGUgSW50ZWwgaTkxNSBEUk0gZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBHUFUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gQWxsIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5ODMsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjM3LjkyNTE3MDg4OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3NobWVtX3dyaXRlYmFja2AgaW4gYGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgSW50ZWwgaTkxNSBHUFUgZHJpdmVyLiBpOTE1IGlzIGEgdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGdyYXBoaWNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAoR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OTozNy45MjUyMDA2MDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwpq4k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 11:52:52 +0000 UTC FinishedAt: 2026-09-14 11:59:38 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTM4OTMyMmFiOTc5ZDhiOGI3NzY1MDQ4ZDRmY2Q0ODg5YjQyN2RjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDExOjU0OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbkBAIC0zMjIsMTAgJiM0MzszMjIsMTYgQEAgdm9pZCBfX3NobWVtX3dyaXRlYmFjayhzaXplX3Qgc2l6ZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpXG4gXHQgKiBhcyBub3JtYWwuXG4gXHQgKi9cbiBcdHdoaWxlICgoZm9saW8gPSB3cml0ZWJhY2tfaXRlcihtYXBwaW5nLCBcdTAwMjZ3YmMsIGZvbGlvLCBcdTAwMjZlcnJvcikpKSB7XG4tXHRcdGlmIChmb2xpb19tYXBwZWQoZm9saW8pKVxuJiM0MztcdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcbiBcdFx0XHRmb2xpb19yZWRpcnR5X2Zvcl93cml0ZXBhZ2UoXHUwMDI2d2JjLCBmb2xpbyk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyb3IgPSBzaG1lbV93cml0ZV9mb2xpbyhmb2xpbyk7XG4mIzQzO1x0XHRcdGlmIChlcnJvciA9PSBBT1BfV1JJVEVQQUdFX0FDVElWQVRFKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiYjNDM7XHRcdFx0XHRlcnJvciA9IDA7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTM4OTMyMmFiOTc5ZDhiOGI3NzY1MDQ4ZDRmY2Q0ODg5YjQyN2RjNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDExOjU0OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwppbmRleCBlZjk0NDAxNjYyOTU1Li5lN2IxOGY3Zjk2NDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwpAQCAtMzIyLDEwICYjNDM7MzIyLDE2IEBAIHZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQogCSAqIGFzIG5vcm1hbC4KIAkgKi8KIAl3aGlsZSAoKGZvbGlvID0gd3JpdGViYWNrX2l0ZXIobWFwcGluZywgJmFtcDt3YmMsIGZvbGlvLCAmYW1wO2Vycm9yKSkpIHsKLQkJaWYgKGZvbGlvX21hcHBlZChmb2xpbykpCiYjNDM7CQlpZiAoZm9saW9fbWFwcGVkKGZvbGlvKSkgewogCQkJZm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKCZhbXA7d2JjLCBmb2xpbyk7Ci0JCWVsc2UKJiM0MzsJCQlmb2xpb191bmxvY2soZm9saW8pOwomIzQzOwkJfSBlbHNlIHsKIAkJCWVycm9yID0gc2htZW1fd3JpdGVfZm9saW8oZm9saW8pOwomIzQzOwkJCWlmIChlcnJvciA9PSBBT1BfV1JJVEVQQUdFX0FDVElWQVRFKSB7CiYjNDM7CQkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiYjNDM7CQkJCWVycm9yID0gMDsKJiM0MzsJCQl9CiYjNDM7CQl9CiAJfQogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgQ29udGV4dCBmb3IgQWNjZXNzaWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY2AuIFRoZSBjb2RlIGl0c2VsZiBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIGFkanVzdGluZyB0aGUgaGFuZGxpbmcgb2YgZm9saW8gd3JpdGViYWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGxvY2tpbmcgYW5kIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBhIGZvbGlvIGlzbiYjMzk7dCBtYXBwZWQuIEJ1dCwgYXMgYW4gZXhwZXJ0IGluIHRoaXMsIEkga25vdyB0aGUgcmVhbCBxdWVzdGlvbiBpcyAqd2hlcmUqIHRoaXMgY29kZSBleGVjdXRlcyBhbmQgd2hldGhlciBpdCYjMzk7cyByZWxldmFudCBpbiBvdXIgdGVzdGluZyBjb250ZXh0LgoKVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYGk5MTVgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHRoZXNlIGVudmlyb25tZW50cyBhcmVuJiMzOTt0IHBlcmZlY3QgZW11bGF0b3JzIGZvciAqZXZlcnkqIHBpZWNlIG9mIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHNwZWNpYWxpemVkIGRldmljZXMuCgpUaGUgcHJvbXB0LCBzcGVjaWZpY2FsbHkgc2VjdGlvbiAyLCBoaWdobGlnaHRzICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsg4oCTIGFuZCBpdCBleHBsaWNpdGx5IGxpc3RzIHNldmVyYWwgZXhhbXBsZXMuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGltcGxpY2F0aW9uOiBpcyBgaTkxNWAgb25lIG9mIHRob3NlIHVucmVhY2hhYmxlIGNvbXBvbmVudHM/IFFFTVUsIGluIGdlbmVyYWwsIGRvZXNuJiMzOTt0IGVtdWxhdGUgaGFyZHdhcmUgbGlrZSBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzLiBJdCBvZmZlcnMgKm90aGVyKiB2aXJ0dWFsaXplZCBncmFwaGljcyBkZXZpY2VzIGxpa2UgYm9jaHMtZHJtLCB2aXJ0aW8tZ3B1LCBhbmQgc28gb24uIEJ1dCwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGZ1bGwgYGk5MTVgIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IGZvciByZWNlbnQgZ2VuZXJhdGlvbnMsIGlzIGEgbm8tZ28gaW4gc3RhbmRhcmQgUUVNVS4gSXQmIzM5O3MgZWl0aGVyIGhhcmR3YXJlIHBhc3N0aHJvdWdoIG9yLCBtYXliZSwgR1ZULWcsIHdoaWNoIGFsc28gaW1wbGllcyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb24gdGhlIGhvc3QuCgpUaGVyZWZvcmUsIGlzIGBpOTE1YCBsaWtlIGBhbWRncHVgIG9yIGBub3V2ZWF1YCwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmQgYW5kIHRodXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/CgpJIG5lZWQgdG8gY29uZmlybSBpZiBgaTkxNWAgZXZlbiAqaGFzKiBhIG1vY2sgb3IgZHVtbXkgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBpdCYjMzk7cyBjb25zaWRlcmVkICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlJiMzNDsgaW4gdGhpcyBzY2VuYXJpbywgb3IgaWYgc3l6a2FsbGVyIHRhcmdldHMgaXQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGViYXNlIGFuZCBHaXQgbG9ncyB0byBnZXQgYSBzb2xpZCBhbnN3ZXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgKmFueSogdmlhYmxlIHBhdGggdG8gZnV6emluZyB0aGlzIGNvZGUgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzIG9yIHdpdGggc29tZSBzaW11bGF0ZWQvZW11bGF0ZWQgbW9kZS4gSSB3aWxsIGFsc28gcmUtcmVhZCB0aGUgcHJvbXB0IGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfRFJNX0k5MTUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTM0MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL2k5MTUvLmt1bml0Y29uZmlnPTc9Q09ORklHX0RSTT15XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc6ODpDT05GSUdfRFJNX0k5MTU9eVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvLmt1bml0Y29uZmlnOjk6Q09ORklHX0RSTV9JOTE1X0tVTklUX1RFU1Q9eVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSAmIzQzOz0gJChjYWxsIGNjLW9wdGlvbiwgLVdmb3JtYXQtdHJ1bmNhdGlvbilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS05LSMgRW5hYmxlIC1XZXJyb3IgaW4gQ0kgYW5kIGRldmVsb3BtZW50XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZToxMDpzdWJkaXItY2NmbGFncy0kKENPTkZJR19EUk1fSTkxNV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0xMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT0zMzc9aTkxNS15ICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjM4NjppOTE1LSQoQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODctXHRkaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTozODk6b2JqLSQoQ09ORklHX0RSTV9JOTE1X0tVTklUX1RFU1QpICYjNDM7PSBkaXNwbGF5L3Rlc3RzL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtMzkwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6MzkxOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfR1ZUKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM5Mi1cdGRpc3BsYXkvaW50ZWxfZ3Z0X2FwaS5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9Mzk4PWk5MTUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MDItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MDM6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9QWFApICYjNDM7PSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDA0LVx0cHhwL2ludGVsX3B4cF9jbWQubyBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMS0jIFBvc3QtbW9ydGVtIGRlYnVnIGFuZCBHUFUgaGFuZyBzdGF0ZSBjYXB0dXJlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MTI6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMy1cdGk5MTVfZ3B1X2Vycm9yLm9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQxNDppOTE1LSQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxNS1cdGdlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5vIFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDI5PWk5MTUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0MzI6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9HVlQpICYjNDM7PSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDMzLVx0aW50ZWxfZ3Z0Lm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00MzU9aW5jbHVkZSAkKHNyYykvZ3Z0L01ha2VmaWxlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0Mzc6b2JqLSQoQ09ORklHX0RSTV9JOTE1KSAmIzQzOz0gaTkxNS5vXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0Mzg6b2JqLSQoQ09ORklHX0RSTV9JOTE1X0dWVF9LVk1HVCkgJiM0Mzs9IGt2bWd0Lm9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQzOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NDEtI1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDQyOiMgRW5hYmxlIGxvY2FsbHkgZm9yIENPTkZJR19EUk1fSTkxNV9XRVJST1I9eS4gU2VlIGFsc28gc2NyaXB0cy9NYWtlZmlsZS5idWlsZFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDQzOmlmZGVmIENPTkZJR19EUk1fSTkxNV9XRVJST1JcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQ0NC0gICAgY21kX2NoZWNrZG9jID0gUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MSAkKFBZVEhPTjMpICQoS0VSTkVMRE9DKSAtbm9uZSAtV2Vycm9yICRcdTAwM2Ncbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00NTA9bm8taGVhZGVyLXRlc3QgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NTItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0NTM6YWx3YXlzLSQoQ09ORklHX0RSTV9JOTE1X1dFUlJPUikgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NTQtXHQkKHBhdHN1YnN0ICUuaCwlLmhkcnRlc3QsICQoZmlsdGVyLW91dCAkKG5vLWhlYWRlci10ZXN0KSwgXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz01ODc9dm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02NTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTY1OC1zdGF0aWMgdm9pZCBkYmdfdmJsYW5rX2V2YWRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBrdGltZV90IGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jPTQxMj1zdGF0aWMgdm9pZCBpbnRlbF9zY2FsZXJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMtNDQwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYzo0NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMtNDQyLXN0YXRpYyB2b2lkIGNydGNfdXBkYXRlc19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz01MjY9c3RhdGljIHZvaWQgX19hc3luY19wdXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNTM0LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6NTM1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNTM2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTYxOT12ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy02MjItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzo2MjM6I2VuZGlmIC8qIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy02MjQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9OTk2PWludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29ya19zeW5jKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwMDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDA4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTAwOS0vKipcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDQ5PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDU3LVx0d2YgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkaXNwbGF5LCBkb21haW4pO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MTA1ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNTktXHRwb3dlcl9kb21haW5fc2V0LVx1MDAzZXdha2VyZWZzW2RvbWFpbl0gPSB3Zjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDY1PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldF9pZl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNzYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA3OC1cdHBvd2VyX2RvbWFpbl9zZXQtXHUwMDNld2FrZXJlZnNbZG9tYWluXSA9IHdmO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTEwODY9aW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfbWFza19pbl9zZXQoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXksXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA5Ny1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jOjEwOTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDk5LVx0XHR3ZiA9IGZldGNoX2FuZF96ZXJvKFx1MDAyNnBvd2VyX2RvbWFpbl9zZXQtXHUwMDNld2FrZXJlZnNbZG9tYWluXSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MjMyNT1zdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0yMzM4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MjMzOTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTIzNDAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmg9MTk1PXN0cnVjdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zZXQge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgtMTk2LVx0c3RydWN0IGludGVsX3Bvd2VyX2RvbWFpbl9tYXNrIG1hc2s7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoxOTc6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0xOTgtXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKndha2VyZWZzW1BPV0VSX0RPTUFJTl9OVU1dO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oPTI0MD12b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29yayhzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoyNDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0yNDItdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbC5jPTUxOD1pY2xfY29tYm9fcGh5X2F1eF9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXksXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyX3dlbGwuYy01MzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbC5jOjUzODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oPTE0OTY9c3RydWN0IGludGVsX2NydGMge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oLTE1NjItXHRcdGludCBzY2FubGluZV9zdGFydDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oOjE1NjM6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19WQkxBTktfRVZBREVcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oLTE1NjQtXHRcdHN0cnVjdCB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaD0yMT1zdHJ1Y3QgaW50ZWxfbGlua19id19saW1pdHM7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oLTIyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaDoyMzojaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoSTkxNSkpIHx8IFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oLTI0LVx0KElTX0VOQUJMRUQoQ09ORklHX0RSTV9YRV9EUF9UVU5ORUwpIFx1MDAyNlx1MDAyNiAhZGVmaW5lZChJOTE1KSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oPTE1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZHBfdHVubmVsX21ncl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KSB7fVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oOjE1NzojZW5kaWYgLyogQ09ORklHX0RSTV9JOTE1X0RQX1RVTk5FTCB8fCBDT05GSUdfRFJNX1hFX0RQX1RVTk5FTCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTQ3PXN0cnVjdCBpbnRlbF90Y19wb3J0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtNTMtXHRzdHJ1Y3QgcmVmX3RyYWNrZXIgKmxvY2tfd2FrZXJlZjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy01NS1cdGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gbG9ja19wb3dlcl9kb21haW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTE5NT10Y19jb2xkX2Jsb2NrKHN0cnVjdCBpbnRlbF90Y19wb3J0ICp0Yylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAwLVx0d2FrZXJlZiA9IF9fdGNfY29sZF9ibG9jayh0YywgXHUwMDI2ZG9tYWluKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAyLVx0dGMtXHUwMDNlbG9ja19wb3dlcl9kb21haW4gPSBkb21haW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jPTIxNz10Y19jb2xkX3VuYmxvY2soc3RydWN0IGludGVsX3RjX3BvcnQgKnRjLCBzdHJ1Y3QgcmVmX3RyYWNrZXIgKndha2VyZWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTIyMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjIzLVx0ZHJtX1dBUk5fT04oZGlzcGxheS1cdTAwM2Vkcm0sIHRjLVx1MDAzZWxvY2tfcG93ZXJfZG9tYWluICE9IGRvbWFpbik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZT0zPXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS00LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSAmIzQzOz0gaTkxNV9kaXNwbGF5X3Rlc3Qub1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS02LWk5MTVfZGlzcGxheV90ZXN0LXkgPSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9OTc1PXN0YXRpYyBpbnQgaW50ZWxfY29udGV4dF9zZXRfZ2VtKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTk5OC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM6OTk5Olx0aWYgKENPTkZJR19EUk1fSTkxNV9SRVFVRVNUX1RJTUVPVVQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTEwMDAtXHQgICAgY3R4LVx1MDAzZWk5MTUtXHUwMDNlcGFyYW1zLnJlcXVlc3RfdGltZW91dF9tcykge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjExND1zdGF0aWMgaW50IHNldF9jb250ZXh0X2ltYWdlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yMTIzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyMTI0Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTIxMjUtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjY3Nj1pOTE1X2dlbV9lbmdpbmVzX2l0ZXJfbmV4dChzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTMtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI2OTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yNjk1LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjcwND1pbnQgX19pbml0IGk5MTVfZ2VtX2NvbnRleHRfbW9kdWxlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI3MDktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfUkVQTEFZX0dQVV9IQU5HU19BUEkpKSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI3MTEtXHRcdHByX25vdGljZShcJiMzNDsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yNzE2LVx0XHRlbHNlXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTc6XHRcdFx0cHJfbm90aWNlKFwmIzM0OyoqIENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSBidWlsZHMgYXJlIGludGVuZGVkICoqXFxuXCYjMzQ7KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxOC1cdFx0cHJfbm90aWNlKFwmIzM0OyoqIGZvciBzcGVjaWZpYyB1c2Vyc3BhY2UgZ3JhcGhpY3Mgc3RhY2sgZGV2ZWxvcGVycyBvbmx5ISAgICoqXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmM9MjgxPXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqaTkxNV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYzozNDQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvbW9ja19kbWFidWYuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM9NDk9ZW51bSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy03OC0vKiBDYXRjaCBlbWlzc2lvbiBvZiB1bmV4cGVjdGVkIGVycm9ycyBmb3IgQ0khICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jOjc5OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTgwLSN1bmRlZiBFSU5WQUxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTI0NT1zdHJ1Y3QgaTkxNV9leGVjYnVmZmVyIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTMxNC1cdHVuc2lnbmVkIGxvbmcgbnVtX2ZlbmNlcztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM6MzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0zMTYtXHRzdHJ1Y3QgaTkxNV9jYXB0dXJlX2xpc3QgKmNhcHR1cmVfbGlzdHNbTUFYX0VOR0lORV9JTlNUQU5DRSAmIzQzOyAxXTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTE5NzM9ZWJfZmluZF9maXJzdF9yZXF1ZXN0X2FkZGVkKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM6MTk4NjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUilcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4Ny1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTMzOD1zdGF0aWMgdm1fZmF1bHRfdCB2bV9mYXVsdF9ndHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy00NzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ3ODpcdGlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy00NzktXHRcdGludGVsX3dha2VyZWZfYXV0byhcdTAwMjZpOTE1LVx1MDAzZXJ1bnRpbWVfcG0udXNlcmZhdWx0X3dha2VyZWYsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ4MDpcdFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTQ4MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTExMTY9aW50IGk5MTVfZ2VtX2ZiX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTUzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYzoxMTU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtMTE1NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jPTk2MD1ib29sIGk5MTVfZ2VtX29iamVjdF9oYXNfdW5rbm93bl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYy05NzAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmM6OTcxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYy05NzItI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL2h1Z2VfZ2VtX29iamVjdC5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BoeXMuYz0yMjc9aW50IGk5MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgYWxpZ24pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BoeXMuYy0yNjMtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jOjI2NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jLTI2NS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jPTU5Nz1zdGF0aWMgdm9pZCBkYmdfcG9pc29uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jLTYwMC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmM6NjAxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMtNjAyLVx0aWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoXHUwMDI2Z2d0dC1cdTAwM2VlcnJvcl9jYXB0dXJlKSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9MTA0Mj1zdGF0aWMgdm1fZmF1bHRfdCB2bV9mYXVsdF90dG0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM6MTE0MTpcdGlmICh3YWtlcmVmIFx1MDAyNlx1MDAyNiBDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EICE9IDApXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtMTE0Mi1cdFx0aW50ZWxfd2FrZXJlZl9hdXRvKFx1MDAyNnRvX2k5MTUob2JqLVx1MDAzZWJhc2UuZGV2KS1cdTAwM2VydW50aW1lX3BtLnVzZXJmYXVsdF93YWtlcmVmLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjExNDM6XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmMtMzItICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuYzozMzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuYy0zNC1zdGF0aWMgYm9vbCBmYWlsX2dwdV9taWdyYXRpb247XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jPTYzOD1ib29sIGludGVsX2NvbnRleHRfcmV2b2tlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jOjY0ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ5LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2NvbnRleHQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaD0zNzM9aW50ZWxfY29udGV4dF9jbGVhcl9ub3ByZWVtcHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaC0zNzctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0Lmg6Mzc4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaC0zNzktc3RhdGljIGlubGluZSBib29sIGludGVsX2NvbnRleHRfaGFzX293bl9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oPTc3PXN0cnVjdCBpbnRlbF9jb250ZXh0IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgtMzA4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oOjMwOTojaWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgtMzEwLVx0LyoqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzAxPWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdF9yZXNldChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMDIte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MzAzOlx0aWYgKCFDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgtMzA0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzM4PWludGVsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oLTMzOS17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaDozNDA6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zNDEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz00NDk9c3RhdGljIGludCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTEwLVx0ZW5naW5lLVx1MDAzZXByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcyA9XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTE6XHRcdENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUw7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTItXHRlbmdpbmUtXHUwMDNlcHJvcHMubWF4X2J1c3l3YWl0X2R1cmF0aW9uX25zID1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxMzpcdFx0Q09ORklHX0RSTV9JOTE1X01BWF9SRVFVRVNUX0JVU1lXQUlUO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTE0LVx0ZW5naW5lLVx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTU6XHRcdENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTYtXHRlbmdpbmUtXHUwMDNlcHJvcHMuc3RvcF90aW1lb3V0X21zID1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxNzpcdFx0Q09ORklHX0RSTV9JOTE1X1NUT1BfVElNRU9VVDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxOC1cdGVuZ2luZS1cdTAwM2Vwcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTE5Olx0XHRDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNFX0RVUkFUSU9OO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTIwLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyNy1cdGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gMTIgXHUwMDI2XHUwMDI2IChlbmdpbmUtXHUwMDNlZmxhZ3MgXHUwMDI2IEk5MTVfRU5HSU5FX0hBU19SQ1NfUkVHX1NUQVRFKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUyODpcdFx0ZW5naW5lLVx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVRfQ09NUFVURTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz0yNTQxPXZvaWQgeGVocF9lbmFibGVfY2NzX2VuZ2luZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTI1NTctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzoyNTU4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTI1NTktI2luY2x1ZGUgXCYjMzQ7bW9ja19lbmdpbmUuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYz0xMjA9cmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMTIxLXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoxMjI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0xMjMtXHRcdHNob3dfaGVhcnRiZWF0KHJxLCBlbmdpbmUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYz0yNDU9dm9pZCBpbnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMjQ2LXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoyNDc6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMjQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTM5Mz1pbnQgaW50ZWxfZW5naW5lX2ZsdXNoX2JhcnJpZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtNDI2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jOjQyNzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtNDI4LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jPTM1PXN0YXRpYyB2b2lkIGRiZ19wb2lzb25fY2Uoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMtMzYte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmM6Mzc6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zOC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jPTMxMT12b2lkIGludGVsX2VuZ2luZV9yZXNldF9waW5uZWRfY29udGV4dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jOjMyNjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zMjctI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfZW5naW5lX3BtLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaD02ODM9aW50ZWxfZW5naW5lX2hhc190aW1lc2xpY2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oLTY4NC17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaDo2ODU6XHRpZiAoIUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT04pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC02ODYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jPTIwNj12b2lkIGludGVsX2VuZ2luZXNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMtMjYxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjM6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYy0yNjQtXHRcdHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNT1leGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nIHN0YXR1cylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMC1cdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0MjE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0dWVCkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NDcyPV9fZXhlY2xpc3RzX3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg1LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0ODY6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg3LVx0XHRscmNfY2hlY2tfcmVncyhjZSwgZW5naW5lLCBcJiMzNDtiZWZvcmVcJiMzNDspO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NTg2PXN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgcnEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy02MDAtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjYwMTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy02MDItXHRcdGxyY19jaGVja19yZWdzKGNlLCBlbmdpbmUsIFwmIzM0O2FmdGVyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTk0MT1zdGF0aWMgYm9vbCBjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTk0Mi17XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjk0MzpcdHJldHVybiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfR1ZUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtOTQ0LVx0XHRpbnRlbF9jb250ZXh0X2ZvcmNlX3NpbmdsZV9zdWJtaXNzaW9uKGNlKSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yMzI1PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTIzMjktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjIzMzA6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yMzMxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yNDEwPXN0YXRpYyBib29sIHByZWVtcHRfdGltZW91dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpjb25zdCBlbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yNDEzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyNDE0Olx0aWYgKCFDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yNDE1LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yODU0PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0yODY2LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjI4Njc6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjg2OC1cdFx0bWVtc2V0KGVuZ2luZS1cdTAwM2VzdGF0dXNfcGFnZS5hZGRyLCBQT0lTT05fSU5VU0UsIFBBR0VfU0laRSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0zNDI3PWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy0zNDcyLVx0XHRcdGVuZ2luZS1cdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfUFJFRU1QVElPTjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6MzQ3MzpcdFx0XHRpZiAoQ09ORklHX0RSTV9JOTE1X1RJTUVTTElDRV9EVVJBVElPTilcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQ3NC1cdFx0XHRcdGVuZ2luZS1cdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElNRVNMSUNFUztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNTk9dm9pZCBpbnRlbF9leGVjbGlzdHNfZHVtcF9hY3RpdmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDE3NC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDE3NTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzYtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfZXhlY2xpc3RzLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jPTYzMT1zdGF0aWMgaW50IF9fZW5naW5lc192ZXJpZnlfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jLTYzNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmM6NjM3Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYy02MzgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmM9MTcyPXZvaWQgaW50ZWxfZ3RfaW5pdF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE4OS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmM6MTkwOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE5MS12b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmg9MTM9dm9pZCBpbnRlbF9ndF9pbml0X2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmgtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oOjE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oLTE2LXZvaWQgaW50ZWxfZ3RfY2hlY2tfY2xvY2tfZnJlcXVlbmN5KGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9NDE5PWt0aW1lX3QgaW50ZWxfZ3RfZ2V0X2F3YWtlX3RpbWUoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jLTQzMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6NDMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMtNDMzLSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2d0X3BtLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYz0zNDY9c3RhdGljIHZvaWQgcG9pc29uX3NjcmF0Y2hfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2NyYXRjaClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy0zNTEtXHR2YWwgPSAwO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmM6MzUyOlx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy0zNTMtXHRcdHZhbCA9IFBPSVNPTl9GUkVFO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTcxNj1fX3ZtX2NyZWF0ZV9zY3JhdGNoX2Zvcl9yZWFkX3Bpbm5lZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jLTczNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jOjczNTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuYy03MzYtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL21vY2tfZ3R0LmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0zNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjM3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9UUkFDRV9HVFQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0zOC0jZGVmaW5lIEdUVF9UUkFDRSguLi4pIHRyYWNlX3ByaW50ayhfX1ZBX0FSR1NfXylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYz0xNTc9dm9pZCBpbnRlbF9sbGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmMtMTYxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmM6MTYyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jLTE2My0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9sbGMuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jPTk2Nz1zZXRfcmVkem9uZSh2b2lkICp2YWRkciwgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTY4LXtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjk2OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jPTk3OD1jaGVja19yZWR6b25lKGNvbnN0IHZvaWQgKnZhZGRyLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy05Nzkte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6OTgwOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTgxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTA3ND1fX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xMDgxLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTA4MjpcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtMTA4My1cdFx0Y29udGV4dF9zaXplICYjNDM7PSBJOTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTkzMD1zdGF0aWMgdm9pZCBzdF9ydW50aW1lX3VuZGVyZmxvdyhzdHJ1Y3QgaW50ZWxfY29udGV4dF9zdGF0cyAqc3RhdHMsIHMzMiBkdClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzEte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTkzMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTMzLVx0c3RhdHMtXHUwMDNlcnVudGltZS5udW1fdW5kZXJmbG93JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz0xOTUwPXZvaWQgbHJjX3VwZGF0ZV9ydW50aW1lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTcyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTk3MzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTc0LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2xyYy5jXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jPTExNTE9dm9pZCBpbnRlbF9taWdyYXRlX2Zpbmkoc3RydWN0IGludGVsX21pZ3JhdGUgKm0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jLTExNjEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmM6MTE2MjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmMtMTE2My0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9taWdyYXRlLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmM9NjY2PXZvaWQgaW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4Ni1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYzo2ODc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4OC0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9tb2NzLmNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYz04NTc9dm9pZCBpbnRlbF9yYzZfcHJpbnRfcmVzaWRlbmN5KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqdGl0bGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODY5LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmM6ODcwOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5jLTg3MS0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9yYzYuY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTcxNz1ib29sIGludGVsX2VuZ2luZV9yZXNldF9uZWVkc193YV8yMjAxMTgwMjAzNyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMtMTczMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTczMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jLTE3MzItI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RfcmVzZXQuY1wmIzM0O1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDI3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvbXB0JiMzOTtzIEhhcmR3YXJlIExpbWl0YXRpb25zKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIExldCYjMzk7cyByZWFsbHkgZGlzc2VjdCB0aGlzIHByb21wdC4gSXQmIzM5O3MgaGlnaGxpZ2h0aW5nICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVIGRyaXZlcnMuIFRoZSBleGFtcGxlcyBnaXZlbiDigJMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUg4oCTIGFsbCBoYXZlIHRoaXMgY2F2ZWF0OiB0aGV5ICpyZXF1aXJlKiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIGFuZCBjcml0aWNhbGx5LCB0aGVzZSBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpOb3csIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaTkxNS4gSXMgKml0KiBzdWJqZWN0IHRvIHRoZSBzYW1lIGxpbWl0YXRpb25zPyBEb2VzIGk5MTUgZGVtYW5kIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgb3IgY291bGQgaXQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgd2l0aGluIHRoZSBRRU1VIGVudmlyb25tZW50PwoKVGhlIGNvcmUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBEb2VzIFFFTVUsIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uLCBvZmZlciBhbnkgZW11bGF0aW9uIHN1cHBvcnQgZm9yIEludGVsJiMzOTtzIGludGVncmF0ZWQgR1BVcywgc3BlY2lmaWNhbGx5IHRoZSBpOTE1PyBUaGF0JiMzOTtzIGEgcmVzb3VuZGluZyAmIzM0O25vJiMzNDsgYmFzZWQgb24gbXkgZXhwZXJpZW5jZS4gUUVNVSBoYXNuJiMzOTt0IGhpc3RvcmljYWxseSBpbmNsdWRlZCBhbiBJbnRlbCBpbnRlZ3JhdGVkIEdQVSBlbXVsYXRvciBmb3IgaTkxNS4KClNvLCB0aGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiBpOTE1IGNhbiBldmVuIGJlIHByb2JlZCBvciBpbml0aWFsaXplZCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIOKAkyBwb3RlbnRpYWxseSBkaXZpbmcgaW50byBgaTkxNV9wY2kuY2Agb3IgZXhhbWluaW5nIGhvdyBpOTE1IGJpbmRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCByZXF1aXJlcyBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlci4qaTkxNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmM9MTAzNz1pbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jLTEwMzgte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYzoxMDM5Olx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMtMTA0MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMjIKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBpOTE1IFBDSSBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBpOTE1X3BjaV9kcml2ZXJgLCBhbmQgSSYjMzk7bGwganVtcCByaWdodCBpbnRvIGBpOTE1X3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIGhvdyBpdCYjMzk7cyBtYW5hZ2luZyB0aGUgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZDogdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY2Vzc2VzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgQkFSIG1hcHBpbmdzIG9yIGludGVycnVwdCBoYW5kbGluZyBzdHJhdGVnaWVzPyBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgbW1pbyByZWdpb25zIGFuZCBoYW5kbGluZyB0aGUgdmFyaW91cyBwbGF0Zm9ybSBxdWlya3MgdGhhdCBhbHdheXMgc2VlbSB0byBwb3AgdXAuIFRoaXMgZmlsZSBpcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMjA6XHRcbjEwMjE6XHRzdGF0aWMgdm9pZCBpOTE1X3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbjEwMjI6XHR7XG4xMDIzOlx0XHRzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHBkZXZfdG9faTkxNShwZGV2KTtcbjEwMjQ6XHRcbjEwMjU6XHRcdGk5MTVfZHJpdmVyX3NodXRkb3duKGk5MTUpO1xuMTAyNjpcdH1cbjEwMjc6XHRcbjEwMjg6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaTkxNV9wY2lfZHJpdmVyID0ge1xuMTAyOTpcdFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbjEwMzA6XHRcdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcbjEwMzE6XHRcdC5wcm9iZSA9IGk5MTVfcGNpX3Byb2JlLFxuMTAzMjpcdFx0LnJlbW92ZSA9IGk5MTVfcGNpX3JlbW92ZSxcbjEwMzM6XHRcdC5zaHV0ZG93biA9IGk5MTVfcGNpX3NodXRkb3duLFxuMTAzNDpcdFx0LmRyaXZlci5wbSA9IFx1MDAyNmk5MTVfcG1fb3BzLFxuMTAzNTpcdH07XG4xMDM2Olx0XG4xMDM3Olx0aW50IGk5MTVfcGNpX3JlZ2lzdGVyX2RyaXZlcih2b2lkKVxuMTAzODpcdHtcbjEwMzk6XHRcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmk5MTVfcGNpX2RyaXZlcik7XG4xMDQwOlx0fVxuMTA0MTpcdFxuMTA0MjpcdHZvaWQgaTkxNV9wY2lfdW5yZWdpc3Rlcl9kcml2ZXIodm9pZClcbjEwNDM6XHR7XG4xMDQ0Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcbjEwNDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3OTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgaTkxNSBQQ0kgSUQgTGlzdCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBJbnRlbCBpOTE1IGdyYXBoaWNzIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gdGhlIFBDSSBidXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBpOTE1X3BjaS5jYCBzb3VyY2UgY29kZS4gVGhlIGBwY2lpZGxpc3RgIHZhcmlhYmxlIGlzIG15IGZpcnN0IHN0b3AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNyaXRpY2FsIG1hdGNoaW5nIG1hZ2ljIGxpa2VseSBoYXBwZW5zLCB0aGUgYnJlYWQgYW5kIGJ1dHRlciBvZiBrbm93aW5nIHdoaWNoIGRldmljZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbmQgaG93IHRvIGhhbmRsZSB0aGVtIGNvcnJlY3RseS4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgZW51bWVyYXRlZCwgaG93IHRoZSBJRHMgYXJlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IHZlbmRvci9kZXZpY2UgY29tYmluYXRpb25zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgbGlzdCBvZiBQQ0kgZGV2aWNlIElEcyB0aGF0IHRoZSBkcml2ZXIgcmVjb2duaXplcywgYWxvbmcgd2l0aCBhc3NvY2lhdGVkIGZsYWdzIG9yIGRhdGEgdGhhdCB0ZWxsIHRoZSBkcml2ZXIgaG93IHRvIGluaXRpYWxpemUgb3IgaW50ZXJhY3Qgd2l0aCBlYWNoIHNwZWNpZmljIGhhcmR3YXJlIHZhcmlhbnQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IHN1Z2dlc3QgdGhlIGFkZGl0aW9uIG9yIGFsdGVyYXRpb24gb2YgZGV2aWNlIHN1cHBvcnQgb3ZlciB0aW1lLCBhbmQgYW55IHRyZW5kcyBpbiBob3cgZGlmZmVyZW50IHJldmlzaW9ucyBhcmUgaGFuZGxlZC4gVGhlcmUgbWlnaHQgYmUgc29tZSBpbnRlcmVzdGluZyBxdWlya3MgaW4gdGhlIGxpc3QgdG9vLCBwb3RlbnRpYWxseSBzb21lIGVudHJpZXMgdGhhdCByZXF1aXJlZCBzcGVjaWZpYyB3b3JrYXJvdW5kcyBvciBoYW5kbGluZyBvZiBlZGdlIGNhc2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NTA6XHRzdGF0aWMgYm9vbCBpbnRlbF9tbWlvX2Jhcl92YWxpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbnRlbF9pbmZvKVxuIDk1MTpcdHtcbiA5NTI6XHRcdHJldHVybiBpOTE1X3BjaV9yZXNvdXJjZV92YWxpZChwZGV2LCBpbnRlbF9tbWlvX2JhcihpbnRlbF9pbmZvLVx1MDAzZV9fcnVudGltZS5ncmFwaGljcy5pcC52ZXIpKTtcbiA5NTM6XHR9XG4gOTU0Olx0XG4gOTU1Olx0c3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiA5NTY6XHR7XG4gOTU3Olx0XHRzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmludGVsX2luZm8gPVxuIDk1ODpcdFx0XHQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICopIGVudC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiA5NTk6XHRcdGludCBlcnI7XG4gOTYwOlx0XG4gOTYxOlx0XHRpZiAoIWludGVsX2luZm8pXG4gOTYyOlx0XHRcdHJldHVybiAtRU5PREVWO1xuIDk2MzpcdFxuIDk2NDpcdFx0aWYgKGludGVsX2luZm8tXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSBcdTAwMjZcdTAwMjYgIWlkX2ZvcmNlZChwZGV2LVx1MDAzZWRldmljZSkpIHtcbiA5NjU6XHRcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gOTY2Olx0XHRcdFx0IFwmIzM0O1lvdXIgZ3JhcGhpY3MgZGV2aWNlICUwNHggaXMgbm90IHByb3Blcmx5IHN1cHBvcnRlZCBieSBpOTE1IGluIHRoaXNcXG5cJiMzNDtcbiA5Njc6XHRcdFx0XHQgXCYjMzQ7a2VybmVsIHZlcnNpb24uIFRvIGZvcmNlIGRyaXZlciBwcm9iZSBhbnl3YXksIHVzZSBpOTE1LmZvcmNlX3Byb2JlPSUwNHhcXG5cJiMzNDtcbiA5Njg6XHRcdFx0XHQgXCYjMzQ7bW9kdWxlIHBhcmFtZXRlciBvciBDT05GSUdfRFJNX0k5MTVfRk9SQ0VfUFJPQkU9JTA0eCBjb25maWd1cmF0aW9uIG9wdGlvbixcXG5cJiMzNDtcbiA5Njk6XHRcdFx0XHQgXCYjMzQ7b3IgKHJlY29tbWVuZGVkKSBjaGVjayBmb3Iga2VybmVsIHVwZGF0ZXMuXFxuXCYjMzQ7LFxuIDk3MDpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSwgcGRldi1cdTAwM2VkZXZpY2UsIHBkZXYtXHUwMDNlZGV2aWNlKTtcbiA5NzE6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gOTcyOlx0XHR9XG4gOTczOlx0XG4gOTc0Olx0XHRpZiAoaWRfYmxvY2tlZChwZGV2LVx1MDAzZWRldmljZSkpIHtcbiA5NzU6XHRcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0k5MTUgcHJvYmUgYmxvY2tlZCBmb3IgRGV2aWNlIElEICUwNHguXFxuXCYjMzQ7LFxuIDk3NjpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSk7XG4gOTc3Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDk3ODpcdFx0fVxuIDk3OTpcdFxuIDk4MDpcdFx0aWYgKGludGVsX2luZm8tXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSkge1xuIDk4MTpcdFx0XHRkZXZfaW5mbyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Rm9yY2UgcHJvYmluZyB1bnN1cHBvcnRlZCBEZXZpY2UgSUQgJTA0eCwgdGFpbnRpbmcga2VybmVsXFxuXCYjMzQ7LFxuIDk4MjpcdFx0XHRcdCBwZGV2LVx1MDAzZWRldmljZSk7XG4gOTgzOlx0XHRcdGFkZF90YWludChUQUlOVF9VU0VSLCBMT0NLREVQX1NUSUxMX09LKTtcbiA5ODQ6XHRcdH1cbiA5ODU6XHRcbiA5ODY6XHRcdC8qIE9ubHkgYmluZCB0byBmdW5jdGlvbiAwIG9mIHRoZSBkZXZpY2UuIEVhcmx5IGdlbmVyYXRpb25zXG4gOTg3Olx0XHQgKiB1c2VkIGZ1bmN0aW9uIDEgYXMgYSBwbGFjZWhvbGRlciBmb3IgbXVsdGktaGVhZC4gVGhpcyBjYXVzZXNcbiA5ODg6XHRcdCAqIHVzIGNvbmZ1c2lvbiBpbnN0ZWFkLCBlc3BlY2lhbGx5IG9uIHRoZSBzeXN0ZW1zIHdoZXJlIGJvdGhcbiA5ODk6XHRcdCAqIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIFBDSS1JRCFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTEKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYF9fc2htZW1fd3JpdGViYWNrYC4gU2VlbXMgbGlrZSB0aGlzIGlzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIG5hbWUgaGludHMgYXQgc29tZSBraW5kIG9mIHNoYXJlZCBtZW1vcnkgd3JpdGViYWNrIG9wZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gZ2V0IGEgcHJvcGVyIHVuZGVyc3RhbmRpbmcgb2YgaXQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQsIGV2ZW4gbW9yZSBpbXBvcnRhbnRseSwgKndobyogaXMgY2FsbGluZyB0aGlzIHRoaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBncmVhdGVyIHNjaGVtZSBvZiB0aGluZ3MuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBsaWtlbHkgY2FuZGlkYXRlOiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSByZWxhdGVkIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0XHRzaG1lbV90cnVuY2F0ZV9yYW5nZShmaWxlX2lub2RlKG9iai1cdTAwM2ViYXNlLmZpbHApLCAwLCAobG9mZl90KS0xKTtcbiAzMDE6XHRcdG9iai1cdTAwM2VtbS5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEO1xuIDMwMjpcdFx0b2JqLVx1MDAzZW1tLnBhZ2VzID0gRVJSX1BUUigtRUZBVUxUKTtcbiAzMDM6XHRcbiAzMDQ6XHRcdHJldHVybiAwO1xuIDMwNTpcdH1cbiAzMDY6XHRcbiAzMDc6XHR2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcbiAzMDg6XHR7XG4gMzA5Olx0XHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgd2JjID0ge1xuIDMxMDpcdFx0XHQuc3luY19tb2RlID0gV0JfU1lOQ19OT05FLFxuIDMxMTpcdFx0XHQubnJfdG9fd3JpdGUgPSBTV0FQX0NMVVNURVJfTUFYLFxuIDMxMjpcdFx0XHQucmFuZ2Vfc3RhcnQgPSAwLFxuIDMxMzpcdFx0XHQucmFuZ2VfZW5kID0gTExPTkdfTUFYLFxuIDMxNDpcdFx0fTtcbiAzMTU6XHRcdHN0cnVjdCBmb2xpbyAqZm9saW8gPSBOVUxMO1xuIDMxNjpcdFx0aW50IGVycm9yID0gMDtcbiAzMTc6XHRcbiAzMTg6XHRcdC8qXG4gMzE5Olx0XHQgKiBMZWF2ZSBtbWFwaW5ncyBpbnRhY3QgKEdUVCB3aWxsIGhhdmUgYmVlbiByZXZva2VkIG9uIHVuYmluZGluZyxcbiAzMjA6XHRcdCAqIGxlYXZpbmcgb25seSBDUFUgbW1hcGluZ3MgYXJvdW5kKSBhbmQgYWRkIHRob3NlIGZvbGlvcyB0byB0aGUgTFJVXG4gMzIxOlx0XHQgKiBpbnN0ZWFkIG9mIGludm9raW5nIHdyaXRlYmFjayBzbyB0aGV5IGFyZSBhZ2VkIGFuZCBwYWdlZCBvdXRcbiAzMjI6XHRcdCAqIGFzIG5vcm1hbC5cbiAzMjM6XHRcdCAqL1xuIDMyNDpcdFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFx1MDAyNndiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpIHtcbiAzMjU6XHRcdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcbiAzMjY6XHRcdFx0XHRmb2xpb19yZWRpcnR5X2Zvcl93cml0ZXBhZ2UoXHUwMDI2d2JjLCBmb2xpbyk7XG4gMzI3Olx0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiAzMjg6XHRcdFx0fSBlbHNlIHtcbiAzMjk6XHRcdFx0XHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcbiAzMzA6XHRcdFx0XHRpZiAoZXJyb3IgPT0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURSkge1xuIDMzMTpcdFx0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbiAzMzI6XHRcdFx0XHRcdGVycm9yID0gMDtcbiAzMzM6XHRcdFx0XHR9XG4gMzM0Olx0XHRcdH1cbiAzMzU6XHRcdH1cbiAzMzY6XHR9XG4gMzM3Olx0XG4gMzM4Olx0c3RhdGljIHZvaWRcbiAzMzk6XHRzaG1lbV93cml0ZWJhY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iailcbiAzNDA6XHR7XG4gMzQxOlx0XHRfX3NobWVtX3dyaXRlYmFjayhvYmotXHUwMDNlYmFzZS5zaXplLCBvYmotXHUwMDNlYmFzZS5maWxwLVx1MDAzZWZfbWFwcGluZyk7XG4gMzQyOlx0fVxuIDM0MzpcdFxuIDM0NDpcdHN0YXRpYyBpbnQgc2htZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcbiAzNDU6XHR7XG4gMzQ2Olx0XHRzd2l0Y2ggKG9iai1cdTAwM2VtbS5tYWR2KSB7XG4gMzQ3Olx0XHRjYXNlIEk5MTVfTUFEVl9ET05UTkVFRDpcbiAzNDg6XHRcdFx0cmV0dXJuIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopO1xuIDM0OTpcdFx0Y2FzZSBfX0k5MTVfTUFEVl9QVVJHRUQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTM1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgX19zaG1lbV93cml0ZWJhY2tgLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYHNobWVtX3dyaXRlYmFjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKWAgaXMgb25lIGVudHJ5IHBvaW50LiBCdXQsIGFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgb25lIHNwZWNpZmljIGNhbGxpbmcgZnVuY3Rpb24gaXMgcmFyZWx5IHRoZSB3aG9sZSBzdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFdoZXJlICplbHNlKiBpcyB0aGlzIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSBpdHMgY2FsbCBncmFwaC4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGZvcm1pbmcgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUmIzM5O3MgYmVoYXZpb3IsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBpZGVudGlmeSBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgdGhpcyBmdW5jdGlvbiBtaWdodCBpbnRyb2R1Y2UgYWNyb3NzIHRoZSBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIGFsbCBvZiB0aGUgb3RoZXIgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zaG1lbV93cml0ZWJhY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oPTg0ND12b2lkIHNobWVtX3NnX2ZyZWVfdGFibGUoc3RydWN0IHNnX3RhYmxlICpzdCwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODQ1LVx0XHRcdCBib29sIGRpcnR5LCBib29sIGJhY2t1cCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg6ODQ2OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaC04NDctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM9MjkyPXNobWVtX3RydW5jYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzA2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzA3OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzA4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYz0zMzk9c2htZW1fd3JpdGViYWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYy0zNDAte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzQxOlx0X19zaG1lbV93cml0ZWJhY2sob2JqLVx1MDAzZWJhc2Uuc2l6ZSwgb2JqLVx1MDAzZWJhc2UuZmlscC1cdTAwM2VmX21hcHBpbmcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzQyLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9NDYzPXN0YXRpYyBpbnQgaTkxNV90dG1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtNTA0LVx0aWYgKGZsYWdzIFx1MDAyNiBJOTE1X0dFTV9PQkpFQ1RfU0hSSU5LX1dSSVRFQkFDSylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYzo1MDU6XHRcdF9fc2htZW1fd3JpdGViYWNrKG9iai1cdTAwM2ViYXNlLnNpemUsIGk5MTVfdHQtXHUwMDNlZmlscC1cdTAwM2VmX21hcHBpbmcpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTUwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgaTkxNSBpbiB0aGlzIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdoZXJlIGBfX3NobWVtX3dyaXRlYmFja2AgaXMgY2FsbGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBzaG1lbV93cml0ZWJhY2tgIGFuZCBgaTkxNV90dG1fc2hyaW5rYCwgYm90aCBjbGVhcmx5IHRpZWQgdG8gYGk5MTVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgaTkxNWAgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IGFzIHRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb25zIGRlZmluZS4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZSwgc28gSSYjMzk7bSByZS1yZWFkaW5nIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiAgSXQgbGF5cyBvdXQgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmU6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yICpHUFUgZHJpdmVycyogcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuICBDcnVjaWFsbHksIHRoZSBwcm9tcHQgZ2l2ZXMgZXhhbXBsZXM6IG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LgoKTm93LCBkb2VzIGBpOTE1YCBmaXQgdGhhdCBkZXNjcmlwdGlvbj8gIEFic29sdXRlbHkhICBgaTkxNWAgcmVwcmVzZW50cyBJbnRlbCYjMzk7cyBncmFwaGljcyBkcml2ZXJzLCB3aGljaCBhcmUgaW50aW1hdGVseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIGludGVncmF0ZWQgR1BVcyBpbiBJbnRlbCBDUFVzIG9yIGRpc2NyZXRlIEludGVsIEdQVXMgbGlrZSBJbnRlbCBBcmMuICBBbmQgc3RhbmRhcmQgUUVNVSwgdGhlIGtpbmQgdXNlZCBieSBzb21ldGhpbmcgbGlrZSBHQ0UgVk1zLCAqZG9lc24mIzM5O3QqIGVtdWxhdGUgdGhvc2UgSW50ZWwgZ3JhcGhpY3MgY2hpcHMuICBJdCYjMzk7cyBqdXN0IG5vdCBzZXQgdXAgdG8gZG8gdGhhdC4KClNvLCBhbSBJIGFibGUgdG8gdXNlIHN5emthbGxlciBvbiB0aGlzPyBUaGUgcHJvbXB0IHNheXMgSSBjYW4mIzM5O3QgbG9vayBhdCBzeXprYWxsZXIgc3l6bGFuZyBkZXNjcmlwdGlvbnMgb3IgYW55dGhpbmcgd2l0aCAmIzM0O2xvbmcgc3l6XyYjMzQ7LiBJJiMzOTttIHJlbWVtYmVyaW5nIHRoYXQgYHN5ei1ncmVwcGVyYCBhbmQgYHJlYWQtc3l6LXNwZWNgIGFyZSBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGFzIHRoZSB0b29scyB0byBkbyB0aGF0LCBzbyBJIHdpbGwgaGF2ZSB0byBsb29rIGF0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0b29scy4gIExldCYjMzk7cyBzZWUgd2hhdCBpcyBhdmFpbGFibGU6CjEuIGBncmVwcGVyYAoyLiBgcmVhZC1maWxlYAozLiBgY29kZXNlYXJjaC1kaXItaW5kZXhgCjQuIGBzZXQtcmVzdWx0c2AKCk5vcGUsIGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgbm90IGF2YWlsYWJsZSBoZXJlLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuICBJcyBgaTkxNWAgYSAqdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIqIHRoYXQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmU/IFRoZSBleGFtcGxlcyBpbiBTZWN0aW9uIDIgYXJlIGNydWNpYWwgaGVyZTogc3BlY2lmaWNhbGx5LCB0aGUgbGlzdCBvZiAqR1BVIGRyaXZlcnMqIGxpa2UgYW1kZ3B1LiAgVGhhdCByZWluZm9yY2VzIHRoZSBwb2ludDogSTkxNSBpcyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBBTUQgb3IgTm91dmVhdSBvciBhbnkgb2YgdGhlIG90aGVyIEdQVXMhICBOZWl0aGVyIEFNRCBub3IgSW50ZWwgbm9yIE5WSURJQSBHUFVzIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGFyZSBhdmFpbGFibGUgaW4gR0NFL1FFTVUgdmlydHVhbCBtYWNoaW5lcyB1c2VkIGJ5IHN5emthbGxlci4KCldoYXQgRE9FUyBydW4gaW4gUUVNVT8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiAgSSBrbm93IHRoYXQgdmlydGlvLWdwdSwgYm9jaHMtZHJtLCBjaXJydXMsIHF4bCwgdm13Z2Z4LCB2a21zLCBzaW1wbGVkcm0gY2FuIGFsbCB3b3JrIGluIFFFTVUsIGJ1dCBub3QgSTkxNSEKCk5vdywgKmlzKiB0aGVyZSBhbnl0aGluZyBpbiBgaTkxNWAgdGhhdCAqbWlnaHQqIGJlIGFjY2Vzc2libGUgaW4gUUVNVT8gIE1heWJlIHNvbWUga2luZCBvZiBtb2NrIGRldmljZSwgYSBkdW1teSBkcml2ZXI/IExldCYjMzk7cyBnbyBiYWNrIGFuZCBsb29rIGF0IHRoYXQgZWFybGllciBncmVwLiBBaCEgJiMzNDtpOTE1LSQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKSAmIzQzOz0gZ2VtL3NlbGZ0ZXN0cy8uLi4mIzM0OyAgVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gYHNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jYCwgYHNlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY2AsIGBzZWxmdGVzdHMvbW9ja19ndHQuY2AuIFRoYXQgc291bmRzIGxpa2UgaXQhICBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVGAgaW4gS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoYXQgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zz0xNzg9Y29uZmlnIERSTV9JOTE1X0RFQlVHX0dVQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1ZzoxOTE6Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTE5Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIHNlbGZ0ZXN0cyB1cG9uIGRyaXZlciBsb2FkXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zy0yMDgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnOjIwOTpjb25maWcgRFJNX0k5MTVfU0VMRlRFU1RfQlJPS0VOXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTIxMC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJyb2tlbiBhbmQgZGFuZ2Vyb3VzIHNlbGZ0ZXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk5MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgSW50ZWwgR1BVIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEludGVsIEdQVSBkcml2ZXImIzM5O3MgZGVidWcgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYEtjb25maWcuZGVidWdgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYCBkaXJlY3RvcnkuIExpbmUgMTkxIGlzIGEgbGlrZWx5IHNwb3QgdG8gYmVnaW4gbXkgaW52ZXN0aWdhdGlvbi4gSXQmIzM5O3MgcHJvYmFibHkgd2hlcmUgYSByZWxldmFudCBkZWJ1ZyBvcHRpb24sIG9yIHNlY3Rpb24gb2YgdGhlbSwgaXMgZGVmaW5lZCBvciBpbnRyb2R1Y2VkLiBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gS25vd2luZyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgYWRqdXN0IGRlYnVnIGxvZ2dpbmcgd2l0aGluIHRoZSBpOTE1IGRyaXZlciBmb3IgSW50ZWwgR1BVcy4gVGhpcyBraW5kIG9mIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFueSByZWFsIGRlZXAgZGl2ZSBpbnRvIHRoaXMgYXJlYS4gSXQmIzM5O2xsIGdpdmUgbWUgYSBzdHJvbmcgZm91bmRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NTpcdFx0ICBwZXJmb3JtYW5jZSBidXQgd2lsbCBoZWxwIHJlc29sdmUgR3VDIHJlbGF0ZWQgaXNzdWVzLlxuIDE4NjpcdFxuIDE4NzpcdFx0ICBSZWNvbW1lbmRlZCBmb3IgZHJpdmVyIGRldmVsb3BlcnMgb25seS5cbiAxODg6XHRcbiAxODk6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBcJiMzNDtOXCYjMzQ7LlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVFxuIDE5MjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgc2VsZnRlc3RzIHVwb24gZHJpdmVyIGxvYWRcJiMzNDtcbiAxOTM6XHRcdGRlcGVuZHMgb24gRFJNX0k5MTVcbiAxOTQ6XHRcdGRlZmF1bHQgblxuIDE5NTpcdFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cbiAxOTY6XHRcdHNlbGVjdCBGQVVMVF9JTkpFQ1RJT05cbiAxOTc6XHRcdHNlbGVjdCBQUklNRV9OVU1CRVJTXG4gMTk4Olx0XHRzZWxlY3QgQ1JDMzJcbiAxOTk6XHRcdGhlbHBcbiAyMDA6XHRcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGFsbG93IHRoZSBkcml2ZXIgdG8gcGVyZm9ybSBzZWxmdGVzdHMgdXBvblxuIDIwMTpcdFx0ICBsb2FkaW5nOyBhbHNvIHJlcXVpcmVzIHRoZSBpOTE1LnNlbGZ0ZXN0PTEgbW9kdWxlIHBhcmFtZXRlci4gVG9cbiAyMDI6XHRcdCAgZXhpdCB0aGUgbW9kdWxlIGFmdGVyIHJ1bm5pbmcgdGhlIHNlbGZ0ZXN0cyAoaS5lLiB0byBwcmV2ZW50IG5vcm1hbFxuIDIwMzpcdFx0ICBtb2R1bGUgaW5pdGlhbGlzYXRpb24gYWZ0ZXJ3YXJkcykgdXNlIGk5MTUuc2VsZnRlc3Q9LTEuXG4gMjA0Olx0XG4gMjA1Olx0XHQgIFJlY29tbWVuZGVkIGZvciBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxuIDIwNjpcdFxuIDIwNzpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gMjA4Olx0XG4gMjA5Olx0Y29uZmlnIERSTV9JOTE1X1NFTEZURVNUX0JST0tFTlxuIDIxMDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnJva2VuIGFuZCBkYW5nZXJvdXMgc2VsZnRlc3RzXCYjMzQ7XG4gMjExOlx0XHRkZXBlbmRzIG9uIERSTV9JOTE1X1NFTEZURVNUXG4gMjEyOlx0XHRkZXBlbmRzIG9uIEJST0tFTlxuIDIxMzpcdFx0ZGVmYXVsdCBuXG4gMjE0Olx0XHRoZWxwXG4gMjE1Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGV4ZWN1dGlvbiBvZiBzZWxmdGVzdHMgdGhhdCBhcmUgXCYjMzQ7ZGFuZ2Vyb3VzXCYjMzQ7XG4gMjE2Olx0XHQgIGFuZCBtYXkgdHJpZ2dlciB1bmludGVuZGVkIEhXIHNpZGUtZWZmZWN0cyBhcyB0aGV5IGJyZWFrIHN0cmljdFxuIDIxNzpcdFx0ICBydWxlcyBnaXZlbiBpbiB0aGUgSFcgc3BlY2lmaWNhdGlvbi4gRm9yIHNjaWVuY2UuXG4gMjE4Olx0XG4gMjE5Olx0XHQgIFJlY29tbWVuZGVkIGZvciBtYXNvY2hpc3RpYyBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxuIDIyMDpcdFxuIDIyMTpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gMjIyOlx0XG4gMjIzOlx0Y29uZmlnIERSTV9JOTE1X0tVTklUX1RFU1RcbiAyMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciB0aGUgZHJtIGk5MTUgZHJpdmVyXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMTE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgaTkxNSBEcml2ZXIgU2VsZnRlc3QqKgoKT2theSwgc28gYENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVGAgaXMgcmVhbGx5IGp1c3QgZW5hYmxpbmcgYSBzZWxmLXRlc3Qgcm91dGluZSB0aGF0IGhhcHBlbnMgd2hlbiB0aGUgZHJpdmVyLCBgaTkxNS5rb2AsIGlzIGxvYWRlZC4gTWFrZXMgc2Vuc2UsIGEgbG9hZC10aW1lIHNlbGZ0ZXN0LiBCdXQsIG9mIGNvdXJzZSwgdGhlIGk5MTUgZHJpdmVyIGlzIHNwZWNpZmljIHRvIEludGVsIGhhcmR3YXJlLCBzbyB0aGUgZHJpdmVyICpuZWVkcyogdG8gZmluZCBJbnRlbCBoYXJkd2FyZSB0byBldmVuIGRvIGFueXRoaW5nLCByaWdodD8KCkFscmlnaHQsIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIGlmIHRoZXJlJiMzOTtzIG5vIEludGVsIFBDSSBHUFUgZGV2aWNlLCBkb2VzIGBpOTE1LmtvYCBldmVuIGJvdGhlciBwcm9iaW5nPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBpOTE1X3BjaV9wcm9iZSgpYC4gTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjb2RlLi4uIGBzdGF0aWMgaW50IGk5MTVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KWAuIFllcCwgdGhhdCYjMzk7cyBpdC4gQW5kLCB0aGUgUENJIGNvcmUgKm9ubHkqIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSBJRCBmcm9tIHRoZSBgcGNpaWRsaXN0YCBvbiB0aGUgUENJIGJ1cy4gU28sIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgLSB0aG9zZSB0aGF0IGRvbiYjMzk7dCBoYXZlIGFuIEludGVsIEdQVSAtIHRoZSBkcml2ZXIgd291bGRuJiMzOTt0IGZpbmQgYW55IFBDSSBkZXZpY2VzIHRvIG1hdGNoIGFnYWluc3QsIGFuZCBgaTkxNV9wY2lfcHJvYmUoKWAgd291bGRuJiMzOTt0IGV2ZXIgcnVuLiBUaGF0IG1lYW5zIGV2ZW4gaWYgc29tZW9uZSAqZm9yY2VkKiB0aGUgYGk5MTVgIG1vZHVsZSB0byBsb2FkLCBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgYW5kIGJhaWwuCgpCdXQgd2FpdCwgaG9sZCBvbi4uLiBDYW4gYGk5MTVgIGJlIGxvYWRlZCwgYW5kIHRoZW4gcnVuIG1vY2sgc2VsZnRlc3RzPyBIbW0sIHRpbWUgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSB0aGF0IGltcGxlbWVudHMgdGhlIG1vY2sgc2VsZnRlc3RzLCBgaTkxNV9tb2NrX3NlbGZ0ZXN0c2AsIG9yIG1heWJlIGBpOTE1X3BjaS5jYC4gSSBoYXZlIHRvIHNlZSBob3cgaXQgd29ya3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k5MTVfc2VsZnRlc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00MTQ9aTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDE3LVx0c2VsZnRlc3RzL2k5MTVfcmFuZG9tLm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQxODpcdHNlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxOS1cdHNlbGZ0ZXN0cy9pZ3RfYXRvbWljLm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtMTUtI2luY2x1ZGUgXCYjMzQ7aTkxNV9hY3RpdmUuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oOjE2OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oLTE3LSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hX3Jlc291cmNlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC05LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmg6MTA6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC0xMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYy0xMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5jOjg6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQuYy05LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jOjE1OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYy0xNi0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9yYW5kb20uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTE2LSNpbmNsdWRlIFwmIzM0O2d0L2ludGVsX3Jlc2V0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jOjE3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmM9MzM9c3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTExMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jOjExMjpcdFx0ZW5kX3RpbWUgPSBqaWZmaWVzICYjNDM7IGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTEzLVx0XHRmb3JfZWFjaF9wcmltZV9udW1iZXJfZnJvbShwcmltZSwgMiwgODE5Mikge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMtNy0jaW5jbHVkZSBcJiMzNDtpOTE1X2Rydi5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jOjg6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jLTktI2luY2x1ZGUgXCYjMzQ7Z2VtL2k5MTVfZ2VtX2NvbnRleHQuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jLTI1LSNpbmNsdWRlIFwmIzM0O2h1Z2VfZ2VtX29iamVjdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYzoyNjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jLTI3LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy02LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYzo3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy04LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYzo3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmMtOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNS0jaW5jbHVkZSBcJiMzNDtpOTE1X3JlcXVlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MTY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNy0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfdHlwZXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oLTIyLSNpbmNsdWRlIFwmIzM0O2k5MTVfcHJpb2xpc3RfdHlwZXMuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmg6MjM6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC0yNC0jaW5jbHVkZSBcJiMzNDtpbnRlbF9zc2V1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaC0yOC0jaW5jbHVkZSBcJiMzNDtndC9pbnRlbF9yZXNldC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndHQuaDoyOTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTMwLSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hX3Jlc291cmNlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMtNy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYzo4OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jLTktI2luY2x1ZGUgXCYjMzQ7aW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lLmMtNS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5jOjY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy03LSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0X2VuZ2luZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMtMTEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYzoxMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jLTEzLSNpbmNsdWRlIFwmIzM0O3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jLTEwLSNpbmNsdWRlIFwmIzM0O2ludGVsX2d0X3JlcXVlc3RzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYzoxMTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYy0xMi0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYy04LSNpbmNsdWRlIFwmIzM0O2d0L2ludGVsX2d0X3ByaW50LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jOjk6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYy0xMC0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfcmVncy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMTYtI2luY2x1ZGUgXCYjMzQ7aTkxNV9qaWZmaWVzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMTgtI2luY2x1ZGUgXCYjMzQ7c2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYz0zNjM4PXN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X3Ntb2tlKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0zNjQxLVx0XHQuZ3QgPSBhcmcsXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYzozNjQyOlx0XHQucHJuZyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMtMzY0My1cdFx0Lm5jb250ZXh0ID0gMjU2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jLTE2LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmM6MTc6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYy0xOC0jaW5jbHVkZSBcJiMzNDtzZWxmdGVzdHMvaTkxNV9yYW5kb20uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jLTEwLSNpbmNsdWRlIFwmIzM0O2k5MTVfZHJ2LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMtMTItI2luY2x1ZGUgXCYjMzQ7aW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTctI2luY2x1ZGUgXCYjMzQ7Z3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYzo4OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0xMC0jaW5jbHVkZSBcJiMzNDtpOTE1X21lbWNweS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmVzZXQuYy0xMi0jaW5jbHVkZSBcJiMzNDtpbnRlbF9ncHVfY29tbWFuZHMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTUtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYzo2OiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmMtNy0jaW5jbHVkZSBcJiMzNDtpbnRlbF9lbmdpbmVfcG0uaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMTktI2luY2x1ZGUgXCYjMzQ7Li4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MjA6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTIxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM9MTQyPXN0YXRpYyBpbnQgbW9ja19od3NwX2ZyZWVsaXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2MS1cdElOSVRfUkFESVhfVFJFRShcdTAwMjZzdGF0ZS5jYWNoZWxpbmVzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MTYyOlx0c3RhdGUucHJuZyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0xNjMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYz0yODc9c3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwMi1cdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMDM6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwNC1cdGNvdW50ID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMyMC1cdC8qIEJlbmNobWFyayAob25seSkgc2V0dGluZyByYW5kb20gY29udGV4dCBpZHMgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MzIxOlx0cHJhbmRvbV9zZWVkX3N0YXRlKFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zMjItXHRjb3VudCA9IDA7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zMzYtXHQvKiBCZW5jaG1hcmsgbG9va2luZyB1cCB0aGUgZXhhY3Qgc2FtZSBjb250ZXh0IGlkcyBhcyB3ZSBqdXN0IHNldCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMzc6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMzOC1cdGVuZF90aW1lID0gY291bnQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zODktXHQvKiBCZW5jaG1hcmsgc2VhcmNoaW5nIGZvciBhIHJhbmRvbSBjb250ZXh0IGlkIGFuZCBtYXliZSBjaGFuZ2luZyBpdCAqL1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozOTA6XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTM5MS1cdGNvdW50ID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90bGIuYy0xMS0jaW5jbHVkZSBcJiMzNDtpOTE1X2dlbV93dy5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90bGIuYzoxMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jLTEzLSNpbmNsdWRlIFwmIzM0O2k5MTVfd2FpdF91dGlsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jLTktI2luY2x1ZGUgXCYjMzQ7Z3QvaW50ZWxfZ3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYzoxMDojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMtMTEtI2luY2x1ZGUgXCYjMzQ7aW50ZWxfcmVzZXQuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg9MTU1PXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTE2My1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg6MTY0OnN0cnVjdCBpOTE1X3NlbGZ0ZXN0X3N0YXNoIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgtMTY1LVx0YXRvbWljX3QgY291bnRlcjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oPTE2OT1zdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0zMTktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oOjMyMDpcdEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCBzZWxmdGVzdDspXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTMyMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTE4LSNpbmNsdWRlIFwmIzM0O2k5MTVfc2NoZWR1bGVyLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmM6MTk6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTIwLSNpbmNsdWRlIFwmIzM0O2k5MTVfdm1hLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaC00My0jaW5jbHVkZSBcJiMzNDtpOTE1X3NjaGVkdWxlci5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaDo0NDojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oLTQ1LSNpbmNsdWRlIFwmIzM0O2k5MTVfc3dfZmVuY2UuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaD0zMj1zdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zMy1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDozNDpzdHJ1Y3QgaTkxNV9zZWxmdGVzdCB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMzUtXHR1bnNpZ25lZCBsb25nIHRpbWVvdXRfamlmZmllcztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtNDctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6NDg6ZXh0ZXJuIHN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3Q7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtNDktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTEyMT1zdGF0aWMgaW5saW5lIGludCBpOTE1X3BlcmZfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEyOC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDoxMjk6LyogVXNpbmcgdGhlIGk5MTVfc2VsZnRlc3RfIHByZWZpeCBiZWNvbWVzIGEgbGl0dGxlIHVud2llbGR5IHdpdGggdGhlIGhlbHBlcnMuXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTMwLSAqIEluc3RlYWQgd2UgdXNlIHRoZSBpZ3RfIHNob3J0aGFuZCwgaW4gcmVmZXJlbmNlIHRvIHRoZSBpbnRlbC1ncHUtdG9vbHNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTM0LSNkZWZpbmUgSUdUX1RJTUVPVVQobmFtZV9fKSBcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oOjEzNTpcdHVuc2lnbmVkIGxvbmcgbmFtZV9fID0gamlmZmllcyAmIzQzOyBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllc1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEzNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTItI2luY2x1ZGUgXCYjMzQ7aTkxNV9zd19mZW5jZS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmM6MTM6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmMtMjktI2luY2x1ZGUgXCYjMzQ7aTkxNV9nZW0uaFwmIzM0OyAvKiBHRU1fQlVHX09OKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luY21hcC5jOjMwOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmMtMzEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oLTktXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmg6MTA6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmgtMTEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMtMTQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYzoxNTojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jLTE2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jLTE1LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmM6MTY6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYy0xNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYy0zMS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jOjMyOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMtMzMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jLTM3LSNpbmNsdWRlIFwmIzM0O2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYzozODojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYy0zOS0jaW5jbHVkZSBcJiMzNDtpOTE1X3ZtYV9yZXNvdXJjZS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaC0xNS0gKlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgtMTctICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNS0gKlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgtMTctICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jLTExLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jOjEyOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jLTEzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmgtMTUtICpcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmg6MTY6ICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5IGlndC9pOTE1X3NlbGZ0ZXN0XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE3LSAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTMwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6MzE6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zMi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zOS0jZGVmaW5lIEk5MTVfUk5EX1NUQVRFKG5hbWVfXykgXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oOjQwOlx0c3RydWN0IHJuZF9zdGF0ZSBuYW1lX18gPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgtNDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTQyLSNpbmNsdWRlIFwmIzM0O2k5MTVfcmFuZG9tLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo0MzojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy00NC0jaW5jbHVkZSBcJiMzNDtpOTE1X3dhaXRfdXRpbC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jPTQ1NT1zdGF0aWMgaW50IG1vY2tfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTEyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jOjUxMzpcdG1zbGVlcChqaWZmaWVzX3RvX21zZWNzKGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTE0LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz0xNTQyPXN0YXRpYyBpbnQgd2FpdF9mb3JfYWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xNTQ4LVx0XHRcdFx0ICAgIWF0b21pY19yZWFkKFx1MDAyNmk5MTUtXHUwMDNlc2VsZnRlc3QuY291bnRlciksXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmM6MTU0OTpcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xNTUwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmM9MTcyNT1zdGF0aWMgaW50IGxpdmVfYnJlYWRjcnVtYnNfc21va2V0ZXN0KHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTgyNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzoxODI1Olx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy0xODI2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMtI2luY2x1ZGUgXCYjMzQ7aTkxNV9qaWZmaWVzLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzQ6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1LSNpbmNsdWRlIFwmIzM0O2k5MTVfd2FpdF91dGlsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODpzdHJ1Y3QgaTkxNV9zZWxmdGVzdCBpOTE1X3NlbGZ0ZXN0IF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM5LVx0LnRpbWVvdXRfbXMgPSA1MDAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0yMjI9c3RhdGljIGludCBfX3J1bl9zZWxmdGVzdHMoY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTIzMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMxOlx0aWYgKGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZClcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMyOlx0XHR1X3BpZF9uciA9IGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzQ6XHR3aGlsZSAoIWk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzNTpcdFx0aTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCA9IGdldF9yYW5kb21fdTMyKCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTIzNi1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM3Olx0aTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMgPVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzg6XHRcdGk5MTVfc2VsZnRlc3QudGltZW91dF9tcyA/XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzOTpcdFx0bXNlY3NfdG9famlmZmllc190aW1lb3V0KGk5MTVfc2VsZnRlc3QudGltZW91dF9tcykgOlxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0yNDAtXHRcdE1BWF9TQ0hFRFVMRV9USU1FT1VUO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjQ0LVx0cHJfaW5mbyhEUklWRVJfTkFNRSBcJiMzNDs6IFBlcmZvcm1pbmcgJXMgc2VsZnRlc3RzIHdpdGggc3RfcmFuZG9tX3NlZWQ9MHgleCBzdF90aW1lb3V0PSV1XFxuXCYjMzQ7LFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyNDU6XHRcdG5hbWUsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQsIGk5MTVfc2VsZnRlc3QudGltZW91dF9tcyk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTMwNT1pbnQgaTkxNV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzA4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozMDk6XHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzEwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxMy1cdGlmIChlcnIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE0Olx0XHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSBlcnI7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxNS1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMTctXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxODpcdGlmIChpOTE1X3NlbGZ0ZXN0Lm1vY2sgXHUwMDNjIDApIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE5Olx0XHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSAtRU5PVFRZO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMjAtXHRcdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzI2PWludCBpOTE1X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozMzQ6XHRpZiAoIWk5MTVfc2VsZnRlc3QubGl2ZSlcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzM1LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1NC1cdGlmIChlcnIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU1Olx0XHRpOTE1X3NlbGZ0ZXN0LmxpdmUgPSBlcnI7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1Ni1cdFx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1OC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU5Olx0aWYgKGk5MTVfc2VsZnRlc3QubGl2ZSBcdTAwM2MgMCkge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozNjA6XHRcdGk5MTVfc2VsZnRlc3QubGl2ZSA9IC1FTk9UVFk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM2MS1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0zNjc9aW50IGk5MTVfcGVyZl9zZWxmdGVzdHMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNzEtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM3MjpcdGlmICghaTkxNV9zZWxmdGVzdC5wZXJmKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNzMtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzc5LVx0aWYgKGVycikge1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODA6XHRcdGk5MTVfc2VsZnRlc3QucGVyZiA9IGVycjtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgxLVx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgzLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODQ6XHRpZiAoaTkxNV9zZWxmdGVzdC5wZXJmIFx1MDAzYyAwKSB7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4NTpcdFx0aTkxNV9zZWxmdGVzdC5wZXJmID0gLUVOT1RUWTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzg2LVx0XHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTM5Mj1zdGF0aWMgYm9vbCBhcHBseV9zdWJ0ZXN0X2ZpbHRlcihjb25zdCBjaGFyICpjYWxsZXIsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zOTYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM5NzpcdGZpbHRlciA9IGtzdHJkdXAoaTkxNV9zZWxmdGVzdC5maWx0ZXIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zOTgtXHRmb3IgKHNlcCA9IGZpbHRlcjsgKHRvayA9IHN0cnNlcChcdTAwMjZzZXAsIFwmIzM0OyxcJiMzNDspKTspIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTU0OD12b2lkIGlndF9oZXhkdW1wKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU3Ni1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc3Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9yYW5kb21fc2VlZCwgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCwgdWludCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU3ODptb2R1bGVfcGFyYW1fbmFtZWQoc3RfdGltZW91dCwgaTkxNV9zZWxmdGVzdC50aW1lb3V0X21zLCB1aW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc5Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9maWx0ZXIsIGk5MTVfc2VsZnRlc3QuZmlsdGVyLCBjaGFycCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4MDptb2R1bGVfcGFyYW1fbmFtZWQoc3RfdXNlcnNwYWNlX3BpZCwgaTkxNV9zZWxmdGVzdC51c2Vyc3BhY2VfcGlkLCB1aW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTgxLU1PRFVMRV9QQVJNX0RFU0Moc3RfdXNlcnNwYWNlX3BpZCwgXCYjMzQ7Rm9yIHVzYWdlIGluIHRlc3RzIHRoYXQgbWFwIHVzZXJzcGFjZSBtZW1vcnkgYW5kIHJlcXVpcmUgYWRkcmVzcyBzcGFjZSB3aXRoIGNvbnRyb2xsYWJsZSBsaWZldGltZS5cJiMzNDspO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODItXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Mzptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG1vY2tfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0Lm1vY2ssIGludCwgMDQwMCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NC1NT0RVTEVfUEFSTV9ERVNDKG1vY2tfc2VsZnRlc3RzLCBcJiMzNDtSdW4gc2VsZnRlc3RzIGJlZm9yZSBsb2FkaW5nLCB1c2luZyBtb2NrIGhhcmR3YXJlICgwOmRpc2FibGVkIFtkZWZhdWx0XSwgMTpydW4gdGVzdHMgdGhlbiBsb2FkIGRyaXZlciwgLTE6cnVuIHRlc3RzLi4uXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTg2Om1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmUobGl2ZV9zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubGl2ZSwgaW50LCAwNDAwKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTg3LU1PRFVMRV9QQVJNX0RFU0MobGl2ZV9zZWxmdGVzdHMsIFwmIzM0O1J1biBzZWxmdGVzdHMgYWZ0ZXIgZHJpdmVyIGluaXRpYWxpc2F0aW9uIG9uIHRoZSBsaXZlIHN5c3RlbSAoMDpkaXNhYmxlZCBbZGVmYXVsdF0sIDE6cnVuIHRlc3RzIHRoZW4gY29udGludWUsIC0xOnIuLi5cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtNTg4LVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzo1ODk6bW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShwZXJmX3NlbGZ0ZXN0cywgaTkxNV9zZWxmdGVzdC5wZXJmLCBpbnQsIDA0MDApO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01OTAtTU9EVUxFX1BBUk1fREVTQyhwZXJmX3NlbGZ0ZXN0cywgXCYjMzQ7UnVuIHBlcmZvcm1hbmNlIG9yaWVudGF0ZWQgc2VsZnRlc3RzIGFmdGVyIGRyaXZlciBpbml0aWFsaXNhdGlvbiBvbiB0aGUgbGl2ZSBzeXN0ZW0gKDA6ZGlzYWJsZWQgW2RlZmF1bHRdLCAxOnJ1biB0ZS4uLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMjgtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jOjI5OiNpbmNsdWRlIFwmIzM0Oy4uL2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy0zMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTU3OT1zdGF0aWMgaW50IHRlc3RfdGltZXIodm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNTkyLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo1OTM6XHRmb3JfZWFjaF9wcmltZV9udW1iZXIoZGVsYXksIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzLzIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNTk0LVx0XHRwcmVlbXB0X2Rpc2FibGUoKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTY2OT1zdGF0aWMgaW50IHRlc3RfZG1hX2ZlbmNlKHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jLTY3MS1cdHN0cnVjdCBpOTE1X3N3X2ZlbmNlICp0aW1lb3V0ID0gTlVMTCwgKm5vdCA9IE5VTEw7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jOjY3MjpcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllcztcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjczLVx0dW5zaWduZWQgbG9uZyBlbmQsIHNsZWVwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi9pOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNi0jaW5jbHVkZSBcJiMzNDtpOTE1X3JhbmRvbS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMtMzEtI2luY2x1ZGUgXCYjMzQ7aTkxNV9zY2F0dGVybGlzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYzozMjojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jLTMzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jLTEwLSNpbmNsdWRlIFwmIzM0O2k5MTVfZHJ2LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jOjExOiNpbmNsdWRlIFwmIzM0O2k5MTVfc2VsZnRlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMC1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2ZV90ZXN0LmM6MTE6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jLTEyLSNpbmNsdWRlIFwmIzM0O2lndF9mbHVzaF90ZXN0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaC0xNC0jaW5jbHVkZSBcJiMzNDtpOTE1X3JlcXVlc3QuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmg6MTU6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaC0xNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jLTEwLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYzoxMTojaW5jbHVkZSBcJiMzNDsuLi9pOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMtMTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMtMTAtI2luY2x1ZGUgXCYjMzQ7aTkxNV9kcnYuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmM6MTE6I2luY2x1ZGUgXCYjMzQ7aTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuYy0xMi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjQtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmM6MjU6I2luY2x1ZGUgXCYjMzQ7Li4vaTkxNV9zZWxmdGVzdC5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjYtXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzoyNzojaW5jbHVkZSBcJiMzNDtpOTE1X3NlbGZ0ZXN0LmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTI4LSNpbmNsdWRlIFwmIzM0O2k5MTVfdXRpbHMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jPTI3OD1zdGF0aWMgaW50IGlndF9zZ19hbGxvYyh2b2lkICppZ25vcmVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTI5Ny1cdFx0XHRcdHByYW5kb21fc2VlZF9zdGF0ZShcdTAwMjZwcm5nLFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6Mjk4Olx0XHRcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjk5LVx0XHRcdFx0ZXJyID0gYWxsb2NfdGFibGUoXHUwMDI2cHQsIHN6LCBzeiwgKm5wYWdlcywgXHUwMDI2cHJuZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zMDYtXHRcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZyxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjMwNzpcdFx0XHRcdFx0XHQgICBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMwOC1cdFx0XHRcdGVyciA9IGV4cGVjdF9wZm5fc2d0YWJsZShcdTAwMjZwdCwgKm5wYWdlcywgXHUwMDI2cHJuZyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYz0zMjU9c3RhdGljIGludCBpZ3Rfc2dfdHJpbSh2b2lkICppZ25vcmVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMzOS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjM0MDpcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zNDEtXHRcdFx0ZXJyID0gYWxsb2NfdGFibGUoXHUwMDI2cHQsIHByaW1lLCBtYXgsICpucGFnZXMsIFx1MDAyNnBybmcsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzU1LVx0XHRcdFx0XHRwcmFuZG9tX3NlZWRfc3RhdGUoXHUwMDI2cHJuZyxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjM1NjpcdFx0XHRcdFx0XHRcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzU3LVx0XHRcdFx0XHRlcnIgPSBleHBlY3RfcGZuX3NndGFibGUoXHUwMDI2cHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDA2CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaTkxNSBTZWxmdGVzdCBQYXJhbWV0ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmVgIGRlY2xhcmF0aW9uOiBgbW9ja19zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubW9jaywgaW50LCAwNDAwYC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2V0dGluZyB1cCBhbiBvcHRpb24gdG8gcnVuIHNlbGZ0ZXN0cyBmb3IgdGhlIGk5MTUgZHJpdmVyLiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCBsZXRzIHlvdSBydW4gdGhlc2UgdGVzdHMgdXNpbmcgJiMzNDttb2NrIGhhcmR3YXJlJiMzNDsuIFRoZSBwYXJhbWV0ZXIgaXRzZWxmLCBgaTkxNS5tb2NrX3NlbGZ0ZXN0c2AsIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGAwYCBkaXNhYmxlcyBpdCAod2hpY2ggaXMgdGhlIGRlZmF1bHQsIG1ha2VzIHNlbnNlKSwgYDFgIHJ1bnMgdGhlIHRlc3RzIGJlZm9yZSBsb2FkaW5nIHRoZSBkcml2ZXIsIGFuZCBgLTFgIHJ1bnMgdGhlIHRlc3RzIGFuZCB0aGVuIGV4aXRzLiAKClRoaXMgaXMgY2xlYXJseSBhbiBpbnRlcm5hbCBmcmFtZXdvcmssIGZvciB1bml0IHRlc3RzIHNwZWNpZmljYWxseS4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBmb3IgaTkxNSwgYmVjYXVzZSBpdCYjMzk7cyBpbiB0aGUgYGk5MTVfc2VsZnRlc3RgIG5hbWVzcGFjZS4gQnV0IEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBleGFjdCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGNyZWF0ZXMgYSBkZXZpY2Ugbm9kZSBvciBzb21lIGNoYXJhY3RlciBkZXZpY2UsIG9yIG9wZW5zIGl0c2VsZiB1cCB0byB1c2VybGFuZCBpbnRlcmFjdGlvbiB3aXRoIGFueSBmdXp6ZXJzLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCB0cnVseSB3b3JrcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBgaTkxNV9tb2NrX3NlbGZ0ZXN0cygpYCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzAwOlx0fVxuIDMwMTpcdFxuIDMwMjpcdCNkZWZpbmUgcnVuX3NlbGZ0ZXN0cyh4LCBkYXRhKSBcXFxuIDMwMzpcdFx0X19ydW5fc2VsZnRlc3RzKCN4LCB4IyNfc2VsZnRlc3RzLCBBUlJBWV9TSVpFKHgjI19zZWxmdGVzdHMpLCBkYXRhKVxuIDMwNDpcdFxuIDMwNTpcdGludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXG4gMzA2Olx0e1xuIDMwNzpcdFx0aW50IGVycjtcbiAzMDg6XHRcbiAzMDk6XHRcdGlmICghaTkxNV9zZWxmdGVzdC5tb2NrKVxuIDMxMDpcdFx0XHRyZXR1cm4gMDtcbiAzMTE6XHRcbiAzMTI6XHRcdGVyciA9IHJ1bl9zZWxmdGVzdHMobW9jaywgTlVMTCk7XG4gMzEzOlx0XHRpZiAoZXJyKSB7XG4gMzE0Olx0XHRcdGk5MTVfc2VsZnRlc3QubW9jayA9IGVycjtcbiAzMTU6XHRcdFx0cmV0dXJuIDE7XG4gMzE2Olx0XHR9XG4gMzE3Olx0XG4gMzE4Olx0XHRpZiAoaTkxNV9zZWxmdGVzdC5tb2NrIFx1MDAzYyAwKSB7XG4gMzE5Olx0XHRcdGk5MTVfc2VsZnRlc3QubW9jayA9IC1FTk9UVFk7XG4gMzIwOlx0XHRcdHJldHVybiAxO1xuIDMyMTpcdFx0fVxuIDMyMjpcdFxuIDMyMzpcdFx0cmV0dXJuIDA7XG4gMzI0Olx0fVxuIDMyNTpcdFxuIDMyNjpcdGludCBpOTE1X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIDMyNzpcdHtcbiAzMjg6XHRcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xuIDMyOTpcdFx0c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gXHUwMDI2aTkxNS1cdTAwM2V1bmNvcmU7XG4gMzMwOlx0XHRpbnQgZXJyO1xuIDMzMTpcdFx0dTMyIHBnX2VuYWJsZTtcbiAzMzI6XHRcdGludGVsX3dha2VyZWZfdCB3YWtlcmVmO1xuIDMzMzpcdFxuIDMzNDpcdFx0aWYgKCFpOTE1X3NlbGZ0ZXN0LmxpdmUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDExOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTgzCgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDExODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgbW9ja19zZWxmdGVzdHNgIGFyZSBpbnRlcm5hbCBhbmQgZG9uJiMzOTt0IGNyZWF0ZSBhIERSTSBkZXZpY2UsIHdoaWNoIGlzbiYjMzk7dCByZWxldmFudCBoZXJlIGFueXdheS4gYGk5MTVfcGNpX3Byb2JlYCBuZWVkcyBJbnRlbCBQQ0kgaGFyZHdhcmUuICBUaGUga2V5IGlzIHRoZSBjcml0ZXJpYSBmb3IgKm5vdCogZnV6emluZywgYXMgb3V0bGluZWQgaW4gc2VjdGlvbiAyIG9mIHRoZSBzeXN0ZW0gcHJvbXB0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmRpdGlvbiByZWxhdGVkIHRvIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4KClRoZSBwcmltYXJ5IGNoYW5nZSBpcyBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYGRybS9pOTE1YCBmYWxscyB1bmRlciB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBhbWRncHVgIHdoaWNoIGFsc28gbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUgdG8gdGVzdCBpbiBhIG1lYW5pbmdmdWwgd2F5LgoKWWVzLCBgZHJtL2k5MTVgICppcyogSW50ZWwmIzM5O3MgR1BVIGRyaXZlciwgc3VwcG9ydGluZyBJbnRlbCBpbnRlZ3JhdGVkIGFuZCBkaXNjcmV0ZSBHUFVzLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYywgcmVxdWlyaW5nIEludGVsIGhhcmR3YXJlLCBhbmQgY3J1Y2lhbGx5LCBpdCB3b24mIzM5O3QgcnVuIGNvcnJlY3RseSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMuIEkgZG91YmxlLWNoZWNrZWQ7IHRoZSBjb2RlIGlzICplbnRpcmVseSogY29udGFpbmVkIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYC4gTm8gb3RoZXIgY2FsbGVycyBvdXRzaWRlIHRoZSBgZHJtL2k5MTVgIGRyaXZlci4KClNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIGlzIHdpdGhpbiBhIGRyaXZlciB0aGF0IG5lZWRzIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUsIGl0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBzZXQ6CgoqICAgYFdvcnRoRnV6emluZyA9IGZhbHNlYAoqICAgYEZvY3VzU3ltYm9scyA9IFtdYAoqICAgYEVuYWJsZUNvbmZpZ3MgPSBbXWAKClRoZSByZWFzb25pbmcgaXMgY29uY2lzZSBhbmQgY2xlYXI6IHRoZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBJbnRlbCBpOTE1IERSTSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIEludGVsIEdQVSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBjb2RlIHBhdGggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiBBbGwgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX3NobWVtX3dyaXRlYmFja2AgaW4gYGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgSW50ZWwgaTkxNSBHUFUgZHJpdmVyLiBpOTE1IGlzIGEgdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGdyYXBoaWNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAoR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAxMTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTQ6NTEuODc4NDQxMzk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDQ2NzcxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1MS44Nzg0NDY0OTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzk2Njk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEzODkzMjJhYjk3OWQ4YjhiNzc2NTA0OGQ0ZmNkNDg4OWI0MjdkYzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgMTQgMTE6NTQ6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xcbkBAIC0zMjIsMTAgKzMyMiwxNiBAQCB2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcXG4gXFx0ICogYXMgbm9ybWFsLlxcbiBcXHQgKi9cXG4gXFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFxcdTAwMjZ3YmMsIGZvbGlvLCBcXHUwMDI2ZXJyb3IpKSkge1xcbi1cXHRcXHRpZiAoZm9saW9fbWFwcGVkKGZvbGlvKSlcXG4rXFx0XFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcXG4gXFx0XFx0XFx0Zm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKFxcdTAwMjZ3YmMsIGZvbGlvKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcXG4rXFx0XFx0XFx0aWYgKGVycm9yID09IEFPUF9XUklURVBBR0VfQUNUSVZBVEUpIHtcXG4rXFx0XFx0XFx0XFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcXG4rXFx0XFx0XFx0XFx0ZXJyb3IgPSAwO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1Mi4zMzcxNjU3ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4NTU4ODAzMjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEzODkzMjJhYjk3OWQ4YjhiNzc2NTA0OGQ0ZmNkNDg4OWI0MjdkYzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAxMTo1NDo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbmluZGV4IGVmOTQ0MDE2NjI5NTUuLmU3YjE4ZjdmOTY0NGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcbkBAIC0zMjIsMTAgKzMyMiwxNiBAQCB2b2lkIF9fc2htZW1fd3JpdGViYWNrKHNpemVfdCBzaXplLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZylcbiBcdCAqIGFzIG5vcm1hbC5cbiBcdCAqL1xuIFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFx1MDAyNndiYywgZm9saW8sIFx1MDAyNmVycm9yKSkpIHtcbi1cdFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpXG4rXHRcdGlmIChmb2xpb19tYXBwZWQoZm9saW8pKSB7XG4gXHRcdFx0Zm9saW9fcmVkaXJ0eV9mb3Jfd3JpdGVwYWdlKFx1MDAyNndiYywgZm9saW8pO1xuLVx0XHRlbHNlXG4rXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRlcnJvciA9IHNobWVtX3dyaXRlX2ZvbGlvKGZvbGlvKTtcbitcdFx0XHRpZiAoZXJyb3IgPT0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURSkge1xuK1x0XHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0XHRcdGVycm9yID0gMDtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1NDo1Mi4zMzcxNjc4MjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODI4MTE0MTAwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgQ29udGV4dCBmb3IgQWNjZXNzaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLiBUaGUgY29kZSBpdHNlbGYgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIGFkanVzdGluZyB0aGUgaGFuZGxpbmcgb2YgZm9saW8gd3JpdGViYWNrLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGxvY2tpbmcgYW5kIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBhIGZvbGlvIGlzbid0IG1hcHBlZC4gQnV0LCBhcyBhbiBleHBlcnQgaW4gdGhpcywgSSBrbm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzICp3aGVyZSogdGhpcyBjb2RlIGV4ZWN1dGVzIGFuZCB3aGV0aGVyIGl0J3MgcmVsZXZhbnQgaW4gb3VyIHRlc3RpbmcgY29udGV4dC5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYGk5MTVgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gSSBrbm93IHRoZXNlIGVudmlyb25tZW50cyBhcmVuJ3QgcGVyZmVjdCBlbXVsYXRvcnMgZm9yICpldmVyeSogcGllY2Ugb2YgaGFyZHdhcmUsIGVzcGVjaWFsbHkgc3BlY2lhbGl6ZWQgZGV2aWNlcy5cblxuVGhlIHByb21wdCwgc3BlY2lmaWNhbGx5IHNlY3Rpb24gMiwgaGlnaGxpZ2h0cyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBhbmQgaXQgZXhwbGljaXRseSBsaXN0cyBzZXZlcmFsIGV4YW1wbGVzLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBpbXBsaWNhdGlvbjogaXMgYGk5MTVgIG9uZSBvZiB0aG9zZSB1bnJlYWNoYWJsZSBjb21wb25lbnRzPyBRRU1VLCBpbiBnZW5lcmFsLCBkb2Vzbid0IGVtdWxhdGUgaGFyZHdhcmUgbGlrZSBJbnRlbCBpbnRlZ3JhdGVkIGdyYXBoaWNzLiBJdCBvZmZlcnMgKm90aGVyKiB2aXJ0dWFsaXplZCBncmFwaGljcyBkZXZpY2VzIGxpa2UgYm9jaHMtZHJtLCB2aXJ0aW8tZ3B1LCBhbmQgc28gb24uIEJ1dCwgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGZ1bGwgYGk5MTVgIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IGZvciByZWNlbnQgZ2VuZXJhdGlvbnMsIGlzIGEgbm8tZ28gaW4gc3RhbmRhcmQgUUVNVS4gSXQncyBlaXRoZXIgaGFyZHdhcmUgcGFzc3Rocm91Z2ggb3IsIG1heWJlLCBHVlQtZywgd2hpY2ggYWxzbyBpbXBsaWVzIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBvbiB0aGUgaG9zdC5cblxuVGhlcmVmb3JlLCBpcyBgaTkxNWAgbGlrZSBgYW1kZ3B1YCBvciBgbm91dmVhdWAsIHJlcXVpcmluZyBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkIGFuZCB0aHVzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VP1xuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgaTkxNWAgZXZlbiAqaGFzKiBhIG1vY2sgb3IgZHVtbXkgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGNvbnNpZGVyZWQgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGVcIiBpbiB0aGlzIHNjZW5hcmlvLCBvciBpZiBzeXprYWxsZXIgdGFyZ2V0cyBpdC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgR2l0IGxvZ3MgdG8gZ2V0IGEgc29saWQgYW5zd2VyLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJ3MgKmFueSogdmlhYmxlIHBhdGggdG8gZnV6emluZyB0aGlzIGNvZGUgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzIG9yIHdpdGggc29tZSBzaW11bGF0ZWQvZW11bGF0ZWQgbW9kZS4gSSB3aWxsIGFsc28gcmUtcmVhZCB0aGUgcHJvbXB0IGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTc6NTUuMTQ4NTgwNzMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTgyMTU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFJNX0k5MTVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc9Nz1DT05GSUdfRFJNPXlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS8ua3VuaXRjb25maWc6ODpDT05GSUdfRFJNX0k5MTU9eVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1Ly5rdW5pdGNvbmZpZzo5OkNPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUPXlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAkKGNhbGwgY2Mtb3B0aW9uLCAtV2Zvcm1hdC10cnVuY2F0aW9uKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtOS0jIEVuYWJsZSAtV2Vycm9yIGluIENJIGFuZCBkZXZlbG9wbWVudFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjEwOnN1YmRpci1jY2ZsYWdzLSQoQ09ORklHX0RSTV9JOTE1X1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTExLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9MzM3PWk5MTUteSArPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6Mzg2Omk5MTUtJChDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtMzg3LVxcdGRpc3BsYXkvaW50ZWxfZHBfdHVubmVsLm9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zODgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6Mzg5Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSArPSBkaXNwbGF5L3Rlc3RzL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTM5MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTozOTE6aTkxNS0kKENPTkZJR19EUk1fSTkxNV9HVlQpICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS0zOTItXFx0ZGlzcGxheS9pbnRlbF9ndnRfYXBpLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTM5OD1pOTE1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDAyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQwMzppOTE1LSQoQ09ORklHX0RSTV9JOTE1X1BYUCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQwNC1cXHRweHAvaW50ZWxfcHhwX2NtZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMS0jIFBvc3QtbW9ydGVtIGRlYnVnIGFuZCBHUFUgaGFuZyBzdGF0ZSBjYXB0dXJlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDEyOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxMy1cXHRpOTE1X2dwdV9lcnJvci5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDE0Omk5MTUtJChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MTUtXFx0Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDI5PWk5MTUteSArPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDMyOmk5MTUtJChDT05GSUdfRFJNX0k5MTVfR1ZUKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDMzLVxcdGludGVsX2d2dC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlPTQzNT1pbmNsdWRlICQoc3JjKS9ndnQvTWFrZWZpbGVcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDM3Om9iai0kKENPTkZJR19EUk1fSTkxNSkgKz0gaTkxNS5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDM4Om9iai0kKENPTkZJR19EUk1fSTkxNV9HVlRfS1ZNR1QpICs9IGt2bWd0Lm9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00MzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZS00NDEtI1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQ0MjojIEVuYWJsZSBsb2NhbGx5IGZvciBDT05GSUdfRFJNX0k5MTVfV0VSUk9SPXkuIFNlZSBhbHNvIHNjcmlwdHMvTWFrZWZpbGUuYnVpbGRcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZTo0NDM6aWZkZWYgQ09ORklHX0RSTV9JOTE1X1dFUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQ0NC0gICAgY21kX2NoZWNrZG9jID0gUFlUSE9ORE9OVFdSSVRFQllURUNPREU9MSAkKFBZVEhPTjMpICQoS0VSTkVMRE9DKSAtbm9uZSAtV2Vycm9yICRcXHUwMDNjXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZT00NTA9bm8taGVhZGVyLXRlc3QgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDUyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlOjQ1MzphbHdheXMtJChDT05GSUdfRFJNX0k5MTVfV0VSUk9SKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUtNDU0LVxcdCQocGF0c3Vic3QgJS5oLCUuaGRydGVzdCwgJChmaWx0ZXItb3V0ICQobm8taGVhZGVyLXRlc3QpLCBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYz01ODc9dm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTY1Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYzo2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02NTgtc3RhdGljIHZvaWQgZGJnX3ZibGFua19ldmFkZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywga3RpbWVfdCBlbmQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jPTQxMj1zdGF0aWMgdm9pZCBpbnRlbF9zY2FsZXJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYy00NDAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYzo0NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1ZCTEFOS19FVkFERSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jLTQ0Mi1zdGF0aWMgdm9pZCBjcnRjX3VwZGF0ZXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz01MjY9c3RhdGljIHZvaWQgX19hc3luY19wdXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy01MzQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6NTM1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTUzNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jPTYxOT12ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTYyMi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzo2MjM6I2VuZGlmIC8qIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtNjI0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9OTk2PWludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29ya19zeW5jKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTAwNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDA4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwMDktLyoqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDQ5PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNTctXFx0d2YgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkaXNwbGF5LCBkb21haW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jOjEwNTg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA1OS1cXHRwb3dlcl9kb21haW5fc2V0LVxcdTAwM2V3YWtlcmVmc1tkb21haW5dID0gd2Y7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYz0xMDY1PWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2luX3NldF9pZl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMtMTA3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYzoxMDc3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwNzgtXFx0cG93ZXJfZG9tYWluX3NldC1cXHUwMDNld2FrZXJlZnNbZG9tYWluXSA9IHdmO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MTA4Nj1pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9tYXNrX2luX3NldChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTEwOTctXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MTA5ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0xMDk5LVxcdFxcdHdmID0gZmV0Y2hfYW5kX3plcm8oXFx1MDAyNnBvd2VyX2RvbWFpbl9zZXQtXFx1MDAzZXdha2VyZWZzW2RvbWFpbl0pO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM9MjMyNT1zdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jLTIzMzgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmM6MjMzOTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYy0yMzQwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmg9MTk1PXN0cnVjdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zZXQge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oLTE5Ni1cXHRzdHJ1Y3QgaW50ZWxfcG93ZXJfZG9tYWluX21hc2sgbWFzaztcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaDoxOTc6I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgtMTk4LVxcdHN0cnVjdCByZWZfdHJhY2tlciAqd2FrZXJlZnNbUE9XRVJfRE9NQUlOX05VTV07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaD0yNDA9dm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoc3RydWN0IGludGVsX2Rpc3BsYXkgKmRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oOjI0MTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaC0yNDItdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmM9NTE4PWljbF9jb21ib19waHlfYXV4X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmM6NTM4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsLmMtNTM5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmg9MTQ5Nj1zdHJ1Y3QgaW50ZWxfY3J0YyB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaC0xNTYyLVxcdFxcdGludCBzY2FubGluZV9zdGFydDtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaDoxNTYzOiNpZmRlZiBDT05GSUdfRFJNX0k5MTVfREVCVUdfVkJMQU5LX0VWQURFXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgtMTU2NC1cXHRcXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaD0yMT1zdHJ1Y3QgaW50ZWxfbGlua19id19saW1pdHM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0yMi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oOjIzOiNpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKEk5MTUpKSB8fCBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0yNC1cXHQoSVNfRU5BQkxFRChDT05GSUdfRFJNX1hFX0RQX1RVTk5FTCkgXFx1MDAyNlxcdTAwMjYgIWRlZmluZWQoSTkxNSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX3R1bm5lbC5oPTE1NT1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZHBfdHVubmVsX21ncl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9kaXNwbGF5ICpkaXNwbGF5KSB7fVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfdHVubmVsLmgtMTU2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfdHVubmVsLmg6MTU3OiNlbmRpZiAvKiBDT05GSUdfRFJNX0k5MTVfRFBfVFVOTkVMIHx8IENPTkZJR19EUk1fWEVfRFBfVFVOTkVMICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF90dW5uZWwuaC0xNTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9NDc9c3RydWN0IGludGVsX3RjX3BvcnQge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTUzLVxcdHN0cnVjdCByZWZfdHJhY2tlciAqbG9ja193YWtlcmVmO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzo1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtNTUtXFx0ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBsb2NrX3Bvd2VyX2RvbWFpbjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYz0xOTU9dGNfY29sZF9ibG9jayhzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjAwLVxcdHdha2VyZWYgPSBfX3RjX2NvbGRfYmxvY2sodGMsIFxcdTAwMjZkb21haW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYzoyMDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jLTIwMi1cXHR0Yy1cXHUwMDNlbG9ja19wb3dlcl9kb21haW4gPSBkb21haW47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmM9MjE3PXRjX2NvbGRfdW5ibG9jayhzdHJ1Y3QgaW50ZWxfdGNfcG9ydCAqdGMsIHN0cnVjdCByZWZfdHJhY2tlciAqd2FrZXJlZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYy0yMjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jOjIyMjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMtMjIzLVxcdGRybV9XQVJOX09OKGRpc3BsYXktXFx1MDAzZWRybSwgdGMtXFx1MDAzZWxvY2tfcG93ZXJfZG9tYWluICE9IGRvbWFpbik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Rlc3RzL01ha2VmaWxlPTM9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Rlc3RzL01ha2VmaWxlLTQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fSTkxNV9LVU5JVF9URVNUKSArPSBpOTE1X2Rpc3BsYXlfdGVzdC5vXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS90ZXN0cy9NYWtlZmlsZS02LWk5MTVfZGlzcGxheV90ZXN0LXkgPSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTk3NT1zdGF0aWMgaW50IGludGVsX2NvbnRleHRfc2V0X2dlbShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTk5OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjk5OTpcXHRpZiAoQ09ORklHX0RSTV9JOTE1X1JFUVVFU1RfVElNRU9VVCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMTAwMC1cXHQgICAgY3R4LVxcdTAwM2VpOTE1LVxcdTAwM2VwYXJhbXMucmVxdWVzdF90aW1lb3V0X21zKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTIxMTQ9c3RhdGljIGludCBzZXRfY29udGV4dF9pbWFnZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYy0yMTIzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM6MjEyNDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTIxMjUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jPTI2NzY9aTkxNV9nZW1fZW5naW5lc19pdGVyX25leHQoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciAqaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyNjk0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jLTI2OTUtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmM9MjcwND1pbnQgX19pbml0IGk5MTVfZ2VtX2NvbnRleHRfbW9kdWxlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcwOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jOjI3MTA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxMS1cXHRcXHRwcl9ub3RpY2UoXFxcIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxNi1cXHRcXHRlbHNlXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYzoyNzE3OlxcdFxcdFxcdHByX25vdGljZShcXFwiKiogQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJIGJ1aWxkcyBhcmUgaW50ZW5kZWQgKipcXFxcblxcXCIpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMtMjcxOC1cXHRcXHRwcl9ub3RpY2UoXFxcIioqIGZvciBzcGVjaWZpYyB1c2Vyc3BhY2UgZ3JhcGhpY3Mgc3RhY2sgZGV2ZWxvcGVycyBvbmx5ISAgICoqXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYz0yODE9c3RydWN0IGRybV9nZW1fb2JqZWN0ICppOTE1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYy0zNDMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jOjM0NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jLTM0NS0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL21vY2tfZG1hYnVmLmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jPTQ5PWVudW0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy03OC0vKiBDYXRjaCBlbWlzc2lvbiBvZiB1bmV4cGVjdGVkIGVycm9ycyBmb3IgQ0khICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzo3OTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtODAtI3VuZGVmIEVJTlZBTFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYz0yNDU9c3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTMxNC1cXHR1bnNpZ25lZCBsb25nIG51bV9mZW5jZXM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzozMTU6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1IpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYy0zMTYtXFx0c3RydWN0IGk5MTVfY2FwdHVyZV9saXN0ICpjYXB0dXJlX2xpc3RzW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmM9MTk3Mz1lYl9maW5kX2ZpcnN0X3JlcXVlc3RfYWRkZWQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jLTE5ODUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYzoxOTg2OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMtMTk4Ny1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM9MzM4PXN0YXRpYyB2bV9mYXVsdF90IHZtX2ZhdWx0X2d0dChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDc3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6NDc4OlxcdGlmIChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5EKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDc5LVxcdFxcdGludGVsX3dha2VyZWZfYXV0byhcXHUwMDI2aTkxNS1cXHUwMDNlcnVudGltZV9wbS51c2VyZmF1bHRfd2FrZXJlZixcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjQ4MDpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMtNDgxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYz0xMTE2PWludCBpOTE1X2dlbV9mYl9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTUzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6MTE1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMTU1LSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jPTk2MD1ib29sIGk5MTVfZ2VtX29iamVjdF9oYXNfdW5rbm93bl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jLTk3MC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmM6OTcxOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMtOTcyLSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvaHVnZV9nZW1fb2JqZWN0LmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jPTIyNz1pbnQgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBhbGlnbilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlzLmMtMjYzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlzLmM6MjY0OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jLTI2NS0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYz01OTc9c3RhdGljIHZvaWQgZGJnX3BvaXNvbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jLTYwMC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jOjYwMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYy02MDItXFx0aWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoXFx1MDAyNmdndHQtXFx1MDAzZWVycm9yX2NhcHR1cmUpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jPTEwNDI9c3RhdGljIHZtX2ZhdWx0X3Qgdm1fZmF1bHRfdHRtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jLTExNDAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjExNDE6XFx0aWYgKHdha2VyZWYgXFx1MDAyNlxcdTAwMjYgQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCAhPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy0xMTQyLVxcdFxcdGludGVsX3dha2VyZWZfYXV0byhcXHUwMDI2dG9faTkxNShvYmotXFx1MDAzZWJhc2UuZGV2KS1cXHUwMDNlcnVudGltZV9wbS51c2VyZmF1bHRfd2FrZXJlZixcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM6MTE0MzpcXHRcXHRcXHRcXHQgICBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy0xMTQ0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmMtMzItICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmM6MzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fbW92ZS5jLTM0LXN0YXRpYyBib29sIGZhaWxfZ3B1X21pZ3JhdGlvbjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYz02Mzg9Ym9vbCBpbnRlbF9jb250ZXh0X3Jldm9rZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMtNjQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYzo2NDg6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYy02NDktI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2NvbnRleHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaD0zNzM9aW50ZWxfY29udGV4dF9jbGVhcl9ub3ByZWVtcHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oLTM3Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0Lmg6Mzc4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9SRVBMQVlfR1BVX0hBTkdTX0FQSSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgtMzc5LXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9jb250ZXh0X2hhc19vd25fc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oPTc3PXN0cnVjdCBpbnRlbF9jb250ZXh0IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaC0zMDgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oOjMwOTojaWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oLTMxMC1cXHQvKipcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oPTMwMT1pbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRfcmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oLTMwMi17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MzAzOlxcdGlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMDQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg9MzM4PWludGVsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0zMzkte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oOjM0MDpcXHRpZiAoIUNPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgtMzQxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jPTQ0OT1zdGF0aWMgaW50IGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxMC1cXHRlbmdpbmUtXFx1MDAzZXByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcyA9XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTExOlxcdFxcdENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUw7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTEyLVxcdGVuZ2luZS1cXHUwMDNlcHJvcHMubWF4X2J1c3l3YWl0X2R1cmF0aW9uX25zID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTM6XFx0XFx0Q09ORklHX0RSTV9JOTE1X01BWF9SRVFVRVNUX0JVU1lXQUlUO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUxNC1cXHRlbmdpbmUtXFx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmM6NTE1OlxcdFxcdENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVQ7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtNTE2LVxcdGVuZ2luZS1cXHUwMDNlcHJvcHMuc3RvcF90aW1lb3V0X21zID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzo1MTc6XFx0XFx0Q09ORklHX0RSTV9JOTE1X1NUT1BfVElNRU9VVDtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MTgtXFx0ZW5naW5lLVxcdTAwM2Vwcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUxOTpcXHRcXHRDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNFX0RVUkFUSU9OO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jLTUyNy1cXHRpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDEyIFxcdTAwMjZcXHUwMDI2IChlbmdpbmUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSTkxNV9FTkdJTkVfSEFTX1JDU19SRUdfU1RBVEUpKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jOjUyODpcXHRcXHRlbmdpbmUtXFx1MDAzZXByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IENPTkZJR19EUk1fSTkxNV9QUkVFTVBUX1RJTUVPVVRfQ09NUFVURTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy01MjktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYz0yNTQxPXZvaWQgeGVocF9lbmFibGVfY2NzX2VuZ2luZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMtMjU1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYzoyNTU4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYy0yNTU5LSNpbmNsdWRlIFxcXCJtb2NrX2VuZ2luZS5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTEyMD1yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmMtMTIxLXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmM6MTIyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0xMjMtXFx0XFx0c2hvd19oZWFydGJlYXQocnEsIGVuZ2luZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmM9MjQ1PXZvaWQgaW50ZWxfZW5naW5lX3VucGFya19oZWFydGJlYXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0yNDYte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYzoyNDc6XFx0aWYgKCFDT05GSUdfRFJNX0k5MTVfSEVBUlRCRUFUX0lOVEVSVkFMKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy0yNDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jPTM5Mz1pbnQgaW50ZWxfZW5naW5lX2ZsdXNoX2JhcnJpZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYy00MjYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jOjQyNzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jLTQyOC0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmM9MzU9c3RhdGljIHZvaWQgZGJnX3BvaXNvbl9jZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMtMzYte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jOjM3OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYy0zOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYz0zMTE9dm9pZCBpbnRlbF9lbmdpbmVfcmVzZXRfcGlubmVkX2NvbnRleHRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYzozMjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jLTMyNy0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX3BtLmNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaD02ODM9aW50ZWxfZW5naW5lX2hhc190aW1lc2xpY2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC02ODQte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oOjY4NTpcXHRpZiAoIUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT04pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgtNjg2LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmM9MjA2PXZvaWQgaW50ZWxfZW5naW5lc19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jLTI2MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jOjI2MjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYzoyNjM6XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jLTI2NC1cXHRcXHRzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQxNT1leGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nIHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDIwLVxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDIxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfR1ZUKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQyMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTQ3Mj1fX2V4ZWNsaXN0c19zY2hlZHVsZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg1LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6NDg2OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtNDg3LVxcdFxcdGxyY19jaGVja19yZWdzKGNlLCBlbmdpbmUsIFxcXCJiZWZvcmVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NTg2PXN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgcnEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTYwMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjYwMTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTYwMi1cXHRcXHRscmNfY2hlY2tfcmVncyhjZSwgZW5naW5lLCBcXFwiYWZ0ZXJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9OTQxPXN0YXRpYyBib29sIGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTk0Mi17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo5NDM6XFx0cmV0dXJuIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9HVlQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYy05NDQtXFx0XFx0aW50ZWxfY29udGV4dF9mb3JjZV9zaW5nbGVfc3VibWlzc2lvbihjZSkpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yMzI1PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjMyOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jOjIzMzA6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTIzMzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yNDEwPXN0YXRpYyBib29sIHByZWVtcHRfdGltZW91dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpjb25zdCBlbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI0MTMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyNDE0OlxcdGlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI0MTUtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYz0yODU0PXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTI4NjYtXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzoyODY3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMjg2OC1cXHRcXHRtZW1zZXQoZW5naW5lLVxcdTAwM2VzdGF0dXNfcGFnZS5hZGRyLCBQT0lTT05fSU5VU0UsIFBBR0VfU0laRSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jPTM0Mjc9bG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMtMzQ3Mi1cXHRcXHRcXHRlbmdpbmUtXFx1MDAzZWZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM6MzQ3MzpcXHRcXHRcXHRpZiAoQ09ORklHX0RSTV9JOTE1X1RJTUVTTElDRV9EVVJBVElPTilcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTM0NzQtXFx0XFx0XFx0XFx0ZW5naW5lLVxcdTAwM2VmbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElNRVNMSUNFUztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmM9NDE1OT12b2lkIGludGVsX2V4ZWNsaXN0c19kdW1wX2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYzo0MTc1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jLTQxNzYtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2V4ZWNsaXN0cy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYz02MzE9c3RhdGljIGludCBfX2VuZ2luZXNfdmVyaWZ5X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jLTYzNi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jOjYzNzpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYy02MzgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jPTE3Mj12b2lkIGludGVsX2d0X2luaXRfY2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jLTE4OS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jOjE5MDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMtMTkxLXZvaWQgaW50ZWxfZ3RfY2hlY2tfY2xvY2tfZnJlcXVlbmN5KGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oPTEzPXZvaWQgaW50ZWxfZ3RfaW5pdF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX2d0ICpndCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuaC0xNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oOjE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuaC0xNi12b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM9NDE5PWt0aW1lX3QgaW50ZWxfZ3RfZ2V0X2F3YWtlX3RpbWUoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMtNDMxLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmM6NDMyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jLTQzMy0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZ3RfcG0uY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTM0Nj1zdGF0aWMgdm9pZCBwb2lzb25fc2NyYXRjaF9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpzY3JhdGNoKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtMzUxLVxcdHZhbCA9IDA7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmM6MzUyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jLTM1My1cXHRcXHR2YWwgPSBQT0lTT05fRlJFRTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jPTcxNj1fX3ZtX2NyZWF0ZV9zY3JhdGNoX2Zvcl9yZWFkX3Bpbm5lZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdW5zaWduZWQgbG9uZyBzaXplKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtNzM0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jOjczNTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMtNzM2LSNpbmNsdWRlIFxcXCJzZWxmdGVzdHMvbW9ja19ndHQuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTM2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjM3OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9UUkFDRV9HVFQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgtMzgtI2RlZmluZSBHVFRfVFJBQ0UoLi4uKSB0cmFjZV9wcmludGsoX19WQV9BUkdTX18pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYz0xNTc9dm9pZCBpbnRlbF9sbGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfbGxjICpsbGMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYy0xNjEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmM6MTYyOiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVClcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYy0xNjMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2xsYy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9OTY3PXNldF9yZWR6b25lKHZvaWQgKnZhZGRyLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMtOTY4LXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYzo5Njk6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz05Nzg9Y2hlY2tfcmVkem9uZShjb25zdCB2b2lkICp2YWRkciwgY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTk3OS17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6OTgwOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy05ODEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTA3ND1fX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTEwODEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM6MTA4MjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xMDgzLVxcdFxcdGNvbnRleHRfc2l6ZSArPSBJOTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYz0xOTMwPXN0YXRpYyB2b2lkIHN0X3J1bnRpbWVfdW5kZXJmbG93KHN0cnVjdCBpbnRlbF9jb250ZXh0X3N0YXRzICpzdGF0cywgczMyIGR0KVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzEte1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjE5MzI6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5MzMtXFx0c3RhdHMtXFx1MDAzZXJ1bnRpbWUubnVtX3VuZGVyZmxvdysrO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmM9MTk1MD12b2lkIGxyY191cGRhdGVfcnVudGltZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYy0xOTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jOjE5NzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jLTE5NzQtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X2xyYy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jPTExNTE9dm9pZCBpbnRlbF9taWdyYXRlX2Zpbmkoc3RydWN0IGludGVsX21pZ3JhdGUgKm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmMtMTE2MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmM6MTE2MjojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jLTExNjMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0X21pZ3JhdGUuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYz02NjY9dm9pZCBpbnRlbF9tb2NzX2luaXQoc3RydWN0IGludGVsX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYy02ODYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jOjY4NzojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jLTY4OC0jaW5jbHVkZSBcXFwic2VsZnRlc3RfbW9jcy5jXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmM9ODU3PXZvaWQgaW50ZWxfcmM2X3ByaW50X3Jlc2lkZW5jeShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKnRpdGxlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODY5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5jOjg3MDojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMtODcxLSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9yYzYuY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM9MTcxNz1ib29sIGludGVsX2VuZ2luZV9yZXNldF9uZWVkc193YV8yMjAxMTgwMjAzNyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNzMwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmM6MTczMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYy0xNzMyLSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9yZXNldC5jXFxcIlxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU3OjU1LjYwNDQwNzI5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ0NTMzMTU2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9tcHQncyBIYXJkd2FyZSBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIExldCdzIHJlYWxseSBkaXNzZWN0IHRoaXMgcHJvbXB0LiBJdCdzIGhpZ2hsaWdodGluZyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBzcGVjaWZpY2FsbHkgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzLiBUaGUgZXhhbXBsZXMgZ2l2ZW4g4oCTIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1IOKAkyBhbGwgaGF2ZSB0aGlzIGNhdmVhdDogdGhleSAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBhbmQgY3JpdGljYWxseSwgdGhlc2UgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbk5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBpOTE1LiBJcyAqaXQqIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnM/IERvZXMgaTkxNSBkZW1hbmQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBjb3VsZCBpdCBwb3RlbnRpYWxseSBiZSBlbXVsYXRlZCB3aXRoaW4gdGhlIFFFTVUgZW52aXJvbm1lbnQ/XG5cblRoZSBjb3JlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogRG9lcyBRRU1VLCBpbiBpdHMgc3RhbmRhcmQgY29uZmlndXJhdGlvbiwgb2ZmZXIgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGZvciBJbnRlbCdzIGludGVncmF0ZWQgR1BVcywgc3BlY2lmaWNhbGx5IHRoZSBpOTE1PyBUaGF0J3MgYSByZXNvdW5kaW5nIFwibm9cIiBiYXNlZCBvbiBteSBleHBlcmllbmNlLiBRRU1VIGhhc24ndCBoaXN0b3JpY2FsbHkgaW5jbHVkZWQgYW4gSW50ZWwgaW50ZWdyYXRlZCBHUFUgZW11bGF0b3IgZm9yIGk5MTUuXG5cblNvLCB0aGUgY3JpdGljYWwgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiBpOTE1IGNhbiBldmVuIGJlIHByb2JlZCBvciBpbml0aWFsaXplZCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIOKAkyBwb3RlbnRpYWxseSBkaXZpbmcgaW50byBgaTkxNV9wY2kuY2Agb3IgZXhhbWluaW5nIGhvdyBpOTE1IGJpbmRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCByZXF1aXJlcyBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDI3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjAwLjA1NzcyNTM1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQ4ODY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyLippOTE1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmM9MTAzNz1pbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYy0xMDM4LXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jOjEwMzk6XFx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmk5MTVfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYy0xMDQwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6MDAuMTE3MjIyNjYxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjk0MjQyNzQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgaTkxNSBQQ0kgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIExldCdzIHN0YXJ0IHdpdGggYGk5MTVfcGNpX2RyaXZlcmAsIGFuZCBJJ2xsIGp1bXAgcmlnaHQgaW50byBgaTkxNV9wY2kuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUENJIGRyaXZlciBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBob3cgaXQncyBtYW5hZ2luZyB0aGUgZGV2aWNlIHByb2JlIGFuZCByZW1vdmFsLCBhbmQgdGhlIGFsbC1pbXBvcnRhbnQgcmVzb3VyY2UgYWxsb2NhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZDogdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGFjY2Vzc2VzLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgQkFSIG1hcHBpbmdzIG9yIGludGVycnVwdCBoYW5kbGluZyBzdHJhdGVnaWVzPyBJ4oCZbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBzZXR0aW5nIHVwIHRoZSBtbWlvIHJlZ2lvbnMgYW5kIGhhbmRsaW5nIHRoZSB2YXJpb3VzIHBsYXRmb3JtIHF1aXJrcyB0aGF0IGFsd2F5cyBzZWVtIHRvIHBvcCB1cC4gVGhpcyBmaWxlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEyMiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjAzLjA1OTY1ODM2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODE0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMjA6XFx0XFxuMTAyMTpcXHRzdGF0aWMgdm9pZCBpOTE1X3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4xMDIyOlxcdHtcXG4xMDIzOlxcdFxcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xcbjEwMjQ6XFx0XFxuMTAyNTpcXHRcXHRpOTE1X2RyaXZlcl9zaHV0ZG93bihpOTE1KTtcXG4xMDI2OlxcdH1cXG4xMDI3OlxcdFxcbjEwMjg6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGk5MTVfcGNpX2RyaXZlciA9IHtcXG4xMDI5OlxcdFxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuMTAzMDpcXHRcXHQuaWRfdGFibGUgPSBwY2lpZGxpc3QsXFxuMTAzMTpcXHRcXHQucHJvYmUgPSBpOTE1X3BjaV9wcm9iZSxcXG4xMDMyOlxcdFxcdC5yZW1vdmUgPSBpOTE1X3BjaV9yZW1vdmUsXFxuMTAzMzpcXHRcXHQuc2h1dGRvd24gPSBpOTE1X3BjaV9zaHV0ZG93bixcXG4xMDM0OlxcdFxcdC5kcml2ZXIucG0gPSBcXHUwMDI2aTkxNV9wbV9vcHMsXFxuMTAzNTpcXHR9O1xcbjEwMzY6XFx0XFxuMTAzNzpcXHRpbnQgaTkxNV9wY2lfcmVnaXN0ZXJfZHJpdmVyKHZvaWQpXFxuMTAzODpcXHR7XFxuMTAzOTpcXHRcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aTkxNV9wY2lfZHJpdmVyKTtcXG4xMDQwOlxcdH1cXG4xMDQxOlxcdFxcbjEwNDI6XFx0dm9pZCBpOTE1X3BjaV91bnJlZ2lzdGVyX2RyaXZlcih2b2lkKVxcbjEwNDM6XFx0e1xcbjEwNDQ6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZpOTE1X3BjaV9kcml2ZXIpO1xcbjEwNDU6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODowMy4wNTk3Njg2NzhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNDk2MzM2ODQ3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGk5MTUgUENJIElEIExpc3QqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBJbnRlbCBpOTE1IGdyYXBoaWNzIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gdGhlIFBDSSBidXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBpOTE1X3BjaS5jYCBzb3VyY2UgY29kZS4gVGhlIGBwY2lpZGxpc3RgIHZhcmlhYmxlIGlzIG15IGZpcnN0IHN0b3AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgbWF0Y2hpbmcgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIHRoZSBicmVhZCBhbmQgYnV0dGVyIG9mIGtub3dpbmcgd2hpY2ggZGV2aWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGggYW5kIGhvdyB0byBoYW5kbGUgdGhlbSBjb3JyZWN0bHkuIEkgd2FudCB0byBzZWUgaG93IHRoZXkncmUgZW51bWVyYXRlZCwgaG93IHRoZSBJRHMgYXJlIHN0cnVjdHVyZWQsIGFuZCB3aGF0IHZlbmRvci9kZXZpY2UgY29tYmluYXRpb25zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBsaXN0IG9mIFBDSSBkZXZpY2UgSURzIHRoYXQgdGhlIGRyaXZlciByZWNvZ25pemVzLCBhbG9uZyB3aXRoIGFzc29jaWF0ZWQgZmxhZ3Mgb3IgZGF0YSB0aGF0IHRlbGwgdGhlIGRyaXZlciBob3cgdG8gaW5pdGlhbGl6ZSBvciBpbnRlcmFjdCB3aXRoIGVhY2ggc3BlY2lmaWMgaGFyZHdhcmUgdmFyaWFudC4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgdGhhdCBzdWdnZXN0IHRoZSBhZGRpdGlvbiBvciBhbHRlcmF0aW9uIG9mIGRldmljZSBzdXBwb3J0IG92ZXIgdGltZSwgYW5kIGFueSB0cmVuZHMgaW4gaG93IGRpZmZlcmVudCByZXZpc2lvbnMgYXJlIGhhbmRsZWQuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgaW50ZXJlc3RpbmcgcXVpcmtzIGluIHRoZSBsaXN0IHRvbywgcG90ZW50aWFsbHkgc29tZSBlbnRyaWVzIHRoYXQgcmVxdWlyZWQgc3BlY2lmaWMgd29ya2Fyb3VuZHMgb3IgaGFuZGxpbmcgb2YgZWRnZSBjYXNlcy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc5MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6MTguMDIzMTQxNzg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk1MDpcXHRzdGF0aWMgYm9vbCBpbnRlbF9tbWlvX2Jhcl92YWxpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbnRlbF9pbmZvKVxcbiA5NTE6XFx0e1xcbiA5NTI6XFx0XFx0cmV0dXJuIGk5MTVfcGNpX3Jlc291cmNlX3ZhbGlkKHBkZXYsIGludGVsX21taW9fYmFyKGludGVsX2luZm8tXFx1MDAzZV9fcnVudGltZS5ncmFwaGljcy5pcC52ZXIpKTtcXG4gOTUzOlxcdH1cXG4gOTU0OlxcdFxcbiA5NTU6XFx0c3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gOTU2OlxcdHtcXG4gOTU3OlxcdFxcdHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW50ZWxfaW5mbyA9XFxuIDk1ODpcXHRcXHRcXHQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICopIGVudC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDk1OTpcXHRcXHRpbnQgZXJyO1xcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHRpZiAoIWludGVsX2luZm8pXFxuIDk2MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gOTYzOlxcdFxcbiA5NjQ6XFx0XFx0aWYgKGludGVsX2luZm8tXFx1MDAzZXJlcXVpcmVfZm9yY2VfcHJvYmUgXFx1MDAyNlxcdTAwMjYgIWlkX2ZvcmNlZChwZGV2LVxcdTAwM2VkZXZpY2UpKSB7XFxuIDk2NTpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiA5NjY6XFx0XFx0XFx0XFx0IFxcXCJZb3VyIGdyYXBoaWNzIGRldmljZSAlMDR4IGlzIG5vdCBwcm9wZXJseSBzdXBwb3J0ZWQgYnkgaTkxNSBpbiB0aGlzXFxcXG5cXFwiXFxuIDk2NzpcXHRcXHRcXHRcXHQgXFxcImtlcm5lbCB2ZXJzaW9uLiBUbyBmb3JjZSBkcml2ZXIgcHJvYmUgYW55d2F5LCB1c2UgaTkxNS5mb3JjZV9wcm9iZT0lMDR4XFxcXG5cXFwiXFxuIDk2ODpcXHRcXHRcXHRcXHQgXFxcIm1vZHVsZSBwYXJhbWV0ZXIgb3IgQ09ORklHX0RSTV9JOTE1X0ZPUkNFX1BST0JFPSUwNHggY29uZmlndXJhdGlvbiBvcHRpb24sXFxcXG5cXFwiXFxuIDk2OTpcXHRcXHRcXHRcXHQgXFxcIm9yIChyZWNvbW1lbmRlZCkgY2hlY2sgZm9yIGtlcm5lbCB1cGRhdGVzLlxcXFxuXFxcIixcXG4gOTcwOlxcdFxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UsIHBkZXYtXFx1MDAzZWRldmljZSwgcGRldi1cXHUwMDNlZGV2aWNlKTtcXG4gOTcxOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA5NzI6XFx0XFx0fVxcbiA5NzM6XFx0XFxuIDk3NDpcXHRcXHRpZiAoaWRfYmxvY2tlZChwZGV2LVxcdTAwM2VkZXZpY2UpKSB7XFxuIDk3NTpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiSTkxNSBwcm9iZSBibG9ja2VkIGZvciBEZXZpY2UgSUQgJTA0eC5cXFxcblxcXCIsXFxuIDk3NjpcXHRcXHRcXHRcXHQgcGRldi1cXHUwMDNlZGV2aWNlKTtcXG4gOTc3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA5Nzg6XFx0XFx0fVxcbiA5Nzk6XFx0XFxuIDk4MDpcXHRcXHRpZiAoaW50ZWxfaW5mby1cXHUwMDNlcmVxdWlyZV9mb3JjZV9wcm9iZSkge1xcbiA5ODE6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkZvcmNlIHByb2JpbmcgdW5zdXBwb3J0ZWQgRGV2aWNlIElEICUwNHgsIHRhaW50aW5nIGtlcm5lbFxcXFxuXFxcIixcXG4gOTgyOlxcdFxcdFxcdFxcdCBwZGV2LVxcdTAwM2VkZXZpY2UpO1xcbiA5ODM6XFx0XFx0XFx0YWRkX3RhaW50KFRBSU5UX1VTRVIsIExPQ0tERVBfU1RJTExfT0spO1xcbiA5ODQ6XFx0XFx0fVxcbiA5ODU6XFx0XFxuIDk4NjpcXHRcXHQvKiBPbmx5IGJpbmQgdG8gZnVuY3Rpb24gMCBvZiB0aGUgZGV2aWNlLiBFYXJseSBnZW5lcmF0aW9uc1xcbiA5ODc6XFx0XFx0ICogdXNlZCBmdW5jdGlvbiAxIGFzIGEgcGxhY2Vob2xkZXIgZm9yIG11bHRpLWhlYWQuIFRoaXMgY2F1c2VzXFxuIDk4ODpcXHRcXHQgKiB1cyBjb25mdXNpb24gaW5zdGVhZCwgZXNwZWNpYWxseSBvbiB0aGUgc3lzdGVtcyB3aGVyZSBib3RoXFxuIDk4OTpcXHRcXHQgKiBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBQQ0ktSUQhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjE4LjAyMzMzNjA5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozNzc0MTgwMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBgX19zaG1lbV93cml0ZWJhY2tgLiBTZWVtcyBsaWtlIHRoaXMgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgbmFtZSBoaW50cyBhdCBzb21lIGtpbmQgb2Ygc2hhcmVkIG1lbW9yeSB3cml0ZWJhY2sgb3BlcmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBnZXQgYSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiBpdC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBpbXBsZW1lbnRlZCBhbmQsIGV2ZW4gbW9yZSBpbXBvcnRhbnRseSwgKndobyogaXMgY2FsbGluZyB0aGlzIHRoaW5nLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGZsb3cgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBncmVhdGVyIHNjaGVtZSBvZiB0aGluZ3MuIExldCdzIHN0YXJ0IHdpdGggdGhlIGxpa2VseSBjYW5kaWRhdGU6IGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uY2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gYW5kIGFueSByZWxhdGVkIGNvZGUuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODUxLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODoyMS43OTc1MTk3NzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzAwOlxcdFxcdHNobWVtX3RydW5jYXRlX3JhbmdlKGZpbGVfaW5vZGUob2JqLVxcdTAwM2ViYXNlLmZpbHApLCAwLCAobG9mZl90KS0xKTtcXG4gMzAxOlxcdFxcdG9iai1cXHUwMDNlbW0ubWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDtcXG4gMzAyOlxcdFxcdG9iai1cXHUwMDNlbW0ucGFnZXMgPSBFUlJfUFRSKC1FRkFVTFQpO1xcbiAzMDM6XFx0XFxuIDMwNDpcXHRcXHRyZXR1cm4gMDtcXG4gMzA1OlxcdH1cXG4gMzA2OlxcdFxcbiAzMDc6XFx0dm9pZCBfX3NobWVtX3dyaXRlYmFjayhzaXplX3Qgc2l6ZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpXFxuIDMwODpcXHR7XFxuIDMwOTpcXHRcXHRzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgd2JjID0ge1xcbiAzMTA6XFx0XFx0XFx0LnN5bmNfbW9kZSA9IFdCX1NZTkNfTk9ORSxcXG4gMzExOlxcdFxcdFxcdC5ucl90b193cml0ZSA9IFNXQVBfQ0xVU1RFUl9NQVgsXFxuIDMxMjpcXHRcXHRcXHQucmFuZ2Vfc3RhcnQgPSAwLFxcbiAzMTM6XFx0XFx0XFx0LnJhbmdlX2VuZCA9IExMT05HX01BWCxcXG4gMzE0OlxcdFxcdH07XFxuIDMxNTpcXHRcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvID0gTlVMTDtcXG4gMzE2OlxcdFxcdGludCBlcnJvciA9IDA7XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdC8qXFxuIDMxOTpcXHRcXHQgKiBMZWF2ZSBtbWFwaW5ncyBpbnRhY3QgKEdUVCB3aWxsIGhhdmUgYmVlbiByZXZva2VkIG9uIHVuYmluZGluZyxcXG4gMzIwOlxcdFxcdCAqIGxlYXZpbmcgb25seSBDUFUgbW1hcGluZ3MgYXJvdW5kKSBhbmQgYWRkIHRob3NlIGZvbGlvcyB0byB0aGUgTFJVXFxuIDMyMTpcXHRcXHQgKiBpbnN0ZWFkIG9mIGludm9raW5nIHdyaXRlYmFjayBzbyB0aGV5IGFyZSBhZ2VkIGFuZCBwYWdlZCBvdXRcXG4gMzIyOlxcdFxcdCAqIGFzIG5vcm1hbC5cXG4gMzIzOlxcdFxcdCAqL1xcbiAzMjQ6XFx0XFx0d2hpbGUgKChmb2xpbyA9IHdyaXRlYmFja19pdGVyKG1hcHBpbmcsIFxcdTAwMjZ3YmMsIGZvbGlvLCBcXHUwMDI2ZXJyb3IpKSkge1xcbiAzMjU6XFx0XFx0XFx0aWYgKGZvbGlvX21hcHBlZChmb2xpbykpIHtcXG4gMzI2OlxcdFxcdFxcdFxcdGZvbGlvX3JlZGlydHlfZm9yX3dyaXRlcGFnZShcXHUwMDI2d2JjLCBmb2xpbyk7XFxuIDMyNzpcXHRcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbiAzMjg6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzI5OlxcdFxcdFxcdFxcdGVycm9yID0gc2htZW1fd3JpdGVfZm9saW8oZm9saW8pO1xcbiAzMzA6XFx0XFx0XFx0XFx0aWYgKGVycm9yID09IEFPUF9XUklURVBBR0VfQUNUSVZBVEUpIHtcXG4gMzMxOlxcdFxcdFxcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIDMzMjpcXHRcXHRcXHRcXHRcXHRlcnJvciA9IDA7XFxuIDMzMzpcXHRcXHRcXHRcXHR9XFxuIDMzNDpcXHRcXHRcXHR9XFxuIDMzNTpcXHRcXHR9XFxuIDMzNjpcXHR9XFxuIDMzNzpcXHRcXG4gMzM4OlxcdHN0YXRpYyB2b2lkXFxuIDMzOTpcXHRzaG1lbV93cml0ZWJhY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iailcXG4gMzQwOlxcdHtcXG4gMzQxOlxcdFxcdF9fc2htZW1fd3JpdGViYWNrKG9iai1cXHUwMDNlYmFzZS5zaXplLCBvYmotXFx1MDAzZWJhc2UuZmlscC1cXHUwMDNlZl9tYXBwaW5nKTtcXG4gMzQyOlxcdH1cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0c3RhdGljIGludCBzaG1lbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IGZsYWdzKVxcbiAzNDU6XFx0e1xcbiAzNDY6XFx0XFx0c3dpdGNoIChvYmotXFx1MDAzZW1tLm1hZHYpIHtcXG4gMzQ3OlxcdFxcdGNhc2UgSTkxNV9NQURWX0RPTlRORUVEOlxcbiAzNDg6XFx0XFx0XFx0cmV0dXJuIGk5MTVfZ2VtX29iamVjdF90cnVuY2F0ZShvYmopO1xcbiAzNDk6XFx0XFx0Y2FzZSBfX0k5MTVfTUFEVl9QVVJHRUQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU4OjIxLjc5NzYxMDM0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTEwMTA3MjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgX19zaG1lbV93cml0ZWJhY2tgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYF9fc2htZW1fd3JpdGViYWNrYCwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYHNobWVtX3dyaXRlYmFjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKWAgaXMgb25lIGVudHJ5IHBvaW50LiBCdXQsIGFzIGFuIGV4cGVydCwgSSBrbm93IHRoYXQgb25lIHNwZWNpZmljIGNhbGxpbmcgZnVuY3Rpb24gaXMgcmFyZWx5IHRoZSB3aG9sZSBzdG9yeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIFdoZXJlICplbHNlKiBpcyB0aGlzIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24gYmVpbmcgaW52b2tlZD8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSBpdHMgY2FsbCBncmFwaC4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIGZvcm1pbmcgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBiZWhhdmlvciwgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBzdWJ0bGUgc2lkZSBlZmZlY3RzIG9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGludHJvZHVjZSBhY3Jvc3MgdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgYWxsIG9mIHRoZSBvdGhlciBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkzNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6NDIuODk4Njg1MTE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk3OTg2NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2htZW1fd3JpdGViYWNrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaD04NDQ9dm9pZCBzaG1lbV9zZ19mcmVlX3RhYmxlKHN0cnVjdCBzZ190YWJsZSAqc3QsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaC04NDUtXFx0XFx0XFx0IGJvb2wgZGlydHksIGJvb2wgYmFja3VwKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmg6ODQ2OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgtODQ3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM9MjkyPXNobWVtX3RydW5jYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYy0zMDYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmM6MzA3OnZvaWQgX19zaG1lbV93cml0ZWJhY2soc2l6ZV90IHNpemUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jLTMwOC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYz0zMzk9c2htZW1fd3JpdGViYWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMtMzQwLXtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYzozNDE6XFx0X19zaG1lbV93cml0ZWJhY2sob2JqLVxcdTAwM2ViYXNlLnNpemUsIG9iai1cXHUwMDNlYmFzZS5maWxwLVxcdTAwM2VmX21hcHBpbmcpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jLTM0Mi19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmM9NDYzPXN0YXRpYyBpbnQgaTkxNV90dG1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYy01MDQtXFx0aWYgKGZsYWdzIFxcdTAwMjYgSTkxNV9HRU1fT0JKRUNUX1NIUklOS19XUklURUJBQ0spXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jOjUwNTpcXHRcXHRfX3NobWVtX3dyaXRlYmFjayhvYmotXFx1MDAzZWJhc2Uuc2l6ZSwgaTkxNV90dC1cXHUwMDNlZmlscC1cXHUwMDNlZl9tYXBwaW5nKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMtNTA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo0NC42OTY2OTkwN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3OTg3MTM0NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgaTkxNSBpbiB0aGlzIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB3aGVyZSBgX19zaG1lbV93cml0ZWJhY2tgIGlzIGNhbGxlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc2htZW1fd3JpdGViYWNrYCBhbmQgYGk5MTVfdHRtX3Nocmlua2AsIGJvdGggY2xlYXJseSB0aWVkIHRvIGBpOTE1YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGk5MTVgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiBhcyB0aGUgcHJvbXB0IGluc3RydWN0aW9ucyBkZWZpbmUuIEkgbmVlZCB0byBiZSBwcmVjaXNlIGhlcmUsIHNvIEknbSByZS1yZWFkaW5nIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LiAgSXQgbGF5cyBvdXQgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmU6IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yICpHUFUgZHJpdmVycyogcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVS4gIENydWNpYWxseSwgdGhlIHByb21wdCBnaXZlcyBleGFtcGxlczogbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUuXG5cbk5vdywgZG9lcyBgaTkxNWAgZml0IHRoYXQgZGVzY3JpcHRpb24/ICBBYnNvbHV0ZWx5ISAgYGk5MTVgIHJlcHJlc2VudHMgSW50ZWwncyBncmFwaGljcyBkcml2ZXJzLCB3aGljaCBhcmUgaW50aW1hdGVseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSDigJMgdGhlIGludGVncmF0ZWQgR1BVcyBpbiBJbnRlbCBDUFVzIG9yIGRpc2NyZXRlIEludGVsIEdQVXMgbGlrZSBJbnRlbCBBcmMuICBBbmQgc3RhbmRhcmQgUUVNVSwgdGhlIGtpbmQgdXNlZCBieSBzb21ldGhpbmcgbGlrZSBHQ0UgVk1zLCAqZG9lc24ndCogZW11bGF0ZSB0aG9zZSBJbnRlbCBncmFwaGljcyBjaGlwcy4gIEl0J3MganVzdCBub3Qgc2V0IHVwIHRvIGRvIHRoYXQuXG5cblNvLCBhbSBJIGFibGUgdG8gdXNlIHN5emthbGxlciBvbiB0aGlzPyBUaGUgcHJvbXB0IHNheXMgSSBjYW4ndCBsb29rIGF0IHN5emthbGxlciBzeXpsYW5nIGRlc2NyaXB0aW9ucyBvciBhbnl0aGluZyB3aXRoIFwibG9uZyBzeXpfXCIuIEknbSByZW1lbWJlcmluZyB0aGF0IGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhcyB0aGUgdG9vbHMgdG8gZG8gdGhhdCwgc28gSSB3aWxsIGhhdmUgdG8gbG9vayBhdCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgdG9vbHMuICBMZXQncyBzZWUgd2hhdCBpcyBhdmFpbGFibGU6XG4xLiBgZ3JlcHBlcmBcbjIuIGByZWFkLWZpbGVgXG4zLiBgY29kZXNlYXJjaC1kaXItaW5kZXhgXG40LiBgc2V0LXJlc3VsdHNgXG5cbk5vcGUsIGBzeXotZ3JlcHBlcmAgYW5kIGByZWFkLXN5ei1zcGVjYCBhcmUgbm90IGF2YWlsYWJsZSBoZXJlLlxuXG5Pa2F5LCBsZXQncyB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LiAgSXMgYGk5MTVgIGEgKnZlbmRvci1zcGVjaWZpYyBHUFUgZHJpdmVyKiB0aGF0IG5lZWRzIHBoeXNpY2FsIGhhcmR3YXJlPyBUaGUgZXhhbXBsZXMgaW4gU2VjdGlvbiAyIGFyZSBjcnVjaWFsIGhlcmU6IHNwZWNpZmljYWxseSwgdGhlIGxpc3Qgb2YgKkdQVSBkcml2ZXJzKiBsaWtlIGFtZGdwdS4gIFRoYXQgcmVpbmZvcmNlcyB0aGUgcG9pbnQ6IEk5MTUgaXMgaW4gdGhlIHNhbWUgY2F0ZWdvcnkgYXMgQU1EIG9yIE5vdXZlYXUgb3IgYW55IG9mIHRoZSBvdGhlciBHUFVzISAgTmVpdGhlciBBTUQgbm9yIEludGVsIG5vciBOVklESUEgR1BVcyBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBhcmUgYXZhaWxhYmxlIGluIEdDRS9RRU1VIHZpcnR1YWwgbWFjaGluZXMgdXNlZCBieSBzeXprYWxsZXIuXG5cbldoYXQgRE9FUyBydW4gaW4gUUVNVT8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0LiAgSSBrbm93IHRoYXQgdmlydGlvLWdwdSwgYm9jaHMtZHJtLCBjaXJydXMsIHF4bCwgdm13Z2Z4LCB2a21zLCBzaW1wbGVkcm0gY2FuIGFsbCB3b3JrIGluIFFFTVUsIGJ1dCBub3QgSTkxNSFcblxuTm93LCAqaXMqIHRoZXJlIGFueXRoaW5nIGluIGBpOTE1YCB0aGF0ICptaWdodCogYmUgYWNjZXNzaWJsZSBpbiBRRU1VPyAgTWF5YmUgc29tZSBraW5kIG9mIG1vY2sgZGV2aWNlLCBhIGR1bW15IGRyaXZlcj8gTGV0J3MgZ28gYmFjayBhbmQgbG9vayBhdCB0aGF0IGVhcmxpZXIgZ3JlcC4gQWghIFwiaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgKz0gZ2VtL3NlbGZ0ZXN0cy8uLi5cIiAgVGhhdCdzIGludGVyZXN0aW5nLiBgc2VsZnRlc3RzL21vY2tfZW5naW5lLmNgLCBgc2VsZnRlc3RzL21vY2tfY29udGV4dC5jYCwgYHNlbGZ0ZXN0cy9tb2NrX2d0dC5jYC4gVGhhdCBzb3VuZHMgbGlrZSBpdCEgIEkgbmVlZCB0byBjaGVjayBgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUYCBpbiBLY29uZmlnIHRvIHVuZGVyc3RhbmQgdGhhdCBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjkwOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMTE6NTg6NTIuNjgzODM2NjM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTgyNTM3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9JOTE1X1NFTEZURVNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc9MTc4PWNvbmZpZyBEUk1fSTkxNV9ERUJVR19HVUNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc6MTkxOmNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMTkyLVxcdGJvb2wgXFxcIkVuYWJsZSBzZWxmdGVzdHMgdXBvbiBkcml2ZXIgbG9hZFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWctMjA4LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcuZGVidWc6MjA5OmNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVF9CUk9LRU5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnLTIxMC1cXHRib29sIFxcXCJFbmFibGUgYnJva2VuIGFuZCBkYW5nZXJvdXMgc2VsZnRlc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1My4wMDIxMTAwMTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjMxNTQ4MzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBJbnRlbCBHUFUgRGVidWdnaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBJbnRlbCBHUFUgZHJpdmVyJ3MgZGVidWcgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZy5kZWJ1Z2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL2dwdS9kcm0vaTkxNS9gIGRpcmVjdG9yeS4gTGluZSAxOTEgaXMgYSBsaWtlbHkgc3BvdCB0byBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLiBJdCdzIHByb2JhYmx5IHdoZXJlIGEgcmVsZXZhbnQgZGVidWcgb3B0aW9uLCBvciBzZWN0aW9uIG9mIHRoZW0sIGlzIGRlZmluZWQgb3IgaW50cm9kdWNlZC4gSeKAmW0gaG9waW5nIHRvIHVuZGVyc3RhbmQgaG93IGRlYnVnZ2luZyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGFkanVzdCBkZWJ1ZyBsb2dnaW5nIHdpdGhpbiB0aGUgaTkxNSBkcml2ZXIgZm9yIEludGVsIEdQVXMuIFRoaXMga2luZCBvZiBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhbnkgcmVhbCBkZWVwIGRpdmUgaW50byB0aGlzIGFyZWEuIEl0J2xsIGdpdmUgbWUgYSBzdHJvbmcgZm91bmRhdGlvbi4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1NS4zMTc2MDA3MjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzczMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Z1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODU6XFx0XFx0ICBwZXJmb3JtYW5jZSBidXQgd2lsbCBoZWxwIHJlc29sdmUgR3VDIHJlbGF0ZWQgaXNzdWVzLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFJlY29tbWVuZGVkIGZvciBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5LlxcbiAxODg6XFx0XFxuIDE4OTpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgXFxcIk5cXFwiLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFJNX0k5MTVfU0VMRlRFU1RcXG4gMTkyOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBzZWxmdGVzdHMgdXBvbiBkcml2ZXIgbG9hZFxcXCJcXG4gMTkzOlxcdFxcdGRlcGVuZHMgb24gRFJNX0k5MTVcXG4gMTk0OlxcdFxcdGRlZmF1bHQgblxcbiAxOTU6XFx0XFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cXG4gMTk2OlxcdFxcdHNlbGVjdCBGQVVMVF9JTkpFQ1RJT05cXG4gMTk3OlxcdFxcdHNlbGVjdCBQUklNRV9OVU1CRVJTXFxuIDE5ODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTk5OlxcdFxcdGhlbHBcXG4gMjAwOlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGFsbG93IHRoZSBkcml2ZXIgdG8gcGVyZm9ybSBzZWxmdGVzdHMgdXBvblxcbiAyMDE6XFx0XFx0ICBsb2FkaW5nOyBhbHNvIHJlcXVpcmVzIHRoZSBpOTE1LnNlbGZ0ZXN0PTEgbW9kdWxlIHBhcmFtZXRlci4gVG9cXG4gMjAyOlxcdFxcdCAgZXhpdCB0aGUgbW9kdWxlIGFmdGVyIHJ1bm5pbmcgdGhlIHNlbGZ0ZXN0cyAoaS5lLiB0byBwcmV2ZW50IG5vcm1hbFxcbiAyMDM6XFx0XFx0ICBtb2R1bGUgaW5pdGlhbGlzYXRpb24gYWZ0ZXJ3YXJkcykgdXNlIGk5MTUuc2VsZnRlc3Q9LTEuXFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdCAgUmVjb21tZW5kZWQgZm9yIGRyaXZlciBkZXZlbG9wZXJzIG9ubHkuXFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiTlxcXCIuXFxuIDIwODpcXHRcXG4gMjA5OlxcdGNvbmZpZyBEUk1fSTkxNV9TRUxGVEVTVF9CUk9LRU5cXG4gMjEwOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicm9rZW4gYW5kIGRhbmdlcm91cyBzZWxmdGVzdHNcXFwiXFxuIDIxMTpcXHRcXHRkZXBlbmRzIG9uIERSTV9JOTE1X1NFTEZURVNUXFxuIDIxMjpcXHRcXHRkZXBlbmRzIG9uIEJST0tFTlxcbiAyMTM6XFx0XFx0ZGVmYXVsdCBuXFxuIDIxNDpcXHRcXHRoZWxwXFxuIDIxNTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGV4ZWN1dGlvbiBvZiBzZWxmdGVzdHMgdGhhdCBhcmUgXFxcImRhbmdlcm91c1xcXCJcXG4gMjE2OlxcdFxcdCAgYW5kIG1heSB0cmlnZ2VyIHVuaW50ZW5kZWQgSFcgc2lkZS1lZmZlY3RzIGFzIHRoZXkgYnJlYWsgc3RyaWN0XFxuIDIxNzpcXHRcXHQgIHJ1bGVzIGdpdmVuIGluIHRoZSBIVyBzcGVjaWZpY2F0aW9uLiBGb3Igc2NpZW5jZS5cXG4gMjE4OlxcdFxcbiAyMTk6XFx0XFx0ICBSZWNvbW1lbmRlZCBmb3IgbWFzb2NoaXN0aWMgZHJpdmVyIGRldmVsb3BlcnMgb25seS5cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIi5cXG4gMjIyOlxcdFxcbiAyMjM6XFx0Y29uZmlnIERSTV9JOTE1X0tVTklUX1RFU1RcXG4gMjI0OlxcdFxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgdGhlIGRybSBpOTE1IGRyaXZlclxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1ODo1NS4zMTc2ODE4NThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTQ4MDc2MzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBpOTE1IERyaXZlciBTZWxmdGVzdCoqXG5cbk9rYXksIHNvIGBDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1RgIGlzIHJlYWxseSBqdXN0IGVuYWJsaW5nIGEgc2VsZi10ZXN0IHJvdXRpbmUgdGhhdCBoYXBwZW5zIHdoZW4gdGhlIGRyaXZlciwgYGk5MTUua29gLCBpcyBsb2FkZWQuIE1ha2VzIHNlbnNlLCBhIGxvYWQtdGltZSBzZWxmdGVzdC4gQnV0LCBvZiBjb3Vyc2UsIHRoZSBpOTE1IGRyaXZlciBpcyBzcGVjaWZpYyB0byBJbnRlbCBoYXJkd2FyZSwgc28gdGhlIGRyaXZlciAqbmVlZHMqIHRvIGZpbmQgSW50ZWwgaGFyZHdhcmUgdG8gZXZlbiBkbyBhbnl0aGluZywgcmlnaHQ/XG5cbkFscmlnaHQsIGxldCBtZSBqdXN0IGNvbmZpcm0gc29tZXRoaW5nLi4uIGlmIHRoZXJlJ3Mgbm8gSW50ZWwgUENJIEdQVSBkZXZpY2UsIGRvZXMgYGk5MTUua29gIGV2ZW4gYm90aGVyIHByb2Jpbmc/IEknbSB0aGlua2luZyBhYm91dCBgaTkxNV9wY2lfcHJvYmUoKWAuIExldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiB0aGUgY29kZS4uLiBgc3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClgLiBZZXAsIHRoYXQncyBpdC4gQW5kLCB0aGUgUENJIGNvcmUgKm9ubHkqIGNhbGxzIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSBJRCBmcm9tIHRoZSBgcGNpaWRsaXN0YCBvbiB0aGUgUENJIGJ1cy4gU28sIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgLSB0aG9zZSB0aGF0IGRvbid0IGhhdmUgYW4gSW50ZWwgR1BVIC0gdGhlIGRyaXZlciB3b3VsZG4ndCBmaW5kIGFueSBQQ0kgZGV2aWNlcyB0byBtYXRjaCBhZ2FpbnN0LCBhbmQgYGk5MTVfcGNpX3Byb2JlKClgIHdvdWxkbid0IGV2ZXIgcnVuLiBUaGF0IG1lYW5zIGV2ZW4gaWYgc29tZW9uZSAqZm9yY2VkKiB0aGUgYGk5MTVgIG1vZHVsZSB0byBsb2FkLCBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgYW5kIGJhaWwuXG5cbkJ1dCB3YWl0LCBob2xkIG9uLi4uIENhbiBgaTkxNWAgYmUgbG9hZGVkLCBhbmQgdGhlbiBydW4gbW9jayBzZWxmdGVzdHM/IEhtbSwgdGltZSB0byBkaWcgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUgdGhhdCBpbXBsZW1lbnRzIHRoZSBtb2NrIHNlbGZ0ZXN0cywgYGk5MTVfbW9ja19zZWxmdGVzdHNgLCBvciBtYXliZSBgaTkxNV9wY2kuY2AuIEkgaGF2ZSB0byBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTg1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjAwLjc5ODQ0ODQxNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNTUwMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImk5MTVfc2VsZnRlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU9NDE0PWk5MTUtJChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxNy1cXHRzZWxmdGVzdHMvaTkxNV9yYW5kb20ubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGU6NDE4OlxcdHNlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0Lm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlLTQxOS1cXHRzZWxmdGVzdHMvaWd0X2F0b21pYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaC0xNS0jaW5jbHVkZSBcXFwiaTkxNV9hY3RpdmUuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmg6MTY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgtMTctI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtX21vdmUuaC05LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG1fbW92ZS5oOjEwOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bV9tb3ZlLmgtMTEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jLTEyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMtOS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYzoxNTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMtMTYtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTYtI2luY2x1ZGUgXFxcImd0L2ludGVsX3Jlc2V0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmM6MTc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYy0xOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jPTMzPXN0YXRpYyBpbnQgbGl2ZV9ub3Bfc3dpdGNoKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jLTExMS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYzoxMTI6XFx0XFx0ZW5kX3RpbWUgPSBqaWZmaWVzICsgaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXM7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMtMTEzLVxcdFxcdGZvcl9lYWNoX3ByaW1lX251bWJlcl9mcm9tKHByaW1lLCAyLCA4MTkyKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jLTctI2luY2x1ZGUgXFxcImk5MTVfZHJ2LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYy05LSNpbmNsdWRlIFxcXCJnZW0vaTkxNV9nZW1fY29udGV4dC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMtMjUtI2luY2x1ZGUgXFxcImh1Z2VfZ2VtX29iamVjdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jOjI2OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMtMjctI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYy02LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmM6NzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMtOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmM6NzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jLTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNS0jaW5jbHVkZSBcXFwiaTkxNV9yZXF1ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmg6MTY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaC0xNy0jaW5jbHVkZSBcXFwiaW50ZWxfZW5naW5lX3R5cGVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaC0yMi0jaW5jbHVkZSBcXFwiaTkxNV9wcmlvbGlzdF90eXBlcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oOjIzOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgtMjQtI2luY2x1ZGUgXFxcImludGVsX3NzZXUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oLTI4LSNpbmNsdWRlIFxcXCJndC9pbnRlbF9yZXNldC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5oOjI5OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgtMzAtI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMtNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmM6ODojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYy05LSNpbmNsdWRlIFxcXCJpbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy01LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZS5jOjY6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmUuYy03LSNpbmNsdWRlIFxcXCJzZWxmdGVzdF9lbmdpbmUuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jLTExLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jOjEyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMtMTMtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jLTEwLSNpbmNsdWRlIFxcXCJpbnRlbF9ndF9yZXF1ZXN0cy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYy0xMi0jaW5jbHVkZSBcXFwic2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMtOC0jaW5jbHVkZSBcXFwiZ3QvaW50ZWxfZ3RfcHJpbnQuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYzo5OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMtMTAtI2luY2x1ZGUgXFxcImludGVsX2VuZ2luZV9yZWdzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0xNi0jaW5jbHVkZSBcXFwiaTkxNV9qaWZmaWVzLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmM6MTc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0xOC0jaW5jbHVkZSBcXFwic2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYz0zNjM4PXN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X3Ntb2tlKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jLTM2NDEtXFx0XFx0Lmd0ID0gYXJnLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jOjM2NDI6XFx0XFx0LnBybmcgPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKSxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYy0zNjQzLVxcdFxcdC5uY29udGV4dCA9IDI1NixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jLTE2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jOjE3OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMtMTgtI2luY2x1ZGUgXFxcInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMtMTAtI2luY2x1ZGUgXFxcImk5MTVfZHJ2LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmM6MTE6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYy0xMi0jaW5jbHVkZSBcXFwiaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTctI2luY2x1ZGUgXFxcImd0L2ludGVsX2dwdV9jb21tYW5kcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYzo4OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jLTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTEwLSNpbmNsdWRlIFxcXCJpOTE1X21lbWNweS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jlc2V0LmM6MTE6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yZXNldC5jLTEyLSNpbmNsdWRlIFxcXCJpbnRlbF9ncHVfY29tbWFuZHMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTUtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmluZ19zdWJtaXNzaW9uLmM6NjojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jLTctI2luY2x1ZGUgXFxcImludGVsX2VuZ2luZV9wbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0xOS0jaW5jbHVkZSBcXFwiLi4vc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzoyMDojaW5jbHVkZSBcXFwiLi4vaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMjEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jPTE0Mj1zdGF0aWMgaW50IG1vY2tfaHdzcF9mcmVlbGlzdCh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2MS1cXHRJTklUX1JBRElYX1RSRUUoXFx1MDAyNnN0YXRlLmNhY2hlbGluZXMsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM6MTYyOlxcdHN0YXRlLnBybmcgPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTE2My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmM9Mjg3PXN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMwMi1cXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjMwMzpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzA0LVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzIwLVxcdC8qIEJlbmNobWFyayAob25seSkgc2V0dGluZyByYW5kb20gY29udGV4dCBpZHMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjMyMTpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzIyLVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzM2LVxcdC8qIEJlbmNobWFyayBsb29raW5nIHVwIHRoZSBleGFjdCBzYW1lIGNvbnRleHQgaWRzIGFzIHdlIGp1c3Qgc2V0ICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYzozMzc6XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jLTMzOC1cXHRlbmRfdGltZSA9IGNvdW50O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYy0zODktXFx0LyogQmVuY2htYXJrIHNlYXJjaGluZyBmb3IgYSByYW5kb20gY29udGV4dCBpZCBhbmQgbWF5YmUgY2hhbmdpbmcgaXQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jOjM5MDpcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMtMzkxLVxcdGNvdW50ID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jLTExLSNpbmNsdWRlIFxcXCJpOTE1X2dlbV93dy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RsYi5jOjEyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGxiLmMtMTMtI2luY2x1ZGUgXFxcImk5MTVfd2FpdF91dGlsLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jLTktI2luY2x1ZGUgXFxcImd0L2ludGVsX2d0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYzoxMDojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMtMTEtI2luY2x1ZGUgXFxcImludGVsX3Jlc2V0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oPTE1NT1zdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oLTE2My1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oOjE2NDpzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0xNjUtXFx0YXRvbWljX3QgY291bnRlcjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg9MTY5PXN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgtMzE5LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmg6MzIwOlxcdEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3QgaTkxNV9zZWxmdGVzdF9zdGFzaCBzZWxmdGVzdDspXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaC0zMjEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTE4LSNpbmNsdWRlIFxcXCJpOTE1X3NjaGVkdWxlci5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmM6MTk6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X21vZHVsZS5jLTIwLSNpbmNsdWRlIFxcXCJpOTE1X3ZtYS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgtNDMtI2luY2x1ZGUgXFxcImk5MTVfc2NoZWR1bGVyLmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0Lmg6NDQ6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaC00NS0jaW5jbHVkZSBcXFwiaTkxNV9zd19mZW5jZS5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTMyPXN0cnVjdCBkcm1faTkxNV9wcml2YXRlO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zMy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6MzQ6c3RydWN0IGk5MTVfc2VsZnRlc3Qge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0zNS1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXRfamlmZmllcztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC00Ny1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0Lmg6NDg6ZXh0ZXJuIHN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3Q7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTQ5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oPTEyMT1zdGF0aWMgaW5saW5lIGludCBpOTE1X3BlcmZfc2VsZnRlc3RzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTI4LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaDoxMjk6LyogVXNpbmcgdGhlIGk5MTVfc2VsZnRlc3RfIHByZWZpeCBiZWNvbWVzIGEgbGl0dGxlIHVud2llbGR5IHdpdGggdGhlIGhlbHBlcnMuXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oLTEzMC0gKiBJbnN0ZWFkIHdlIHVzZSB0aGUgaWd0XyBzaG9ydGhhbmQsIGluIHJlZmVyZW5jZSB0byB0aGUgaW50ZWwtZ3B1LXRvb2xzXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NlbGZ0ZXN0LmgtMTM0LSNkZWZpbmUgSUdUX1RJTUVPVVQobmFtZV9fKSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zZWxmdGVzdC5oOjEzNTpcXHR1bnNpZ25lZCBsb25nIG5hbWVfXyA9IGppZmZpZXMgKyBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllc1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2VsZnRlc3QuaC0xMzYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTItI2luY2x1ZGUgXFxcImk5MTVfc3dfZmVuY2UuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmM6MTM6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMtMTQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmNtYXAuYy0yOS0jaW5jbHVkZSBcXFwiaTkxNV9nZW0uaFxcXCIgLyogR0VNX0JVR19PTigpICovXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jbWFwLmM6MzA6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmNtYXAuYy0zMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaC05LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaDoxMDojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uaC0xMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jLTE0LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jOjE1OiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMtMTYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYy0xNS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYzoxNjojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jLTE3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMtMzEtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmM6MzI6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYy0zMy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYy0zNy0jaW5jbHVkZSBcXFwiaTkxNV9yYW5kb20uaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmM6Mzg6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMtMzktI2luY2x1ZGUgXFxcImk5MTVfdm1hX3Jlc291cmNlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oLTE1LSAqXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oLTE3LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmg6MTY6ICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5IGlndC9pOTE1X3NlbGZ0ZXN0XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaC0xNy0gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYy0xMS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmM6MTI6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMtMTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE1LSAqXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZl9zZWxmdGVzdHMuaDoxNjogKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkgaWd0L2k5MTVfc2VsZnRlc3RcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmX3NlbGZ0ZXN0cy5oLTE3LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgtMzAtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6MzE6I2luY2x1ZGUgXFxcIi4uL2k5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaC0zMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTM5LSNkZWZpbmUgSTkxNV9STkRfU1RBVEUobmFtZV9fKSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmg6NDA6XFx0c3RydWN0IHJuZF9zdGF0ZSBuYW1lX18gPSBJOTE1X1JORF9TVEFURV9JTklUSUFMSVpFUihpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oLTQxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTQyLSNpbmNsdWRlIFxcXCJpOTE1X3JhbmRvbS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo0MzojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYy00NC0jaW5jbHVkZSBcXFwiaTkxNV93YWl0X3V0aWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz00NTU9c3RhdGljIGludCBtb2NrX2JyZWFkY3J1bWJzX3Ntb2tldGVzdCh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTEyLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzo1MTM6XFx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtNTE0LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jPTE1NDI9c3RhdGljIGludCB3YWl0X2Zvcl9hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTU0OC1cXHRcXHRcXHRcXHQgICAhYXRvbWljX3JlYWQoXFx1MDAyNmk5MTUtXFx1MDAzZXNlbGZ0ZXN0LmNvdW50ZXIpLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYzoxNTQ5OlxcdFxcdFxcdFxcdCAgIGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzKSlcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTU1MC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYz0xNzI1PXN0YXRpYyBpbnQgbGl2ZV9icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jLTE4MjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jOjE4MjU6XFx0bXNsZWVwKGppZmZpZXNfdG9fbXNlY3MoaTkxNV9zZWxmdGVzdC50aW1lb3V0X2ppZmZpZXMpKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMtMTgyNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMtI2luY2x1ZGUgXFxcImk5MTVfamlmZmllcy5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzQ6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1LSNpbmNsdWRlIFxcXCJpOTE1X3dhaXRfdXRpbC5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4OnN0cnVjdCBpOTE1X3NlbGZ0ZXN0IGk5MTVfc2VsZnRlc3QgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM5LVxcdC50aW1lb3V0X21zID0gNTAwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0yMjI9c3RhdGljIGludCBfX3J1bl9zZWxmdGVzdHMoY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjMwLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjMxOlxcdGlmIChpOTE1X3NlbGZ0ZXN0LnVzZXJzcGFjZV9waWQpXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzI6XFx0XFx0dV9waWRfbnIgPSBpOTE1X3NlbGZ0ZXN0LnVzZXJzcGFjZV9waWQ7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0yMzMtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyMzQ6XFx0d2hpbGUgKCFpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM1OlxcdFxcdGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQgPSBnZXRfcmFuZG9tX3UzMigpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM3OlxcdGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzID1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjIzODpcXHRcXHRpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMgP1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MjM5OlxcdFxcdG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dChpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMpIDpcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0MC1cXHRcXHRNQVhfU0NIRURVTEVfVElNRU9VVDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMjQ0LVxcdHByX2luZm8oRFJJVkVSX05BTUUgXFxcIjogUGVyZm9ybWluZyAlcyBzZWxmdGVzdHMgd2l0aCBzdF9yYW5kb21fc2VlZD0weCV4IHN0X3RpbWVvdXQ9JXVcXFxcblxcXCIsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzoyNDU6XFx0XFx0bmFtZSwgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCwgaTkxNV9zZWxmdGVzdC50aW1lb3V0X21zKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTI0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzA1PWludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMwOC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMwOTpcXHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxMC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzEzLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxNDpcXHRcXHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSBlcnI7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMTUtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTMxNy1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjMxODpcXHRpZiAoaTkxNV9zZWxmdGVzdC5tb2NrIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzE5OlxcdFxcdGk5MTVfc2VsZnRlc3QubW9jayA9IC1FTk9UVFk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zMjAtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jPTMyNj1pbnQgaTkxNV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzMzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzM0OlxcdGlmICghaTkxNV9zZWxmdGVzdC5saXZlKVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzM1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNTQtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6MzU1OlxcdFxcdGk5MTVfc2VsZnRlc3QubGl2ZSA9IGVycjtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM1Ni1cXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zNTgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozNTk6XFx0aWYgKGk5MTVfc2VsZnRlc3QubGl2ZSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM2MDpcXHRcXHRpOTE1X3NlbGZ0ZXN0LmxpdmUgPSAtRU5PVFRZO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzYxLVxcdFxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz0zNjc9aW50IGk5MTVfcGVyZl9zZWxmdGVzdHMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3MS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM3MjpcXHRpZiAoIWk5MTVfc2VsZnRlc3QucGVyZilcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM3My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzc5LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjM4MDpcXHRcXHRpOTE1X3NlbGZ0ZXN0LnBlcmYgPSBlcnI7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy0zODEtXFx0XFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzgzLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6Mzg0OlxcdGlmIChpOTE1X3NlbGZ0ZXN0LnBlcmYgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzozODU6XFx0XFx0aTkxNV9zZWxmdGVzdC5wZXJmID0gLUVOT1RUWTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTM4Ni1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM9MzkyPXN0YXRpYyBib29sIGFwcGx5X3N1YnRlc3RfZmlsdGVyKGNvbnN0IGNoYXIgKmNhbGxlciwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzk2LVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6Mzk3OlxcdGZpbHRlciA9IGtzdHJkdXAoaTkxNV9zZWxmdGVzdC5maWx0ZXIsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmMtMzk4LVxcdGZvciAoc2VwID0gZmlsdGVyOyAodG9rID0gc3Ryc2VwKFxcdTAwMjZzZXAsIFxcXCIsXFxcIikpOykge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYz01NDg9dm9pZCBpZ3RfaGV4ZHVtcChjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU3Nzptb2R1bGVfcGFyYW1fbmFtZWQoc3RfcmFuZG9tX3NlZWQsIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQsIHVpbnQsIDA0MDApO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc4Om1vZHVsZV9wYXJhbV9uYW1lZChzdF90aW1lb3V0LCBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfbXMsIHVpbnQsIDA0MDApO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NlbGZ0ZXN0LmM6NTc5Om1vZHVsZV9wYXJhbV9uYW1lZChzdF9maWx0ZXIsIGk5MTVfc2VsZnRlc3QuZmlsdGVyLCBjaGFycCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYzo1ODA6bW9kdWxlX3BhcmFtX25hbWVkKHN0X3VzZXJzcGFjZV9waWQsIGk5MTVfc2VsZnRlc3QudXNlcnNwYWNlX3BpZCwgdWludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODEtTU9EVUxFX1BBUk1fREVTQyhzdF91c2Vyc3BhY2VfcGlkLCBcXFwiRm9yIHVzYWdlIGluIHRlc3RzIHRoYXQgbWFwIHVzZXJzcGFjZSBtZW1vcnkgYW5kIHJlcXVpcmUgYWRkcmVzcyBzcGFjZSB3aXRoIGNvbnRyb2xsYWJsZSBsaWZldGltZS5cXFwiKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4Mi1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Mzptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKG1vY2tfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0Lm1vY2ssIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODQtTU9EVUxFX1BBUk1fREVTQyhtb2NrX3NlbGZ0ZXN0cywgXFxcIlJ1biBzZWxmdGVzdHMgYmVmb3JlIGxvYWRpbmcsIHVzaW5nIG1vY2sgaGFyZHdhcmUgKDA6ZGlzYWJsZWQgW2RlZmF1bHRdLCAxOnJ1biB0ZXN0cyB0aGVuIGxvYWQgZHJpdmVyLCAtMTpydW4gdGVzdHMuLi5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4NS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4Njptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKGxpdmVfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0LmxpdmUsIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01ODctTU9EVUxFX1BBUk1fREVTQyhsaXZlX3NlbGZ0ZXN0cywgXFxcIlJ1biBzZWxmdGVzdHMgYWZ0ZXIgZHJpdmVyIGluaXRpYWxpc2F0aW9uIG9uIHRoZSBsaXZlIHN5c3RlbSAoMDpkaXNhYmxlZCBbZGVmYXVsdF0sIDE6cnVuIHRlc3RzIHRoZW4gY29udGludWUsIC0xOnIuLi5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jLTU4OC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jOjU4OTptb2R1bGVfcGFyYW1fbmFtZWRfdW5zYWZlKHBlcmZfc2VsZnRlc3RzLCBpOTE1X3NlbGZ0ZXN0LnBlcmYsIGludCwgMDQwMCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2VsZnRlc3QuYy01OTAtTU9EVUxFX1BBUk1fREVTQyhwZXJmX3NlbGZ0ZXN0cywgXFxcIlJ1biBwZXJmb3JtYW5jZSBvcmllbnRhdGVkIHNlbGZ0ZXN0cyBhZnRlciBkcml2ZXIgaW5pdGlhbGlzYXRpb24gb24gdGhlIGxpdmUgc3lzdGVtICgwOmRpc2FibGVkIFtkZWZhdWx0XSwgMTpydW4gdGUuLi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMjgtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzoyOTojaW5jbHVkZSBcXFwiLi4vaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtMzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTU3OT1zdGF0aWMgaW50IHRlc3RfdGltZXIodm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy01OTItXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo1OTM6XFx0Zm9yX2VhY2hfcHJpbWVfbnVtYmVyKGRlbGF5LCBpOTE1X3NlbGZ0ZXN0LnRpbWVvdXRfamlmZmllcy8yKSB7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYy01OTQtXFx0XFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zd19mZW5jZS5jPTY2OT1zdGF0aWMgaW50IHRlc3RfZG1hX2ZlbmNlKHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjcxLVxcdHN0cnVjdCBpOTE1X3N3X2ZlbmNlICp0aW1lb3V0ID0gTlVMTCwgKm5vdCA9IE5VTEw7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc3dfZmVuY2UuYzo2NzI6XFx0dW5zaWduZWQgbG9uZyBkZWxheSA9IGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVzO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N3X2ZlbmNlLmMtNjczLVxcdHVuc2lnbmVkIGxvbmcgZW5kLCBzbGVlcDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3N5bmNtYXAuYy0yNC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zeW5jbWFwLmM6MjU6I2luY2x1ZGUgXFxcIi4uL2k5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zeW5jbWFwLmMtMjYtI2luY2x1ZGUgXFxcImk5MTVfcmFuZG9tLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYy0zMS0jaW5jbHVkZSBcXFwiaTkxNV9zY2F0dGVybGlzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jOjMyOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMtMzMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYy0xMC0jaW5jbHVkZSBcXFwiaTkxNV9kcnYuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYzoxMTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jLTEyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jOjExOiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYy0xMi0jaW5jbHVkZSBcXFwiaWd0X2ZsdXNoX3Rlc3QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oLTE0LSNpbmNsdWRlIFxcXCJpOTE1X3JlcXVlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuaDoxNTojaW5jbHVkZSBcXFwiaTkxNV9zZWxmdGVzdC5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oLTE2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYy0xMC1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jOjExOiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYy0xMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jLTEwLSNpbmNsdWRlIFxcXCJpOTE1X2Rydi5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jOjExOiNpbmNsdWRlIFxcXCJpOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfdW5jb3JlLmMtMjQtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jOjI1OiNpbmNsdWRlIFxcXCIuLi9pOTE1X3NlbGZ0ZXN0LmhcXFwiXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jLTI2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMjYtXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6Mjc6I2luY2x1ZGUgXFxcImk5MTVfc2VsZnRlc3QuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOC0jaW5jbHVkZSBcXFwiaTkxNV91dGlscy5oXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM9Mjc4PXN0YXRpYyBpbnQgaWd0X3NnX2FsbG9jKHZvaWQgKmlnbm9yZWQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOTctXFx0XFx0XFx0XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLFxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jOjI5ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0yOTktXFx0XFx0XFx0XFx0ZXJyID0gYWxsb2NfdGFibGUoXFx1MDAyNnB0LCBzeiwgc3osICpucGFnZXMsIFxcdTAwMjZwcm5nLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzA2LVxcdFxcdFxcdFxcdHByYW5kb21fc2VlZF9zdGF0ZShcXHUwMDI2cHJuZyxcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzozMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmMtMzA4LVxcdFxcdFxcdFxcdGVyciA9IGV4cGVjdF9wZm5fc2d0YWJsZShcXHUwMDI2cHQsICpucGFnZXMsIFxcdTAwMjZwcm5nLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM9MzI1PXN0YXRpYyBpbnQgaWd0X3NnX3RyaW0odm9pZCAqaWdub3JlZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTMzOS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYzozNDA6XFx0XFx0XFx0cHJhbmRvbV9zZWVkX3N0YXRlKFxcdTAwMjZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvc2NhdHRlcmxpc3QuYy0zNDEtXFx0XFx0XFx0ZXJyID0gYWxsb2NfdGFibGUoXFx1MDAyNnB0LCBwcmltZSwgbWF4LCAqbnBhZ2VzLCBcXHUwMDI2cHJuZyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTM1NS1cXHRcXHRcXHRcXHRcXHRwcmFuZG9tX3NlZWRfc3RhdGUoXFx1MDAyNnBybmcsXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3NjYXR0ZXJsaXN0LmM6MzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9zY2F0dGVybGlzdC5jLTM1Ny1cXHRcXHRcXHRcXHRcXHRlcnIgPSBleHBlY3RfcGZuX3NndGFibGUoXFx1MDAyNnB0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OTowMC45OTIwMDUxMDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjI0ODI4Mzc2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpOTE1IFNlbGZ0ZXN0IFBhcmFtZXRlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1vZHVsZV9wYXJhbV9uYW1lZF91bnNhZmVgIGRlY2xhcmF0aW9uOiBgbW9ja19zZWxmdGVzdHMsIGk5MTVfc2VsZnRlc3QubW9jaywgaW50LCAwNDAwYC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyBzZXR0aW5nIHVwIGFuIG9wdGlvbiB0byBydW4gc2VsZnRlc3RzIGZvciB0aGUgaTkxNSBkcml2ZXIuIFRoZSBkZXNjcmlwdGlvbiBzYXlzIGl0IGxldHMgeW91IHJ1biB0aGVzZSB0ZXN0cyB1c2luZyBcIm1vY2sgaGFyZHdhcmVcIi4gVGhlIHBhcmFtZXRlciBpdHNlbGYsIGBpOTE1Lm1vY2tfc2VsZnRlc3RzYCwgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYDBgIGRpc2FibGVzIGl0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCwgbWFrZXMgc2Vuc2UpLCBgMWAgcnVucyB0aGUgdGVzdHMgYmVmb3JlIGxvYWRpbmcgdGhlIGRyaXZlciwgYW5kIGAtMWAgcnVucyB0aGUgdGVzdHMgYW5kIHRoZW4gZXhpdHMuIFxuXG5UaGlzIGlzIGNsZWFybHkgYW4gaW50ZXJuYWwgZnJhbWV3b3JrLCBmb3IgdW5pdCB0ZXN0cyBzcGVjaWZpY2FsbHkuIEknbSBhc3N1bWluZyBpdCdzIGZvciBpOTE1LCBiZWNhdXNlIGl0J3MgaW4gdGhlIGBpOTE1X3NlbGZ0ZXN0YCBuYW1lc3BhY2UuIEJ1dCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgZXhhY3QgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGNyZWF0ZXMgYSBkZXZpY2Ugbm9kZSBvciBzb21lIGNoYXJhY3RlciBkZXZpY2UsIG9yIG9wZW5zIGl0c2VsZiB1cCB0byB1c2VybGFuZCBpbnRlcmFjdGlvbiB3aXRoIGFueSBmdXp6ZXJzLiBUbyB1bmRlcnN0YW5kIGhvdyBpdCB0cnVseSB3b3JrcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBgaTkxNV9tb2NrX3NlbGZ0ZXN0cygpYCBmdW5jdGlvbiBpdHNlbGYgYW5kIHNlZSB3aGF0IGl0IGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDA2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjIzLjQ3NDg0NTc1NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHR9XFxuIDMwMTpcXHRcXG4gMzAyOlxcdCNkZWZpbmUgcnVuX3NlbGZ0ZXN0cyh4LCBkYXRhKSBcXFxcXFxuIDMwMzpcXHRcXHRfX3J1bl9zZWxmdGVzdHMoI3gsIHgjI19zZWxmdGVzdHMsIEFSUkFZX1NJWkUoeCMjX3NlbGZ0ZXN0cyksIGRhdGEpXFxuIDMwNDpcXHRcXG4gMzA1OlxcdGludCBpOTE1X21vY2tfc2VsZnRlc3RzKHZvaWQpXFxuIDMwNjpcXHR7XFxuIDMwNzpcXHRcXHRpbnQgZXJyO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHRpZiAoIWk5MTVfc2VsZnRlc3QubW9jaylcXG4gMzEwOlxcdFxcdFxcdHJldHVybiAwO1xcbiAzMTE6XFx0XFxuIDMxMjpcXHRcXHRlcnIgPSBydW5fc2VsZnRlc3RzKG1vY2ssIE5VTEwpO1xcbiAzMTM6XFx0XFx0aWYgKGVycikge1xcbiAzMTQ6XFx0XFx0XFx0aTkxNV9zZWxmdGVzdC5tb2NrID0gZXJyO1xcbiAzMTU6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDMxNjpcXHRcXHR9XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdGlmIChpOTE1X3NlbGZ0ZXN0Lm1vY2sgXFx1MDAzYyAwKSB7XFxuIDMxOTpcXHRcXHRcXHRpOTE1X3NlbGZ0ZXN0Lm1vY2sgPSAtRU5PVFRZO1xcbiAzMjA6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDMyMTpcXHRcXHR9XFxuIDMyMjpcXHRcXG4gMzIzOlxcdFxcdHJldHVybiAwO1xcbiAzMjQ6XFx0fVxcbiAzMjU6XFx0XFxuIDMyNjpcXHRpbnQgaTkxNV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMzI3OlxcdHtcXG4gMzI4OlxcdFxcdHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcGRldl90b19pOTE1KHBkZXYpO1xcbiAzMjk6XFx0XFx0c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gXFx1MDAyNmk5MTUtXFx1MDAzZXVuY29yZTtcXG4gMzMwOlxcdFxcdGludCBlcnI7XFxuIDMzMTpcXHRcXHR1MzIgcGdfZW5hYmxlO1xcbiAzMzI6XFx0XFx0aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7XFxuIDMzMzpcXHRcXG4gMzM0OlxcdFxcdGlmICghaTkxNV9zZWxmdGVzdC5saXZlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OToyMy40NzQ5MzYyOTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTQ0NTAyMzE4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYG1vY2tfc2VsZnRlc3RzYCBhcmUgaW50ZXJuYWwgYW5kIGRvbid0IGNyZWF0ZSBhIERSTSBkZXZpY2UsIHdoaWNoIGlzbid0IHJlbGV2YW50IGhlcmUgYW55d2F5LiBgaTkxNV9wY2lfcHJvYmVgIG5lZWRzIEludGVsIFBDSSBoYXJkd2FyZS4gIFRoZSBrZXkgaXMgdGhlIGNyaXRlcmlhIGZvciAqbm90KiBmdXp6aW5nLCBhcyBvdXRsaW5lZCBpbiBzZWN0aW9uIDIgb2YgdGhlIHN5c3RlbSBwcm9tcHQuIFNwZWNpZmljYWxseSwgSSdtIGZvY3VzaW5nIG9uIHRoZSBjb25kaXRpb24gcmVsYXRlZCB0byBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZSBwcmltYXJ5IGNoYW5nZSBpcyBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX3NobWVtX3dyaXRlYmFja2AgZnVuY3Rpb24uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYGRybS9pOTE1YCBmYWxscyB1bmRlciB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gIFRoZSBwcm9tcHQgZXhwbGljaXRseSBsaXN0cyBleGFtcGxlcyBsaWtlIGBhbWRncHVgIHdoaWNoIGFsc28gbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUgdG8gdGVzdCBpbiBhIG1lYW5pbmdmdWwgd2F5LlxuXG5ZZXMsIGBkcm0vaTkxNWAgKmlzKiBJbnRlbCdzIEdQVSBkcml2ZXIsIHN1cHBvcnRpbmcgSW50ZWwgaW50ZWdyYXRlZCBhbmQgZGlzY3JldGUgR1BVcy4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMsIHJlcXVpcmluZyBJbnRlbCBoYXJkd2FyZSwgYW5kIGNydWNpYWxseSwgaXQgd29uJ3QgcnVuIGNvcnJlY3RseSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMuIEkgZG91YmxlLWNoZWNrZWQ7IHRoZSBjb2RlIGlzICplbnRpcmVseSogY29udGFpbmVkIHdpdGhpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvYC4gTm8gb3RoZXIgY2FsbGVycyBvdXRzaWRlIHRoZSBgZHJtL2k5MTVgIGRyaXZlci5cblxuU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgaXMgd2l0aGluIGEgZHJpdmVyIHRoYXQgbmVlZHMgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuIFRoZXJlZm9yZSwgSSBjYW4gY29uZmlkZW50bHkgc2V0OlxuXG4qICAgYFdvcnRoRnV6emluZyA9IGZhbHNlYFxuKiAgIGBGb2N1c1N5bWJvbHMgPSBbXWBcbiogICBgRW5hYmxlQ29uZmlncyA9IFtdYFxuXG5UaGUgcmVhc29uaW5nIGlzIGNvbmNpc2UgYW5kIGNsZWFyOiB0aGUgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiB0aGUgSW50ZWwgaTkxNSBEUk0gZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBJbnRlbCBHUFUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gQWxsIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5ODMsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDExOjU5OjM3LjkyNTE3MDg4OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3NobWVtX3dyaXRlYmFja2AgaW4gYGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgSW50ZWwgaTkxNSBHUFUgZHJpdmVyLiBpOTE1IGlzIGEgdmVuZG9yLXNwZWNpZmljIEdQVSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIEludGVsIGdyYXBoaWNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAoR0NFKS4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc2htZW1fd3JpdGViYWNrYCBpbiBgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmNgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBJbnRlbCBpOTE1IEdQVSBkcml2ZXIuIGk5MTUgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgR1BVIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgSW50ZWwgZ3JhcGhpY3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChHQ0UpLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQxMTo1OTozNy45MjUyMDA2MDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwpq4k[1] Phase: Running StartedAt: 2026-09-14 11:59:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwpq4k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 11:59:48 +0000 UTC FinishedAt: 2026-09-14 11:59:53 +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,}