Name: series-workflow52pgh Phase: Failed StartedAt: 2026-09-07 19:15:27 +0000 UTC FinishedAt: 2026-09-07 19:54:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52pgh[0] Phase: Succeeded StartedAt: 2026-09-07 19:15:27 +0000 UTC FinishedAt: 2026-09-07 19:54:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52pgh[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 19:15:27 +0000 UTC FinishedAt: 2026-09-07 19:54:49 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjg4Mjk3ZGZmMDUzY2Q0NGI3NmE3ZTk1YTEzMDU1MzliNmI1MDg0ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTk6NTQ6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmNcbmluZGV4IDhiMGQ3NmE0N2Q5ZjAuLjYzZjg4MzJmOWIxNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG5AQCAtMjExLDkgJiM0MzsyMTEsOSBAQCBzdGF0aWMgdm9pZCBjaGFubmVsX3JlbW92ZShzdHJ1Y3QgY2hhbm5lbCAqY2gpXG4gXHR3aGlsZSAoKmMpIHtcbiBcdFx0aWYgKCpjID09IGNoKSB7XG4gXHRcdFx0KmMgPSBjaC1cdTAwM2VuZXh0O1xuLVx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4mIzQzO1x0XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmNoLVx1MDAzZXRpbWVyLnRsKTtcbiBcdFx0XHRpZiAoSVNfTVBDKGNoKSlcbi1cdFx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2Vzd2VlcF90aW1lcik7XG4mIzQzO1x0XHRcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2gtXHUwMDNlc3dlZXBfdGltZXIudGwpO1xuIFxuIFx0XHRcdGtmcmVlX2ZzbShjaC1cdTAwM2Vmc20pO1xuIFx0XHRcdGNsZWFyX25vcm1hbGl6ZWRfY2RhKFx1MDAyNmNoLVx1MDAzZWNjd1s0XSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9mc20uYyBiL2RyaXZlcnMvczM5MC9uZXQvZnNtLmNcbmluZGV4IDliODYyMmFlZjgwN2IuLjhkMmU5YmJiNzRhMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG5AQCAtMTcxLDEyICYjNDM7MTcxLDkgQEAgZnNtX2FkZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdCAgICAgICB0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyAmIzQzOyAobWlsbGlzZWMgKiBIWikgLyAxMDAwO1xuLVx0YWRkX3RpbWVyKFx1MDAyNnRoaXMtXHUwMDNldGwpO1xuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIG1vZF90aW1lcihcdTAwMjZ0aGlzLVx1MDAzZXRsLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXG5AQCAtMTg5LDEyICYjNDM7MTg2LDkgQEAgZnNtX21vZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdFx0dGhpcy1cdTAwM2VmaS1cdTAwM2VuYW1lLCB0aGlzLCBtaWxsaXNlYyk7XG4gI2VuZGlmXG4gXG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4tXHR0aW1lcl9zZXR1cChcdTAwMjZ0aGlzLVx1MDAzZXRsLCBmc21fZXhwaXJlX3RpbWVyLCAwKTtcbiBcdHRoaXMtXHUwMDNlZXhwaXJlX2V2ZW50ID0gZXZlbnQ7XG4gXHR0aGlzLVx1MDAzZWV2ZW50X2FyZyA9IGFyZztcbi1cdHRoaXMtXHUwMDNldGwuZXhwaXJlcyA9IGppZmZpZXMgJiM0MzsgKG1pbGxpc2VjICogSFopIC8gMTAwMDtcbi1cdGFkZF90aW1lcihcdTAwMjZ0aGlzLVx1MDAzZXRsKTtcbiYjNDM7XHRtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKG1pbGxpc2VjKSk7XG4gfVxuIFxuIEVYUE9SVF9TWU1CT0woaW5pdF9mc20pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY4ODI5N2RmZjA1M2NkNDRiNzZhN2U5NWExMzA1NTM5YjZiNTA4NGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDE5OjU0OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMKaW5kZXggOGIwZDc2YTQ3ZDlmMC4uNjNmODgzMmY5YjE0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jCkBAIC0yMTEsOSAmIzQzOzIxMSw5IEBAIHN0YXRpYyB2b2lkIGNoYW5uZWxfcmVtb3ZlKHN0cnVjdCBjaGFubmVsICpjaCkKIAl3aGlsZSAoKmMpIHsKIAkJaWYgKCpjID09IGNoKSB7CiAJCQkqYyA9IGNoLSZndDtuZXh0OwotCQkJZnNtX2RlbHRpbWVyKCZhbXA7Y2gtJmd0O3RpbWVyKTsKJiM0MzsJCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2NoLSZndDt0aW1lci50bCk7CiAJCQlpZiAoSVNfTVBDKGNoKSkKLQkJCQlmc21fZGVsdGltZXIoJmFtcDtjaC0mZ3Q7c3dlZXBfdGltZXIpOwomIzQzOwkJCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2NoLSZndDtzd2VlcF90aW1lci50bCk7CiAKIAkJCWtmcmVlX2ZzbShjaC0mZ3Q7ZnNtKTsKIAkJCWNsZWFyX25vcm1hbGl6ZWRfY2RhKCZhbXA7Y2gtJmd0O2Njd1s0XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jIGIvZHJpdmVycy9zMzkwL25ldC9mc20uYwppbmRleCA5Yjg2MjJhZWY4MDdiLi44ZDJlOWJiYjc0YTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMKQEAgLTE3MSwxMiAmIzQzOzE3MSw5IEBAIGZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpCiAJICAgICAgIHRoaXMtJmd0O2ZpLSZndDtuYW1lLCB0aGlzLCBtaWxsaXNlYyk7CiAjZW5kaWYKIAotCXRpbWVyX3NldHVwKCZhbXA7dGhpcy0mZ3Q7dGwsIGZzbV9leHBpcmVfdGltZXIsIDApOwogCXRoaXMtJmd0O2V4cGlyZV9ldmVudCA9IGV2ZW50OwogCXRoaXMtJmd0O2V2ZW50X2FyZyA9IGFyZzsKLQl0aGlzLSZndDt0bC5leHBpcmVzID0gamlmZmllcyAmIzQzOyAobWlsbGlzZWMgKiBIWikgLyAxMDAwOwotCWFkZF90aW1lcigmYW1wO3RoaXMtJmd0O3RsKTsKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIG1vZF90aW1lcigmYW1wO3RoaXMtJmd0O3RsLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTsKIH0KIAogLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovCkBAIC0xODksMTIgJiM0MzsxODYsOSBAQCBmc21fbW9kdGltZXIoZnNtX3RpbWVyICp0aGlzLCBpbnQgbWlsbGlzZWMsIGludCBldmVudCwgdm9pZCAqYXJnKQogCQl0aGlzLSZndDtmaS0mZ3Q7bmFtZSwgdGhpcywgbWlsbGlzZWMpOwogI2VuZGlmCiAKLQl0aW1lcl9kZWxldGUoJmFtcDt0aGlzLSZndDt0bCk7Ci0JdGltZXJfc2V0dXAoJmFtcDt0aGlzLSZndDt0bCwgZnNtX2V4cGlyZV90aW1lciwgMCk7CiAJdGhpcy0mZ3Q7ZXhwaXJlX2V2ZW50ID0gZXZlbnQ7CiAJdGhpcy0mZ3Q7ZXZlbnRfYXJnID0gYXJnOwotCXRoaXMtJmd0O3RsLmV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7Ci0JYWRkX3RpbWVyKCZhbXA7dGhpcy0mZ3Q7dGwpOwomIzQzOwltb2RfdGltZXIoJmFtcDt0aGlzLSZndDt0bCwgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKG1pbGxpc2VjKSk7CiB9CiAKIEVYUE9SVF9TWU1CT0woaW5pdF9mc20pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZyb20gdGhlIHN0YXJ0LiBOb3csIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL3MzOTAvbmV0L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGN0Y21fbWFpbi5jYCBhbmQgYGZzbS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2lsbCB0aGlzIGV2ZW4gYXBwbHkgY2xlYW5seSwgZ2l2ZW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIHRoZSAqczM5MCogY29tcG9uZW50PyYjMzQ7IAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgcmVhY2hhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgbmV0d29yayBtb2R1bGUuIE15IG5leHQgc3RlcCBpcyB0byB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIHRvIHNlZSBpZiB0aGUgbW9kdWxlIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIHRoZW4gYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL3MzOTAvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhpcyBjaGFuZ2Ugd2lsbCBpbXBhY3QgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBjcm9zcyBjb21waWxhdGlvbiBvY2N1cnJpbmcgb3IgaWYgdGhlc2UgYXJlIHg4Ni9hbWQ2NCBzcGVjaWZpYyBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NUQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc9Mj1tZW51IFwmIzM0O1MvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNC1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo1OmNvbmZpZyBDVENNXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNi1cdGRlZl90cmlzdGF0ZSBtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTc4PWNvbmZpZyBDQ1dHUk9VUFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVx0dHJpc3RhdGVcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo4MDpcdGRlZmF1bHQgKENUQ00gfHwgUUVUSCB8fCBTTUMpXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODEtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT04PWN0Y20teSAmIzQzOz0gY3RjbV9tYWluLm8gY3RjbV9mc21zLm8gY3RjbV9tcGMubyBjdGNtX3N5c2ZzLm8gY3RjbV9kYnVnLm9cbmRyaXZlcnMvczM5MC9uZXQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ1RDTSkgJiM0Mzs9IGN0Y20ubyBmc20ub1xuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfU01TR0lVQ1YpICYjNDM7PSBzbXNnaXVjdi5vXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy0yMy1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MjQ6c3RydWN0IGN0Y21fZGJmX2luZm8gY3RjbV9kYmZbQ1RDTV9EQkZfSU5GT1NdID0ge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNTpcdFtDVENNX0RCRl9TRVRVUF0gICAgID0ge1wmIzM0O2N0Y19zZXR1cFwmIzM0OywgOCwgMSwgNjQsIENUQ19EQkZfSU5GTywgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI2Olx0W0NUQ01fREJGX0VSUk9SXSAgICAgPSB7XCYjMzQ7Y3RjX2Vycm9yXCYjMzQ7LCA4LCAxLCA2NCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI3Olx0W0NUQ01fREJGX1RSQUNFXSAgICAgPSB7XCYjMzQ7Y3RjX3RyYWNlXCYjMzQ7LCA4LCAxLCA2NCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI4Olx0W0NUQ01fREJGX01QQ19TRVRVUF0gPSB7XCYjMzQ7bXBjX3NldHVwXCYjMzQ7LCA4LCAxLCA4MCwgQ1RDX0RCRl9JTkZPLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6Mjk6XHRbQ1RDTV9EQkZfTVBDX0VSUk9SXSA9IHtcJiMzNDttcGNfZXJyb3JcJiMzNDssIDgsIDEsIDgwLCBDVENfREJGX0VSUk9SLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzA6XHRbQ1RDTV9EQkZfTVBDX1RSQUNFXSA9IHtcJiMzNDttcGNfdHJhY2VcJiMzNDssIDgsIDEsIDgwLCBDVENfREJGX0VSUk9SLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzEtfTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jPTMzPXZvaWQgY3RjbV91bnJlZ2lzdGVyX2RiZl92aWV3cyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzUtXHRpbnQgeDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzY6XHRmb3IgKHggPSAwOyB4IFx1MDAzYyBDVENNX0RCRl9JTkZPUzsgeCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzctXHRcdGRlYnVnX3VucmVnaXN0ZXIoY3RjbV9kYmZbeF0uaWQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM9NDI9aW50IGN0Y21fcmVnaXN0ZXJfZGJmX3ZpZXdzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy00NC1cdGludCB4O1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzo0NTpcdGZvciAoeCA9IDA7IHggXHUwMDNjIENUQ01fREJGX0lORk9TOyB4JiM0MzsmIzQzOykge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy00Ni1cdFx0LyogcmVnaXN0ZXIgdGhlIGFyZWFzICovXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC03LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4OiNpZm5kZWYgX0NUQ01fREJVR19IX1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5OiNkZWZpbmUgX0NUQ01fREJVR19IX1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTQ1PWVudW0gY3RjbV9kYmZfbmFtZXMge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0NjpcdENUQ01fREJGX1NFVFVQLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0NzpcdENUQ01fREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0ODpcdENUQ01fREJGX1RSQUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0OTpcdENUQ01fREJGX01QQ19TRVRVUCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6NTA6XHRDVENNX0RCRl9NUENfRVJST1IsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUxOlx0Q1RDTV9EQkZfTVBDX1RSQUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo1MjpcdENUQ01fREJGX0lORk9TXHQvKiBtdXN0IGJlIGxhc3QgZWxlbWVudCAqL1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC01My19O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg9NTU9c3RydWN0IGN0Y21fZGJmX2luZm8ge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjMtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjY0OmV4dGVybiBzdHJ1Y3QgY3RjbV9kYmZfaW5mbyBjdGNtX2RiZltDVENNX0RCRl9JTkZPU107XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTY1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg9NzE9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpzdHJ0YWlsKGNvbnN0IGNoYXIgKnMsIGludCBuKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzYtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjc3OiNkZWZpbmUgQ1RDTV9GVU5UQUlMIHN0cnRhaWwoKGNoYXIgKilfX2Z1bmNfXywgMTYpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTc4LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3OTojZGVmaW5lIENUQ01fREJGX1RFWFQobmFtZSwgbGV2ZWwsIHRleHQpIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgwLVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4MTpcdFx0ZGVidWdfdGV4dF9ldmVudChjdGNtX2RiZltDVENNX0RCRl8jI25hbWVdLmlkLCBsZXZlbCwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgyLVx0fSB3aGlsZSAoMClcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODMtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjg0OiNkZWZpbmUgQ1RDTV9EQkZfSEVYKG5hbWUsIGxldmVsLCBhZGRyLCBsZW4pIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg1LVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4NjpcdFx0ZGVidWdfZXZlbnQoY3RjbV9kYmZbQ1RDTV9EQkZfIyNuYW1lXS5pZCwgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODctXHRcdFx0XHRcdGxldmVsLCAodm9pZCAqKShhZGRyKSwgbGVuKTsgXFxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg5LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5MDojZGVmaW5lIENUQ01fREJGX1RFWFRfKG5hbWUsIGxldmVsLCB0ZXh0Li4uKSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5MTpcdGN0Y21fZGJmX2xvbmd0ZXh0KENUQ01fREJGXyMjbmFtZSwgbGV2ZWwsIHRleHQpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTkyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtOTctICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjk4OiNkZWZpbmUgQ1RDTV9EQkZfREVWX05BTUUoY2F0LCBkZXYsIHRleHQpIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTk5LVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMDA6XHRcdENUQ01fREJGX1RFWFRfKGNhdCwgQ1RDX0RCRl9JTkZPLCBcJiMzNDslcyglcykgOi0gJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwMTpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCB0ZXh0KTsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTAyLVx0fSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwNS1cdGRvIHsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTA2Olx0XHRDVENNX0RCRl9URVhUXyhNUENfIyNjYXQsIENUQ19EQkZfSU5GTywgXCYjMzQ7JXMoJXMpIDo9ICVzXCYjMzQ7LCBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMDc6XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOC1cdH0gd2hpbGUgKDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTEwOiNkZWZpbmUgQ1RDTVlfREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTEtXHRkbyB7IFxcXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTQtXHRcdGVsc2UgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTE1Olx0XHRcdENUQ01fREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KTsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTE2LVx0fSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyMi0gKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTIzOiNkZWZpbmUgQ1RDTV9EQkZfREVWKGNhdCwgZGV2LCB0ZXh0KSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjQtXHRkbyB7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNTpcdFx0Q1RDTV9EQkZfVEVYVF8oY2F0LCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVwKSA6LTogJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNjpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyNy1cdH0gd2hpbGUgKDApXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMzAtXHRkbyB7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMTpcdFx0Q1RDTV9EQkZfVEVYVF8oTVBDXyMjY2F0LCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVwKSA6PTogJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMjpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzMy1cdH0gd2hpbGUgKDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzNC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTM1OiNkZWZpbmUgQ1RDTVlfREJGX0RFVihjYXQsIGRldiwgdGV4dCkgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM2LVx0ZG8geyBcXFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM5LVx0XHRlbHNlIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjE0MDpcdFx0XHRDVENNX0RCRl9ERVYoY2F0LCBkZXYsIHRleHQpOyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xNDEtXHR9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTkwPXZvaWQgY3RjbV9jY3dfY2hlY2tfcmMoc3RydWN0IGNoYW5uZWwgKmNoLCBpbnQgcmMsIGNoYXIgKm1zZylcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTkxLXtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTkyOlx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE5My1cdFx0XCYjMzQ7JXMoJXMpOiAlczogJTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTk0Olx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBtc2csIHJjKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTk1LVx0c3dpdGNoIChyYykge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MjEzPXZvaWQgY3RjbV9wdXJnZV9za2JfcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxNi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjE3Olx0Q1RDTV9EQkZfVEVYVChUUkFDRSwgQ1RDX0RCRl9ERUJVRywgX19mdW5jX18pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTgtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0yNDU9c3RhdGljIHZvaWQgY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTI1NS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjU2Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslcyglcyk6ICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY2gtXHUwMDNlaWQsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjU3LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjYyLVx0aWYgKGNoLVx1MDAzZWlyYi1cdTAwM2VzY3N3LmNtZC5jb3VudCAhPSAwKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoyNjM6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNjQtXHRcdFx0XCYjMzQ7JXMoJXMpOiBUWCBub3QgY29tcGxldGUsIHJlbWFpbmluZyAlZCBieXRlc1wmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjY1Olx0XHRcdCAgICAgQ1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjY2LVx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwNi1cdFx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzA3Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cdFx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTMzMz12b2lkIGN0Y21fY2h4X3R4aWRsZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMzOC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzM5Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslcyglcyk6ICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY2gtXHUwMDNlaWQsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzQwLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzU0PXN0YXRpYyB2b2lkIGNoeF9yeChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM2Ni1cdGlmIChsZW4gXHUwMDNjIDgpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzY3Olx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM2OC1cdFx0XHRcJiMzNDslcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXHUwMDNjIDhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM2OTpcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgbGVuKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzcwLVx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc0LVx0aWYgKGxlbiBcdTAwM2UgY2gtXHUwMDNlbWF4X2J1ZnNpemUpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzc1Olx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM3Ni1cdFx0XHRcJiMzNDslcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXHUwMDNlICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozNzc6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBsZW4sIGNoLVx1MDAzZW1heF9idWZzaXplKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc4LVx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzg2LVx0c3dpdGNoIChjaC1cdTAwM2Vwcm90b2NvbCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozODc6XHRjYXNlIENUQ01fUFJPVE9fUzM5MDpcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzg4Olx0Y2FzZSBDVENNX1BST1RPX09TMzkwOlxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODktXHRcdGNoZWNrX2xlbiA9IGJsb2NrX2xlbiAmIzQzOyAyO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk1LVx0aWYgKChsZW4gXHUwMDNjIGJsb2NrX2xlbikgfHwgKGxlbiBcdTAwM2UgY2hlY2tfbGVuKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozOTY6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk3LVx0XHRcdFwmIzM0OyVzKCVzKTogZ290IGJsb2NrIGxlbmd0aCAlZCAhPSByeCBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM5ODpcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUsIGJsb2NrX2xlbiwgbGVuKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk5LVx0XHRpZiAoZG9fZGVidWcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz00MzA9c3RhdGljIHZvaWQgY2h4X2ZpcnN0aW8oZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00MzUtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQzNjpcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM3LVx0XHRcJiMzNDslcyglcykgOiAlMDJ4XCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0Mzg6XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQsIGZzbXN0YXRlKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM5LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDQxLVx0aWYgKGZzbXN0YXRlID09IENUQ19TVEFURV9UWElETEUpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0MjpcdFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ0My1cdFx0XHRcJiMzNDslcyglcyk6IHJlbW90ZSBzaWRlIGlzc3VlZCBSRUFEPywgaW5pdC5cXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0NDpcdFx0XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDQ4LVx0aWYgKChmc21zdGF0ZSA9PSBDVENfU1RBVEVfU0VUVVBXQUlUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDQ5Olx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCA9PSBDVENNX1BST1RPX09TMzkwKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTAtXHRcdC8qIE9TLzM5MCByZXNwLiB6L09TICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MTpcdFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUyOlx0XHRcdCooKF9fdTE2ICopY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWRhdGEpID0gQ1RDTV9JTklUSUFMX0JMT0NLTEVOO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NTM6XHRcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ1NC1cdFx0XHRcdCAgICAgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NjgtXHQgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDY5Olx0aWYgKChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9XUklURSkgfHxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcwOlx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzM6XHQqKChfX3UxNiAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc0LVx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gMjtcdC8qIFRyYW5zZmVyIG9ubHkgbGVuZ3RoICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3NS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDc2Olx0ZnNtX25ld3N0YXRlKGZpLCAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRClcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc3LVx0XHQgICAgID8gQ1RDX1NUQVRFX1JYSU5JVCA6IENUQ19TVEFURV9UWElOSVQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDkwLVx0ICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MTpcdGlmICgoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MjpcdCAgICAoY2gtXHUwMDNlcHJvdG9jb2wgPT0gQ1RDTV9QUk9UT19TMzkwKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00OTMtXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBjaC1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01MDg9c3RhdGljIHZvaWQgY2h4X3J4aWRsZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUxNy1cdGJ1ZmxlbiA9ICooKF9fdTE2ICopY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWRhdGEpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MTg6XHRDVENNX1BSX0RFQlVHKFwmIzM0OyVzOiAlczogSW5pdGlhbCBSWCBjb3VudCA9ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MTktXHRcdFx0X19mdW5jX18sIGRldi1cdTAwM2VuYW1lLCBidWZsZW4pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MjAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjUyMTpcdGlmIChidWZsZW4gXHUwMDNlPSBDVENNX0lOSVRJQUxfQkxPQ0tMRU4pIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTIyLVx0XHRpZiAoY3RjbV9jaGVja2FsbG9jX2J1ZmZlcihjaCkpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzItXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MzM6XHRcdENUQ01fUFJfREVCVUcoXCYjMzQ7JXM6ICVzOiBJbml0aWFsIFJYIGNvdW50ICVkIG5vdCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTM0LVx0XHRcdFx0X19mdW5jX18sIGRldi1cdTAwM2VuYW1lLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MzU6XHRcdFx0XHRcdGJ1ZmxlbiwgQ1RDTV9JTklUSUFMX0JMT0NLTEVOKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTM2LVx0XHRjaHhfZmlyc3RpbyhmaSwgZXZlbnQsIGFyZyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTUyLVx0dW5zaWduZWQgbG9uZyBzYXZlZmxhZ3MgPSAwO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1NTM6XHRpbnQgdGltZW91dCA9IENUQ01fVElNRV81X1NFQztcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU0LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU3LVx0XHR0aW1lb3V0ID0gMTUwMDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTU4Olx0XHRDVENNX1BSX0RFQlVHKFwmIzM0O2VudGVyICVzOiBjcD0laSBjaD0weCVwIGlkPSVzXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTktXHRcdFx0XHRfX2Z1bmNfXywgc21wX3Byb2Nlc3Nvcl9pZCgpLCBjaCwgY2gtXHUwMDNlaWQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTYyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfU0VUVVBXQUlUKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYzOlx0Q1RDTV9DQ1dfRFVNUCgoY2hhciAqKVx1MDAyNmNoLVx1MDAzZWNjd1s2XSwgc2l6ZW9mKHN0cnVjdCBjY3cxKSAqIDIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NjQtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01OTEtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MjpcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVzKTogJXNcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MzpcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTk0Olx0XHQoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgPyBcJiMzNDtSWFwmIzM0OyA6IFwmIzM0O1RYXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTk1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjAwLVx0fVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MDE6XHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MDItXHRcdGNoLVx1MDAzZWNjd1sxXS5jbWRfY29kZSA9IENDV19DTURfUkVBRDtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYxMC1cdGlmIChjdGNtX2NoZWNrYWxsb2NfYnVmZmVyKGNoKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTE6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTItXHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyB0cmFuc19za2IgYWxsb2MgZGVsYXllZCBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjEzLVx0XHRcdFwmIzM0O3VudGlsIGZpcnN0IHRyYW5zZmVyXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTQ6XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjE1Olx0XHRcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYxNi1cdFx0XHRcdFwmIzM0O1JYXCYjMzQ7IDogXCYjMzQ7VFhcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NjUwPV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTY2MC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjYxOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02ODk9c3RhdGljIHZvaWQgY3RjbV9jaHhfY2xlYW51cChmc21faW5zdGFuY2UgKmZpLCBpbnQgc3RhdGUsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02OTQtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjY5NTpcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk2LVx0XHRcdFwmIzM0OyVzKCVzKTogJXNbJWRdXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2OTc6XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaWQsIHN0YXRlKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk4LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzExLVx0Y2gtXHUwMDNldGhfc2VxX251bSA9IDB4MDA7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjcxMjpcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTcxMy1cdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmNoLVx1MDAzZWlvX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTc3ND1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zZXR1cGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc4OS1cdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkwOlx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc5MS1cdFx0aWYgKCFJU19NUEMoY2gpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo3OTI6XHRcdCAgICAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkzLVx0XHRcdGludCByYyA9IGNjd19kZXZpY2VfaGFsdChjaC1cdTAwM2VjZGV2LCAwKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwMC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAxOlx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfQ1JJVCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODAyLVx0XHRcJiMzNDslcyglcykgOiAlcyBlcnJvciBkdXJpbmcgJXMgY2hhbm5lbCBzZXR1cCBzdGF0ZT0lc1xcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAzOlx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MDQ6XHRcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/IFwmIzM0O1JYXCYjMzQ7IDogXCYjMzQ7VFhcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwNS1cdFx0ZnNtX2dldHN0YXRlX3N0cihmaSkpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDYtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgwNzpcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwOC1cdFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODI0PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzMS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODMyOlx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzMtXHRcdFwmIzM0OyVzOiAlc1slZF0gb2YgJXNcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgzNDpcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBldmVudCwgZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzUtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzctXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgzODpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVx0b2xkc3RhdGUgPSBmc21fZ2V0c3RhdGUoZmkpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODYzPXN0YXRpYyB2b2lkIGN0Y21fY2h4X3J4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTg3OS1cdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODgwOlx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjg4MTpcdFx0XHQgICAgICAgXCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODgyLVx0XHRcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04ODYtXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODc6XHRcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODg6XHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODg5LVx0XHRcdGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTkwNT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9yeGluaXRmYWlsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTEwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTE6XHRDVENNX0RCRl9URVhUXyhFUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTEyLVx0XHRcdFwmIzM0OyVzKCVzKTogUlggJXMgYnVzeSwgaW5pdC4gZmFpbFwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTEzOlx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTQtXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9SWEVSUik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05MjU9c3RhdGljIHZvaWQgY3RjbV9jaHhfcnhkaXNjKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTMxLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MzI6XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTkzMy1cdFx0XHRcJiMzNDslczogJXM6IHJlbW90ZSBkaXNjb25uZWN0IC0gcmUtaW5pdCAuLi5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjkzNDpcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MzUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTQyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfRFRFUk0pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NDM6XHRjaDIgPSBwcml2LVx1MDAzZWNoYW5uZWxbQ1RDTV9XUklURV07XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0NC1cdGZzbV9uZXdzdGF0ZShjaDItXHUwMDNlZnNtLCBDVENfU1RBVEVfRFRFUk0pO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9OTU3PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3R4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3MS1cdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTcyOlx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjk3MzpcdFx0XHQgICAgICAgXCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTc0LVx0XHRcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05NzgtXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5Nzk6XHRcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5ODA6XHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTgxLVx0XHRcdGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk5Nz1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDAzLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDA0Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDtFbnRlcjogJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMDUtXHRcdFx0X19mdW5jX18sIHNtcF9wcm9jZXNzb3JfaWQoKSwgY2gsIGNoLVx1MDAzZWlkKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMDktXHRcdHN0cnVjdCBtcGNfZ3JvdXAgKmdwdHIgPSBwcml2LVx1MDAzZW1wY2c7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTA6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0lORk8sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMTEtXHRcdFx0XHRcJiMzNDslczogJXM6IHJldHJpZXMgZXhjZWVkZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTI6XHRcdFx0XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDEzLVx0XHRmc21fZXZlbnQocHJpdi1cdTAwM2Vmc20sIERFVl9FVkVOVF9UWERPV04sIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDIwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDIxOlx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjItXHRcdFx0XCYjMzQ7JXMgOiAlczogcmV0cnkgJWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMjM6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBjaC1cdTAwM2VyZXRyeSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjQtXHRza2IgPSBza2JfcGVlayhcdTAwMjZjaC1cdTAwM2Vpb19xdWV1ZSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDMwLVx0XHRpZiAoc2V0X25vcm1hbGl6ZWRfY2RhKFx1MDAyNmNoLVx1MDAzZWNjd1s0XSwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzE6XHRcdFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfSU5GTyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAzMi1cdFx0XHRcdFwmIzM0OyVzOiAlczogSURBTCBhbGxvYyBmYWlsZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzM6XHRcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzQtXHRcdFx0ZnNtX2V2ZW50KHByaXYtXHUwMDNlZnNtLCBERVZfRVZFTlRfVFhET1dOLCBkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTA2Nj1zdGF0aWMgdm9pZCBjdGNtX2NoeF9pb2ZhdGFsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3My1cdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwNzQ6XHRDVENNX0RCRl9URVhUXyhFUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3NS1cdFx0XCYjMzQ7JXM6ICVzOiAlcyB1bnJlY292ZXJhYmxlIGNoYW5uZWwgZXJyb3JcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwNzY6XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCwgcmQgPT0gQ1RDTV9SRUFEID8gXCYjMzQ7UlhcJiMzNDsgOiBcJiMzNDtUWFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwNzctXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDgxLVx0fVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDgyOlx0aWYgKHJkID09IENUQ01fUkVBRCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDgzLVx0XHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9SWEVSUik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xMjE2PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTIzMi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTIzMzpcdENUQ01fUFJfREVCVUcoXCYjMzQ7RW50ZXIgJXM6ICVzIGNwOiVpXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjM0LVx0XHRcdF9fZnVuY19fLCBkZXYtXHUwMDNlbmFtZSwgc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDAtXHRpZiAoY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50ICE9IDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyNDE6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9ERUJVRyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI0Mi1cdFx0XHRcJiMzNDslcyglcyk6IFRYIG5vdCBjb21wbGV0ZSwgcmVtYWluaW5nICVkIGJ5dGVzXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjQzOlx0XHRcdCAgICAgQ1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI0NC1cdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjc3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjc4Olx0Q1RDTV9QUl9EQkdEQVRBKFwmIzM0OyVzOiBidWlsZGluZyB0cmFuc19za2IgZnJvbSBjb2xsZWN0X3FcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3OS1cdFx0ICAgICAgIFwmIzM0OyBkYXRhX3NwYWNlOiUwNHhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjkxLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjkyOlx0XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTMtXHRcdFx0XHRfX2Z1bmNfXywgY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyOTQ6XHRcdENUQ01fUFJfREJHREFUQShcJiMzNDslczogcGR1IGhlYWRlciBhbmQgZGF0YSBmb3IgdXBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI5NS1cdFx0XHRcdFwmIzM0OyB0byAzMiBieXRlcyBzZW50IHRvIHZ0YW1cXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI5NjpcdFx0Q1RDTV9EM19EVU1QKChjaGFyICopcF9oZWFkZXIsIG1pbl90KGludCwgc2tiLVx1MDAzZWxlbiwgMzIpKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI5Ny1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMTktXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjA6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IFRvVlRBTV90aF9zZXE9ICUwOHhcXG5cJiMzNDsgLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzIxLVx0XHRcdFx0XHRfX2Z1bmNfXywgY2gtXHUwMDNldGhfc2VxX251bSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjItXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjM6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjQtXHRcdCAgICAgICBfX2Z1bmNfXywgY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjU6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHVwLXRvLTUwIGJ5dGVzIG9mIHRyYW5zX3NrYiBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMyNi1cdFx0XHRcJiMzNDtkYXRhIHRvIHZ0YW0gZnJvbSBjb2xsZWN0X3FcXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyNzpcdENUQ01fRDNfRFVNUCgoY2hhciAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzI4LVx0XHRcdFx0bWluX3QoaW50LCBjaC1cdTAwM2V0cmFuc19za2ItXHUwMDNlbGVuLCA1MCkpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMzMi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMzMzpcdENUQ01fUFJfREJHREFUQShcJiMzNDtjY3djZGE9MHglcCBkYXRhPTB4JXBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMzQtXHRcdFx0KHZvaWQgKikodTY0KWRtYTMyX3RvX3UzMihjaC1cdTAwM2VjY3dbMV0uY2RhKSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDAtXHRcdGNoLVx1MDAzZXRyYW5zX3NrYiA9IE5VTEw7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNDE6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0Mi1cdFx0XHRcJiMzNDslczogJXM6IElEQUwgYWxsb2MgZmFpbGVkXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQzOlx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDQtXHRcdGZzbV9ldmVudChwcml2LVx1MDAzZW1wY2ctXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQ3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQ4Olx0Q1RDTV9QUl9EQkdEQVRBKFwmIzM0O2Njd2NkYT0weCVwIGRhdGE9MHglcFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0OS1cdFx0XHQodm9pZCAqKSh1NjQpZG1hMzJfdG9fdTMyKGNoLVx1MDAzZWNjd1sxXS5jZGEpLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM1Mi1cdGNoLVx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VsZW47XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNTM6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTQtXHRjaC1cdTAwM2Vwcm9mLnNlbmRfc3RhbXAgPSBqaWZmaWVzO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTM3OT1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzg5LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzkwOlx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslczogJXM6IGNwOiVpICVzIG1heGJ1ZiA6ICUwNHgsIGxlbjogJTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM5MTpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBzbXBfcHJvY2Vzc29yX2lkKCksXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTItXHRcdFx0XHRjaC1cdTAwM2VpZCwgY2gtXHUwMDNlbWF4X2J1ZnNpemUsIGxlbik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzk1LVx0aWYgKHNrYiA9PSBOVUxMKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTY6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM5Ny1cdFx0XHRcJiMzNDslcyglcyk6IFRSQU5TX1NLQiA9IE5VTExcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTg6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM5OS1cdFx0Z290byBhZ2Fpbjtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MDItXHRpZiAobGVuIFx1MDAzYyBUSF9IRUFERVJfTEVOR1RIKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDM6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQwNC1cdFx0XHRcdFwmIzM0OyVzKCVzKTogcGFja2V0IGxlbmd0aCAlZCB0b28gc2hvcnRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDU6XHRcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUsIGxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MDYtXHRcdHByaXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDE0LVx0XHRpZiAobmV3X3NrYiA9PSBOVUxMKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTU6XHRcdFx0Q1RDTV9EQkZfVEVYVF8oTVBDX0VSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDE2LVx0XHRcdFx0XCYjMzQ7JXMoJXMpOiBza2IgYWxsb2NhdGlvbiBmYWlsZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTc6XHRcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MTgtXHRcdFx0ZnNtX2V2ZW50KHByaXYtXHUwMDNlbXBjZy1cdTAwM2Vmc20sIE1QQ0dfRVZFTlRfSU5PUCwgZGV2KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NjgtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0Njk6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0V4aXQgJXM6ICVzLCBjaD0weCVwLCBpZD0lc1xcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ3MC1cdFx0XHRfX2Z1bmNfXywgZGV2LVx1MDAzZW5hbWUsIGNoLCBjaC1cdTAwM2VpZCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNDgxPXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfZmlyc3Rpbyhmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0ODctXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0ODg6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0VudGVyICVzOiBpZD0lcywgY2g9MHglcFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ4OS1cdFx0XHRcdF9fZnVuY19fLCBjaC1cdTAwM2VpZCwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDkwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDkxOlx0Q1RDTV9EQkZfVEVYVF8oTVBDX1RSQUNFLCBDVENfREJGX0lORk8sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0OTItXHRcdFx0XCYjMzQ7JXM6ICVzOiBjaHN0YXRlOiVpLCBncnBzdGF0ZTolaSwgcHJvdDolaVxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQ5MzpcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBmc21fZ2V0c3RhdGUoZmkpLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDk0LVx0XHRcdGZzbV9nZXRzdGF0ZShncHRyLVx1MDAzZWZzbSksIGNoLVx1MDAzZXByb3RvY29sKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MDUtXHRjYXNlIENUQ19TVEFURV9TRVRVUFdBSVQ6XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MDY6XHRcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MDctXHRcdFx0Y3RjbXBjX2NoeF9yeGlkbGUoZmksIGV2ZW50LCBhcmcpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTUxNi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTUxNzpcdGZzbV9uZXdzdGF0ZShmaSwgKENIQU5ORUxfRElSRUNUSU9OKGNoLVx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MTgtXHRcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIwLWRvbmU6XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MjE6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0V4aXQgJXM6IGlkPSVzLCBjaD0weCVwXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIyLVx0XHRcdFx0X19mdW5jX18sIGNoLVx1MDAzZWlkLCBjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNTM2PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1NDUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNTQ2Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslczogJXM6ICVzOiBjcDolaSwgY2hzdGF0ZTolaSBncnBzdGF0ZTolaVxcblwmIzM0OyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBzMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgczM5MCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkga25vdyB0aGUgc3RhbmRhcmQgbGF5b3V0LCBzbyBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGRlZmluZSBhbGwgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBuZXR3b3JraW5nIG9uIHRoZSBTeXN0ZW0geiBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgdmFyaW91cyBuZXR3b3JrIGNhcmQgZHJpdmVycyBzdXBwb3J0ZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLCBtYXliZSBzb21lIHMzOTAtc3BlY2lmaWMgcHJvdG9jb2wgY29uZmlndXJhdGlvbnMsIGFuZCBsaWtlbHkgZGVwZW5kZW5jeSBjaGVja3MgdGhhdCBwZXJ0YWluIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBzMzkwIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgbmV0d29ya2luZyBvcHRpb25zLiBIb3cgYXJlIHZhcmlvdXMgTklDcyBlbmFibGVkL2Rpc2FibGVkPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gSG93IGFyZSBkaWZmZXJlbnQgbmV0d29ya2luZyBmZWF0dXJlcyBvciBwcm90b2NvbHMgY29uZmlndXJlZD8gSSYjMzk7bGwgcHJvYmFibHkgc2NhbiBmb3IgYGNvbmZpZ2AgZW50cmllcywgbG9va2luZyBmb3IgbGlrZWx5IHJlbGV2YW50IHN5bWJvbHMuIFRoZW4gSSYjMzk7bGwgZm9jdXMgb24gcmVsYXRpb25zaGlwcyBhbmQgY29udGV4dDogV2hvIHVzZXMgdGhlbSwgYW5kIGhvdyBhcmUgdGhleSBjb21iaW5lZD8gSSYjMzk7bGwgYWxzbyBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3B0aW9uLiBUaGlzIHRleHQgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluc2lnaHRzIGludG8gdGhlIHB1cnBvc2UgYW5kIGludGVuZGVkIHVzZSBvZiBlYWNoIGNvbmZpZ3VyYWJsZSBzZXR0aW5nLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IGdyYXNwIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBzcGFjZSBmb3IgbmV0d29ya2luZyBvbiB0aGUgczM5MCBwbGF0Zm9ybSwgdG8gcmVjb2duaXplIHBvdGVudGlhbGx5IG5lZWRlZCBjdXN0b21pemF0aW9uIGFyZWFzLCBhbmQgcHJlcGFyZSBteXNlbGYgdG8gaWRlbnRpZnkgdGhlIGltcGFjdHMgb2YgbWFraW5nIGNlcnRhaW4gY29uZmlndXJhdGlvbiBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7Uy8zOTAgbmV0d29yayBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBTMzkwXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIENUQ01cbiAgIDY6XHRcdGRlZl90cmlzdGF0ZSBtXG4gICA3Olx0XHRwcm9tcHQgXCYjMzQ7Q1RDIGFuZCBNUEMgU05BIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIENDVyBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGNoYW5uZWwtdG8tY2hhbm5lbFxuICAxMTpcdFx0ICBwb2ludC10by1wb2ludCBuZXR3b3JraW5nIG9uIElCTSBTeXN0ZW0gei5cbiAgMTI6XHRcdCAgVGhpcyBkZXZpY2UgZHJpdmVyIHN1cHBvcnRzIHJlYWwgQ1RDIGNvdXBsaW5nIHVzaW5nIEVTQ09OLlxuICAxMzpcdFx0ICBJdCBhbHNvIHN1cHBvcnRzIHZpcnR1YWwgQ1RDcyB3aGVuIHJ1bm5pbmcgdW5kZXIgVk0uXG4gIDE0Olx0XHQgIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgY2hhbm5lbC10by1jaGFubmVsIE1QQyBTTkEgZGV2aWNlcy5cbiAgMTU6XHRcdCAgTVBDIGlzIGFuIFNOQSBwcm90b2NvbCBkZXZpY2UgdXNlZCBieSBDb21tdW5pY2F0aW9uIFNlcnZlciBmb3IgTGludXguXG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgY3RjbS5cbiAgMTc6XHRcdCAgVG8gY29tcGlsZSBpbnRvIHRoZSBrZXJuZWwsIGNob29zZSBZLlxuICAxODpcdFx0ICBJZiB5b3UgZG8gbm90IG5lZWQgYW55IGNoYW5uZWwtdG8tY2hhbm5lbCBjb25uZWN0aW9uLCBjaG9vc2UgTi5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU01TR0lVQ1ZcbiAgMjE6XHRcdGRlZl90cmlzdGF0ZSBtXG4gIDIyOlx0XHRwcm9tcHQgXCYjMzQ7SVVDViBzcGVjaWFsIG1lc3NhZ2Ugc3VwcG9ydCAoVk0gb25seSlcJiMzNDtcbiAgMjM6XHRcdGRlcGVuZHMgb24gSVVDVlxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byByZWNlaXZlIFNNU0cgbWVzc2FnZXNcbiAgMjY6XHRcdCAgZnJvbSBvdGhlciBWTSBndWVzdCBzeXN0ZW1zLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBTTVNHSVVDVl9FVkVOVFxuICAyOTpcdFx0ZGVmX3RyaXN0YXRlIG1cbiAgMzA6XHRcdHByb21wdCBcJiMzNDtEZWxpdmVyIElVQ1Ygc3BlY2lhbCBtZXNzYWdlcyBhcyB1ZXZlbnRzIChWTSBvbmx5KVwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBTTVNHSVVDVlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZGVsaXZlciBDUCBzcGVjaWFsIG1lc3NhZ2VzIChTTVNHcykgYXNcbiAgMzQ6XHRcdCAgdWV2ZW50cy4gIFRoZSBkcml2ZXIgaGFuZGxlcyBvbmx5IHRob3NlIHNwZWNpYWwgbWVzc2FnZXMgdGhhdFxuICAzNTpcdFx0ICBzdGFydCB3aXRoIFwmIzM0O0FQUFwmIzM0Oy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBcJiMzNDtzbXNnaXVjdl9hcHBcJiMzNDsuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFFFVEhcbiAgNDA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDQxOlx0XHRwcm9tcHQgXCYjMzQ7R2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDQ1cgXHUwMDI2XHUwMDI2IE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjYgUURJTyBcdTAwMjZcdTAwMjYgRVRIRVJORVRcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJiMzOTtzIE9TQSBFeHByZXNzIG5ldHdvcmsgYWRhcHRlcnMgaW4gUURJTyBtb2RlLFxuICA0NTpcdFx0ICBIaXBlclNvY2tldHMgaW50ZXJmYWNlcyBhbmQgei9WTSB2aXJ0dWFsIE5JQ3MgZm9yIEd1ZXN0IExBTiBhbmRcbiAgNDY6XHRcdCAgVlNXSVRDSC5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXG4gIDQ5Olx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTMzkwIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIFMzOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHBvdGVudGlhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB1c2FnZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gY2hlY2tpbmcgaXMgdGhlIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIGZpbGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBtYWluICYjMzQ7Uy8zOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycyYjMzQ7IG1lbnUgaXMgZ3VhcmRlZCBieSBgTkVUREVWSUNFUyAmYW1wOyZhbXA7IFMzOTBgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBBbmQgdGhlbiwgdGhlcmUmIzM5O3MgYGNvbmZpZyBDVENNYCwgd2hpY2ggZGVwZW5kcyBvbiBgQ0NXICZhbXA7JmFtcDsgTkVUREVWSUNFU2AuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSBlaXRoZXIuCgpUaGUgcmVhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyIGlzIHdoZXRoZXIgYW55IG9mIHRoZSBsb3ctbGV2ZWwgQ1RDTSBvciBGU00gY29kZSBpcyBhY2NpZGVudGFsbHkgdXNlZCBlbHNld2hlcmUuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgY3JpdGljYWwgY2hlY2sgaXM6IGFyZSB0aGUgZmlsZXMgYGZzbS5jYCwgYGZzbS5oYCwgb3IgYGN0Y21fbWFpbi5jYCBzb21laG93IGJlaW5nIHB1bGxlZCBpbnRvIHRoZSBidWlsZCBmb3Igbm9uLVMzOTAgYXJjaGl0ZWN0dXJlcz8gSWYgdGhleSBhcmUsIHdlIGhhdmUgYSBwcm9ibGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayB3aGVyZSB0aGVzZSBmaWxlcyBhcmUgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBhbmQgaWYgYW55IHVzZSBvdXRzaWRlIG9mIHRoZSBTMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2sgdG8gcHJldmVudCBjcm9zcy1hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIG9yIGluY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc21fYWRkdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0yNDU9c3RhdGljIHZvaWQgY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwNi1cdFx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzA3Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cdFx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTQzMD1zdGF0aWMgdm9pZCBjaHhfZmlyc3Rpbyhmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ1Mi1cdFx0XHQqKChfX3UxNiAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUzOlx0XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTQtXHRcdFx0XHQgICAgIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcwLVx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NTQ4PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2MC1cdH1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYxOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCB0aW1lb3V0LCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTYyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfU0VUVVBXQUlUKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTU4Nj1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zdGFydChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMC1cdGZzbV9uZXdzdGF0ZShmaSwgQ1RDX1NUQVRFX1NUQVJUV0FJVCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjYzMTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgMTAwMCwgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMi1cdHNwaW5fbG9ja19pcnFzYXZlKGdldF9jY3dkZXZfbG9jayhjaC1cdTAwM2VjZGV2KSwgc2F2ZWZsYWdzKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTY1MD1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjY2MTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjYyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9Nzc0PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3NldHVwZXJyKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzg5LVx0XHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo3OTA6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkxLVx0XHRpZiAoIUlTX01QQyhjaCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz04MjQ9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4Mzg6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzOS1cdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk5Nz1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDM3LVx0XHR9XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzg6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgMTAwMCwgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzktXHRcdGlmIChldmVudCA9PSBDVENfRVZFTlRfVElNRVIpIC8qIGZvciBUSU1FUiBub3QgeWV0IGxvY2tlZCAqL1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTIxNj1zdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTItXHRjaC1cdTAwM2VjY3dbMV0uY291bnQgPSBjaC1cdTAwM2V0cmFuc19za2ItXHUwMDNlbGVuO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzUzOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzU0LVx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE1ODk9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuKGZzbV9pbnN0YW5jZSAqZnNtLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE2MDYtXHRcdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE2MDc6XHRcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTYwOC1cdFx0XHRcdE1QQ19YSURfVElNRU9VVF9WQUxVRSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE2NDg9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuYnVzeShmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE0LVx0XHRmc21fZGVsdGltZXIoXHUwMDI2Z3JwLVx1MDAzZXRpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTcxNTpcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lciwgTVBDX1hJRF9USU1FT1VUX1ZBTFVFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE2LVx0XHRcdCAgICAgTVBDR19FVkVOVF9USU1FUiwgZGV2KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE3NTA9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9zZW5kX3N3ZWVwKGZzbV9pbnN0YW5jZSAqZnNtLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE3NzUtXHRcdC8qIGdpdmUgdGhlIHByZXZpb3VzIElPIHRpbWUgdG8gY29tcGxldGUgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTc3NjpcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNndjaC1cdTAwM2Vzd2VlcF90aW1lcixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTc3Ny1cdFx0XHQyMDAsIENUQ19FVkVOVF9SU1dFRVBfVElNRVIsIHdjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xODE0LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxODE1Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNndjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIHdjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE4MTYtXHRmc21fbmV3c3RhdGUod2NoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTIxMDU9c3RhdGljIHZvaWQgZGV2X2FjdGlvbl9yZXN0YXJ0KGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjEyNy1cdC8qIHRvIHNlbnNlIHJlcG9ydGVkIHdoZW4gSU8gaXMgYWJvcnRlZFx0XHRcdCAgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjEyODpcdGZzbV9hZGR0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIsIHJlc3RhcnRfdGltZXIsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxMjktXHRcdFx0REVWX0VWRU5UX1NUQVJULCBkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NDY0PXN0YXRpYyBpbnQgY3RjbV90cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNTY3LVx0ZnNtX25ld3N0YXRlKGNoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6NTY4Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjktXHRzcGluX2xvY2tfaXJxc2F2ZShnZXRfY2N3ZGV2X2xvY2soY2gtXHUwMDNlY2RldiksIHNhdmVmbGFncyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYz01OTY9c3RhdGljIHZvaWQgY3RjbXBjX3NlbmRfc3dlZXBfcmVxKHN0cnVjdCBjaGFubmVsICpyY2gpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy02MzEtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jOjYzMjpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2Vzd2VlcF90aW1lciwgMTAwLCBDVENfRVZFTlRfUlNXRUVQX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jLTYzMy1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jPTY0Nz1zdGF0aWMgaW50IGN0Y21wY190cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg1LVx0ZnNtX25ld3N0YXRlKGNoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6Nzg2Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy03ODctXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTM5OT12b2lkIGN0Y19tcGNfZXN0YWJsaXNoX2Nvbm5lY3Rpdml0eShpbnQgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTQ2OC1cdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM6NDY5Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Z3JwLVx1MDAzZXRpbWVyLCBNUENfWElEX1RJTUVPVVRfVkFMVUUsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDcwLVx0XHRcdFx0XHRcdE1QQ0dfRVZFTlRfVElNRVIsIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTYzOT1zdGF0aWMgdm9pZCBjdGNtcGNfc2VuZF9zd2VlcF9yZXNwKHN0cnVjdCBjaGFubmVsICpyY2gpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2NC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzo2NjU6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNlc3dlZXBfdGltZXIsIDEwMCwgQ1RDX0VWRU5UX1JTV0VFUF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2Ni1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9MTMzNj1zdGF0aWMgdm9pZCBtcGNfYWN0aW9uX2dvX2lub3AoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE0MTItXHRcdGZzbV9kZWx0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE0MTM6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIsIDUwMCwgREVWX0VWRU5UX1JFU1RBUlQsIGRldik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQxNC1cdFx0ZnNtX25ld3N0YXRlKGdycC1cdTAwM2Vmc20sIE1QQ0dfU1RBVEVfUkVTRVQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDIwLVx0XHRmc21fZGVsdGltZXIoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3RpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzoxNDIxOlx0XHRmc21fYWRkdGltZXIoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3RpbWVyLCA1MDAsIERFVl9FVkVOVF9TVE9QLCBkZXYpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE0MjItXHRcdGZzbV9uZXdzdGF0ZShncnAtXHUwMDNlZnNtLCBNUENHX1NUQVRFX1JFU0VUKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9MTY0OT1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM6MTc4MTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgNTAwMCAsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODItXHRyYyA9IGNjd19kZXZpY2Vfc3RhcnQoY2gtXHUwMDNlY2RldiwgXHUwMDI2Y2gtXHUwMDNlY2N3WzhdLCAwLCAweGZmLCAwKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jPTE2NT1pbnRcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTY2OmZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLTE2Ny17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9mc20uYz0xOTc9RVhQT1JUX1NZTUJPTChmc21fZGVsdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9mc20uYzoxOTg6RVhQT1JUX1NZTUJPTChmc21fYWRkdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9mc20uYy0xOTktRVhQT1JUX1NZTUJPTChmc21fbW9kdGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg9MjI2PWNvbnN0IGNoYXIgKmZzbV9nZXRzdGF0ZV9zdHIoZnNtX2luc3RhbmNlICpmaSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzItICpcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjMzOiAqIFByZXBhcmVzIGFuIGZzbV90aW1lciBmb3IgdXNhZ2Ugd2l0aCBmc21fYWRkdGltZXIoKS5cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjM0LSAqL1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg9MjQzPXZvaWQgZnNtX2RlbHRpbWVyKGZzbV90aW1lciAqdGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjQ1LS8qKlxuZHJpdmVycy9zMzkwL25ldC9mc20uaDoyNDY6ICogZnNtX2FkZHRpbWVyIC0gQWRkcyBhbmQgc3RhcnRzIGEgdGltZXIgZm9yIGFuIEZTTSBpbnN0YW5jZVxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yNDctICogQHRpbWVyOiBUaGUgdGltZXIgdG8gYmUgYWRkZWQgKHRpbWVyLVx1MDAzZWZpIG11c3QgcG9pbnQgdG8gdGhlIEZTTSBpbnN0YW5jZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI1Ni0gKi9cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjU3OmludCBmc21fYWRkdGltZXIoZnNtX3RpbWVyICp0aW1lciwgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZyk7XG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzgyNwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29kZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBpcyB0byBjaGVjayBpZiB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gYW4gYXJjaGl0ZWN0dXJlIHRoYXQmIzM5O3MgKm5vdCogdGhlIHRhcmdldCwgYW5kIGlmIHRoZXJlIGFyZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBMZXQmIzM5O3MgZGlnIGluLiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBmc21fbW9kdGltZXJgIGFuZCBvdGhlciBzeW1ib2xzIGFyZSB1c2VkIGluIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCBhbmQgd2hlcmUgYGZzbS5jYCBpcyBjb21waWxlZC4gVGhlIGBNYWtlZmlsZWAgY29uZmlybXMgYGZzbS5vYCBpcyBidWlsdCBpZiBgQ09ORklHX0NUQ01gIGlzIGVuYWJsZWQuIExldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCBpc24mIzM5O3QgdXNlZCBlbHNld2hlcmUgd2l0aCBhIHF1aWNrIHNlYXJjaC4gVGhlIHJlc3VsdHMgc2VlbSB0byBiZSBjb25zdHJhaW5lZCB0byBgZHJpdmVycy9zMzkwL25ldC9gLgoKUmlnaHQsIGBkcml2ZXJzL3MzOTAvYC4uLiB0aGF0JiMzOTtzIGEgcmVkIGZsYWcuIExldCYjMzk7cyBjb25maXJtIHRoYXQmIzM5O3MgUzM5MCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGp1c3QgdG8gYmUgc3VyZS4gTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLgoKT2theSwgdGhlIGd1aWRlbGluZXMuIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBhcmUgYSBiaWcgbm8tbm8gZm9yIFdvcnRoRnV6emluZy4gU3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYW5vdGhlci4gU28sIGxldCYjMzk7cyBsb29rIGF0IHRoZSBtb2RpZmllZCBmaWxlczogYGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmNgIGFuZCBgZHJpdmVycy9zMzkwL25ldC9mc20uY2AuIEJvdGggb2YgdGhvc2UgYXJlIHNxdWFyZWx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvczM5MC9uZXQvYCBkaXJlY3RvcnksIHBhcnQgb2YgdGhlIFMzOTAgc3Vic3lzdGVtLiAKCkxldCYjMzk7cyBub3cgYmUgY2VydGFpbiB0aGF0IGBDT05GSUdfQ1RDTWAgZGVwZW5kcyBvbiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYC4gSW4gdGhlIGBLY29uZmlnYCwgSSBjYW4gc2VlIHRoZSBgbWVudSAmIzM0O1MvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMmIzM0O2Agd2l0aCBhIGRlcGVuZGVuY3kgb24gYE5FVERFVklDRVMgJmFtcDsmYW1wOyBTMzkwYC4gYENPTkZJR19DVENNYCBkZXBlbmRzIG9uIGBDQ1cgJmFtcDsmYW1wOyBORVRERVZJQ0VTYC4gSSBrbm93IHRoYXQgYENDV2AgaXMgb25seSBhdmFpbGFibGUgb24gYENPTkZJR19TMzkwYC4gU28gbm93IEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgSSBjYW4gZXZlbiAqZW5hYmxlKiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYCBvbiBgYW1kNjRgLiBMZXQmIzM5O3MgZ3JlcCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLiBUaGlzIGNsZWFybHkgbG9va3MgbGlrZSB0aGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIGFuZCB3aWxsIG5vdCBiZSByZWFjaGVkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0NXXFxiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnPTg2MD1lbmRtZW51XG5hcmNoL3MzOTAvS2NvbmZpZy04NjEtXG5hcmNoL3MzOTAvS2NvbmZpZzo4NjI6Y29uZmlnIENDV1xuYXJjaC9zMzkwL0tjb25maWctODYzLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk0MQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgczM5MC1TcGVjaWZpYyBDb2RlIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGF0IGBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jYCBhbmQgYGRyaXZlcnMvczM5MC9uZXQvZnNtLmNgIGFyZSB0aGUgZmlsZXMgYmVpbmcgbW9kaWZpZWQuIEkga25vdyBmcm9tIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdGhhdCBgQ09ORklHX0NDV2AgaXMgZGVmaW5lZCBpbiBgYXJjaC9zMzkwL0tjb25maWdgLCBhbmQgdGhlIG5ldHdvcmtpbmcgS2NvbmZpZyBpbiBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBkZXBlbmRzIG9uIGBTMzkwYC4gVGhpcyBtZWFucyB0aGVzZSBmaWxlcyBhcmUgKmV4Y2x1c2l2ZWx5KiBidWlsdCBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBUaGV5IHdvbiYjMzk7dCBldmVuIGNvbXBpbGUsIGxldCBhbG9uZSBydW4sIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LgoKVGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgJiMzNDtVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0OyBjYXRlZ29yeSBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24uIFNpbmNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUsIHNvIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGRpZmYgdG8gY29uZmlybSwgYW5kIHllcywgaXQmIzM5O3MganVzdCB0aG9zZSB0d28gczM5MC1zcGVjaWZpYyBmaWxlcy4gUGVyZmVjdC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgb3V0cHV0LiBJIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgcmVzcG9uc2UuIEkga25vdyB0aGUgZmllbGRzIEkgbmVlZDogYFdvcnRoRnV6emluZ2AsIGBSZWFzb25pbmdgLCBgRm9jdXNTeW1ib2xzYCwgYW5kIGBFbmFibGVDb25maWdzYC4KCiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSBgZmFsc2VgLgoqICAgYFJlYXNvbmluZ2A6IE9rYXksIHRoZSByZWFzb25pbmcgbmVlZHMgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuIEkmIzM5O2xsIHBocmFzZSBpdCBhczogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29kZSBpbiBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCAoQ09ORklHX0NUQ00pLCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgKGRlcGVuZHMgb24gQ09ORklHX1MzOTAgYW5kIENPTkZJR19DQ1cpIGFuZCBjYW5ub3QgYmUgY29tcGlsZWQgb3IgZXhlY3V0ZWQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OwoqICAgYEZvY3VzU3ltYm9sc2A6IFNpbmNlIHRoZSBjb2RlIGlzIG5vdCB0YXJnZXRlZCwgSSYjMzk7bSBnb2luZyB0byBwYXNzIGFuIGVtcHR5IGFycmF5LCBgW11gLgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBBbHNvLCBhcyBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZywgSSYjMzk7bGwgcGFzcyBhbiBlbXB0eSBhcnJheSwgYFtdYC4KCkdyZWF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSBjb252ZW50aW9uIG9mIHBhc3NpbmcgZW1wdHkgYXJyYXlzIGZvciBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHdoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhhdCBzaG91bGQgYmUgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUJNIFMvMzkwIENUQy9NUEMgbmV0d29yayBkZXZpY2UgZHJpdmVyIGFuZCBmaW5pdGUgc3RhdGUgbWFjaGluZSBoZWxwZXIgaW4gZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBhbmQgZHJpdmVycy9zMzkwL25ldC9mc20uYy4gVGhpcyBjb2RlIGlzIGV4Y2x1c2l2ZSB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgKGRlcGVuZHMgb24gQ09ORklHX1MzOTAgYW5kIENPTkZJR19DQ1cpIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMi42MjU3MjM0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzQ1OTg0NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMi42MjU3MjkzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3NTcxMjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjg4Mjk3ZGZmMDUzY2Q0NGI3NmE3ZTk1YTEzMDU1MzliNmI1MDg0ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDE5OjU0OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXFxuaW5kZXggOGIwZDc2YTQ3ZDlmMC4uNjNmODgzMmY5YjE0OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xcbkBAIC0yMTEsOSArMjExLDkgQEAgc3RhdGljIHZvaWQgY2hhbm5lbF9yZW1vdmUoc3RydWN0IGNoYW5uZWwgKmNoKVxcbiBcXHR3aGlsZSAoKmMpIHtcXG4gXFx0XFx0aWYgKCpjID09IGNoKSB7XFxuIFxcdFxcdFxcdCpjID0gY2gtXFx1MDAzZW5leHQ7XFxuLVxcdFxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG4rXFx0XFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmNoLVxcdTAwM2V0aW1lci50bCk7XFxuIFxcdFxcdFxcdGlmIChJU19NUEMoY2gpKVxcbi1cXHRcXHRcXHRcXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2Vzd2VlcF90aW1lcik7XFxuK1xcdFxcdFxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZjaC1cXHUwMDNlc3dlZXBfdGltZXIudGwpO1xcbiBcXG4gXFx0XFx0XFx0a2ZyZWVfZnNtKGNoLVxcdTAwM2Vmc20pO1xcbiBcXHRcXHRcXHRjbGVhcl9ub3JtYWxpemVkX2NkYShcXHUwMDI2Y2gtXFx1MDAzZWNjd1s0XSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXFxuaW5kZXggOWI4NjIyYWVmODA3Yi4uOGQyZTliYmI3NGEyMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9mc20uY1xcbkBAIC0xNzEsMTIgKzE3MSw5IEBAIGZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuIFxcdCAgICAgICB0aGlzLVxcdTAwM2VmaS1cXHUwMDNlbmFtZSwgdGhpcywgbWlsbGlzZWMpO1xcbiAjZW5kaWZcXG4gXFxuLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgZnNtX2V4cGlyZV90aW1lciwgMCk7XFxuIFxcdHRoaXMtXFx1MDAzZWV4cGlyZV9ldmVudCA9IGV2ZW50O1xcbiBcXHR0aGlzLVxcdTAwM2VldmVudF9hcmcgPSBhcmc7XFxuLVxcdHRoaXMtXFx1MDAzZXRsLmV4cGlyZXMgPSBqaWZmaWVzICsgKG1pbGxpc2VjICogSFopIC8gMTAwMDtcXG4tXFx0YWRkX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCk7XFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gbW9kX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcXG4gfVxcbiBcXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXFxuQEAgLTE4OSwxMiArMTg2LDkgQEAgZnNtX21vZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4gXFx0XFx0dGhpcy1cXHUwMDNlZmktXFx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcXG4gI2VuZGlmXFxuIFxcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNnRoaXMtXFx1MDAzZXRsKTtcXG4tXFx0dGltZXJfc2V0dXAoXFx1MDAyNnRoaXMtXFx1MDAzZXRsLCBmc21fZXhwaXJlX3RpbWVyLCAwKTtcXG4gXFx0dGhpcy1cXHUwMDNlZXhwaXJlX2V2ZW50ID0gZXZlbnQ7XFxuIFxcdHRoaXMtXFx1MDAzZWV2ZW50X2FyZyA9IGFyZztcXG4tXFx0dGhpcy1cXHUwMDNldGwuZXhwaXJlcyA9IGppZmZpZXMgKyAobWlsbGlzZWMgKiBIWikgLyAxMDAwO1xcbi1cXHRhZGRfdGltZXIoXFx1MDAyNnRoaXMtXFx1MDAzZXRsKTtcXG4rXFx0bW9kX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcXG4gfVxcbiBcXG4gRVhQT1JUX1NZTUJPTChpbml0X2ZzbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjEzLjE0Mzk5MjQwMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjUyMjc3MDQ4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmODgyOTdkZmYwNTNjZDQ0Yjc2YTdlOTVhMTMwNTUzOWI2YjUwODRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxOTo1NDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG5pbmRleCA4YjBkNzZhNDdkOWYwLi42M2Y4ODMyZjliMTQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xuQEAgLTIxMSw5ICsyMTEsOSBAQCBzdGF0aWMgdm9pZCBjaGFubmVsX3JlbW92ZShzdHJ1Y3QgY2hhbm5lbCAqY2gpXG4gXHR3aGlsZSAoKmMpIHtcbiBcdFx0aWYgKCpjID09IGNoKSB7XG4gXHRcdFx0KmMgPSBjaC1cdTAwM2VuZXh0O1xuLVx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4rXHRcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2gtXHUwMDNldGltZXIudGwpO1xuIFx0XHRcdGlmIChJU19NUEMoY2gpKVxuLVx0XHRcdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXN3ZWVwX3RpbWVyKTtcbitcdFx0XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmNoLVx1MDAzZXN3ZWVwX3RpbWVyLnRsKTtcbiBcbiBcdFx0XHRrZnJlZV9mc20oY2gtXHUwMDNlZnNtKTtcbiBcdFx0XHRjbGVhcl9ub3JtYWxpemVkX2NkYShcdTAwMjZjaC1cdTAwM2VjY3dbNF0pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG5pbmRleCA5Yjg2MjJhZWY4MDdiLi44ZDJlOWJiYjc0YTIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9mc20uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9mc20uY1xuQEAgLTE3MSwxMiArMTcxLDkgQEAgZnNtX2FkZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdCAgICAgICB0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyArIChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7XG4tXHRhZGRfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiBtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXG5AQCAtMTg5LDEyICsxODYsOSBAQCBmc21fbW9kdGltZXIoZnNtX3RpbWVyICp0aGlzLCBpbnQgbWlsbGlzZWMsIGludCBldmVudCwgdm9pZCAqYXJnKVxuIFx0XHR0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZ0aGlzLVx1MDAzZXRsKTtcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyArIChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7XG4tXHRhZGRfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4rXHRtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gRVhQT1JUX1NZTUJPTChpbml0X2ZzbSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMy4xNDM5OTM3MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mzk5ODA5ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3cgZnJvbSB0aGUgc3RhcnQuIE5vdywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvczM5MC9uZXQvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgY3RjbV9tYWluLmNgIGFuZCBgZnNtLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaWxsIHRoaXMgZXZlbiBhcHBseSBjbGVhbmx5LCBnaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBhbmQgdGhlICpzMzkwKiBjb21wb25lbnQ/XCIgXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBLY29uZmlnIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIG5ldHdvcmsgbW9kdWxlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIHRvIHNlZSBpZiB0aGUgbW9kdWxlIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIHRoZW4gYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL3MzOTAvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhpcyBjaGFuZ2Ugd2lsbCBpbXBhY3QgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBjcm9zcyBjb21waWxhdGlvbiBvY2N1cnJpbmcgb3IgaWYgdGhlc2UgYXJlIHg4Ni9hbWQ2NCBzcGVjaWZpYyBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDIwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MTkuNTQzODA1OTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODI4ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNUQ01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz0yPW1lbnUgXFxcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNC1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6NTpjb25maWcgQ1RDTVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02LVxcdGRlZl90cmlzdGF0ZSBtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc9Nzg9Y29uZmlnIENDV0dST1VQXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjgwOlxcdGRlZmF1bHQgKENUQ00gfHwgUUVUSCB8fCBTTUMpXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTgxLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT04PWN0Y20teSArPSBjdGNtX21haW4ubyBjdGNtX2ZzbXMubyBjdGNtX21wYy5vIGN0Y21fc3lzZnMubyBjdGNtX2RidWcub1xcbmRyaXZlcnMvczM5MC9uZXQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ1RDTSkgKz0gY3RjbS5vIGZzbS5vXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfU01TR0lVQ1YpICs9IHNtc2dpdWN2Lm9cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMjMtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNDpzdHJ1Y3QgY3RjbV9kYmZfaW5mbyBjdGNtX2RiZltDVENNX0RCRl9JTkZPU10gPSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNTpcXHRbQ1RDTV9EQkZfU0VUVVBdICAgICA9IHtcXFwiY3RjX3NldHVwXFxcIiwgOCwgMSwgNjQsIENUQ19EQkZfSU5GTywgTlVMTH0sXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNjpcXHRbQ1RDTV9EQkZfRVJST1JdICAgICA9IHtcXFwiY3RjX2Vycm9yXFxcIiwgOCwgMSwgNjQsIENUQ19EQkZfRVJST1IsIE5VTEx9LFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6Mjc6XFx0W0NUQ01fREJGX1RSQUNFXSAgICAgPSB7XFxcImN0Y190cmFjZVxcXCIsIDgsIDEsIDY0LCBDVENfREJGX0VSUk9SLCBOVUxMfSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI4OlxcdFtDVENNX0RCRl9NUENfU0VUVVBdID0ge1xcXCJtcGNfc2V0dXBcXFwiLCA4LCAxLCA4MCwgQ1RDX0RCRl9JTkZPLCBOVUxMfSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI5OlxcdFtDVENNX0RCRl9NUENfRVJST1JdID0ge1xcXCJtcGNfZXJyb3JcXFwiLCA4LCAxLCA4MCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzozMDpcXHRbQ1RDTV9EQkZfTVBDX1RSQUNFXSA9IHtcXFwibXBjX3RyYWNlXFxcIiwgOCwgMSwgODAsIENUQ19EQkZfRVJST1IsIE5VTEx9LFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzEtfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM9MzM9dm9pZCBjdGNtX3VucmVnaXN0ZXJfZGJmX3ZpZXdzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jLTM1LVxcdGludCB4O1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzY6XFx0Zm9yICh4ID0gMDsgeCBcXHUwMDNjIENUQ01fREJGX0lORk9TOyB4KyspIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jLTM3LVxcdFxcdGRlYnVnX3VucmVnaXN0ZXIoY3RjbV9kYmZbeF0uaWQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYz00Mj1pbnQgY3RjbV9yZWdpc3Rlcl9kYmZfdmlld3Modm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtNDQtXFx0aW50IHg7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzo0NTpcXHRmb3IgKHggPSAwOyB4IFxcdTAwM2MgQ1RDTV9EQkZfSU5GT1M7IHgrKykge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtNDYtXFx0XFx0LyogcmVnaXN0ZXIgdGhlIGFyZWFzICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTctXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4OiNpZm5kZWYgX0NUQ01fREJVR19IX1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTojZGVmaW5lIF9DVENNX0RCVUdfSF9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaD00NT1lbnVtIGN0Y21fZGJmX25hbWVzIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjQ2OlxcdENUQ01fREJGX1NFVFVQLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6NDc6XFx0Q1RDTV9EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0ODpcXHRDVENNX0RCRl9UUkFDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjQ5OlxcdENUQ01fREJGX01QQ19TRVRVUCxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUwOlxcdENUQ01fREJGX01QQ19FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUxOlxcdENUQ01fREJGX01QQ19UUkFDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUyOlxcdENUQ01fREJGX0lORk9TXFx0LyogbXVzdCBiZSBsYXN0IGVsZW1lbnQgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTUzLX07XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTU1PXN0cnVjdCBjdGNtX2RiZl9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjMtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo2NDpleHRlcm4gc3RydWN0IGN0Y21fZGJmX2luZm8gY3RjbV9kYmZbQ1RDTV9EQkZfSU5GT1NdO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjUtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTcxPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqc3RydGFpbChjb25zdCBjaGFyICpzLCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzYtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3NzojZGVmaW5lIENUQ01fRlVOVEFJTCBzdHJ0YWlsKChjaGFyICopX19mdW5jX18sIDE2KVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3OTojZGVmaW5lIENUQ01fREJGX1RFWFQobmFtZSwgbGV2ZWwsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgwLVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6ODE6XFx0XFx0ZGVidWdfdGV4dF9ldmVudChjdGNtX2RiZltDVENNX0RCRl8jI25hbWVdLmlkLCBsZXZlbCwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgyLVxcdH0gd2hpbGUgKDApXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC04My1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjg0OiNkZWZpbmUgQ1RDTV9EQkZfSEVYKG5hbWUsIGxldmVsLCBhZGRyLCBsZW4pIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg1LVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6ODY6XFx0XFx0ZGVidWdfZXZlbnQoY3RjbV9kYmZbQ1RDTV9EQkZfIyNuYW1lXS5pZCwgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODctXFx0XFx0XFx0XFx0XFx0bGV2ZWwsICh2b2lkICopKGFkZHIpLCBsZW4pOyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTA6I2RlZmluZSBDVENNX0RCRl9URVhUXyhuYW1lLCBsZXZlbCwgdGV4dC4uLikgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTE6XFx0Y3RjbV9kYmZfbG9uZ3RleHQoQ1RDTV9EQkZfIyNuYW1lLCBsZXZlbCwgdGV4dClcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTkyLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC05Ny0gKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjk4OiNkZWZpbmUgQ1RDTV9EQkZfREVWX05BTUUoY2F0LCBkZXYsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTk5LVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTAwOlxcdFxcdENUQ01fREJGX1RFWFRfKGNhdCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXMpIDotICVzXFxcIiwgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTAxOlxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCB0ZXh0KTsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTAyLVxcdH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwNS1cXHRkbyB7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwNjpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfIyNjYXQsIENUQ19EQkZfSU5GTywgXFxcIiVzKCVzKSA6PSAlc1xcXCIsIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwNzpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldi1cXHUwMDNlbmFtZSwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOC1cXHR9IHdoaWxlICgwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTA5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTEwOiNkZWZpbmUgQ1RDTVlfREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KSBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTEtXFx0ZG8geyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTExNC1cXHRcXHRlbHNlIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjExNTpcXHRcXHRcXHRDVENNX0RCRl9ERVZfTkFNRShjYXQsIGRldiwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTExNi1cXHR9IHdoaWxlICgwKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjItICovXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMjM6I2RlZmluZSBDVENNX0RCRl9ERVYoY2F0LCBkZXYsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyNC1cXHRkbyB7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNTpcXHRcXHRDVENNX0RCRl9URVhUXyhjYXQsIENUQ19EQkZfSU5GTywgXFxcIiVzKCVwKSA6LTogJXNcXFwiLCBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMjY6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYsIHRleHQpOyBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjctXFx0fSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTMwLVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTMxOlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ18jI2NhdCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXApIDo9OiAlc1xcXCIsIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMjpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzMy1cXHR9IHdoaWxlICgwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM0LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTM1OiNkZWZpbmUgQ1RDTVlfREJGX0RFVihjYXQsIGRldiwgdGV4dCkgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM2LVxcdGRvIHsgXFxcXFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMzktXFx0XFx0ZWxzZSBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxNDA6XFx0XFx0XFx0Q1RDTV9EQkZfREVWKGNhdCwgZGV2LCB0ZXh0KTsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTQxLVxcdH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE5MD12b2lkIGN0Y21fY2N3X2NoZWNrX3JjKHN0cnVjdCBjaGFubmVsICpjaCwgaW50IHJjLCBjaGFyICptc2cpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xOTEte1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTkyOlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTkzLVxcdFxcdFxcXCIlcyglcyk6ICVzOiAlMDR4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTk0OlxcdFxcdENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLCBtc2csIHJjKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE5NS1cXHRzd2l0Y2ggKHJjKSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTIxMz12b2lkIGN0Y21fcHVyZ2Vfc2tiX3F1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKnEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxNi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjIxNzpcXHRDVENNX0RCRl9URVhUKFRSQUNFLCBDVENfREJGX0RFQlVHLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTI0NT1zdGF0aWMgdm9pZCBjaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNTUtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoyNTY6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiJXMoJXMpOiAlc1xcXFxuXFxcIiwgX19mdW5jX18sIGNoLVxcdTAwM2VpZCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTI1Ny1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjYyLVxcdGlmIChjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCAhPSAwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjYzOlxcdFxcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjY0LVxcdFxcdFxcdFxcXCIlcyglcyk6IFRYIG5vdCBjb21wbGV0ZSwgcmVtYWluaW5nICVkIGJ5dGVzXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjI2NTpcXHRcXHRcXHQgICAgIENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNjYtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMDYtXFx0XFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjMwNzpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cXHRcXHRjaC1cXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzMzPXZvaWQgY3RjbV9jaHhfdHhpZGxlKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMzgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozMzk6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiJXMoJXMpOiAlc1xcXFxuXFxcIiwgX19mdW5jX18sIGNoLVxcdTAwM2VpZCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzU0PXN0YXRpYyB2b2lkIGNoeF9yeChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzY2LVxcdGlmIChsZW4gXFx1MDAzYyA4KSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozNjc6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzY4LVxcdFxcdFxcdFxcXCIlcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXFx1MDAzYyA4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzY5OlxcdFxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzcwLVxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc0LVxcdGlmIChsZW4gXFx1MDAzZSBjaC1cXHUwMDNlbWF4X2J1ZnNpemUpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM3NTpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zNzYtXFx0XFx0XFx0XFxcIiVzKCVzKTogZ290IHBhY2tldCB3aXRoIGxlbmd0aCAlZCBcXHUwMDNlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzc3OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBsZW4sIGNoLVxcdTAwM2VtYXhfYnVmc2l6ZSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zNzgtXFx0XFx0cHJpdi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODYtXFx0c3dpdGNoIChjaC1cXHUwMDNlcHJvdG9jb2wpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM4NzpcXHRjYXNlIENUQ01fUFJPVE9fUzM5MDpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM4ODpcXHRjYXNlIENUQ01fUFJPVE9fT1MzOTA6XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODktXFx0XFx0Y2hlY2tfbGVuID0gYmxvY2tfbGVuICsgMjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk1LVxcdGlmICgobGVuIFxcdTAwM2MgYmxvY2tfbGVuKSB8fCAobGVuIFxcdTAwM2UgY2hlY2tfbGVuKSkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzk2OlxcdFxcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM5Ny1cXHRcXHRcXHRcXFwiJXMoJXMpOiBnb3QgYmxvY2sgbGVuZ3RoICVkICE9IHJ4IGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM5ODpcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldi1cXHUwMDNlbmFtZSwgYmxvY2tfbGVuLCBsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk5LVxcdFxcdGlmIChkb19kZWJ1ZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NDMwPXN0YXRpYyB2b2lkIGNoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00MzUtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0MzY6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM3LVxcdFxcdFxcXCIlcyglcykgOiAlMDJ4XFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQzODpcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCwgZnNtc3RhdGUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM5LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDEtXFx0aWYgKGZzbXN0YXRlID09IENUQ19TVEFURV9UWElETEUpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NDI6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDMtXFx0XFx0XFx0XFxcIiVzKCVzKTogcmVtb3RlIHNpZGUgaXNzdWVkIFJFQUQ/LCBpbml0LlxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0NDpcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDUtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDgtXFx0aWYgKChmc21zdGF0ZSA9PSBDVENfU1RBVEVfU0VUVVBXQUlUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDQ5OlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sID09IENUQ01fUFJPVE9fT1MzOTApKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTAtXFx0XFx0LyogT1MvMzkwIHJlc3AuIHovT1MgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MTpcXHRcXHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MjpcXHRcXHRcXHQqKChfX3UxNiAqKWNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWRhdGEpID0gQ1RDTV9JTklUSUFMX0JMT0NLTEVOO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUzOlxcdFxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTQtXFx0XFx0XFx0XFx0ICAgICBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDY4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDY5OlxcdGlmICgoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1dSSVRFKSB8fFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcwOlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sICE9IENUQ01fUFJPVE9fUzM5MCkpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NzItXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzM6XFx0KigoX191MTYgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3NC1cXHRjaC1cXHUwMDNlY2N3WzFdLmNvdW50ID0gMjtcXHQvKiBUcmFuc2ZlciBvbmx5IGxlbmd0aCAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc1LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDc2OlxcdGZzbV9uZXdzdGF0ZShmaSwgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc3LVxcdFxcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ5MC1cXHQgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MTpcXHRpZiAoKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDkyOlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sID09IENUQ01fUFJPVE9fUzM5MCkpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ5My1cXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gY2gtXFx1MDAzZW5ldGRldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NTA4PXN0YXRpYyB2b2lkIGNoeF9yeGlkbGUoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUxNy1cXHRidWZsZW4gPSAqKChfX3UxNiAqKWNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTE4OlxcdENUQ01fUFJfREVCVUcoXFxcIiVzOiAlczogSW5pdGlhbCBSWCBjb3VudCA9ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTE5LVxcdFxcdFxcdF9fZnVuY19fLCBkZXYtXFx1MDAzZW5hbWUsIGJ1Zmxlbik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MjE6XFx0aWYgKGJ1ZmxlbiBcXHUwMDNlPSBDVENNX0lOSVRJQUxfQkxPQ0tMRU4pIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUyMi1cXHRcXHRpZiAoY3RjbV9jaGVja2FsbG9jX2J1ZmZlcihjaCkpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUzMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTMzOlxcdFxcdENUQ01fUFJfREVCVUcoXFxcIiVzOiAlczogSW5pdGlhbCBSWCBjb3VudCAlZCBub3QgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzQtXFx0XFx0XFx0XFx0X19mdW5jX18sIGRldi1cXHUwMDNlbmFtZSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjUzNTpcXHRcXHRcXHRcXHRcXHRidWZsZW4sIENUQ01fSU5JVElBTF9CTE9DS0xFTik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzYtXFx0XFx0Y2h4X2ZpcnN0aW8oZmksIGV2ZW50LCBhcmcpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTItXFx0dW5zaWduZWQgbG9uZyBzYXZlZmxhZ3MgPSAwO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTUzOlxcdGludCB0aW1lb3V0ID0gQ1RDTV9USU1FXzVfU0VDO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU0LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTctXFx0XFx0dGltZW91dCA9IDE1MDA7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1NTg6XFx0XFx0Q1RDTV9QUl9ERUJVRyhcXFwiZW50ZXIgJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTktXFx0XFx0XFx0XFx0X19mdW5jX18sIHNtcF9wcm9jZXNzb3JfaWQoKSwgY2gsIGNoLVxcdTAwM2VpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TRVRVUFdBSVQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYzOlxcdENUQ01fQ0NXX0RVTVAoKGNoYXIgKilcXHUwMDI2Y2gtXFx1MDAzZWNjd1s2XSwgc2l6ZW9mKHN0cnVjdCBjY3cxKSAqIDIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU5MS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MjpcXHRDVENNX0RCRl9URVhUXyhTRVRVUCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXMpOiAlc1xcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1OTM6XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1OTQ6XFx0XFx0KENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/IFxcXCJSWFxcXCIgOiBcXFwiVFhcXFwiKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU5NS1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjAwLVxcdH1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjYwMTpcXHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYwMi1cXHRcXHRjaC1cXHUwMDNlY2N3WzFdLmNtZF9jb2RlID0gQ0NXX0NNRF9SRUFEO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTAtXFx0aWYgKGN0Y21fY2hlY2thbGxvY19idWZmZXIoY2gpKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTE6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTItXFx0XFx0XFx0XFxcIiVzKCVzKTogJXMgdHJhbnNfc2tiIGFsbG9jIGRlbGF5ZWQgXFxcIlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjEzLVxcdFxcdFxcdFxcXCJ1bnRpbCBmaXJzdCB0cmFuc2ZlclxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTQ6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTU6XFx0XFx0XFx0KENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTYtXFx0XFx0XFx0XFx0XFxcIlJYXFxcIiA6IFxcXCJUWFxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02NTA9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2NjE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTY4OT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9jbGVhbnVwKGZzbV9pbnN0YW5jZSAqZmksIGludCBzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk0LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Njk1OlxcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX05PVElDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTY5Ni1cXHRcXHRcXHRcXFwiJXMoJXMpOiAlc1slZF1cXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2OTc6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGNoLVxcdTAwM2VpZCwgc3RhdGUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk4LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03MTEtXFx0Y2gtXFx1MDAzZXRoX3NlcV9udW0gPSAweDAwO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzEyOlxcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzEzLVxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2Y2gtXFx1MDAzZWlvX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9Nzc0PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3NldHVwZXJyKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03ODktXFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkwOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkxLVxcdFxcdGlmICghSVNfTVBDKGNoKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkyOlxcdFxcdCAgICAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03OTMtXFx0XFx0XFx0aW50IHJjID0gY2N3X2RldmljZV9oYWx0KGNoLVxcdTAwM2VjZGV2LCAwKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODAwLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAxOlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0NSSVQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDItXFx0XFx0XFxcIiVzKCVzKSA6ICVzIGVycm9yIGR1cmluZyAlcyBjaGFubmVsIHNldHVwIHN0YXRlPSVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAzOlxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODA0OlxcdFxcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgPyBcXFwiUlhcXFwiIDogXFxcIlRYXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwNS1cXHRcXHRmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDYtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MDc6XFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDgtXFx0XFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz04MjQ9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MzI6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODMzLVxcdFxcdFxcXCIlczogJXNbJWRdIG9mICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM0OlxcdFxcdFxcdENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLCBldmVudCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzNS1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM4OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVxcdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODYzPXN0YXRpYyB2b2lkIGN0Y21fY2h4X3J4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODc5LVxcdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjg4MDpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODE6XFx0XFx0XFx0ICAgICAgIFxcXCIlcyglcyk6ICVzIGluICVzXFxcIiwgQ1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04ODItXFx0XFx0XFx0ICAgICAgIGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODc6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODg6XFx0XFx0XFx0XFxcIiVzKCVzKTogJXMgaW4gJXNcXFwiLCBDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTg4OS1cXHRcXHRcXHRjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTkwNT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9yeGluaXRmYWlsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTE6XFx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTItXFx0XFx0XFx0XFxcIiVzKCVzKTogUlggJXMgYnVzeSwgaW5pdC4gZmFpbFxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTQtXFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05MjU9c3RhdGljIHZvaWQgY3RjbV9jaHhfcnhkaXNjKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MzI6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTMzLVxcdFxcdFxcdFxcXCIlczogJXM6IHJlbW90ZSBkaXNjb25uZWN0IC0gcmUtaW5pdCAuLi5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTM0OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTkzNS1cXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9EVEVSTSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NDM6XFx0Y2gyID0gcHJpdi1cXHUwMDNlY2hhbm5lbFtDVENNX1dSSVRFXTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0NC1cXHRmc21fbmV3c3RhdGUoY2gyLVxcdTAwM2Vmc20sIENUQ19TVEFURV9EVEVSTSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk1Nz1zdGF0aWMgdm9pZCBjdGNtX2NoeF90eGluaXRlcnIoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3MS1cXHR9IGVsc2UgaWYgKGV2ZW50ID09IENUQ19FVkVOVF9VQ19SQ1JFU0VUKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NzI6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTczOlxcdFxcdFxcdCAgICAgICBcXFwiJXMoJXMpOiAlcyBpbiAlc1xcXCIsIENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTc0LVxcdFxcdFxcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3OC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTc5OlxcdFxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTgwOlxcdFxcdFxcdFxcXCIlcyglcyk6ICVzIGluICVzXFxcIiwgQ1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05ODEtXFx0XFx0XFx0Y3RjX2NoX2V2ZW50X25hbWVzW2V2ZW50XSwgZnNtX2dldHN0YXRlX3N0cihmaSkpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05OTc9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDAzLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAwNDpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlcjogJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDA1LVxcdFxcdFxcdF9fZnVuY19fLCBzbXBfcHJvY2Vzc29yX2lkKCksIGNoLCBjaC1cXHUwMDNlaWQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDA5LVxcdFxcdHN0cnVjdCBtcGNfZ3JvdXAgKmdwdHIgPSBwcml2LVxcdTAwM2VtcGNnO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAxMDpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9JTkZPLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAxMS1cXHRcXHRcXHRcXHRcXFwiJXM6ICVzOiByZXRyaWVzIGV4Y2VlZGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTI6XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAxMy1cXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlZnNtLCBERVZfRVZFTlRfVFhET1dOLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDIwLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAyMTpcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9ERUJVRyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjItXFx0XFx0XFx0XFxcIiVzIDogJXM6IHJldHJ5ICVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMjM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsIGNoLVxcdTAwM2VyZXRyeSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDI0LVxcdHNrYiA9IHNrYl9wZWVrKFxcdTAwMjZjaC1cXHUwMDNlaW9fcXVldWUpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDMwLVxcdFxcdGlmIChzZXRfbm9ybWFsaXplZF9jZGEoXFx1MDAyNmNoLVxcdTAwM2VjY3dbNF0sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzE6XFx0XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfSU5GTyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzItXFx0XFx0XFx0XFx0XFxcIiVzOiAlczogSURBTCBhbGxvYyBmYWlsZWRcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAzMzpcXHRcXHRcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDM0LVxcdFxcdFxcdGZzbV9ldmVudChwcml2LVxcdTAwM2Vmc20sIERFVl9FVkVOVF9UWERPV04sIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEwNjY9c3RhdGljIHZvaWQgY3RjbV9jaHhfaW9mYXRhbChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3My1cXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDc0OlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3NS1cXHRcXHRcXFwiJXM6ICVzOiAlcyB1bnJlY292ZXJhYmxlIGNoYW5uZWwgZXJyb3JcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTA3NjpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCwgcmQgPT0gQ1RDTV9SRUFEID8gXFxcIlJYXFxcIiA6IFxcXCJUWFxcXCIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3Ny1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA4MS1cXHR9XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDgyOlxcdGlmIChyZCA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwODMtXFx0XFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xMjE2PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjMyLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTIzMzpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlciAlczogJXMgY3A6JWlcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjM0LVxcdFxcdFxcdF9fZnVuY19fLCBkZXYtXFx1MDAzZW5hbWUsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDAtXFx0aWYgKGNoLVxcdTAwM2VpcmItXFx1MDAzZXNjc3cuY21kLmNvdW50ICE9IDApXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjQxOlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9ERUJVRyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDItXFx0XFx0XFx0XFxcIiVzKCVzKTogVFggbm90IGNvbXBsZXRlLCByZW1haW5pbmcgJWQgYnl0ZXNcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI0MzpcXHRcXHRcXHQgICAgIENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjQ0LVxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3Ny1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyNzg6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCIlczogYnVpbGRpbmcgdHJhbnNfc2tiIGZyb20gY29sbGVjdF9xXFxcIlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3OS1cXHRcXHQgICAgICAgXFxcIiBkYXRhX3NwYWNlOiUwNHhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjkyOlxcdFxcdENUQ01fUFJfREJHREFUQShcXFwiJXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjkzLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI5NDpcXHRcXHRDVENNX1BSX0RCR0RBVEEoXFxcIiVzOiBwZHUgaGVhZGVyIGFuZCBkYXRhIGZvciB1cFxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTUtXFx0XFx0XFx0XFx0XFxcIiB0byAzMiBieXRlcyBzZW50IHRvIHZ0YW1cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyOTY6XFx0XFx0Q1RDTV9EM19EVU1QKChjaGFyICopcF9oZWFkZXIsIG1pbl90KGludCwgc2tiLVxcdTAwM2VsZW4sIDMyKSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjk3LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzE5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyMDpcXHRDVENNX1BSX0RCR0RBVEEoXFxcIiVzOiBUb1ZUQU1fdGhfc2VxPSAlMDh4XFxcXG5cXFwiICxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjEtXFx0XFx0XFx0XFx0XFx0X19mdW5jX18sIGNoLVxcdTAwM2V0aF9zZXFfbnVtKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjItXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzIzOlxcdENUQ01fUFJfREJHREFUQShcXFwiJXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzI0LVxcdFxcdCAgICAgICBfX2Z1bmNfXywgY2gtXFx1MDAzZXRyYW5zX3NrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjU6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCIlczogdXAtdG8tNTAgYnl0ZXMgb2YgdHJhbnNfc2tiIFxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjYtXFx0XFx0XFx0XFxcImRhdGEgdG8gdnRhbSBmcm9tIGNvbGxlY3RfcVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyNzpcXHRDVENNX0QzX0RVTVAoKGNoYXIgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMyOC1cXHRcXHRcXHRcXHRtaW5fdChpbnQsIGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbiwgNTApKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMzMi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMzM6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCJjY3djZGE9MHglcCBkYXRhPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzM0LVxcdFxcdFxcdCh2b2lkICopKHU2NClkbWEzMl90b191MzIoY2gtXFx1MDAzZWNjd1sxXS5jZGEpLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQwLVxcdFxcdGNoLVxcdTAwM2V0cmFuc19za2IgPSBOVUxMO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM0MTpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfVFJBQ0UsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQyLVxcdFxcdFxcdFxcXCIlczogJXM6IElEQUwgYWxsb2MgZmFpbGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNDM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0NC1cXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlbXBjZy1cXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDctXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQ4OlxcdENUQ01fUFJfREJHREFUQShcXFwiY2N3Y2RhPTB4JXAgZGF0YT0weCVwXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0OS1cXHRcXHRcXHQodm9pZCAqKSh1NjQpZG1hMzJfdG9fdTMyKGNoLVxcdTAwM2VjY3dbMV0uY2RhKSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM1Mi1cXHRjaC1cXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXFx1MDAzZXRyYW5zX3NrYi1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM1MzpcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTQtXFx0Y2gtXFx1MDAzZXByb2Yuc2VuZF9zdGFtcCA9IGppZmZpZXM7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEzNzk9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzg5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM5MDpcXHRDVENNX1BSX0RFQlVHKFxcXCIlczogJXM6IGNwOiVpICVzIG1heGJ1ZiA6ICUwNHgsIGxlbjogJTA0eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTE6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIHNtcF9wcm9jZXNzb3JfaWQoKSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTItXFx0XFx0XFx0XFx0Y2gtXFx1MDAzZWlkLCBjaC1cXHUwMDNlbWF4X2J1ZnNpemUsIGxlbik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTUtXFx0aWYgKHNrYiA9PSBOVUxMKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzk2OlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTctXFx0XFx0XFx0XFxcIiVzKCVzKTogVFJBTlNfU0tCID0gTlVMTFxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzk4OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTktXFx0XFx0Z290byBhZ2FpbjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQwMi1cXHRpZiAobGVuIFxcdTAwM2MgVEhfSEVBREVSX0xFTkdUSCkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQwMzpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDA0LVxcdFxcdFxcdFxcdFxcXCIlcyglcyk6IHBhY2tldCBsZW5ndGggJWQgdG9vIHNob3J0XFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDU6XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGxlbik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDA2LVxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQxNC1cXHRcXHRpZiAobmV3X3NrYiA9PSBOVUxMKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDE1OlxcdFxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MTYtXFx0XFx0XFx0XFx0XFxcIiVzKCVzKTogc2tiIGFsbG9jYXRpb24gZmFpbGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTc6XFx0XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQxOC1cXHRcXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlbXBjZy1cXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NjgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDY5OlxcdENUQ01fUFJfREVCVUcoXFxcIkV4aXQgJXM6ICVzLCBjaD0weCVwLCBpZD0lc1xcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NzAtXFx0XFx0XFx0X19mdW5jX18sIGRldi1cXHUwMDNlbmFtZSwgY2gsIGNoLVxcdTAwM2VpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE0ODE9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDg3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQ4ODpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlciAlczogaWQ9JXMsIGNoPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDg5LVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNlaWQsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0OTAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDkxOlxcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9JTkZPLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ5Mi1cXHRcXHRcXHRcXFwiJXM6ICVzOiBjaHN0YXRlOiVpLCBncnBzdGF0ZTolaSwgcHJvdDolaVxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0OTM6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsIGZzbV9nZXRzdGF0ZShmaSksXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDk0LVxcdFxcdFxcdGZzbV9nZXRzdGF0ZShncHRyLVxcdTAwM2Vmc20pLCBjaC1cXHUwMDNlcHJvdG9jb2wpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTA1LVxcdGNhc2UgQ1RDX1NUQVRFX1NFVFVQV0FJVDpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MDY6XFx0XFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTA3LVxcdFxcdFxcdGN0Y21wY19jaHhfcnhpZGxlKGZpLCBldmVudCwgYXJnKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTUxNi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MTc6XFx0ZnNtX25ld3N0YXRlKGZpLCAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTE4LVxcdFxcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MjAtZG9uZTpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MjE6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiRXhpdCAlczogaWQ9JXMsIGNoPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIyLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNlaWQsIGNoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTUzNj1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1NDUtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTU0NjpcXHRDVENNX1BSX0RFQlVHKFxcXCIlczogJXM6ICVzOiBjcDolaSwgY2hzdGF0ZTolaSBncnBzdGF0ZTolaVxcXFxuXFxcIixcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MTkuNTk2NjQwNjYyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1MDg0OTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBzMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzMzkwIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSBrbm93IHRoZSBzdGFuZGFyZCBsYXlvdXQsIHNvIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBJJ20gZXhwZWN0aW5nIHRoaXMgZmlsZSB0byBkZWZpbmUgYWxsIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBvbiB0aGUgU3lzdGVtIHogYXJjaGl0ZWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgdmFyaW91cyBuZXR3b3JrIGNhcmQgZHJpdmVycyBzdXBwb3J0ZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLCBtYXliZSBzb21lIHMzOTAtc3BlY2lmaWMgcHJvdG9jb2wgY29uZmlndXJhdGlvbnMsIGFuZCBsaWtlbHkgZGVwZW5kZW5jeSBjaGVja3MgdGhhdCBwZXJ0YWluIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBzMzkwIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBuZXR3b3JraW5nIG9wdGlvbnMuIEhvdyBhcmUgdmFyaW91cyBOSUNzIGVuYWJsZWQvZGlzYWJsZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzPyBIb3cgYXJlIGRpZmZlcmVudCBuZXR3b3JraW5nIGZlYXR1cmVzIG9yIHByb3RvY29scyBjb25maWd1cmVkPyBJJ2xsIHByb2JhYmx5IHNjYW4gZm9yIGBjb25maWdgIGVudHJpZXMsIGxvb2tpbmcgZm9yIGxpa2VseSByZWxldmFudCBzeW1ib2xzLiBUaGVuIEknbGwgZm9jdXMgb24gcmVsYXRpb25zaGlwcyBhbmQgY29udGV4dDogV2hvIHVzZXMgdGhlbSwgYW5kIGhvdyBhcmUgdGhleSBjb21iaW5lZD8gSSdsbCBhbHNvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24uIFRoaXMgdGV4dCB3aWxsIHByb3ZpZGUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgcHVycG9zZSBhbmQgaW50ZW5kZWQgdXNlIG9mIGVhY2ggY29uZmlndXJhYmxlIHNldHRpbmcuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBuZXR3b3JraW5nIG9uIHRoZSBzMzkwIHBsYXRmb3JtLCB0byByZWNvZ25pemUgcG90ZW50aWFsbHkgbmVlZGVkIGN1c3RvbWl6YXRpb24gYXJlYXMsIGFuZCBwcmVwYXJlIG15c2VsZiB0byBpZGVudGlmeSB0aGUgaW1wYWN0cyBvZiBtYWtpbmcgY2VydGFpbiBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MjIuMzQ3NDkzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgUzM5MFxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgQ1RDTVxcbiAgIDY6XFx0XFx0ZGVmX3RyaXN0YXRlIG1cXG4gICA3OlxcdFxcdHByb21wdCBcXFwiQ1RDIGFuZCBNUEMgU05BIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBDQ1cgXFx1MDAyNlxcdTAwMjYgTkVUREVWSUNFU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGNoYW5uZWwtdG8tY2hhbm5lbFxcbiAgMTE6XFx0XFx0ICBwb2ludC10by1wb2ludCBuZXR3b3JraW5nIG9uIElCTSBTeXN0ZW0gei5cXG4gIDEyOlxcdFxcdCAgVGhpcyBkZXZpY2UgZHJpdmVyIHN1cHBvcnRzIHJlYWwgQ1RDIGNvdXBsaW5nIHVzaW5nIEVTQ09OLlxcbiAgMTM6XFx0XFx0ICBJdCBhbHNvIHN1cHBvcnRzIHZpcnR1YWwgQ1RDcyB3aGVuIHJ1bm5pbmcgdW5kZXIgVk0uXFxuICAxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgY2hhbm5lbC10by1jaGFubmVsIE1QQyBTTkEgZGV2aWNlcy5cXG4gIDE1OlxcdFxcdCAgTVBDIGlzIGFuIFNOQSBwcm90b2NvbCBkZXZpY2UgdXNlZCBieSBDb21tdW5pY2F0aW9uIFNlcnZlciBmb3IgTGludXguXFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgY3RjbS5cXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSBpbnRvIHRoZSBrZXJuZWwsIGNob29zZSBZLlxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgZG8gbm90IG5lZWQgYW55IGNoYW5uZWwtdG8tY2hhbm5lbCBjb25uZWN0aW9uLCBjaG9vc2UgTi5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNNU0dJVUNWXFxuICAyMTpcXHRcXHRkZWZfdHJpc3RhdGUgbVxcbiAgMjI6XFx0XFx0cHJvbXB0IFxcXCJJVUNWIHNwZWNpYWwgbWVzc2FnZSBzdXBwb3J0IChWTSBvbmx5KVxcXCJcXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gSVVDVlxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byByZWNlaXZlIFNNU0cgbWVzc2FnZXNcXG4gIDI2OlxcdFxcdCAgZnJvbSBvdGhlciBWTSBndWVzdCBzeXN0ZW1zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgU01TR0lVQ1ZfRVZFTlRcXG4gIDI5OlxcdFxcdGRlZl90cmlzdGF0ZSBtXFxuICAzMDpcXHRcXHRwcm9tcHQgXFxcIkRlbGl2ZXIgSVVDViBzcGVjaWFsIG1lc3NhZ2VzIGFzIHVldmVudHMgKFZNIG9ubHkpXFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBTTVNHSVVDVlxcbiAgMzI6XFx0XFx0aGVscFxcbiAgMzM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZGVsaXZlciBDUCBzcGVjaWFsIG1lc3NhZ2VzIChTTVNHcykgYXNcXG4gIDM0OlxcdFxcdCAgdWV2ZW50cy4gIFRoZSBkcml2ZXIgaGFuZGxlcyBvbmx5IHRob3NlIHNwZWNpYWwgbWVzc2FnZXMgdGhhdFxcbiAgMzU6XFx0XFx0ICBzdGFydCB3aXRoIFxcXCJBUFBcXFwiLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgXFxcInNtc2dpdWN2X2FwcFxcXCIuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBRRVRIXFxuICA0MDpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiAgNDE6XFx0XFx0cHJvbXB0IFxcXCJHaWdhYml0IEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBDQ1cgXFx1MDAyNlxcdTAwMjYgTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1QgXFx1MDAyNlxcdTAwMjYgUURJTyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVFxcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJQk0ncyBPU0EgRXhwcmVzcyBuZXR3b3JrIGFkYXB0ZXJzIGluIFFESU8gbW9kZSxcXG4gIDQ1OlxcdFxcdCAgSGlwZXJTb2NrZXRzIGludGVyZmFjZXMgYW5kIHovVk0gdmlydHVhbCBOSUNzIGZvciBHdWVzdCBMQU4gYW5kXFxuICA0NjpcXHRcXHQgIFZTV0lUQ0guXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXFxuICA0OTpcXHRcXHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjIyLjM0NzU2MzY3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUyOTI1OTEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFMzOTAgTmV0d29yayBEZXZpY2UgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIFMzOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHBvdGVudGlhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB1c2FnZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBjaGVja2luZyBpcyB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1haW4gXCJTLzM5MCBuZXR3b3JrIGRldmljZSBkcml2ZXJzXCIgbWVudSBpcyBndWFyZGVkIGJ5IGBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBTMzkwYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIHRoZW4sIHRoZXJlJ3MgYGNvbmZpZyBDVENNYCwgd2hpY2ggZGVwZW5kcyBvbiBgQ0NXIFx1MDAyNlx1MDAyNiBORVRERVZJQ0VTYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlIGVpdGhlci5cblxuVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlciBpcyB3aGV0aGVyIGFueSBvZiB0aGUgbG93LWxldmVsIENUQ00gb3IgRlNNIGNvZGUgaXMgYWNjaWRlbnRhbGx5IHVzZWQgZWxzZXdoZXJlLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgY3JpdGljYWwgY2hlY2sgaXM6IGFyZSB0aGUgZmlsZXMgYGZzbS5jYCwgYGZzbS5oYCwgb3IgYGN0Y21fbWFpbi5jYCBzb21laG93IGJlaW5nIHB1bGxlZCBpbnRvIHRoZSBidWlsZCBmb3Igbm9uLVMzOTAgYXJjaGl0ZWN0dXJlcz8gSWYgdGhleSBhcmUsIHdlIGhhdmUgYSBwcm9ibGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayB3aGVyZSB0aGVzZSBmaWxlcyBhcmUgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBhbmQgaWYgYW55IHVzZSBvdXRzaWRlIG9mIHRoZSBTMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2sgdG8gcHJldmVudCBjcm9zcy1hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIG9yIGluY29ycmVjdCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzODksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjI0Ljg3NjgyNTc0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ3MDY5MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbV9hZGR0aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTI0NT1zdGF0aWMgdm9pZCBjaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMDYtXFx0XFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjMwNzpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cXHRcXHRjaC1cXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NDMwPXN0YXRpYyB2b2lkIGNoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTItXFx0XFx0XFx0KigoX191MTYgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MzpcXHRcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDU0LVxcdFxcdFxcdFxcdCAgICAgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3MC1cXHQgICAgKGNoLVxcdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcxOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NjAtXFx0fVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYxOlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCB0aW1lb3V0LCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TRVRVUFdBSVQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMC1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TVEFSVFdBSVQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjMxOlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCAxMDAwLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMi1cXHRzcGluX2xvY2tfaXJxc2F2ZShnZXRfY2N3ZGV2X2xvY2soY2gtXFx1MDAzZWNkZXYpLCBzYXZlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02NTA9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2NjE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTc3ND1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zZXR1cGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzg5LVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjc5MDpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc5MS1cXHRcXHRpZiAoIUlTX01QQyhjaCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODI0PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM4OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVxcdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9OTk3PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAzNy1cXHRcXHR9XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDM4OlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCAxMDAwLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzktXFx0XFx0aWYgKGV2ZW50ID09IENUQ19FVkVOVF9USU1FUikgLyogZm9yIFRJTUVSIG5vdCB5ZXQgbG9ja2VkICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEyMTY9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF90eGRvbmUoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTItXFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNTM6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzU0LVxcdGNoLVxcdTAwM2Vwcm9mLnNlbmRfc3RhbXAgPSBqaWZmaWVzO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNTg5PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfYXR0bihmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE2MDYtXFx0XFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE2MDc6XFx0XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTYwOC1cXHRcXHRcXHRcXHRNUENfWElEX1RJTUVPVVRfVkFMVUUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE2NDg9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuYnVzeShmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE3MTQtXFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE3MTU6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyLCBNUENfWElEX1RJTUVPVVRfVkFMVUUsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE2LVxcdFxcdFxcdCAgICAgTVBDR19FVkVOVF9USU1FUiwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTc1MD1zdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3NlbmRfc3dlZXAoZnNtX2luc3RhbmNlICpmc20sIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzc1LVxcdFxcdC8qIGdpdmUgdGhlIHByZXZpb3VzIElPIHRpbWUgdG8gY29tcGxldGUgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE3NzY6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZ3Y2gtXFx1MDAzZXN3ZWVwX3RpbWVyLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTc3Ny1cXHRcXHRcXHQyMDAsIENUQ19FVkVOVF9SU1dFRVBfVElNRVIsIHdjaCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE4MTQtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxODE1OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2d2NoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIHdjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xODE2LVxcdGZzbV9uZXdzdGF0ZSh3Y2gtXFx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MjEwNT1zdGF0aWMgdm9pZCBkZXZfYWN0aW9uX3Jlc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxMjctXFx0LyogdG8gc2Vuc2UgcmVwb3J0ZWQgd2hlbiBJTyBpcyBhYm9ydGVkXFx0XFx0XFx0ICAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjEyODpcXHRmc21fYWRkdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfdGltZXIsIHJlc3RhcnRfdGltZXIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTI5LVxcdFxcdFxcdERFVl9FVkVOVF9TVEFSVCwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NDY0PXN0YXRpYyBpbnQgY3RjbV90cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjctXFx0ZnNtX25ld3N0YXRlKGNoLVxcdTAwM2Vmc20sIENUQ19TVEFURV9UWCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYzo1Njg6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjktXFx0c3Bpbl9sb2NrX2lycXNhdmUoZ2V0X2Njd2Rldl9sb2NrKGNoLVxcdTAwM2VjZGV2KSwgc2F2ZWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NTk2PXN0YXRpYyB2b2lkIGN0Y21wY19zZW5kX3N3ZWVwX3JlcShzdHJ1Y3QgY2hhbm5lbCAqcmNoKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy02MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYzo2MzI6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNlc3dlZXBfdGltZXIsIDEwMCwgQ1RDX0VWRU5UX1JTV0VFUF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNjMzLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYz02NDc9c3RhdGljIGludCBjdGNtcGNfdHJhbnNtaXRfc2tiKHN0cnVjdCBjaGFubmVsICpjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg1LVxcdGZzbV9uZXdzdGF0ZShjaC1cXHUwMDNlZnNtLCBDVENfU1RBVEVfVFgpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6Nzg2OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg3LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTM5OT12b2lkIGN0Y19tcGNfZXN0YWJsaXNoX2Nvbm5lY3Rpdml0eShpbnQgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDY4LVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Z3JwLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjQ2OTpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmdycC1cXHUwMDNldGltZXIsIE1QQ19YSURfVElNRU9VVF9WQUxVRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDcwLVxcdFxcdFxcdFxcdFxcdFxcdE1QQ0dfRVZFTlRfVElNRVIsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9NjM5PXN0YXRpYyB2b2lkIGN0Y21wY19zZW5kX3N3ZWVwX3Jlc3Aoc3RydWN0IGNoYW5uZWwgKnJjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy02NjQtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjY2NTpcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2Vzd2VlcF90aW1lciwgMTAwLCBDVENfRVZFTlRfUlNXRUVQX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2Ni1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYz0xMzM2PXN0YXRpYyB2b2lkIG1wY19hY3Rpb25fZ29faW5vcChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDEyLVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNlcmVzdGFydF90aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE0MTM6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3RpbWVyLCA1MDAsIERFVl9FVkVOVF9SRVNUQVJULCBkZXYpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDE0LVxcdFxcdGZzbV9uZXdzdGF0ZShncnAtXFx1MDAzZWZzbSwgTVBDR19TVEFURV9SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQyMC1cXHRcXHRmc21fZGVsdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzoxNDIxOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNlcmVzdGFydF90aW1lciwgNTAwLCBERVZfRVZFTlRfU1RPUCwgZGV2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQyMi1cXHRcXHRmc21fbmV3c3RhdGUoZ3JwLVxcdTAwM2Vmc20sIE1QQ0dfU1RBVEVfUkVTRVQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTE2NDk9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE3ODE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIDUwMDAgLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTc4Mi1cXHRyYyA9IGNjd19kZXZpY2Vfc3RhcnQoY2gtXFx1MDAzZWNkZXYsIFxcdTAwMjZjaC1cXHUwMDNlY2N3WzhdLCAwLCAweGZmLCAwKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM9MTY1PWludFxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTY2OmZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuZHJpdmVycy9zMzkwL25ldC9mc20uYy0xNjcte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9mc20uYz0xOTc9RVhQT1JUX1NZTUJPTChmc21fZGVsdGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTk4OkVYUE9SVF9TWU1CT0woZnNtX2FkZHRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLTE5OS1FWFBPUlRfU1lNQk9MKGZzbV9tb2R0aW1lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oPTIyNj1jb25zdCBjaGFyICpmc21fZ2V0c3RhdGVfc3RyKGZzbV9pbnN0YW5jZSAqZmkpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzItICpcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oOjIzMzogKiBQcmVwYXJlcyBhbiBmc21fdGltZXIgZm9yIHVzYWdlIHdpdGggZnNtX2FkZHRpbWVyKCkuXFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzQtICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oPTI0Mz12b2lkIGZzbV9kZWx0aW1lcihmc21fdGltZXIgKnRpbWVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjQ1LS8qKlxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjQ2OiAqIGZzbV9hZGR0aW1lciAtIEFkZHMgYW5kIHN0YXJ0cyBhIHRpbWVyIGZvciBhbiBGU00gaW5zdGFuY2VcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI0Ny0gKiBAdGltZXI6IFRoZSB0aW1lciB0byBiZSBhZGRlZCAodGltZXItXFx1MDAzZWZpIG11c3QgcG9pbnQgdG8gdGhlIEZTTSBpbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjU2LSAqL1xcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjU3OmludCBmc21fYWRkdGltZXIoZnNtX3RpbWVyICp0aW1lciwgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZyk7XFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yNTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjI3LjAyMzg5OTgxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNTA5NDEzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENvZGUgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBpcyB0byBjaGVjayBpZiB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gYW4gYXJjaGl0ZWN0dXJlIHRoYXQncyAqbm90KiB0aGUgdGFyZ2V0LCBhbmQgaWYgdGhlcmUgYXJlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuIExldCdzIGRpZyBpbi4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB3aGVyZSBgZnNtX21vZHRpbWVyYCBhbmQgb3RoZXIgc3ltYm9scyBhcmUgdXNlZCBpbiBgZHJpdmVycy9zMzkwL25ldC9mc20uY2AgYW5kIHdoZXJlIGBmc20uY2AgaXMgY29tcGlsZWQuIFRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIGBmc20ub2AgaXMgYnVpbHQgaWYgYENPTkZJR19DVENNYCBpcyBlbmFibGVkLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCBpc24ndCB1c2VkIGVsc2V3aGVyZSB3aXRoIGEgcXVpY2sgc2VhcmNoLiBUaGUgcmVzdWx0cyBzZWVtIHRvIGJlIGNvbnN0cmFpbmVkIHRvIGBkcml2ZXJzL3MzOTAvbmV0L2AuXG5cblJpZ2h0LCBgZHJpdmVycy9zMzkwL2AuLi4gdGhhdCdzIGEgcmVkIGZsYWcuIExldCdzIGNvbmZpcm0gdGhhdCdzIFMzOTAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBqdXN0IHRvIGJlIHN1cmUuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YC5cblxuT2theSwgdGhlIGd1aWRlbGluZXMuIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBhcmUgYSBiaWcgbm8tbm8gZm9yIFdvcnRoRnV6emluZy4gU3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYW5vdGhlci4gU28sIGxldCdzIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZpbGVzOiBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYC4gQm90aCBvZiB0aG9zZSBhcmUgc3F1YXJlbHkgd2l0aGluIHRoZSBgZHJpdmVycy9zMzkwL25ldC9gIGRpcmVjdG9yeSwgcGFydCBvZiB0aGUgUzM5MCBzdWJzeXN0ZW0uIFxuXG5MZXQncyBub3cgYmUgY2VydGFpbiB0aGF0IGBDT05GSUdfQ1RDTWAgZGVwZW5kcyBvbiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYC4gSW4gdGhlIGBLY29uZmlnYCwgSSBjYW4gc2VlIHRoZSBgbWVudSBcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcImAgd2l0aCBhIGRlcGVuZGVuY3kgb24gYE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IFMzOTBgLiBgQ09ORklHX0NUQ01gIGRlcGVuZHMgb24gYENDVyBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU2AuIEkga25vdyB0aGF0IGBDQ1dgIGlzIG9ubHkgYXZhaWxhYmxlIG9uIGBDT05GSUdfUzM5MGAuIFNvIG5vdyBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIEkgY2FuIGV2ZW4gKmVuYWJsZSogYENPTkZJR19TMzkwYCBvciBgQ09ORklHX0NDV2Agb24gYGFtZDY0YC4gTGV0J3MgZ3JlcCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLiBUaGlzIGNsZWFybHkgbG9va3MgbGlrZSB0aGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIGFuZCB3aWxsIG5vdCBiZSByZWFjaGVkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDozMS4yNzQ4NDQxNTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDIxMzM3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENDV1xcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9LY29uZmlnPTg2MD1lbmRtZW51XFxuYXJjaC9zMzkwL0tjb25maWctODYxLVxcbmFyY2gvczM5MC9LY29uZmlnOjg2Mjpjb25maWcgQ0NXXFxuYXJjaC9zMzkwL0tjb25maWctODYzLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MzQuMTE2OTg2MjY5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNTQ2ODY4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgczM5MC1TcGVjaWZpYyBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCBhcmUgdGhlIGZpbGVzIGJlaW5nIG1vZGlmaWVkLiBJIGtub3cgZnJvbSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHRoYXQgYENPTkZJR19DQ1dgIGlzIGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYCwgYW5kIHRoZSBuZXR3b3JraW5nIEtjb25maWcgaW4gYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZGVwZW5kcyBvbiBgUzM5MGAuIFRoaXMgbWVhbnMgdGhlc2UgZmlsZXMgYXJlICpleGNsdXNpdmVseSogYnVpbHQgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhleSB3b24ndCBldmVuIGNvbXBpbGUsIGxldCBhbG9uZSBydW4sIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LlxuXG5UaGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiIGNhdGVnb3J5IGFzIHBlciB0aGUgZG9jdW1lbnRhdGlvbi4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSwgc28gYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGRpZmYgdG8gY29uZmlybSwgYW5kIHllcywgaXQncyBqdXN0IHRob3NlIHR3byBzMzkwLXNwZWNpZmljIGZpbGVzLiBQZXJmZWN0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgb3V0cHV0LiBJIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgcmVzcG9uc2UuIEkga25vdyB0aGUgZmllbGRzIEkgbmVlZDogYFdvcnRoRnV6emluZ2AsIGBSZWFzb25pbmdgLCBgRm9jdXNTeW1ib2xzYCwgYW5kIGBFbmFibGVDb25maWdzYC5cblxuKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuXG4qICAgYFJlYXNvbmluZ2A6IE9rYXksIHRoZSByZWFzb25pbmcgbmVlZHMgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuIEknbGwgcGhyYXNlIGl0IGFzOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jYCBhbmQgYGRyaXZlcnMvczM5MC9uZXQvZnNtLmNgIChDT05GSUdfQ1RDTSksIHdoaWNoIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGNhbm5vdCBiZSBjb21waWxlZCBvciBleGVjdXRlZCBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiXG4qICAgYEZvY3VzU3ltYm9sc2A6IFNpbmNlIHRoZSBjb2RlIGlzIG5vdCB0YXJnZXRlZCwgSSdtIGdvaW5nIHRvIHBhc3MgYW4gZW1wdHkgYXJyYXksIGBbXWAuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBBbHNvLCBhcyBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLCBJJ2xsIHBhc3MgYW4gZW1wdHkgYXJyYXksIGBbXWAuXG5cbkdyZWF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb24gb2YgcGFzc2luZyBlbXB0eSBhcnJheXMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2hlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGF0IHNob3VsZCBiZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5NDEsIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjM4LjM3MTY3NTY4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDozOC4zNzE2OTkxMzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow52pgh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 19:15:27 +0000 UTC FinishedAt: 2026-09-07 19:54:39 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjg4Mjk3ZGZmMDUzY2Q0NGI3NmE3ZTk1YTEzMDU1MzliNmI1MDg0ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMTk6NTQ6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmNcbmluZGV4IDhiMGQ3NmE0N2Q5ZjAuLjYzZjg4MzJmOWIxNDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG5AQCAtMjExLDkgJiM0MzsyMTEsOSBAQCBzdGF0aWMgdm9pZCBjaGFubmVsX3JlbW92ZShzdHJ1Y3QgY2hhbm5lbCAqY2gpXG4gXHR3aGlsZSAoKmMpIHtcbiBcdFx0aWYgKCpjID09IGNoKSB7XG4gXHRcdFx0KmMgPSBjaC1cdTAwM2VuZXh0O1xuLVx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4mIzQzO1x0XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmNoLVx1MDAzZXRpbWVyLnRsKTtcbiBcdFx0XHRpZiAoSVNfTVBDKGNoKSlcbi1cdFx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2Vzd2VlcF90aW1lcik7XG4mIzQzO1x0XHRcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2gtXHUwMDNlc3dlZXBfdGltZXIudGwpO1xuIFxuIFx0XHRcdGtmcmVlX2ZzbShjaC1cdTAwM2Vmc20pO1xuIFx0XHRcdGNsZWFyX25vcm1hbGl6ZWRfY2RhKFx1MDAyNmNoLVx1MDAzZWNjd1s0XSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9mc20uYyBiL2RyaXZlcnMvczM5MC9uZXQvZnNtLmNcbmluZGV4IDliODYyMmFlZjgwN2IuLjhkMmU5YmJiNzRhMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG5AQCAtMTcxLDEyICYjNDM7MTcxLDkgQEAgZnNtX2FkZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdCAgICAgICB0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyAmIzQzOyAobWlsbGlzZWMgKiBIWikgLyAxMDAwO1xuLVx0YWRkX3RpbWVyKFx1MDAyNnRoaXMtXHUwMDNldGwpO1xuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIG1vZF90aW1lcihcdTAwMjZ0aGlzLVx1MDAzZXRsLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXG5AQCAtMTg5LDEyICYjNDM7MTg2LDkgQEAgZnNtX21vZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdFx0dGhpcy1cdTAwM2VmaS1cdTAwM2VuYW1lLCB0aGlzLCBtaWxsaXNlYyk7XG4gI2VuZGlmXG4gXG4tXHR0aW1lcl9kZWxldGUoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4tXHR0aW1lcl9zZXR1cChcdTAwMjZ0aGlzLVx1MDAzZXRsLCBmc21fZXhwaXJlX3RpbWVyLCAwKTtcbiBcdHRoaXMtXHUwMDNlZXhwaXJlX2V2ZW50ID0gZXZlbnQ7XG4gXHR0aGlzLVx1MDAzZWV2ZW50X2FyZyA9IGFyZztcbi1cdHRoaXMtXHUwMDNldGwuZXhwaXJlcyA9IGppZmZpZXMgJiM0MzsgKG1pbGxpc2VjICogSFopIC8gMTAwMDtcbi1cdGFkZF90aW1lcihcdTAwMjZ0aGlzLVx1MDAzZXRsKTtcbiYjNDM7XHRtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKG1pbGxpc2VjKSk7XG4gfVxuIFxuIEVYUE9SVF9TWU1CT0woaW5pdF9mc20pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY4ODI5N2RmZjA1M2NkNDRiNzZhN2U5NWExMzA1NTM5YjZiNTA4NGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDE5OjU0OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMKaW5kZXggOGIwZDc2YTQ3ZDlmMC4uNjNmODgzMmY5YjE0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jCkBAIC0yMTEsOSAmIzQzOzIxMSw5IEBAIHN0YXRpYyB2b2lkIGNoYW5uZWxfcmVtb3ZlKHN0cnVjdCBjaGFubmVsICpjaCkKIAl3aGlsZSAoKmMpIHsKIAkJaWYgKCpjID09IGNoKSB7CiAJCQkqYyA9IGNoLSZndDtuZXh0OwotCQkJZnNtX2RlbHRpbWVyKCZhbXA7Y2gtJmd0O3RpbWVyKTsKJiM0MzsJCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2NoLSZndDt0aW1lci50bCk7CiAJCQlpZiAoSVNfTVBDKGNoKSkKLQkJCQlmc21fZGVsdGltZXIoJmFtcDtjaC0mZ3Q7c3dlZXBfdGltZXIpOwomIzQzOwkJCQl0aW1lcl9kZWxldGVfc3luYygmYW1wO2NoLSZndDtzd2VlcF90aW1lci50bCk7CiAKIAkJCWtmcmVlX2ZzbShjaC0mZ3Q7ZnNtKTsKIAkJCWNsZWFyX25vcm1hbGl6ZWRfY2RhKCZhbXA7Y2gtJmd0O2Njd1s0XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jIGIvZHJpdmVycy9zMzkwL25ldC9mc20uYwppbmRleCA5Yjg2MjJhZWY4MDdiLi44ZDJlOWJiYjc0YTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMKQEAgLTE3MSwxMiAmIzQzOzE3MSw5IEBAIGZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpCiAJICAgICAgIHRoaXMtJmd0O2ZpLSZndDtuYW1lLCB0aGlzLCBtaWxsaXNlYyk7CiAjZW5kaWYKIAotCXRpbWVyX3NldHVwKCZhbXA7dGhpcy0mZ3Q7dGwsIGZzbV9leHBpcmVfdGltZXIsIDApOwogCXRoaXMtJmd0O2V4cGlyZV9ldmVudCA9IGV2ZW50OwogCXRoaXMtJmd0O2V2ZW50X2FyZyA9IGFyZzsKLQl0aGlzLSZndDt0bC5leHBpcmVzID0gamlmZmllcyAmIzQzOyAobWlsbGlzZWMgKiBIWikgLyAxMDAwOwotCWFkZF90aW1lcigmYW1wO3RoaXMtJmd0O3RsKTsKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIG1vZF90aW1lcigmYW1wO3RoaXMtJmd0O3RsLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTsKIH0KIAogLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovCkBAIC0xODksMTIgJiM0MzsxODYsOSBAQCBmc21fbW9kdGltZXIoZnNtX3RpbWVyICp0aGlzLCBpbnQgbWlsbGlzZWMsIGludCBldmVudCwgdm9pZCAqYXJnKQogCQl0aGlzLSZndDtmaS0mZ3Q7bmFtZSwgdGhpcywgbWlsbGlzZWMpOwogI2VuZGlmCiAKLQl0aW1lcl9kZWxldGUoJmFtcDt0aGlzLSZndDt0bCk7Ci0JdGltZXJfc2V0dXAoJmFtcDt0aGlzLSZndDt0bCwgZnNtX2V4cGlyZV90aW1lciwgMCk7CiAJdGhpcy0mZ3Q7ZXhwaXJlX2V2ZW50ID0gZXZlbnQ7CiAJdGhpcy0mZ3Q7ZXZlbnRfYXJnID0gYXJnOwotCXRoaXMtJmd0O3RsLmV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7Ci0JYWRkX3RpbWVyKCZhbXA7dGhpcy0mZ3Q7dGwpOwomIzQzOwltb2RfdGltZXIoJmFtcDt0aGlzLSZndDt0bCwgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKG1pbGxpc2VjKSk7CiB9CiAKIEVYUE9SVF9TWU1CT0woaW5pdF9mc20pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDIwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZyb20gdGhlIHN0YXJ0LiBOb3csIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL3MzOTAvbmV0L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGN0Y21fbWFpbi5jYCBhbmQgYGZzbS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2lsbCB0aGlzIGV2ZW4gYXBwbHkgY2xlYW5seSwgZ2l2ZW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIHRoZSAqczM5MCogY29tcG9uZW50PyYjMzQ7IAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIEtjb25maWcgcmVhY2hhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgbmV0d29yayBtb2R1bGUuIE15IG5leHQgc3RlcCBpcyB0byB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBJJiMzOTtsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIHRvIHNlZSBpZiB0aGUgbW9kdWxlIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIHRoZW4gYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL3MzOTAvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhpcyBjaGFuZ2Ugd2lsbCBpbXBhY3QgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBjcm9zcyBjb21waWxhdGlvbiBvY2N1cnJpbmcgb3IgaWYgdGhlc2UgYXJlIHg4Ni9hbWQ2NCBzcGVjaWZpYyBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NUQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3MzOTAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODAzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc9Mj1tZW51IFwmIzM0O1MvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNC1cbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo1OmNvbmZpZyBDVENNXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNi1cdGRlZl90cmlzdGF0ZSBtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnPTc4PWNvbmZpZyBDQ1dHUk9VUFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVx0dHJpc3RhdGVcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZzo4MDpcdGRlZmF1bHQgKENUQ00gfHwgUUVUSCB8fCBTTUMpXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctODEtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT04PWN0Y20teSAmIzQzOz0gY3RjbV9tYWluLm8gY3RjbV9mc21zLm8gY3RjbV9tcGMubyBjdGNtX3N5c2ZzLm8gY3RjbV9kYnVnLm9cbmRyaXZlcnMvczM5MC9uZXQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ1RDTSkgJiM0Mzs9IGN0Y20ubyBmc20ub1xuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfU01TR0lVQ1YpICYjNDM7PSBzbXNnaXVjdi5vXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy0yMy1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MjQ6c3RydWN0IGN0Y21fZGJmX2luZm8gY3RjbV9kYmZbQ1RDTV9EQkZfSU5GT1NdID0ge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNTpcdFtDVENNX0RCRl9TRVRVUF0gICAgID0ge1wmIzM0O2N0Y19zZXR1cFwmIzM0OywgOCwgMSwgNjQsIENUQ19EQkZfSU5GTywgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI2Olx0W0NUQ01fREJGX0VSUk9SXSAgICAgPSB7XCYjMzQ7Y3RjX2Vycm9yXCYjMzQ7LCA4LCAxLCA2NCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI3Olx0W0NUQ01fREJGX1RSQUNFXSAgICAgPSB7XCYjMzQ7Y3RjX3RyYWNlXCYjMzQ7LCA4LCAxLCA2NCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI4Olx0W0NUQ01fREJGX01QQ19TRVRVUF0gPSB7XCYjMzQ7bXBjX3NldHVwXCYjMzQ7LCA4LCAxLCA4MCwgQ1RDX0RCRl9JTkZPLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6Mjk6XHRbQ1RDTV9EQkZfTVBDX0VSUk9SXSA9IHtcJiMzNDttcGNfZXJyb3JcJiMzNDssIDgsIDEsIDgwLCBDVENfREJGX0VSUk9SLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzA6XHRbQ1RDTV9EQkZfTVBDX1RSQUNFXSA9IHtcJiMzNDttcGNfdHJhY2VcJiMzNDssIDgsIDEsIDgwLCBDVENfREJGX0VSUk9SLCBOVUxMfSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzEtfTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jPTMzPXZvaWQgY3RjbV91bnJlZ2lzdGVyX2RiZl92aWV3cyh2b2lkKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzUtXHRpbnQgeDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzY6XHRmb3IgKHggPSAwOyB4IFx1MDAzYyBDVENNX0RCRl9JTkZPUzsgeCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzctXHRcdGRlYnVnX3VucmVnaXN0ZXIoY3RjbV9kYmZbeF0uaWQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM9NDI9aW50IGN0Y21fcmVnaXN0ZXJfZGJmX3ZpZXdzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy00NC1cdGludCB4O1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzo0NTpcdGZvciAoeCA9IDA7IHggXHUwMDNjIENUQ01fREJGX0lORk9TOyB4JiM0MzsmIzQzOykge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYy00Ni1cdFx0LyogcmVnaXN0ZXIgdGhlIGFyZWFzICovXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC03LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4OiNpZm5kZWYgX0NUQ01fREJVR19IX1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5OiNkZWZpbmUgX0NUQ01fREJVR19IX1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMC1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTQ1PWVudW0gY3RjbV9kYmZfbmFtZXMge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0NjpcdENUQ01fREJGX1NFVFVQLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0NzpcdENUQ01fREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0ODpcdENUQ01fREJGX1RSQUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0OTpcdENUQ01fREJGX01QQ19TRVRVUCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6NTA6XHRDVENNX0RCRl9NUENfRVJST1IsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUxOlx0Q1RDTV9EQkZfTVBDX1RSQUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo1MjpcdENUQ01fREJGX0lORk9TXHQvKiBtdXN0IGJlIGxhc3QgZWxlbWVudCAqL1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC01My19O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg9NTU9c3RydWN0IGN0Y21fZGJmX2luZm8ge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjMtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjY0OmV4dGVybiBzdHJ1Y3QgY3RjbV9kYmZfaW5mbyBjdGNtX2RiZltDVENNX0RCRl9JTkZPU107XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTY1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg9NzE9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpzdHJ0YWlsKGNvbnN0IGNoYXIgKnMsIGludCBuKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzYtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjc3OiNkZWZpbmUgQ1RDTV9GVU5UQUlMIHN0cnRhaWwoKGNoYXIgKilfX2Z1bmNfXywgMTYpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTc4LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3OTojZGVmaW5lIENUQ01fREJGX1RFWFQobmFtZSwgbGV2ZWwsIHRleHQpIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgwLVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4MTpcdFx0ZGVidWdfdGV4dF9ldmVudChjdGNtX2RiZltDVENNX0RCRl8jI25hbWVdLmlkLCBsZXZlbCwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgyLVx0fSB3aGlsZSAoMClcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODMtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjg0OiNkZWZpbmUgQ1RDTV9EQkZfSEVYKG5hbWUsIGxldmVsLCBhZGRyLCBsZW4pIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg1LVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4NjpcdFx0ZGVidWdfZXZlbnQoY3RjbV9kYmZbQ1RDTV9EQkZfIyNuYW1lXS5pZCwgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODctXHRcdFx0XHRcdGxldmVsLCAodm9pZCAqKShhZGRyKSwgbGVuKTsgXFxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg5LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5MDojZGVmaW5lIENUQ01fREJGX1RFWFRfKG5hbWUsIGxldmVsLCB0ZXh0Li4uKSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo5MTpcdGN0Y21fZGJmX2xvbmd0ZXh0KENUQ01fREJGXyMjbmFtZSwgbGV2ZWwsIHRleHQpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTkyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtOTctICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjk4OiNkZWZpbmUgQ1RDTV9EQkZfREVWX05BTUUoY2F0LCBkZXYsIHRleHQpIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTk5LVx0ZG8geyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMDA6XHRcdENUQ01fREJGX1RFWFRfKGNhdCwgQ1RDX0RCRl9JTkZPLCBcJiMzNDslcyglcykgOi0gJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwMTpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCB0ZXh0KTsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTAyLVx0fSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwNS1cdGRvIHsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTA2Olx0XHRDVENNX0RCRl9URVhUXyhNUENfIyNjYXQsIENUQ19EQkZfSU5GTywgXCYjMzQ7JXMoJXMpIDo9ICVzXCYjMzQ7LCBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMDc6XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOC1cdH0gd2hpbGUgKDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTEwOiNkZWZpbmUgQ1RDTVlfREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTEtXHRkbyB7IFxcXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTQtXHRcdGVsc2UgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTE1Olx0XHRcdENUQ01fREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KTsgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTE2LVx0fSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyMi0gKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTIzOiNkZWZpbmUgQ1RDTV9EQkZfREVWKGNhdCwgZGV2LCB0ZXh0KSBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjQtXHRkbyB7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNTpcdFx0Q1RDTV9EQkZfVEVYVF8oY2F0LCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVwKSA6LTogJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNjpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyNy1cdH0gd2hpbGUgKDApXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMzAtXHRkbyB7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMTpcdFx0Q1RDTV9EQkZfVEVYVF8oTVBDXyMjY2F0LCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVwKSA6PTogJXNcJiMzNDssIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMjpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzMy1cdH0gd2hpbGUgKDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzNC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTM1OiNkZWZpbmUgQ1RDTVlfREJGX0RFVihjYXQsIGRldiwgdGV4dCkgXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM2LVx0ZG8geyBcXFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM5LVx0XHRlbHNlIFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjE0MDpcdFx0XHRDVENNX0RCRl9ERVYoY2F0LCBkZXYsIHRleHQpOyBcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xNDEtXHR9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTkwPXZvaWQgY3RjbV9jY3dfY2hlY2tfcmMoc3RydWN0IGNoYW5uZWwgKmNoLCBpbnQgcmMsIGNoYXIgKm1zZylcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTkxLXtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTkyOlx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE5My1cdFx0XCYjMzQ7JXMoJXMpOiAlczogJTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTk0Olx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBtc2csIHJjKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTk1LVx0c3dpdGNoIChyYykge1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MjEzPXZvaWQgY3RjbV9wdXJnZV9za2JfcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxNi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjE3Olx0Q1RDTV9EQkZfVEVYVChUUkFDRSwgQ1RDX0RCRl9ERUJVRywgX19mdW5jX18pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTgtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0yNDU9c3RhdGljIHZvaWQgY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTI1NS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjU2Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslcyglcyk6ICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY2gtXHUwMDNlaWQsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjU3LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjYyLVx0aWYgKGNoLVx1MDAzZWlyYi1cdTAwM2VzY3N3LmNtZC5jb3VudCAhPSAwKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoyNjM6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNjQtXHRcdFx0XCYjMzQ7JXMoJXMpOiBUWCBub3QgY29tcGxldGUsIHJlbWFpbmluZyAlZCBieXRlc1wmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjY1Olx0XHRcdCAgICAgQ1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjY2LVx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwNi1cdFx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzA3Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cdFx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTMzMz12b2lkIGN0Y21fY2h4X3R4aWRsZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMzOC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzM5Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslcyglcyk6ICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY2gtXHUwMDNlaWQsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzQwLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzU0PXN0YXRpYyB2b2lkIGNoeF9yeChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM2Ni1cdGlmIChsZW4gXHUwMDNjIDgpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzY3Olx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM2OC1cdFx0XHRcJiMzNDslcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXHUwMDNjIDhcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM2OTpcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgbGVuKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzcwLVx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc0LVx0aWYgKGxlbiBcdTAwM2UgY2gtXHUwMDNlbWF4X2J1ZnNpemUpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzc1Olx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM3Ni1cdFx0XHRcJiMzNDslcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXHUwMDNlICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozNzc6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBsZW4sIGNoLVx1MDAzZW1heF9idWZzaXplKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc4LVx0XHRwcml2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzg2LVx0c3dpdGNoIChjaC1cdTAwM2Vwcm90b2NvbCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozODc6XHRjYXNlIENUQ01fUFJPVE9fUzM5MDpcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzg4Olx0Y2FzZSBDVENNX1BST1RPX09TMzkwOlxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODktXHRcdGNoZWNrX2xlbiA9IGJsb2NrX2xlbiAmIzQzOyAyO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk1LVx0aWYgKChsZW4gXHUwMDNjIGJsb2NrX2xlbikgfHwgKGxlbiBcdTAwM2UgY2hlY2tfbGVuKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozOTY6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk3LVx0XHRcdFwmIzM0OyVzKCVzKTogZ290IGJsb2NrIGxlbmd0aCAlZCAhPSByeCBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM5ODpcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUsIGJsb2NrX2xlbiwgbGVuKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk5LVx0XHRpZiAoZG9fZGVidWcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz00MzA9c3RhdGljIHZvaWQgY2h4X2ZpcnN0aW8oZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00MzUtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQzNjpcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM3LVx0XHRcJiMzNDslcyglcykgOiAlMDJ4XCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0Mzg6XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQsIGZzbXN0YXRlKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM5LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDQxLVx0aWYgKGZzbXN0YXRlID09IENUQ19TVEFURV9UWElETEUpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0MjpcdFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ0My1cdFx0XHRcJiMzNDslcyglcyk6IHJlbW90ZSBzaWRlIGlzc3VlZCBSRUFEPywgaW5pdC5cXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0NDpcdFx0XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDQ4LVx0aWYgKChmc21zdGF0ZSA9PSBDVENfU1RBVEVfU0VUVVBXQUlUKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDQ5Olx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCA9PSBDVENNX1BST1RPX09TMzkwKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTAtXHRcdC8qIE9TLzM5MCByZXNwLiB6L09TICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MTpcdFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUyOlx0XHRcdCooKF9fdTE2ICopY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWRhdGEpID0gQ1RDTV9JTklUSUFMX0JMT0NLTEVOO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NTM6XHRcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ1NC1cdFx0XHRcdCAgICAgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NjgtXHQgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDY5Olx0aWYgKChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9XUklURSkgfHxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcwOlx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzM6XHQqKChfX3UxNiAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc0LVx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gMjtcdC8qIFRyYW5zZmVyIG9ubHkgbGVuZ3RoICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3NS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDc2Olx0ZnNtX25ld3N0YXRlKGZpLCAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRClcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc3LVx0XHQgICAgID8gQ1RDX1NUQVRFX1JYSU5JVCA6IENUQ19TVEFURV9UWElOSVQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDkwLVx0ICovXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MTpcdGlmICgoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MjpcdCAgICAoY2gtXHUwMDNlcHJvdG9jb2wgPT0gQ1RDTV9QUk9UT19TMzkwKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00OTMtXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBjaC1cdTAwM2VuZXRkZXY7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01MDg9c3RhdGljIHZvaWQgY2h4X3J4aWRsZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUxNy1cdGJ1ZmxlbiA9ICooKF9fdTE2ICopY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWRhdGEpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MTg6XHRDVENNX1BSX0RFQlVHKFwmIzM0OyVzOiAlczogSW5pdGlhbCBSWCBjb3VudCA9ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MTktXHRcdFx0X19mdW5jX18sIGRldi1cdTAwM2VuYW1lLCBidWZsZW4pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MjAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjUyMTpcdGlmIChidWZsZW4gXHUwMDNlPSBDVENNX0lOSVRJQUxfQkxPQ0tMRU4pIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTIyLVx0XHRpZiAoY3RjbV9jaGVja2FsbG9jX2J1ZmZlcihjaCkpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzItXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MzM6XHRcdENUQ01fUFJfREVCVUcoXCYjMzQ7JXM6ICVzOiBJbml0aWFsIFJYIGNvdW50ICVkIG5vdCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTM0LVx0XHRcdFx0X19mdW5jX18sIGRldi1cdTAwM2VuYW1lLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MzU6XHRcdFx0XHRcdGJ1ZmxlbiwgQ1RDTV9JTklUSUFMX0JMT0NLTEVOKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTM2LVx0XHRjaHhfZmlyc3RpbyhmaSwgZXZlbnQsIGFyZyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTUyLVx0dW5zaWduZWQgbG9uZyBzYXZlZmxhZ3MgPSAwO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1NTM6XHRpbnQgdGltZW91dCA9IENUQ01fVElNRV81X1NFQztcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU0LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU3LVx0XHR0aW1lb3V0ID0gMTUwMDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTU4Olx0XHRDVENNX1BSX0RFQlVHKFwmIzM0O2VudGVyICVzOiBjcD0laSBjaD0weCVwIGlkPSVzXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTktXHRcdFx0XHRfX2Z1bmNfXywgc21wX3Byb2Nlc3Nvcl9pZCgpLCBjaCwgY2gtXHUwMDNlaWQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTYyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfU0VUVVBXQUlUKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYzOlx0Q1RDTV9DQ1dfRFVNUCgoY2hhciAqKVx1MDAyNmNoLVx1MDAzZWNjd1s2XSwgc2l6ZW9mKHN0cnVjdCBjY3cxKSAqIDIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NjQtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01OTEtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MjpcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX0lORk8sIFwmIzM0OyVzKCVzKTogJXNcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MzpcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTk0Olx0XHQoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgPyBcJiMzNDtSWFwmIzM0OyA6IFwmIzM0O1RYXCYjMzQ7KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTk1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjAwLVx0fVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MDE6XHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MDItXHRcdGNoLVx1MDAzZWNjd1sxXS5jbWRfY29kZSA9IENDV19DTURfUkVBRDtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYxMC1cdGlmIChjdGNtX2NoZWNrYWxsb2NfYnVmZmVyKGNoKSkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTE6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTItXHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyB0cmFuc19za2IgYWxsb2MgZGVsYXllZCBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjEzLVx0XHRcdFwmIzM0O3VudGlsIGZpcnN0IHRyYW5zZmVyXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTQ6XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjE1Olx0XHRcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYxNi1cdFx0XHRcdFwmIzM0O1JYXCYjMzQ7IDogXCYjMzQ7VFhcJiMzNDspO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NjUwPV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTY2MC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjYxOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02ODk9c3RhdGljIHZvaWQgY3RjbV9jaHhfY2xlYW51cChmc21faW5zdGFuY2UgKmZpLCBpbnQgc3RhdGUsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02OTQtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjY5NTpcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX05PVElDRSxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk2LVx0XHRcdFwmIzM0OyVzKCVzKTogJXNbJWRdXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2OTc6XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaWQsIHN0YXRlKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk4LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzExLVx0Y2gtXHUwMDNldGhfc2VxX251bSA9IDB4MDA7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjcxMjpcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTcxMy1cdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmNoLVx1MDAzZWlvX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTc3ND1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zZXR1cGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc4OS1cdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkwOlx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc5MS1cdFx0aWYgKCFJU19NUEMoY2gpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo3OTI6XHRcdCAgICAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkzLVx0XHRcdGludCByYyA9IGNjd19kZXZpY2VfaGFsdChjaC1cdTAwM2VjZGV2LCAwKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwMC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAxOlx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfQ1JJVCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODAyLVx0XHRcJiMzNDslcyglcykgOiAlcyBlcnJvciBkdXJpbmcgJXMgY2hhbm5lbCBzZXR1cCBzdGF0ZT0lc1xcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAzOlx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MDQ6XHRcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/IFwmIzM0O1JYXCYjMzQ7IDogXCYjMzQ7VFhcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwNS1cdFx0ZnNtX2dldHN0YXRlX3N0cihmaSkpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDYtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgwNzpcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwOC1cdFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODI0PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzMS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODMyOlx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzMtXHRcdFwmIzM0OyVzOiAlc1slZF0gb2YgJXNcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgzNDpcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBldmVudCwgZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzUtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzctXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjgzODpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVx0b2xkc3RhdGUgPSBmc21fZ2V0c3RhdGUoZmkpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODYzPXN0YXRpYyB2b2lkIGN0Y21fY2h4X3J4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTg3OS1cdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODgwOlx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjg4MTpcdFx0XHQgICAgICAgXCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODgyLVx0XHRcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04ODYtXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODc6XHRcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODg6XHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODg5LVx0XHRcdGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTkwNT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9yeGluaXRmYWlsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTEwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTE6XHRDVENNX0RCRl9URVhUXyhFUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTEyLVx0XHRcdFwmIzM0OyVzKCVzKTogUlggJXMgYnVzeSwgaW5pdC4gZmFpbFwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTEzOlx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTQtXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9SWEVSUik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05MjU9c3RhdGljIHZvaWQgY3RjbV9jaHhfcnhkaXNjKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTMxLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MzI6XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTkzMy1cdFx0XHRcJiMzNDslczogJXM6IHJlbW90ZSBkaXNjb25uZWN0IC0gcmUtaW5pdCAuLi5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjkzNDpcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MzUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTQyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfRFRFUk0pO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NDM6XHRjaDIgPSBwcml2LVx1MDAzZWNoYW5uZWxbQ1RDTV9XUklURV07XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0NC1cdGZzbV9uZXdzdGF0ZShjaDItXHUwMDNlZnNtLCBDVENfU1RBVEVfRFRFUk0pO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9OTU3PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3R4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3MS1cdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTcyOlx0XHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjk3MzpcdFx0XHQgICAgICAgXCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTc0LVx0XHRcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05NzgtXHR9IGVsc2Uge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5Nzk6XHRcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5ODA6XHRcdFx0XCYjMzQ7JXMoJXMpOiAlcyBpbiAlc1wmIzM0OywgQ1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTgxLVx0XHRcdGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk5Nz1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDAzLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDA0Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDtFbnRlcjogJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMDUtXHRcdFx0X19mdW5jX18sIHNtcF9wcm9jZXNzb3JfaWQoKSwgY2gsIGNoLVx1MDAzZWlkKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMDktXHRcdHN0cnVjdCBtcGNfZ3JvdXAgKmdwdHIgPSBwcml2LVx1MDAzZW1wY2c7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTA6XHRcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0lORk8sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMTEtXHRcdFx0XHRcJiMzNDslczogJXM6IHJldHJpZXMgZXhjZWVkZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTI6XHRcdFx0XHRcdENUQ01fRlVOVEFJTCwgY2gtXHUwMDNlaWQpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDEzLVx0XHRmc21fZXZlbnQocHJpdi1cdTAwM2Vmc20sIERFVl9FVkVOVF9UWERPV04sIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDIwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDIxOlx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjItXHRcdFx0XCYjMzQ7JXMgOiAlczogcmV0cnkgJWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMjM6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBjaC1cdTAwM2VyZXRyeSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjQtXHRza2IgPSBza2JfcGVlayhcdTAwMjZjaC1cdTAwM2Vpb19xdWV1ZSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDMwLVx0XHRpZiAoc2V0X25vcm1hbGl6ZWRfY2RhKFx1MDAyNmNoLVx1MDAzZWNjd1s0XSwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzE6XHRcdFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfSU5GTyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAzMi1cdFx0XHRcdFwmIzM0OyVzOiAlczogSURBTCBhbGxvYyBmYWlsZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzM6XHRcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzQtXHRcdFx0ZnNtX2V2ZW50KHByaXYtXHUwMDNlZnNtLCBERVZfRVZFTlRfVFhET1dOLCBkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTA2Nj1zdGF0aWMgdm9pZCBjdGNtX2NoeF9pb2ZhdGFsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3My1cdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwNzQ6XHRDVENNX0RCRl9URVhUXyhFUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3NS1cdFx0XCYjMzQ7JXM6ICVzOiAlcyB1bnJlY292ZXJhYmxlIGNoYW5uZWwgZXJyb3JcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwNzY6XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCwgcmQgPT0gQ1RDTV9SRUFEID8gXCYjMzQ7UlhcJiMzNDsgOiBcJiMzNDtUWFwmIzM0Oyk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwNzctXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDgxLVx0fVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDgyOlx0aWYgKHJkID09IENUQ01fUkVBRCkge1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDgzLVx0XHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9SWEVSUik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xMjE2PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTIzMi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTIzMzpcdENUQ01fUFJfREVCVUcoXCYjMzQ7RW50ZXIgJXM6ICVzIGNwOiVpXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjM0LVx0XHRcdF9fZnVuY19fLCBkZXYtXHUwMDNlbmFtZSwgc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDAtXHRpZiAoY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50ICE9IDApXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyNDE6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9ERUJVRyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI0Mi1cdFx0XHRcJiMzNDslcyglcyk6IFRYIG5vdCBjb21wbGV0ZSwgcmVtYWluaW5nICVkIGJ5dGVzXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjQzOlx0XHRcdCAgICAgQ1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSwgY2gtXHUwMDNlaXJiLVx1MDAzZXNjc3cuY21kLmNvdW50KTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI0NC1cdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjc3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjc4Olx0Q1RDTV9QUl9EQkdEQVRBKFwmIzM0OyVzOiBidWlsZGluZyB0cmFuc19za2IgZnJvbSBjb2xsZWN0X3FcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3OS1cdFx0ICAgICAgIFwmIzM0OyBkYXRhX3NwYWNlOiUwNHhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjkxLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjkyOlx0XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTMtXHRcdFx0XHRfX2Z1bmNfXywgY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyOTQ6XHRcdENUQ01fUFJfREJHREFUQShcJiMzNDslczogcGR1IGhlYWRlciBhbmQgZGF0YSBmb3IgdXBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI5NS1cdFx0XHRcdFwmIzM0OyB0byAzMiBieXRlcyBzZW50IHRvIHZ0YW1cXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI5NjpcdFx0Q1RDTV9EM19EVU1QKChjaGFyICopcF9oZWFkZXIsIG1pbl90KGludCwgc2tiLVx1MDAzZWxlbiwgMzIpKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI5Ny1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMTktXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjA6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IFRvVlRBTV90aF9zZXE9ICUwOHhcXG5cJiMzNDsgLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzIxLVx0XHRcdFx0XHRfX2Z1bmNfXywgY2gtXHUwMDNldGhfc2VxX251bSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjItXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjM6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjQtXHRcdCAgICAgICBfX2Z1bmNfXywgY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjU6XHRDVENNX1BSX0RCR0RBVEEoXCYjMzQ7JXM6IHVwLXRvLTUwIGJ5dGVzIG9mIHRyYW5zX3NrYiBcJiMzNDtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMyNi1cdFx0XHRcJiMzNDtkYXRhIHRvIHZ0YW0gZnJvbSBjb2xsZWN0X3FcXG5cJiMzNDssIF9fZnVuY19fKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyNzpcdENUQ01fRDNfRFVNUCgoY2hhciAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzI4LVx0XHRcdFx0bWluX3QoaW50LCBjaC1cdTAwM2V0cmFuc19za2ItXHUwMDNlbGVuLCA1MCkpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMzMi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMzMzpcdENUQ01fUFJfREJHREFUQShcJiMzNDtjY3djZGE9MHglcCBkYXRhPTB4JXBcXG5cJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMzQtXHRcdFx0KHZvaWQgKikodTY0KWRtYTMyX3RvX3UzMihjaC1cdTAwM2VjY3dbMV0uY2RhKSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDAtXHRcdGNoLVx1MDAzZXRyYW5zX3NrYiA9IE5VTEw7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNDE6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0Mi1cdFx0XHRcJiMzNDslczogJXM6IElEQUwgYWxsb2MgZmFpbGVkXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQzOlx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBjaC1cdTAwM2VpZCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDQtXHRcdGZzbV9ldmVudChwcml2LVx1MDAzZW1wY2ctXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQ3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQ4Olx0Q1RDTV9QUl9EQkdEQVRBKFwmIzM0O2Njd2NkYT0weCVwIGRhdGE9MHglcFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0OS1cdFx0XHQodm9pZCAqKSh1NjQpZG1hMzJfdG9fdTMyKGNoLVx1MDAzZWNjd1sxXS5jZGEpLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM1Mi1cdGNoLVx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VsZW47XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNTM6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTQtXHRjaC1cdTAwM2Vwcm9mLnNlbmRfc3RhbXAgPSBqaWZmaWVzO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTM3OT1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzg5LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzkwOlx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslczogJXM6IGNwOiVpICVzIG1heGJ1ZiA6ICUwNHgsIGxlbjogJTA0eFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM5MTpcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lLCBzbXBfcHJvY2Vzc29yX2lkKCksXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTItXHRcdFx0XHRjaC1cdTAwM2VpZCwgY2gtXHUwMDNlbWF4X2J1ZnNpemUsIGxlbik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzk1LVx0aWYgKHNrYiA9PSBOVUxMKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTY6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM5Ny1cdFx0XHRcJiMzNDslcyglcyk6IFRSQU5TX1NLQiA9IE5VTExcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTg6XHRcdFx0XHRDVENNX0ZVTlRBSUwsIGRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM5OS1cdFx0Z290byBhZ2Fpbjtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MDItXHRpZiAobGVuIFx1MDAzYyBUSF9IRUFERVJfTEVOR1RIKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDM6XHRcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQwNC1cdFx0XHRcdFwmIzM0OyVzKCVzKTogcGFja2V0IGxlbmd0aCAlZCB0b28gc2hvcnRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDU6XHRcdFx0XHRcdENUQ01fRlVOVEFJTCwgZGV2LVx1MDAzZW5hbWUsIGxlbik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MDYtXHRcdHByaXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDE0LVx0XHRpZiAobmV3X3NrYiA9PSBOVUxMKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTU6XHRcdFx0Q1RDTV9EQkZfVEVYVF8oTVBDX0VSUk9SLCBDVENfREJGX0VSUk9SLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDE2LVx0XHRcdFx0XCYjMzQ7JXMoJXMpOiBza2IgYWxsb2NhdGlvbiBmYWlsZWRcJiMzNDssXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTc6XHRcdFx0XHRcdFx0Q1RDTV9GVU5UQUlMLCBkZXYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MTgtXHRcdFx0ZnNtX2V2ZW50KHByaXYtXHUwMDNlbXBjZy1cdTAwM2Vmc20sIE1QQ0dfRVZFTlRfSU5PUCwgZGV2KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NjgtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0Njk6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0V4aXQgJXM6ICVzLCBjaD0weCVwLCBpZD0lc1xcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ3MC1cdFx0XHRfX2Z1bmNfXywgZGV2LVx1MDAzZW5hbWUsIGNoLCBjaC1cdTAwM2VpZCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNDgxPXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfZmlyc3Rpbyhmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0ODctXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0ODg6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0VudGVyICVzOiBpZD0lcywgY2g9MHglcFxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ4OS1cdFx0XHRcdF9fZnVuY19fLCBjaC1cdTAwM2VpZCwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDkwLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDkxOlx0Q1RDTV9EQkZfVEVYVF8oTVBDX1RSQUNFLCBDVENfREJGX0lORk8sXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0OTItXHRcdFx0XCYjMzQ7JXM6ICVzOiBjaHN0YXRlOiVpLCBncnBzdGF0ZTolaSwgcHJvdDolaVxcblwmIzM0OyxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQ5MzpcdFx0XHRDVENNX0ZVTlRBSUwsIGNoLVx1MDAzZWlkLCBmc21fZ2V0c3RhdGUoZmkpLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDk0LVx0XHRcdGZzbV9nZXRzdGF0ZShncHRyLVx1MDAzZWZzbSksIGNoLVx1MDAzZXByb3RvY29sKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MDUtXHRjYXNlIENUQ19TVEFURV9TRVRVUFdBSVQ6XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MDY6XHRcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MDctXHRcdFx0Y3RjbXBjX2NoeF9yeGlkbGUoZmksIGV2ZW50LCBhcmcpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTUxNi1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTUxNzpcdGZzbV9uZXdzdGF0ZShmaSwgKENIQU5ORUxfRElSRUNUSU9OKGNoLVx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MTgtXHRcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIwLWRvbmU6XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MjE6XHRDVENNX1BSX0RFQlVHKFwmIzM0O0V4aXQgJXM6IGlkPSVzLCBjaD0weCVwXFxuXCYjMzQ7LFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIyLVx0XHRcdFx0X19mdW5jX18sIGNoLVx1MDAzZWlkLCBjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNTM2PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1NDUtXHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNTQ2Olx0Q1RDTV9QUl9ERUJVRyhcJiMzNDslczogJXM6ICVzOiBjcDolaSwgY2hzdGF0ZTolaSBncnBzdGF0ZTolaVxcblwmIzM0OyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBzMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgczM5MCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkga25vdyB0aGUgc3RhbmRhcmQgbGF5b3V0LCBzbyBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGRlZmluZSBhbGwgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBuZXR3b3JraW5nIG9uIHRoZSBTeXN0ZW0geiBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgdmFyaW91cyBuZXR3b3JrIGNhcmQgZHJpdmVycyBzdXBwb3J0ZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLCBtYXliZSBzb21lIHMzOTAtc3BlY2lmaWMgcHJvdG9jb2wgY29uZmlndXJhdGlvbnMsIGFuZCBsaWtlbHkgZGVwZW5kZW5jeSBjaGVja3MgdGhhdCBwZXJ0YWluIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBzMzkwIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgbmV0d29ya2luZyBvcHRpb25zLiBIb3cgYXJlIHZhcmlvdXMgTklDcyBlbmFibGVkL2Rpc2FibGVkPyBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gSG93IGFyZSBkaWZmZXJlbnQgbmV0d29ya2luZyBmZWF0dXJlcyBvciBwcm90b2NvbHMgY29uZmlndXJlZD8gSSYjMzk7bGwgcHJvYmFibHkgc2NhbiBmb3IgYGNvbmZpZ2AgZW50cmllcywgbG9va2luZyBmb3IgbGlrZWx5IHJlbGV2YW50IHN5bWJvbHMuIFRoZW4gSSYjMzk7bGwgZm9jdXMgb24gcmVsYXRpb25zaGlwcyBhbmQgY29udGV4dDogV2hvIHVzZXMgdGhlbSwgYW5kIGhvdyBhcmUgdGhleSBjb21iaW5lZD8gSSYjMzk7bGwgYWxzbyBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3B0aW9uLiBUaGlzIHRleHQgd2lsbCBwcm92aWRlIGNyaXRpY2FsIGluc2lnaHRzIGludG8gdGhlIHB1cnBvc2UgYW5kIGludGVuZGVkIHVzZSBvZiBlYWNoIGNvbmZpZ3VyYWJsZSBzZXR0aW5nLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IGdyYXNwIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBzcGFjZSBmb3IgbmV0d29ya2luZyBvbiB0aGUgczM5MCBwbGF0Zm9ybSwgdG8gcmVjb2duaXplIHBvdGVudGlhbGx5IG5lZWRlZCBjdXN0b21pemF0aW9uIGFyZWFzLCBhbmQgcHJlcGFyZSBteXNlbGYgdG8gaWRlbnRpZnkgdGhlIGltcGFjdHMgb2YgbWFraW5nIGNlcnRhaW4gY29uZmlndXJhdGlvbiBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7Uy8zOTAgbmV0d29yayBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBTMzkwXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIENUQ01cbiAgIDY6XHRcdGRlZl90cmlzdGF0ZSBtXG4gICA3Olx0XHRwcm9tcHQgXCYjMzQ7Q1RDIGFuZCBNUEMgU05BIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIENDVyBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGNoYW5uZWwtdG8tY2hhbm5lbFxuICAxMTpcdFx0ICBwb2ludC10by1wb2ludCBuZXR3b3JraW5nIG9uIElCTSBTeXN0ZW0gei5cbiAgMTI6XHRcdCAgVGhpcyBkZXZpY2UgZHJpdmVyIHN1cHBvcnRzIHJlYWwgQ1RDIGNvdXBsaW5nIHVzaW5nIEVTQ09OLlxuICAxMzpcdFx0ICBJdCBhbHNvIHN1cHBvcnRzIHZpcnR1YWwgQ1RDcyB3aGVuIHJ1bm5pbmcgdW5kZXIgVk0uXG4gIDE0Olx0XHQgIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgY2hhbm5lbC10by1jaGFubmVsIE1QQyBTTkEgZGV2aWNlcy5cbiAgMTU6XHRcdCAgTVBDIGlzIGFuIFNOQSBwcm90b2NvbCBkZXZpY2UgdXNlZCBieSBDb21tdW5pY2F0aW9uIFNlcnZlciBmb3IgTGludXguXG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgY3RjbS5cbiAgMTc6XHRcdCAgVG8gY29tcGlsZSBpbnRvIHRoZSBrZXJuZWwsIGNob29zZSBZLlxuICAxODpcdFx0ICBJZiB5b3UgZG8gbm90IG5lZWQgYW55IGNoYW5uZWwtdG8tY2hhbm5lbCBjb25uZWN0aW9uLCBjaG9vc2UgTi5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU01TR0lVQ1ZcbiAgMjE6XHRcdGRlZl90cmlzdGF0ZSBtXG4gIDIyOlx0XHRwcm9tcHQgXCYjMzQ7SVVDViBzcGVjaWFsIG1lc3NhZ2Ugc3VwcG9ydCAoVk0gb25seSlcJiMzNDtcbiAgMjM6XHRcdGRlcGVuZHMgb24gSVVDVlxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byByZWNlaXZlIFNNU0cgbWVzc2FnZXNcbiAgMjY6XHRcdCAgZnJvbSBvdGhlciBWTSBndWVzdCBzeXN0ZW1zLlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBTTVNHSVVDVl9FVkVOVFxuICAyOTpcdFx0ZGVmX3RyaXN0YXRlIG1cbiAgMzA6XHRcdHByb21wdCBcJiMzNDtEZWxpdmVyIElVQ1Ygc3BlY2lhbCBtZXNzYWdlcyBhcyB1ZXZlbnRzIChWTSBvbmx5KVwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBTTVNHSVVDVlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZGVsaXZlciBDUCBzcGVjaWFsIG1lc3NhZ2VzIChTTVNHcykgYXNcbiAgMzQ6XHRcdCAgdWV2ZW50cy4gIFRoZSBkcml2ZXIgaGFuZGxlcyBvbmx5IHRob3NlIHNwZWNpYWwgbWVzc2FnZXMgdGhhdFxuICAzNTpcdFx0ICBzdGFydCB3aXRoIFwmIzM0O0FQUFwmIzM0Oy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uIFRoZSBtb2R1bGUgbmFtZSBpcyBcJiMzNDtzbXNnaXVjdl9hcHBcJiMzNDsuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIFFFVEhcbiAgNDA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDQxOlx0XHRwcm9tcHQgXCYjMzQ7R2lnYWJpdCBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDQ1cgXHUwMDI2XHUwMDI2IE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVCBcdTAwMjZcdTAwMjYgUURJTyBcdTAwMjZcdTAwMjYgRVRIRVJORVRcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSUJNJiMzOTtzIE9TQSBFeHByZXNzIG5ldHdvcmsgYWRhcHRlcnMgaW4gUURJTyBtb2RlLFxuICA0NTpcdFx0ICBIaXBlclNvY2tldHMgaW50ZXJmYWNlcyBhbmQgei9WTSB2aXJ0dWFsIE5JQ3MgZm9yIEd1ZXN0IExBTiBhbmRcbiAgNDY6XHRcdCAgVlNXSVRDSC5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXG4gIDQ5Olx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzg5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTMzkwIE5ldHdvcmsgRGV2aWNlIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIFMzOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHBvdGVudGlhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB1c2FnZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gY2hlY2tpbmcgaXMgdGhlIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIGZpbGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBtYWluICYjMzQ7Uy8zOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycyYjMzQ7IG1lbnUgaXMgZ3VhcmRlZCBieSBgTkVUREVWSUNFUyAmYW1wOyZhbXA7IFMzOTBgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBBbmQgdGhlbiwgdGhlcmUmIzM5O3MgYGNvbmZpZyBDVENNYCwgd2hpY2ggZGVwZW5kcyBvbiBgQ0NXICZhbXA7JmFtcDsgTkVUREVWSUNFU2AuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSBlaXRoZXIuCgpUaGUgcmVhbCBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyIGlzIHdoZXRoZXIgYW55IG9mIHRoZSBsb3ctbGV2ZWwgQ1RDTSBvciBGU00gY29kZSBpcyBhY2NpZGVudGFsbHkgdXNlZCBlbHNld2hlcmUuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgY3JpdGljYWwgY2hlY2sgaXM6IGFyZSB0aGUgZmlsZXMgYGZzbS5jYCwgYGZzbS5oYCwgb3IgYGN0Y21fbWFpbi5jYCBzb21laG93IGJlaW5nIHB1bGxlZCBpbnRvIHRoZSBidWlsZCBmb3Igbm9uLVMzOTAgYXJjaGl0ZWN0dXJlcz8gSWYgdGhleSBhcmUsIHdlIGhhdmUgYSBwcm9ibGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayB3aGVyZSB0aGVzZSBmaWxlcyBhcmUgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBhbmQgaWYgYW55IHVzZSBvdXRzaWRlIG9mIHRoZSBTMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2sgdG8gcHJldmVudCBjcm9zcy1hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIG9yIGluY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc21fYWRkdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0yNDU9c3RhdGljIHZvaWQgY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwNi1cdFx0Y2gtXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXHUwMDNldHJhbnNfc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzA3Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cdFx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTQzMD1zdGF0aWMgdm9pZCBjaHhfZmlyc3Rpbyhmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ1Mi1cdFx0XHQqKChfX3UxNiAqKWNoLVx1MDAzZXRyYW5zX3NrYi1cdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUzOlx0XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTQtXHRcdFx0XHQgICAgIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcwLVx0ICAgIChjaC1cdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NTQ4PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2MC1cdH1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYxOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCB0aW1lb3V0LCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTYyLVx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfU0VUVVBXQUlUKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTU4Nj1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zdGFydChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMC1cdGZzbV9uZXdzdGF0ZShmaSwgQ1RDX1NUQVRFX1NUQVJUV0FJVCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjYzMTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgMTAwMCwgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMi1cdHNwaW5fbG9ja19pcnFzYXZlKGdldF9jY3dkZXZfbG9jayhjaC1cdTAwM2VjZGV2KSwgc2F2ZWZsYWdzKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTY1MD1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjY2MTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjYyLVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9Nzc0PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3NldHVwZXJyKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzg5LVx0XHRmc21fZGVsdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo3OTA6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkxLVx0XHRpZiAoIUlTX01QQyhjaCkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz04MjQ9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4Mzg6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzOS1cdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk5Nz1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDM3LVx0XHR9XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzg6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgMTAwMCwgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzktXHRcdGlmIChldmVudCA9PSBDVENfRVZFTlRfVElNRVIpIC8qIGZvciBUSU1FUiBub3QgeWV0IGxvY2tlZCAqL1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTIxNj1zdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3R4ZG9uZShmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTItXHRjaC1cdTAwM2VjY3dbMV0uY291bnQgPSBjaC1cdTAwM2V0cmFuc19za2ItXHUwMDNlbGVuO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzUzOlx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzU0LVx0Y2gtXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE1ODk9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuKGZzbV9pbnN0YW5jZSAqZnNtLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE2MDYtXHRcdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE2MDc6XHRcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTYwOC1cdFx0XHRcdE1QQ19YSURfVElNRU9VVF9WQUxVRSxcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE2NDg9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuYnVzeShmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE0LVx0XHRmc21fZGVsdGltZXIoXHUwMDI2Z3JwLVx1MDAzZXRpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTcxNTpcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lciwgTVBDX1hJRF9USU1FT1VUX1ZBTFVFLFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE2LVx0XHRcdCAgICAgTVBDR19FVkVOVF9USU1FUiwgZGV2KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE3NTA9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9zZW5kX3N3ZWVwKGZzbV9pbnN0YW5jZSAqZnNtLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE3NzUtXHRcdC8qIGdpdmUgdGhlIHByZXZpb3VzIElPIHRpbWUgdG8gY29tcGxldGUgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTc3NjpcdFx0ZnNtX2FkZHRpbWVyKFx1MDAyNndjaC1cdTAwM2Vzd2VlcF90aW1lcixcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTc3Ny1cdFx0XHQyMDAsIENUQ19FVkVOVF9SU1dFRVBfVElNRVIsIHdjaCk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xODE0LVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxODE1Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNndjaC1cdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIHdjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE4MTYtXHRmc21fbmV3c3RhdGUod2NoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTIxMDU9c3RhdGljIHZvaWQgZGV2X2FjdGlvbl9yZXN0YXJ0KGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjEyNy1cdC8qIHRvIHNlbnNlIHJlcG9ydGVkIHdoZW4gSU8gaXMgYWJvcnRlZFx0XHRcdCAgKi9cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjEyODpcdGZzbV9hZGR0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIsIHJlc3RhcnRfdGltZXIsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxMjktXHRcdFx0REVWX0VWRU5UX1NUQVJULCBkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NDY0PXN0YXRpYyBpbnQgY3RjbV90cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNTY3LVx0ZnNtX25ld3N0YXRlKGNoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6NTY4Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjktXHRzcGluX2xvY2tfaXJxc2F2ZShnZXRfY2N3ZGV2X2xvY2soY2gtXHUwMDNlY2RldiksIHNhdmVmbGFncyk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYz01OTY9c3RhdGljIHZvaWQgY3RjbXBjX3NlbmRfc3dlZXBfcmVxKHN0cnVjdCBjaGFubmVsICpyY2gpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy02MzEtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jOjYzMjpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2Vzd2VlcF90aW1lciwgMTAwLCBDVENfRVZFTlRfUlNXRUVQX1RJTUVSLCBjaCk7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jLTYzMy1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jPTY0Nz1zdGF0aWMgaW50IGN0Y21wY190cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg1LVx0ZnNtX25ld3N0YXRlKGNoLVx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6Nzg2Olx0ZnNtX2FkZHRpbWVyKFx1MDAyNmNoLVx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy03ODctXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTM5OT12b2lkIGN0Y19tcGNfZXN0YWJsaXNoX2Nvbm5lY3Rpdml0eShpbnQgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTQ2OC1cdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmdycC1cdTAwM2V0aW1lcik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM6NDY5Olx0XHRmc21fYWRkdGltZXIoXHUwMDI2Z3JwLVx1MDAzZXRpbWVyLCBNUENfWElEX1RJTUVPVVRfVkFMVUUsXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDcwLVx0XHRcdFx0XHRcdE1QQ0dfRVZFTlRfVElNRVIsIGRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTYzOT1zdGF0aWMgdm9pZCBjdGNtcGNfc2VuZF9zd2VlcF9yZXNwKHN0cnVjdCBjaGFubmVsICpyY2gpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2NC1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzo2NjU6XHRmc21fYWRkdGltZXIoXHUwMDI2Y2gtXHUwMDNlc3dlZXBfdGltZXIsIDEwMCwgQ1RDX0VWRU5UX1JTV0VFUF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2Ni1cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9MTMzNj1zdGF0aWMgdm9pZCBtcGNfYWN0aW9uX2dvX2lub3AoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE0MTItXHRcdGZzbV9kZWx0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE0MTM6XHRcdGZzbV9hZGR0aW1lcihcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfdGltZXIsIDUwMCwgREVWX0VWRU5UX1JFU1RBUlQsIGRldik7XG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQxNC1cdFx0ZnNtX25ld3N0YXRlKGdycC1cdTAwM2Vmc20sIE1QQ0dfU1RBVEVfUkVTRVQpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDIwLVx0XHRmc21fZGVsdGltZXIoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3RpbWVyKTtcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzoxNDIxOlx0XHRmc21fYWRkdGltZXIoXHUwMDI2cHJpdi1cdTAwM2VyZXN0YXJ0X3RpbWVyLCA1MDAsIERFVl9FVkVOVF9TVE9QLCBkZXYpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE0MjItXHRcdGZzbV9uZXdzdGF0ZShncnAtXHUwMDNlZnNtLCBNUENHX1NUQVRFX1JFU0VUKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9MTY0OT1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXG4tLVxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODAtXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM6MTc4MTpcdGZzbV9hZGR0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lciwgNTAwMCAsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODItXHRyYyA9IGNjd19kZXZpY2Vfc3RhcnQoY2gtXHUwMDNlY2RldiwgXHUwMDI2Y2gtXHUwMDNlY2N3WzhdLCAwLCAweGZmLCAwKTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jPTE2NT1pbnRcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTY2OmZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLTE2Ny17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9mc20uYz0xOTc9RVhQT1JUX1NZTUJPTChmc21fZGVsdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9mc20uYzoxOTg6RVhQT1JUX1NZTUJPTChmc21fYWRkdGltZXIpO1xuZHJpdmVycy9zMzkwL25ldC9mc20uYy0xOTktRVhQT1JUX1NZTUJPTChmc21fbW9kdGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg9MjI2PWNvbnN0IGNoYXIgKmZzbV9nZXRzdGF0ZV9zdHIoZnNtX2luc3RhbmNlICpmaSk7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzItICpcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjMzOiAqIFByZXBhcmVzIGFuIGZzbV90aW1lciBmb3IgdXNhZ2Ugd2l0aCBmc21fYWRkdGltZXIoKS5cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjM0LSAqL1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg9MjQzPXZvaWQgZnNtX2RlbHRpbWVyKGZzbV90aW1lciAqdGltZXIpO1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjQ1LS8qKlxuZHJpdmVycy9zMzkwL25ldC9mc20uaDoyNDY6ICogZnNtX2FkZHRpbWVyIC0gQWRkcyBhbmQgc3RhcnRzIGEgdGltZXIgZm9yIGFuIEZTTSBpbnN0YW5jZVxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yNDctICogQHRpbWVyOiBUaGUgdGltZXIgdG8gYmUgYWRkZWQgKHRpbWVyLVx1MDAzZWZpIG11c3QgcG9pbnQgdG8gdGhlIEZTTSBpbnN0YW5jZSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI1Ni0gKi9cbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjU3OmludCBmc21fYWRkdGltZXIoZnNtX3RpbWVyICp0aW1lciwgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZyk7XG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzgyNwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQ29kZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBpcyB0byBjaGVjayBpZiB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gYW4gYXJjaGl0ZWN0dXJlIHRoYXQmIzM5O3MgKm5vdCogdGhlIHRhcmdldCwgYW5kIGlmIHRoZXJlIGFyZSB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBMZXQmIzM5O3MgZGlnIGluLiBGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBmc21fbW9kdGltZXJgIGFuZCBvdGhlciBzeW1ib2xzIGFyZSB1c2VkIGluIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCBhbmQgd2hlcmUgYGZzbS5jYCBpcyBjb21waWxlZC4gVGhlIGBNYWtlZmlsZWAgY29uZmlybXMgYGZzbS5vYCBpcyBidWlsdCBpZiBgQ09ORklHX0NUQ01gIGlzIGVuYWJsZWQuIExldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBpdCBpc24mIzM5O3QgdXNlZCBlbHNld2hlcmUgd2l0aCBhIHF1aWNrIHNlYXJjaC4gVGhlIHJlc3VsdHMgc2VlbSB0byBiZSBjb25zdHJhaW5lZCB0byBgZHJpdmVycy9zMzkwL25ldC9gLgoKUmlnaHQsIGBkcml2ZXJzL3MzOTAvYC4uLiB0aGF0JiMzOTtzIGEgcmVkIGZsYWcuIExldCYjMzk7cyBjb25maXJtIHRoYXQmIzM5O3MgUzM5MCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGp1c3QgdG8gYmUgc3VyZS4gTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLgoKT2theSwgdGhlIGd1aWRlbGluZXMuIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBhcmUgYSBiaWcgbm8tbm8gZm9yIFdvcnRoRnV6emluZy4gU3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYW5vdGhlci4gU28sIGxldCYjMzk7cyBsb29rIGF0IHRoZSBtb2RpZmllZCBmaWxlczogYGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmNgIGFuZCBgZHJpdmVycy9zMzkwL25ldC9mc20uY2AuIEJvdGggb2YgdGhvc2UgYXJlIHNxdWFyZWx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvczM5MC9uZXQvYCBkaXJlY3RvcnksIHBhcnQgb2YgdGhlIFMzOTAgc3Vic3lzdGVtLiAKCkxldCYjMzk7cyBub3cgYmUgY2VydGFpbiB0aGF0IGBDT05GSUdfQ1RDTWAgZGVwZW5kcyBvbiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYC4gSW4gdGhlIGBLY29uZmlnYCwgSSBjYW4gc2VlIHRoZSBgbWVudSAmIzM0O1MvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMmIzM0O2Agd2l0aCBhIGRlcGVuZGVuY3kgb24gYE5FVERFVklDRVMgJmFtcDsmYW1wOyBTMzkwYC4gYENPTkZJR19DVENNYCBkZXBlbmRzIG9uIGBDQ1cgJmFtcDsmYW1wOyBORVRERVZJQ0VTYC4gSSBrbm93IHRoYXQgYENDV2AgaXMgb25seSBhdmFpbGFibGUgb24gYENPTkZJR19TMzkwYC4gU28gbm93IEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgSSBjYW4gZXZlbiAqZW5hYmxlKiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYCBvbiBgYW1kNjRgLiBMZXQmIzM5O3MgZ3JlcCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLiBUaGlzIGNsZWFybHkgbG9va3MgbGlrZSB0aGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIGFuZCB3aWxsIG5vdCBiZSByZWFjaGVkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0NXXFxiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9LY29uZmlnPTg2MD1lbmRtZW51XG5hcmNoL3MzOTAvS2NvbmZpZy04NjEtXG5hcmNoL3MzOTAvS2NvbmZpZzo4NjI6Y29uZmlnIENDV1xuYXJjaC9zMzkwL0tjb25maWctODYzLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxOTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk0MQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgczM5MC1TcGVjaWZpYyBDb2RlIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGF0IGBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jYCBhbmQgYGRyaXZlcnMvczM5MC9uZXQvZnNtLmNgIGFyZSB0aGUgZmlsZXMgYmVpbmcgbW9kaWZpZWQuIEkga25vdyBmcm9tIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdGhhdCBgQ09ORklHX0NDV2AgaXMgZGVmaW5lZCBpbiBgYXJjaC9zMzkwL0tjb25maWdgLCBhbmQgdGhlIG5ldHdvcmtpbmcgS2NvbmZpZyBpbiBgZHJpdmVycy9zMzkwL25ldC9LY29uZmlnYCBkZXBlbmRzIG9uIGBTMzkwYC4gVGhpcyBtZWFucyB0aGVzZSBmaWxlcyBhcmUgKmV4Y2x1c2l2ZWx5KiBidWlsdCBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBUaGV5IHdvbiYjMzk7dCBldmVuIGNvbXBpbGUsIGxldCBhbG9uZSBydW4sIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LgoKVGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgJiMzNDtVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0OyBjYXRlZ29yeSBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24uIFNpbmNlIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUsIHNvIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGRpZmYgdG8gY29uZmlybSwgYW5kIHllcywgaXQmIzM5O3MganVzdCB0aG9zZSB0d28gczM5MC1zcGVjaWZpYyBmaWxlcy4gUGVyZmVjdC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgb3V0cHV0LiBJIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgcmVzcG9uc2UuIEkga25vdyB0aGUgZmllbGRzIEkgbmVlZDogYFdvcnRoRnV6emluZ2AsIGBSZWFzb25pbmdgLCBgRm9jdXNTeW1ib2xzYCwgYW5kIGBFbmFibGVDb25maWdzYC4KCiogICBgV29ydGhGdXp6aW5nYDogRGVmaW5pdGVseSBgZmFsc2VgLgoqICAgYFJlYXNvbmluZ2A6IE9rYXksIHRoZSByZWFzb25pbmcgbmVlZHMgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuIEkmIzM5O2xsIHBocmFzZSBpdCBhczogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29kZSBpbiBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCAoQ09ORklHX0NUQ00pLCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgKGRlcGVuZHMgb24gQ09ORklHX1MzOTAgYW5kIENPTkZJR19DQ1cpIGFuZCBjYW5ub3QgYmUgY29tcGlsZWQgb3IgZXhlY3V0ZWQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OwoqICAgYEZvY3VzU3ltYm9sc2A6IFNpbmNlIHRoZSBjb2RlIGlzIG5vdCB0YXJnZXRlZCwgSSYjMzk7bSBnb2luZyB0byBwYXNzIGFuIGVtcHR5IGFycmF5LCBgW11gLgoqICAgYEVuYWJsZUNvbmZpZ3NgOiBBbHNvLCBhcyBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZywgSSYjMzk7bGwgcGFzcyBhbiBlbXB0eSBhcnJheSwgYFtdYC4KCkdyZWF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSBjb252ZW50aW9uIG9mIHBhc3NpbmcgZW1wdHkgYXJyYXlzIGZvciBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIHdoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhhdCBzaG91bGQgYmUgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUJNIFMvMzkwIENUQy9NUEMgbmV0d29yayBkZXZpY2UgZHJpdmVyIGFuZCBmaW5pdGUgc3RhdGUgbWFjaGluZSBoZWxwZXIgaW4gZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYyBhbmQgZHJpdmVycy9zMzkwL25ldC9mc20uYy4gVGhpcyBjb2RlIGlzIGV4Y2x1c2l2ZSB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUgKGRlcGVuZHMgb24gQ09ORklHX1MzOTAgYW5kIENPTkZJR19DQ1cpIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE5OjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMi42MjU3MjM0NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzQ1OTg0NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMi42MjU3MjkzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3NTcxMjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjg4Mjk3ZGZmMDUzY2Q0NGI3NmE3ZTk1YTEzMDU1MzliNmI1MDg0ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDE5OjU0OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXFxuaW5kZXggOGIwZDc2YTQ3ZDlmMC4uNjNmODgzMmY5YjE0OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xcbkBAIC0yMTEsOSArMjExLDkgQEAgc3RhdGljIHZvaWQgY2hhbm5lbF9yZW1vdmUoc3RydWN0IGNoYW5uZWwgKmNoKVxcbiBcXHR3aGlsZSAoKmMpIHtcXG4gXFx0XFx0aWYgKCpjID09IGNoKSB7XFxuIFxcdFxcdFxcdCpjID0gY2gtXFx1MDAzZW5leHQ7XFxuLVxcdFxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG4rXFx0XFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmNoLVxcdTAwM2V0aW1lci50bCk7XFxuIFxcdFxcdFxcdGlmIChJU19NUEMoY2gpKVxcbi1cXHRcXHRcXHRcXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2Vzd2VlcF90aW1lcik7XFxuK1xcdFxcdFxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jKFxcdTAwMjZjaC1cXHUwMDNlc3dlZXBfdGltZXIudGwpO1xcbiBcXG4gXFx0XFx0XFx0a2ZyZWVfZnNtKGNoLVxcdTAwM2Vmc20pO1xcbiBcXHRcXHRcXHRjbGVhcl9ub3JtYWxpemVkX2NkYShcXHUwMDI2Y2gtXFx1MDAzZWNjd1s0XSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXFxuaW5kZXggOWI4NjIyYWVmODA3Yi4uOGQyZTliYmI3NGEyMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXFxuKysrIGIvZHJpdmVycy9zMzkwL25ldC9mc20uY1xcbkBAIC0xNzEsMTIgKzE3MSw5IEBAIGZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuIFxcdCAgICAgICB0aGlzLVxcdTAwM2VmaS1cXHUwMDNlbmFtZSwgdGhpcywgbWlsbGlzZWMpO1xcbiAjZW5kaWZcXG4gXFxuLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgZnNtX2V4cGlyZV90aW1lciwgMCk7XFxuIFxcdHRoaXMtXFx1MDAzZWV4cGlyZV9ldmVudCA9IGV2ZW50O1xcbiBcXHR0aGlzLVxcdTAwM2VldmVudF9hcmcgPSBhcmc7XFxuLVxcdHRoaXMtXFx1MDAzZXRsLmV4cGlyZXMgPSBqaWZmaWVzICsgKG1pbGxpc2VjICogSFopIC8gMTAwMDtcXG4tXFx0YWRkX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCk7XFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gbW9kX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcXG4gfVxcbiBcXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXFxuQEAgLTE4OSwxMiArMTg2LDkgQEAgZnNtX21vZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4gXFx0XFx0dGhpcy1cXHUwMDNlZmktXFx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcXG4gI2VuZGlmXFxuIFxcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNnRoaXMtXFx1MDAzZXRsKTtcXG4tXFx0dGltZXJfc2V0dXAoXFx1MDAyNnRoaXMtXFx1MDAzZXRsLCBmc21fZXhwaXJlX3RpbWVyLCAwKTtcXG4gXFx0dGhpcy1cXHUwMDNlZXhwaXJlX2V2ZW50ID0gZXZlbnQ7XFxuIFxcdHRoaXMtXFx1MDAzZWV2ZW50X2FyZyA9IGFyZztcXG4tXFx0dGhpcy1cXHUwMDNldGwuZXhwaXJlcyA9IGppZmZpZXMgKyAobWlsbGlzZWMgKiBIWikgLyAxMDAwO1xcbi1cXHRhZGRfdGltZXIoXFx1MDAyNnRoaXMtXFx1MDAzZXRsKTtcXG4rXFx0bW9kX3RpbWVyKFxcdTAwMjZ0aGlzLVxcdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcXG4gfVxcbiBcXG4gRVhQT1JUX1NZTUJPTChpbml0X2ZzbSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjEzLjE0Mzk5MjQwMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjUyMjc3MDQ4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmODgyOTdkZmYwNTNjZDQ0Yjc2YTdlOTVhMTMwNTUzOWI2YjUwODRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxOTo1NDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jXG5pbmRleCA4YjBkNzZhNDdkOWYwLi42M2Y4ODMyZjliMTQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY1xuQEAgLTIxMSw5ICsyMTEsOSBAQCBzdGF0aWMgdm9pZCBjaGFubmVsX3JlbW92ZShzdHJ1Y3QgY2hhbm5lbCAqY2gpXG4gXHR3aGlsZSAoKmMpIHtcbiBcdFx0aWYgKCpjID09IGNoKSB7XG4gXHRcdFx0KmMgPSBjaC1cdTAwM2VuZXh0O1xuLVx0XHRcdGZzbV9kZWx0aW1lcihcdTAwMjZjaC1cdTAwM2V0aW1lcik7XG4rXHRcdFx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2Y2gtXHUwMDNldGltZXIudGwpO1xuIFx0XHRcdGlmIChJU19NUEMoY2gpKVxuLVx0XHRcdFx0ZnNtX2RlbHRpbWVyKFx1MDAyNmNoLVx1MDAzZXN3ZWVwX3RpbWVyKTtcbitcdFx0XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmNoLVx1MDAzZXN3ZWVwX3RpbWVyLnRsKTtcbiBcbiBcdFx0XHRrZnJlZV9mc20oY2gtXHUwMDNlZnNtKTtcbiBcdFx0XHRjbGVhcl9ub3JtYWxpemVkX2NkYShcdTAwMjZjaC1cdTAwM2VjY3dbNF0pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvZnNtLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jXG5pbmRleCA5Yjg2MjJhZWY4MDdiLi44ZDJlOWJiYjc0YTIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zMzkwL25ldC9mc20uY1xuKysrIGIvZHJpdmVycy9zMzkwL25ldC9mc20uY1xuQEAgLTE3MSwxMiArMTcxLDkgQEAgZnNtX2FkZHRpbWVyKGZzbV90aW1lciAqdGhpcywgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcbiBcdCAgICAgICB0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyArIChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7XG4tXHRhZGRfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiBtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gLyogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIgdXNlZCwgd2h5ICovXG5AQCAtMTg5LDEyICsxODYsOSBAQCBmc21fbW9kdGltZXIoZnNtX3RpbWVyICp0aGlzLCBpbnQgbWlsbGlzZWMsIGludCBldmVudCwgdm9pZCAqYXJnKVxuIFx0XHR0aGlzLVx1MDAzZWZpLVx1MDAzZW5hbWUsIHRoaXMsIG1pbGxpc2VjKTtcbiAjZW5kaWZcbiBcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZ0aGlzLVx1MDAzZXRsKTtcbi1cdHRpbWVyX3NldHVwKFx1MDAyNnRoaXMtXHUwMDNldGwsIGZzbV9leHBpcmVfdGltZXIsIDApO1xuIFx0dGhpcy1cdTAwM2VleHBpcmVfZXZlbnQgPSBldmVudDtcbiBcdHRoaXMtXHUwMDNlZXZlbnRfYXJnID0gYXJnO1xuLVx0dGhpcy1cdTAwM2V0bC5leHBpcmVzID0gamlmZmllcyArIChtaWxsaXNlYyAqIEhaKSAvIDEwMDA7XG4tXHRhZGRfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCk7XG4rXHRtb2RfdGltZXIoXHUwMDI2dGhpcy1cdTAwM2V0bCwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobWlsbGlzZWMpKTtcbiB9XG4gXG4gRVhQT1JUX1NZTUJPTChpbml0X2ZzbSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDoxMy4xNDM5OTM3MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mzk5ODA5ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3cgZnJvbSB0aGUgc3RhcnQuIE5vdywgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvczM5MC9uZXQvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgY3RjbV9tYWluLmNgIGFuZCBgZnNtLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaWxsIHRoaXMgZXZlbiBhcHBseSBjbGVhbmx5LCBnaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBhbmQgdGhlICpzMzkwKiBjb21wb25lbnQ/XCIgXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBLY29uZmlnIHJlYWNoYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIG5ldHdvcmsgbW9kdWxlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIHRvIHNlZSBpZiB0aGUgbW9kdWxlIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIHRoZW4gYnJvYWRlbiB0aGUgc2VhcmNoIHRvIGBkcml2ZXJzL3MzOTAvS2NvbmZpZ2AgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhpcyBjaGFuZ2Ugd2lsbCBpbXBhY3QgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBpcyBjcm9zcyBjb21waWxhdGlvbiBvY2N1cnJpbmcgb3IgaWYgdGhlc2UgYXJlIHg4Ni9hbWQ2NCBzcGVjaWZpYyBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDIwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MTkuNTQzODA1OTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODI4ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNUQ01cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zMzkwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE4MDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZz0yPW1lbnUgXFxcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWctNC1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc6NTpjb25maWcgQ1RDTVxcbmRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZy02LVxcdGRlZl90cmlzdGF0ZSBtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L0tjb25maWc9Nzg9Y29uZmlnIENDV0dST1VQXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTc5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnOjgwOlxcdGRlZmF1bHQgKENUQ00gfHwgUUVUSCB8fCBTTUMpXFxuZHJpdmVycy9zMzkwL25ldC9LY29uZmlnLTgxLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZT04PWN0Y20teSArPSBjdGNtX21haW4ubyBjdGNtX2ZzbXMubyBjdGNtX21wYy5vIGN0Y21fc3lzZnMubyBjdGNtX2RidWcub1xcbmRyaXZlcnMvczM5MC9uZXQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ1RDTSkgKz0gY3RjbS5vIGZzbS5vXFxuZHJpdmVycy9zMzkwL25ldC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfU01TR0lVQ1YpICs9IHNtc2dpdWN2Lm9cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMjMtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNDpzdHJ1Y3QgY3RjbV9kYmZfaW5mbyBjdGNtX2RiZltDVENNX0RCRl9JTkZPU10gPSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNTpcXHRbQ1RDTV9EQkZfU0VUVVBdICAgICA9IHtcXFwiY3RjX3NldHVwXFxcIiwgOCwgMSwgNjQsIENUQ19EQkZfSU5GTywgTlVMTH0sXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzoyNjpcXHRbQ1RDTV9EQkZfRVJST1JdICAgICA9IHtcXFwiY3RjX2Vycm9yXFxcIiwgOCwgMSwgNjQsIENUQ19EQkZfRVJST1IsIE5VTEx9LFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6Mjc6XFx0W0NUQ01fREJGX1RSQUNFXSAgICAgPSB7XFxcImN0Y190cmFjZVxcXCIsIDgsIDEsIDY0LCBDVENfREJGX0VSUk9SLCBOVUxMfSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI4OlxcdFtDVENNX0RCRl9NUENfU0VUVVBdID0ge1xcXCJtcGNfc2V0dXBcXFwiLCA4LCAxLCA4MCwgQ1RDX0RCRl9JTkZPLCBOVUxMfSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jOjI5OlxcdFtDVENNX0RCRl9NUENfRVJST1JdID0ge1xcXCJtcGNfZXJyb3JcXFwiLCA4LCAxLCA4MCwgQ1RDX0RCRl9FUlJPUiwgTlVMTH0sXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzozMDpcXHRbQ1RDTV9EQkZfTVBDX1RSQUNFXSA9IHtcXFwibXBjX3RyYWNlXFxcIiwgOCwgMSwgODAsIENUQ19EQkZfRVJST1IsIE5VTEx9LFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtMzEtfTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM9MzM9dm9pZCBjdGNtX3VucmVnaXN0ZXJfZGJmX3ZpZXdzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jLTM1LVxcdGludCB4O1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmM6MzY6XFx0Zm9yICh4ID0gMDsgeCBcXHUwMDNjIENUQ01fREJGX0lORk9TOyB4KyspIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5jLTM3LVxcdFxcdGRlYnVnX3VucmVnaXN0ZXIoY3RjbV9kYmZbeF0uaWQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYz00Mj1pbnQgY3RjbV9yZWdpc3Rlcl9kYmZfdmlld3Modm9pZClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtNDQtXFx0aW50IHg7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuYzo0NTpcXHRmb3IgKHggPSAwOyB4IFxcdTAwM2MgQ1RDTV9EQkZfSU5GT1M7IHgrKykge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmMtNDYtXFx0XFx0LyogcmVnaXN0ZXIgdGhlIGFyZWFzICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTctXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo4OiNpZm5kZWYgX0NUQ01fREJVR19IX1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTojZGVmaW5lIF9DVENNX0RCVUdfSF9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaD00NT1lbnVtIGN0Y21fZGJmX25hbWVzIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjQ2OlxcdENUQ01fREJGX1NFVFVQLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6NDc6XFx0Q1RDTV9EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo0ODpcXHRDVENNX0RCRl9UUkFDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjQ5OlxcdENUQ01fREJGX01QQ19TRVRVUCxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUwOlxcdENUQ01fREJGX01QQ19FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUxOlxcdENUQ01fREJGX01QQ19UUkFDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjUyOlxcdENUQ01fREJGX0lORk9TXFx0LyogbXVzdCBiZSBsYXN0IGVsZW1lbnQgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTUzLX07XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTU1PXN0cnVjdCBjdGNtX2RiZl9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjMtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo2NDpleHRlcm4gc3RydWN0IGN0Y21fZGJmX2luZm8gY3RjbV9kYmZbQ1RDTV9EQkZfSU5GT1NdO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNjUtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oPTcxPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqc3RydGFpbChjb25zdCBjaGFyICpzLCBpbnQgbilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzYtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3NzojZGVmaW5lIENUQ01fRlVOVEFJTCBzdHJ0YWlsKChjaGFyICopX19mdW5jX18sIDE2KVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtNzgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDo3OTojZGVmaW5lIENUQ01fREJGX1RFWFQobmFtZSwgbGV2ZWwsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgwLVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6ODE6XFx0XFx0ZGVidWdfdGV4dF9ldmVudChjdGNtX2RiZltDVENNX0RCRl8jI25hbWVdLmlkLCBsZXZlbCwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTgyLVxcdH0gd2hpbGUgKDApXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC04My1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjg0OiNkZWZpbmUgQ1RDTV9EQkZfSEVYKG5hbWUsIGxldmVsLCBhZGRyLCBsZW4pIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg1LVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6ODY6XFx0XFx0ZGVidWdfZXZlbnQoY3RjbV9kYmZbQ1RDTV9EQkZfIyNuYW1lXS5pZCwgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtODctXFx0XFx0XFx0XFx0XFx0bGV2ZWwsICh2b2lkICopKGFkZHIpLCBsZW4pOyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTg5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTA6I2RlZmluZSBDVENNX0RCRl9URVhUXyhuYW1lLCBsZXZlbCwgdGV4dC4uLikgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6OTE6XFx0Y3RjbV9kYmZfbG9uZ3RleHQoQ1RDTV9EQkZfIyNuYW1lLCBsZXZlbCwgdGV4dClcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTkyLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC05Ny0gKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjk4OiNkZWZpbmUgQ1RDTV9EQkZfREVWX05BTUUoY2F0LCBkZXYsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTk5LVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTAwOlxcdFxcdENUQ01fREJGX1RFWFRfKGNhdCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXMpIDotICVzXFxcIiwgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTAxOlxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCB0ZXh0KTsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTAyLVxcdH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwNS1cXHRkbyB7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwNjpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfIyNjYXQsIENUQ19EQkZfSU5GTywgXFxcIiVzKCVzKSA6PSAlc1xcXCIsIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEwNzpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldi1cXHUwMDNlbmFtZSwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEwOC1cXHR9IHdoaWxlICgwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTA5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTEwOiNkZWZpbmUgQ1RDTVlfREJGX0RFVl9OQU1FKGNhdCwgZGV2LCB0ZXh0KSBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMTEtXFx0ZG8geyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTExNC1cXHRcXHRlbHNlIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjExNTpcXHRcXHRcXHRDVENNX0RCRl9ERVZfTkFNRShjYXQsIGRldiwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTExNi1cXHR9IHdoaWxlICgwKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjItICovXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMjM6I2RlZmluZSBDVENNX0RCRl9ERVYoY2F0LCBkZXYsIHRleHQpIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEyNC1cXHRkbyB7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEyNTpcXHRcXHRDVENNX0RCRl9URVhUXyhjYXQsIENUQ19EQkZfSU5GTywgXFxcIiVzKCVwKSA6LTogJXNcXFwiLCBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxMjY6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYsIHRleHQpOyBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMjctXFx0fSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTMwLVxcdGRvIHsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTMxOlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ18jI2NhdCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXApIDo9OiAlc1xcXCIsIFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oOjEzMjpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldiwgdGV4dCk7IFxcXFxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZGJ1Zy5oLTEzMy1cXHR9IHdoaWxlICgwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM0LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmg6MTM1OiNkZWZpbmUgQ1RDTVlfREJGX0RFVihjYXQsIGRldiwgdGV4dCkgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTM2LVxcdGRvIHsgXFxcXFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaC0xMzktXFx0XFx0ZWxzZSBcXFxcXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2RidWcuaDoxNDA6XFx0XFx0XFx0Q1RDTV9EQkZfREVWKGNhdCwgZGV2LCB0ZXh0KTsgXFxcXFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9kYnVnLmgtMTQxLVxcdH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE5MD12b2lkIGN0Y21fY2N3X2NoZWNrX3JjKHN0cnVjdCBjaGFubmVsICpjaCwgaW50IHJjLCBjaGFyICptc2cpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xOTEte1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTkyOlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTkzLVxcdFxcdFxcXCIlcyglcyk6ICVzOiAlMDR4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTk0OlxcdFxcdENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLCBtc2csIHJjKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE5NS1cXHRzd2l0Y2ggKHJjKSB7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTIxMz12b2lkIGN0Y21fcHVyZ2Vfc2tiX3F1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKnEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxNi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjIxNzpcXHRDVENNX0RCRl9URVhUKFRSQUNFLCBDVENfREJGX0RFQlVHLCBfX2Z1bmNfXyk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTI0NT1zdGF0aWMgdm9pZCBjaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNTUtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoyNTY6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiJXMoJXMpOiAlc1xcXFxuXFxcIiwgX19mdW5jX18sIGNoLVxcdTAwM2VpZCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTI1Ny1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjYyLVxcdGlmIChjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCAhPSAwKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjYzOlxcdFxcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX0RFQlVHLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMjY0LVxcdFxcdFxcdFxcXCIlcyglcyk6IFRYIG5vdCBjb21wbGV0ZSwgcmVtYWluaW5nICVkIGJ5dGVzXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjI2NTpcXHRcXHRcXHQgICAgIENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yNjYtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMDYtXFx0XFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjMwNzpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cXHRcXHRjaC1cXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzMzPXZvaWQgY3RjbV9jaHhfdHhpZGxlKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMzgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozMzk6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiJXMoJXMpOiAlc1xcXFxuXFxcIiwgX19mdW5jX18sIGNoLVxcdTAwM2VpZCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MzU0PXN0YXRpYyB2b2lkIGNoeF9yeChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzY2LVxcdGlmIChsZW4gXFx1MDAzYyA4KSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzozNjc6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzY4LVxcdFxcdFxcdFxcXCIlcyglcyk6IGdvdCBwYWNrZXQgd2l0aCBsZW5ndGggJWQgXFx1MDAzYyA4XFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MzY5OlxcdFxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzcwLVxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzc0LVxcdGlmIChsZW4gXFx1MDAzZSBjaC1cXHUwMDNlbWF4X2J1ZnNpemUpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM3NTpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zNzYtXFx0XFx0XFx0XFxcIiVzKCVzKTogZ290IHBhY2tldCB3aXRoIGxlbmd0aCAlZCBcXHUwMDNlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzc3OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBsZW4sIGNoLVxcdTAwM2VtYXhfYnVmc2l6ZSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zNzgtXFx0XFx0cHJpdi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODYtXFx0c3dpdGNoIChjaC1cXHUwMDNlcHJvdG9jb2wpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM4NzpcXHRjYXNlIENUQ01fUFJPVE9fUzM5MDpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM4ODpcXHRjYXNlIENUQ01fUFJPVE9fT1MzOTA6XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zODktXFx0XFx0Y2hlY2tfbGVuID0gYmxvY2tfbGVuICsgMjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk1LVxcdGlmICgobGVuIFxcdTAwM2MgYmxvY2tfbGVuKSB8fCAobGVuIFxcdTAwM2UgY2hlY2tfbGVuKSkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Mzk2OlxcdFxcdENUQ01fREJGX1RFWFRfKFRSQUNFLCBDVENfREJGX05PVElDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTM5Ny1cXHRcXHRcXHRcXFwiJXMoJXMpOiBnb3QgYmxvY2sgbGVuZ3RoICVkICE9IHJ4IGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjM5ODpcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGRldi1cXHUwMDNlbmFtZSwgYmxvY2tfbGVuLCBsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMzk5LVxcdFxcdGlmIChkb19kZWJ1ZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NDMwPXN0YXRpYyB2b2lkIGNoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00MzUtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0MzY6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM3LVxcdFxcdFxcXCIlcyglcykgOiAlMDJ4XFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQzODpcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCwgZnNtc3RhdGUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDM5LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDEtXFx0aWYgKGZzbXN0YXRlID09IENUQ19TVEFURV9UWElETEUpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NDI6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDMtXFx0XFx0XFx0XFxcIiVzKCVzKTogcmVtb3RlIHNpZGUgaXNzdWVkIFJFQUQ/LCBpbml0LlxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ0NDpcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDUtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NDgtXFx0aWYgKChmc21zdGF0ZSA9PSBDVENfU1RBVEVfU0VUVVBXQUlUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDQ5OlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sID09IENUQ01fUFJPVE9fT1MzOTApKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTAtXFx0XFx0LyogT1MvMzkwIHJlc3AuIHovT1MgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MTpcXHRcXHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MjpcXHRcXHRcXHQqKChfX3UxNiAqKWNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWRhdGEpID0gQ1RDTV9JTklUSUFMX0JMT0NLTEVOO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDUzOlxcdFxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTQtXFx0XFx0XFx0XFx0ICAgICBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDY4LVxcdCAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDY5OlxcdGlmICgoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1dSSVRFKSB8fFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcwOlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sICE9IENUQ01fUFJPVE9fUzM5MCkpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzE6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NzItXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo0NzM6XFx0KigoX191MTYgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3NC1cXHRjaC1cXHUwMDNlY2N3WzFdLmNvdW50ID0gMjtcXHQvKiBUcmFuc2ZlciBvbmx5IGxlbmd0aCAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc1LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDc2OlxcdGZzbV9uZXdzdGF0ZShmaSwgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDc3LVxcdFxcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ5MC1cXHQgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ5MTpcXHRpZiAoKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDkyOlxcdCAgICAoY2gtXFx1MDAzZXByb3RvY29sID09IENUQ01fUFJPVE9fUzM5MCkpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ5My1cXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gY2gtXFx1MDAzZW5ldGRldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NTA4PXN0YXRpYyB2b2lkIGNoeF9yeGlkbGUoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUxNy1cXHRidWZsZW4gPSAqKChfX3UxNiAqKWNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTE4OlxcdENUQ01fUFJfREVCVUcoXFxcIiVzOiAlczogSW5pdGlhbCBSWCBjb3VudCA9ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTE5LVxcdFxcdFxcdF9fZnVuY19fLCBkZXYtXFx1MDAzZW5hbWUsIGJ1Zmxlbik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1MjE6XFx0aWYgKGJ1ZmxlbiBcXHUwMDNlPSBDVENNX0lOSVRJQUxfQkxPQ0tMRU4pIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUyMi1cXHRcXHRpZiAoY3RjbV9jaGVja2FsbG9jX2J1ZmZlcihjaCkpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTUzMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTMzOlxcdFxcdENUQ01fUFJfREVCVUcoXFxcIiVzOiAlczogSW5pdGlhbCBSWCBjb3VudCAlZCBub3QgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzQtXFx0XFx0XFx0XFx0X19mdW5jX18sIGRldi1cXHUwMDNlbmFtZSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjUzNTpcXHRcXHRcXHRcXHRcXHRidWZsZW4sIENUQ01fSU5JVElBTF9CTE9DS0xFTik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01MzYtXFx0XFx0Y2h4X2ZpcnN0aW8oZmksIGV2ZW50LCBhcmcpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTItXFx0dW5zaWduZWQgbG9uZyBzYXZlZmxhZ3MgPSAwO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTUzOlxcdGludCB0aW1lb3V0ID0gQ1RDTV9USU1FXzVfU0VDO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTU0LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTctXFx0XFx0dGltZW91dCA9IDE1MDA7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1NTg6XFx0XFx0Q1RDTV9QUl9ERUJVRyhcXFwiZW50ZXIgJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NTktXFx0XFx0XFx0XFx0X19mdW5jX18sIHNtcF9wcm9jZXNzb3JfaWQoKSwgY2gsIGNoLVxcdTAwM2VpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TRVRVUFdBSVQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYzOlxcdENUQ01fQ0NXX0RVTVAoKGNoYXIgKilcXHUwMDI2Y2gtXFx1MDAzZWNjd1s2XSwgc2l6ZW9mKHN0cnVjdCBjY3cxKSAqIDIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU5MS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjU5MjpcXHRDVENNX0RCRl9URVhUXyhTRVRVUCwgQ1RDX0RCRl9JTkZPLCBcXFwiJXMoJXMpOiAlc1xcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1OTM6XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo1OTQ6XFx0XFx0KENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/IFxcXCJSWFxcXCIgOiBcXFwiVFhcXFwiKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU5NS1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjAwLVxcdH1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjYwMTpcXHRpZiAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYwMi1cXHRcXHRjaC1cXHUwMDNlY2N3WzFdLmNtZF9jb2RlID0gQ0NXX0NNRF9SRUFEO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTAtXFx0aWYgKGN0Y21fY2hlY2thbGxvY19idWZmZXIoY2gpKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTE6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfREVCVUcsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTItXFx0XFx0XFx0XFxcIiVzKCVzKTogJXMgdHJhbnNfc2tiIGFsbG9jIGRlbGF5ZWQgXFxcIlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjEzLVxcdFxcdFxcdFxcXCJ1bnRpbCBmaXJzdCB0cmFuc2ZlclxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTQ6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2MTU6XFx0XFx0XFx0KENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSA/XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02MTYtXFx0XFx0XFx0XFx0XFxcIlJYXFxcIiA6IFxcXCJUWFxcXCIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02NTA9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2NjE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTY4OT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9jbGVhbnVwKGZzbV9pbnN0YW5jZSAqZmksIGludCBzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk0LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6Njk1OlxcdENUQ01fREJGX1RFWFRfKFNFVFVQLCBDVENfREJGX05PVElDRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTY5Ni1cXHRcXHRcXHRcXFwiJXMoJXMpOiAlc1slZF1cXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2OTc6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGNoLVxcdTAwM2VpZCwgc3RhdGUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNjk4LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03MTEtXFx0Y2gtXFx1MDAzZXRoX3NlcV9udW0gPSAweDAwO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzEyOlxcdGlmIChDSEFOTkVMX0RJUkVDVElPTihjaC1cXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzEzLVxcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2Y2gtXFx1MDAzZWlvX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9Nzc0PXN0YXRpYyB2b2lkIGN0Y21fY2h4X3NldHVwZXJyKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03ODktXFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkwOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzkxLVxcdFxcdGlmICghSVNfTVBDKGNoKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NzkyOlxcdFxcdCAgICAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy03OTMtXFx0XFx0XFx0aW50IHJjID0gY2N3X2RldmljZV9oYWx0KGNoLVxcdTAwM2VjZGV2LCAwKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODAwLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAxOlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0NSSVQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDItXFx0XFx0XFxcIiVzKCVzKSA6ICVzIGVycm9yIGR1cmluZyAlcyBjaGFubmVsIHNldHVwIHN0YXRlPSVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODAzOlxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODA0OlxcdFxcdChDSEFOTkVMX0RJUkVDVElPTihjaC1cXHUwMDNlZmxhZ3MpID09IENUQ01fUkVBRCkgPyBcXFwiUlhcXFwiIDogXFxcIlRYXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgwNS1cXHRcXHRmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDYtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MDc6XFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MDgtXFx0XFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz04MjQ9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4MzI6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODMzLVxcdFxcdFxcXCIlczogJXNbJWRdIG9mICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM0OlxcdFxcdFxcdENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLCBldmVudCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTgzNS1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM4OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVxcdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODYzPXN0YXRpYyB2b2lkIGN0Y21fY2h4X3J4aW5pdGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODc5LVxcdH0gZWxzZSBpZiAoZXZlbnQgPT0gQ1RDX0VWRU5UX1VDX1JDUkVTRVQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjg4MDpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9OT1RJQ0UsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODE6XFx0XFx0XFx0ICAgICAgIFxcXCIlcyglcyk6ICVzIGluICVzXFxcIiwgQ1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy04ODItXFx0XFx0XFx0ICAgICAgIGN0Y19jaF9ldmVudF9uYW1lc1tldmVudF0sIGZzbV9nZXRzdGF0ZV9zdHIoZmkpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODc6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo4ODg6XFx0XFx0XFx0XFxcIiVzKCVzKTogJXMgaW4gJXNcXFwiLCBDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTg4OS1cXHRcXHRcXHRjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTkwNT1zdGF0aWMgdm9pZCBjdGNtX2NoeF9yeGluaXRmYWlsKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTE6XFx0Q1RDTV9EQkZfVEVYVF8oRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTItXFx0XFx0XFx0XFxcIiVzKCVzKTogUlggJXMgYnVzeSwgaW5pdC4gZmFpbFxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MTM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MTQtXFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05MjU9c3RhdGljIHZvaWQgY3RjbV9jaHhfcnhkaXNjKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5MzI6XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTMzLVxcdFxcdFxcdFxcXCIlczogJXM6IHJlbW90ZSBkaXNjb25uZWN0IC0gcmUtaW5pdCAuLi5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTM0OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTkzNS1cXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9EVEVSTSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NDM6XFx0Y2gyID0gcHJpdi1cXHUwMDNlY2hhbm5lbFtDVENNX1dSSVRFXTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk0NC1cXHRmc21fbmV3c3RhdGUoY2gyLVxcdTAwM2Vmc20sIENUQ19TVEFURV9EVEVSTSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTk1Nz1zdGF0aWMgdm9pZCBjdGNtX2NoeF90eGluaXRlcnIoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3MS1cXHR9IGVsc2UgaWYgKGV2ZW50ID09IENUQ19FVkVOVF9VQ19SQ1JFU0VUKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo5NzI6XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfTk9USUNFLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTczOlxcdFxcdFxcdCAgICAgICBcXFwiJXMoJXMpOiAlcyBpbiAlc1xcXCIsIENUQ01fRlVOVEFJTCwgY2gtXFx1MDAzZWlkLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtOTc0LVxcdFxcdFxcdCAgICAgICBjdGNfY2hfZXZlbnRfbmFtZXNbZXZlbnRdLCBmc21fZ2V0c3RhdGVfc3RyKGZpKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTk3OC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTc5OlxcdFxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6OTgwOlxcdFxcdFxcdFxcXCIlcyglcyk6ICVzIGluICVzXFxcIiwgQ1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy05ODEtXFx0XFx0XFx0Y3RjX2NoX2V2ZW50X25hbWVzW2V2ZW50XSwgZnNtX2dldHN0YXRlX3N0cihmaSkpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz05OTc9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDAzLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAwNDpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlcjogJXM6IGNwPSVpIGNoPTB4JXAgaWQ9JXNcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDA1LVxcdFxcdFxcdF9fZnVuY19fLCBzbXBfcHJvY2Vzc29yX2lkKCksIGNoLCBjaC1cXHUwMDNlaWQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDA5LVxcdFxcdHN0cnVjdCBtcGNfZ3JvdXAgKmdwdHIgPSBwcml2LVxcdTAwM2VtcGNnO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAxMDpcXHRcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9JTkZPLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAxMS1cXHRcXHRcXHRcXHRcXFwiJXM6ICVzOiByZXRyaWVzIGV4Y2VlZGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMTI6XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAxMy1cXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlZnNtLCBERVZfRVZFTlRfVFhET1dOLCBkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDIwLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAyMTpcXHRDVENNX0RCRl9URVhUXyhUUkFDRSwgQ1RDX0RCRl9ERUJVRyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMjItXFx0XFx0XFx0XFxcIiVzIDogJXM6IHJldHJ5ICVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMjM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsIGNoLVxcdTAwM2VyZXRyeSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDI0LVxcdHNrYiA9IHNrYl9wZWVrKFxcdTAwMjZjaC1cXHUwMDNlaW9fcXVldWUpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDMwLVxcdFxcdGlmIChzZXRfbm9ybWFsaXplZF9jZGEoXFx1MDAyNmNoLVxcdTAwM2VjY3dbNF0sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEwMzE6XFx0XFx0XFx0Q1RDTV9EQkZfVEVYVF8oVFJBQ0UsIENUQ19EQkZfSU5GTyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzItXFx0XFx0XFx0XFx0XFxcIiVzOiAlczogSURBTCBhbGxvYyBmYWlsZWRcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTAzMzpcXHRcXHRcXHRcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMDM0LVxcdFxcdFxcdGZzbV9ldmVudChwcml2LVxcdTAwM2Vmc20sIERFVl9FVkVOVF9UWERPV04sIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEwNjY9c3RhdGljIHZvaWQgY3RjbV9jaHhfaW9mYXRhbChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3My1cXHRmc21fZGVsdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDc0OlxcdENUQ01fREJGX1RFWFRfKEVSUk9SLCBDVENfREJGX0VSUk9SLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3NS1cXHRcXHRcXFwiJXM6ICVzOiAlcyB1bnJlY292ZXJhYmxlIGNoYW5uZWwgZXJyb3JcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTA3NjpcXHRcXHRcXHRDVENNX0ZVTlRBSUwsIGNoLVxcdTAwM2VpZCwgcmQgPT0gQ1RDTV9SRUFEID8gXFxcIlJYXFxcIiA6IFxcXCJUWFxcXCIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA3Ny1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTA4MS1cXHR9XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDgyOlxcdGlmIChyZCA9PSBDVENNX1JFQUQpIHtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwODMtXFx0XFx0ZnNtX25ld3N0YXRlKGZpLCBDVENfU1RBVEVfUlhFUlIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xMjE2PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjMyLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTIzMzpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlciAlczogJXMgY3A6JWlcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjM0LVxcdFxcdFxcdF9fZnVuY19fLCBkZXYtXFx1MDAzZW5hbWUsIHNtcF9wcm9jZXNzb3JfaWQoKSk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDAtXFx0aWYgKGNoLVxcdTAwM2VpcmItXFx1MDAzZXNjc3cuY21kLmNvdW50ICE9IDApXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjQxOlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9ERUJVRyxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyNDItXFx0XFx0XFx0XFxcIiVzKCVzKTogVFggbm90IGNvbXBsZXRlLCByZW1haW5pbmcgJWQgYnl0ZXNcXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI0MzpcXHRcXHRcXHQgICAgIENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lLCBjaC1cXHUwMDNlaXJiLVxcdTAwM2VzY3N3LmNtZC5jb3VudCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjQ0LVxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3Ny1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyNzg6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCIlczogYnVpbGRpbmcgdHJhbnNfc2tiIGZyb20gY29sbGVjdF9xXFxcIlxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTI3OS1cXHRcXHQgICAgICAgXFxcIiBkYXRhX3NwYWNlOiUwNHhcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMjkyOlxcdFxcdENUQ01fUFJfREJHREFUQShcXFwiJXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjkzLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTI5NDpcXHRcXHRDVENNX1BSX0RCR0RBVEEoXFxcIiVzOiBwZHUgaGVhZGVyIGFuZCBkYXRhIGZvciB1cFxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEyOTUtXFx0XFx0XFx0XFx0XFxcIiB0byAzMiBieXRlcyBzZW50IHRvIHZ0YW1cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEyOTY6XFx0XFx0Q1RDTV9EM19EVU1QKChjaGFyICopcF9oZWFkZXIsIG1pbl90KGludCwgc2tiLVxcdTAwM2VsZW4sIDMyKSk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMjk3LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzE5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyMDpcXHRDVENNX1BSX0RCR0RBVEEoXFxcIiVzOiBUb1ZUQU1fdGhfc2VxPSAlMDh4XFxcXG5cXFwiICxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjEtXFx0XFx0XFx0XFx0XFx0X19mdW5jX18sIGNoLVxcdTAwM2V0aF9zZXFfbnVtKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjItXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzIzOlxcdENUQ01fUFJfREJHREFUQShcXFwiJXM6IHRyYW5zX3NrYiBsZW46JTA0eCBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzI0LVxcdFxcdCAgICAgICBfX2Z1bmNfXywgY2gtXFx1MDAzZXRyYW5zX3NrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMjU6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCIlczogdXAtdG8tNTAgYnl0ZXMgb2YgdHJhbnNfc2tiIFxcXCJcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzMjYtXFx0XFx0XFx0XFxcImRhdGEgdG8gdnRhbSBmcm9tIGNvbGxlY3RfcVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTMyNzpcXHRDVENNX0QzX0RVTVAoKGNoYXIgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMyOC1cXHRcXHRcXHRcXHRtaW5fdChpbnQsIGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbiwgNTApKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTMzMi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzMzM6XFx0Q1RDTV9QUl9EQkdEQVRBKFxcXCJjY3djZGE9MHglcCBkYXRhPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzM0LVxcdFxcdFxcdCh2b2lkICopKHU2NClkbWEzMl90b191MzIoY2gtXFx1MDAzZWNjd1sxXS5jZGEpLFxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQwLVxcdFxcdGNoLVxcdTAwM2V0cmFuc19za2IgPSBOVUxMO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM0MTpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfVFJBQ0UsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzQyLVxcdFxcdFxcdFxcXCIlczogJXM6IElEQUwgYWxsb2MgZmFpbGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNDM6XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0NC1cXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlbXBjZy1cXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNDctXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzQ4OlxcdENUQ01fUFJfREJHREFUQShcXFwiY2N3Y2RhPTB4JXAgZGF0YT0weCVwXFxcXG5cXFwiLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM0OS1cXHRcXHRcXHQodm9pZCAqKSh1NjQpZG1hMzJfdG9fdTMyKGNoLVxcdTAwM2VjY3dbMV0uY2RhKSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTM1Mi1cXHRjaC1cXHUwMDNlY2N3WzFdLmNvdW50ID0gY2gtXFx1MDAzZXRyYW5zX3NrYi1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM1MzpcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTQtXFx0Y2gtXFx1MDAzZXByb2Yuc2VuZF9zdGFtcCA9IGppZmZpZXM7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEzNzk9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzg5LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTM5MDpcXHRDVENNX1BSX0RFQlVHKFxcXCIlczogJXM6IGNwOiVpICVzIG1heGJ1ZiA6ICUwNHgsIGxlbjogJTA0eFxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzOTE6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIHNtcF9wcm9jZXNzb3JfaWQoKSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTItXFx0XFx0XFx0XFx0Y2gtXFx1MDAzZWlkLCBjaC1cXHUwMDNlbWF4X2J1ZnNpemUsIGxlbik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTUtXFx0aWYgKHNrYiA9PSBOVUxMKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzk2OlxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTctXFx0XFx0XFx0XFxcIiVzKCVzKTogVFJBTlNfU0tCID0gTlVMTFxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMzk4OlxcdFxcdFxcdFxcdENUQ01fRlVOVEFJTCwgZGV2LVxcdTAwM2VuYW1lKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzOTktXFx0XFx0Z290byBhZ2FpbjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQwMi1cXHRpZiAobGVuIFxcdTAwM2MgVEhfSEVBREVSX0xFTkdUSCkge1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQwMzpcXHRcXHRDVENNX0RCRl9URVhUXyhNUENfRVJST1IsIENUQ19EQkZfRVJST1IsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDA0LVxcdFxcdFxcdFxcdFxcXCIlcyglcyk6IHBhY2tldCBsZW5ndGggJWQgdG9vIHNob3J0XFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MDU6XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUsIGxlbik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDA2LVxcdFxcdHByaXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BwZWQrKztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQxNC1cXHRcXHRpZiAobmV3X3NrYiA9PSBOVUxMKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDE1OlxcdFxcdFxcdENUQ01fREJGX1RFWFRfKE1QQ19FUlJPUiwgQ1RDX0RCRl9FUlJPUixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0MTYtXFx0XFx0XFx0XFx0XFxcIiVzKCVzKTogc2tiIGFsbG9jYXRpb24gZmFpbGVkXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0MTc6XFx0XFx0XFx0XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQxOC1cXHRcXHRcXHRmc21fZXZlbnQocHJpdi1cXHUwMDNlbXBjZy1cXHUwMDNlZnNtLCBNUENHX0VWRU5UX0lOT1AsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NjgtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDY5OlxcdENUQ01fUFJfREVCVUcoXFxcIkV4aXQgJXM6ICVzLCBjaD0weCVwLCBpZD0lc1xcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0NzAtXFx0XFx0XFx0X19mdW5jX18sIGRldi1cXHUwMDNlbmFtZSwgY2gsIGNoLVxcdTAwM2VpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE0ODE9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDg3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTQ4ODpcXHRDVENNX1BSX0RFQlVHKFxcXCJFbnRlciAlczogaWQ9JXMsIGNoPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDg5LVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNlaWQsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE0OTAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxNDkxOlxcdENUQ01fREJGX1RFWFRfKE1QQ19UUkFDRSwgQ1RDX0RCRl9JTkZPLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTQ5Mi1cXHRcXHRcXHRcXFwiJXM6ICVzOiBjaHN0YXRlOiVpLCBncnBzdGF0ZTolaSwgcHJvdDolaVxcXFxuXFxcIixcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE0OTM6XFx0XFx0XFx0Q1RDTV9GVU5UQUlMLCBjaC1cXHUwMDNlaWQsIGZzbV9nZXRzdGF0ZShmaSksXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNDk0LVxcdFxcdFxcdGZzbV9nZXRzdGF0ZShncHRyLVxcdTAwM2Vmc20pLCBjaC1cXHUwMDNlcHJvdG9jb2wpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTA1LVxcdGNhc2UgQ1RDX1NUQVRFX1NFVFVQV0FJVDpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MDY6XFx0XFx0aWYgKENIQU5ORUxfRElSRUNUSU9OKGNoLVxcdTAwM2VmbGFncykgPT0gQ1RDTV9SRUFEKSB7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTA3LVxcdFxcdFxcdGN0Y21wY19jaHhfcnhpZGxlKGZpLCBldmVudCwgYXJnKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTUxNi1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MTc6XFx0ZnNtX25ld3N0YXRlKGZpLCAoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtXFx1MDAzZWZsYWdzKSA9PSBDVENNX1JFQUQpXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTE4LVxcdFxcdCAgICAgPyBDVENfU1RBVEVfUlhJTklUIDogQ1RDX1NUQVRFX1RYSU5JVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1MjAtZG9uZTpcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE1MjE6XFx0Q1RDTV9QUl9ERUJVRyhcXFwiRXhpdCAlczogaWQ9JXMsIGNoPTB4JXBcXFxcblxcXCIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNTIyLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBjaC1cXHUwMDNlaWQsIGNoKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTUzNj1fX2NvbnRleHRfdW5zYWZlKC8qIENvbmRpdGlvbmFsIGxvY2tpbmcgKi8pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE1NDUtXFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MTU0NjpcXHRDVENNX1BSX0RFQlVHKFxcXCIlczogJXM6ICVzOiBjcDolaSwgY2hzdGF0ZTolaSBncnBzdGF0ZTolaVxcXFxuXFxcIixcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MTkuNTk2NjQwNjYyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc1MDg0OTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBzMzkwIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzMzkwIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSBrbm93IHRoZSBzdGFuZGFyZCBsYXlvdXQsIHNvIGBkcml2ZXJzL3MzOTAvbmV0L0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBJJ20gZXhwZWN0aW5nIHRoaXMgZmlsZSB0byBkZWZpbmUgYWxsIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29ya2luZyBvbiB0aGUgU3lzdGVtIHogYXJjaGl0ZWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgdmFyaW91cyBuZXR3b3JrIGNhcmQgZHJpdmVycyBzdXBwb3J0ZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLCBtYXliZSBzb21lIHMzOTAtc3BlY2lmaWMgcHJvdG9jb2wgY29uZmlndXJhdGlvbnMsIGFuZCBsaWtlbHkgZGVwZW5kZW5jeSBjaGVja3MgdGhhdCBwZXJ0YWluIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBzMzkwIGFyY2hpdGVjdHVyZSBudWFuY2VzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBuZXR3b3JraW5nIG9wdGlvbnMuIEhvdyBhcmUgdmFyaW91cyBOSUNzIGVuYWJsZWQvZGlzYWJsZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzPyBIb3cgYXJlIGRpZmZlcmVudCBuZXR3b3JraW5nIGZlYXR1cmVzIG9yIHByb3RvY29scyBjb25maWd1cmVkPyBJJ2xsIHByb2JhYmx5IHNjYW4gZm9yIGBjb25maWdgIGVudHJpZXMsIGxvb2tpbmcgZm9yIGxpa2VseSByZWxldmFudCBzeW1ib2xzLiBUaGVuIEknbGwgZm9jdXMgb24gcmVsYXRpb25zaGlwcyBhbmQgY29udGV4dDogV2hvIHVzZXMgdGhlbSwgYW5kIGhvdyBhcmUgdGhleSBjb21iaW5lZD8gSSdsbCBhbHNvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24uIFRoaXMgdGV4dCB3aWxsIHByb3ZpZGUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgcHVycG9zZSBhbmQgaW50ZW5kZWQgdXNlIG9mIGVhY2ggY29uZmlndXJhYmxlIHNldHRpbmcuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciBuZXR3b3JraW5nIG9uIHRoZSBzMzkwIHBsYXRmb3JtLCB0byByZWNvZ25pemUgcG90ZW50aWFsbHkgbmVlZGVkIGN1c3RvbWl6YXRpb24gYXJlYXMsIGFuZCBwcmVwYXJlIG15c2VsZiB0byBpZGVudGlmeSB0aGUgaW1wYWN0cyBvZiBtYWtpbmcgY2VydGFpbiBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MjIuMzQ3NDkzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgUzM5MFxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgQ1RDTVxcbiAgIDY6XFx0XFx0ZGVmX3RyaXN0YXRlIG1cXG4gICA3OlxcdFxcdHByb21wdCBcXFwiQ1RDIGFuZCBNUEMgU05BIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBDQ1cgXFx1MDAyNlxcdTAwMjYgTkVUREVWSUNFU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGNoYW5uZWwtdG8tY2hhbm5lbFxcbiAgMTE6XFx0XFx0ICBwb2ludC10by1wb2ludCBuZXR3b3JraW5nIG9uIElCTSBTeXN0ZW0gei5cXG4gIDEyOlxcdFxcdCAgVGhpcyBkZXZpY2UgZHJpdmVyIHN1cHBvcnRzIHJlYWwgQ1RDIGNvdXBsaW5nIHVzaW5nIEVTQ09OLlxcbiAgMTM6XFx0XFx0ICBJdCBhbHNvIHN1cHBvcnRzIHZpcnR1YWwgQ1RDcyB3aGVuIHJ1bm5pbmcgdW5kZXIgVk0uXFxuICAxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgY2hhbm5lbC10by1jaGFubmVsIE1QQyBTTkEgZGV2aWNlcy5cXG4gIDE1OlxcdFxcdCAgTVBDIGlzIGFuIFNOQSBwcm90b2NvbCBkZXZpY2UgdXNlZCBieSBDb21tdW5pY2F0aW9uIFNlcnZlciBmb3IgTGludXguXFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgY3RjbS5cXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSBpbnRvIHRoZSBrZXJuZWwsIGNob29zZSBZLlxcbiAgMTg6XFx0XFx0ICBJZiB5b3UgZG8gbm90IG5lZWQgYW55IGNoYW5uZWwtdG8tY2hhbm5lbCBjb25uZWN0aW9uLCBjaG9vc2UgTi5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNNU0dJVUNWXFxuICAyMTpcXHRcXHRkZWZfdHJpc3RhdGUgbVxcbiAgMjI6XFx0XFx0cHJvbXB0IFxcXCJJVUNWIHNwZWNpYWwgbWVzc2FnZSBzdXBwb3J0IChWTSBvbmx5KVxcXCJcXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gSVVDVlxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byByZWNlaXZlIFNNU0cgbWVzc2FnZXNcXG4gIDI2OlxcdFxcdCAgZnJvbSBvdGhlciBWTSBndWVzdCBzeXN0ZW1zLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgU01TR0lVQ1ZfRVZFTlRcXG4gIDI5OlxcdFxcdGRlZl90cmlzdGF0ZSBtXFxuICAzMDpcXHRcXHRwcm9tcHQgXFxcIkRlbGl2ZXIgSVVDViBzcGVjaWFsIG1lc3NhZ2VzIGFzIHVldmVudHMgKFZNIG9ubHkpXFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBTTVNHSVVDVlxcbiAgMzI6XFx0XFx0aGVscFxcbiAgMzM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gZGVsaXZlciBDUCBzcGVjaWFsIG1lc3NhZ2VzIChTTVNHcykgYXNcXG4gIDM0OlxcdFxcdCAgdWV2ZW50cy4gIFRoZSBkcml2ZXIgaGFuZGxlcyBvbmx5IHRob3NlIHNwZWNpYWwgbWVzc2FnZXMgdGhhdFxcbiAgMzU6XFx0XFx0ICBzdGFydCB3aXRoIFxcXCJBUFBcXFwiLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNLiBUaGUgbW9kdWxlIG5hbWUgaXMgXFxcInNtc2dpdWN2X2FwcFxcXCIuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBRRVRIXFxuICA0MDpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiAgNDE6XFx0XFx0cHJvbXB0IFxcXCJHaWdhYml0IEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBDQ1cgXFx1MDAyNlxcdTAwMjYgTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1QgXFx1MDAyNlxcdTAwMjYgUURJTyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVFxcbiAgNDM6XFx0XFx0aGVscFxcbiAgNDQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJQk0ncyBPU0EgRXhwcmVzcyBuZXR3b3JrIGFkYXB0ZXJzIGluIFFESU8gbW9kZSxcXG4gIDQ1OlxcdFxcdCAgSGlwZXJTb2NrZXRzIGludGVyZmFjZXMgYW5kIHovVk0gdmlydHVhbCBOSUNzIGZvciBHdWVzdCBMQU4gYW5kXFxuICA0NjpcXHRcXHQgIFZTV0lUQ0guXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0uXFxuICA0OTpcXHRcXHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBxZXRoLlxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjIyLjM0NzU2MzY3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUyOTI1OTEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFMzOTAgTmV0d29yayBEZXZpY2UgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIFMzOTAgbmV0d29yayBkZXZpY2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHBvdGVudGlhbCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB1c2FnZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBjaGVja2luZyBpcyB0aGUgYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZmlsZS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIG1haW4gXCJTLzM5MCBuZXR3b3JrIGRldmljZSBkcml2ZXJzXCIgbWVudSBpcyBndWFyZGVkIGJ5IGBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBTMzkwYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIHRoZW4sIHRoZXJlJ3MgYGNvbmZpZyBDVENNYCwgd2hpY2ggZGVwZW5kcyBvbiBgQ0NXIFx1MDAyNlx1MDAyNiBORVRERVZJQ0VTYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlIGVpdGhlci5cblxuVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlciBpcyB3aGV0aGVyIGFueSBvZiB0aGUgbG93LWxldmVsIENUQ00gb3IgRlNNIGNvZGUgaXMgYWNjaWRlbnRhbGx5IHVzZWQgZWxzZXdoZXJlLiBMZXQncyBkaWcgZGVlcGVyLiBUaGUgY3JpdGljYWwgY2hlY2sgaXM6IGFyZSB0aGUgZmlsZXMgYGZzbS5jYCwgYGZzbS5oYCwgb3IgYGN0Y21fbWFpbi5jYCBzb21laG93IGJlaW5nIHB1bGxlZCBpbnRvIHRoZSBidWlsZCBmb3Igbm9uLVMzOTAgYXJjaGl0ZWN0dXJlcz8gSWYgdGhleSBhcmUsIHdlIGhhdmUgYSBwcm9ibGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjaGVjayB3aGVyZSB0aGVzZSBmaWxlcyBhcmUgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBhbmQgaWYgYW55IHVzZSBvdXRzaWRlIG9mIHRoZSBTMzkwIGFyY2hpdGVjdHVyZS4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2sgdG8gcHJldmVudCBjcm9zcy1hcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIG9yIGluY29ycmVjdCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzODksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjI0Ljg3NjgyNTc0MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ3MDY5MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbV9hZGR0aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTI0NT1zdGF0aWMgdm9pZCBjaHhfdHhkb25lKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0zMDYtXFx0XFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjMwNzpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTMwOC1cXHRcXHRjaC1cXHUwMDNlcHJvZi5zZW5kX3N0YW1wID0gamlmZmllcztcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9NDMwPXN0YXRpYyB2b2lkIGNoeF9maXJzdGlvKGZzbV9pbnN0YW5jZSAqZmksIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy00NTItXFx0XFx0XFx0KigoX191MTYgKiljaC1cXHUwMDNldHJhbnNfc2tiLVxcdTAwM2VkYXRhKSA9IENUQ01fSU5JVElBTF9CTE9DS0xFTjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjQ1MzpcXHRcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDU0LVxcdFxcdFxcdFxcdCAgICAgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTQ3MC1cXHQgICAgKGNoLVxcdTAwM2Vwcm90b2NvbCAhPSBDVENNX1BST1RPX1MzOTApKVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NDcxOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNDcyLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01NDg9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy01NjAtXFx0fVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NTYxOlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCB0aW1lb3V0LCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTU2Mi1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TRVRVUFdBSVQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz01ODY9c3RhdGljIHZvaWQgY3RjbV9jaHhfc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMC1cXHRmc21fbmV3c3RhdGUoZmksIENUQ19TVEFURV9TVEFSVFdBSVQpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6NjMxOlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCAxMDAwLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTYzMi1cXHRzcGluX2xvY2tfaXJxc2F2ZShnZXRfY2N3ZGV2X2xvY2soY2gtXFx1MDAzZWNkZXYpLCBzYXZlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz02NTA9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzo2NjE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy02NjItXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTc3ND1zdGF0aWMgdm9pZCBjdGNtX2NoeF9zZXR1cGVycihmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtNzg5LVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjc5MDpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTc5MS1cXHRcXHRpZiAoIUlTX01QQyhjaCkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9ODI0PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM3LVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6ODM4OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtODM5LVxcdG9sZHN0YXRlID0gZnNtX2dldHN0YXRlKGZpKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9OTk3PV9fY29udGV4dF91bnNhZmUoLyogQ29uZGl0aW9uYWwgbG9ja2luZyAqLylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTAzNy1cXHRcXHR9XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxMDM4OlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCAxMDAwLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEwMzktXFx0XFx0aWYgKGV2ZW50ID09IENUQ19FVkVOVF9USU1FUikgLyogZm9yIFRJTUVSIG5vdCB5ZXQgbG9ja2VkICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTEyMTY9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF90eGRvbmUoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTEzNTItXFx0Y2gtXFx1MDAzZWNjd1sxXS5jb3VudCA9IGNoLVxcdTAwM2V0cmFuc19za2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjEzNTM6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xMzU0LVxcdGNoLVxcdTAwM2Vwcm9mLnNlbmRfc3RhbXAgPSBqaWZmaWVzO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYz0xNTg5PXN0YXRpYyB2b2lkIGN0Y21wY19jaHhfYXR0bihmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE2MDYtXFx0XFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE2MDc6XFx0XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTYwOC1cXHRcXHRcXHRcXHRNUENfWElEX1RJTUVPVVRfVkFMVUUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jPTE2NDg9c3RhdGljIHZvaWQgY3RjbXBjX2NoeF9hdHRuYnVzeShmc21faW5zdGFuY2UgKmZzbSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE3MTQtXFx0XFx0ZnNtX2RlbHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE3MTU6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZncnAtXFx1MDAzZXRpbWVyLCBNUENfWElEX1RJTUVPVVRfVkFMVUUsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzE2LVxcdFxcdFxcdCAgICAgTVBDR19FVkVOVF9USU1FUiwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MTc1MD1zdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3NlbmRfc3dlZXAoZnNtX2luc3RhbmNlICpmc20sIGludCBldmVudCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xNzc1LVxcdFxcdC8qIGdpdmUgdGhlIHByZXZpb3VzIElPIHRpbWUgdG8gY29tcGxldGUgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jOjE3NzY6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZ3Y2gtXFx1MDAzZXN3ZWVwX3RpbWVyLFxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMtMTc3Ny1cXHRcXHRcXHQyMDAsIENUQ19FVkVOVF9SU1dFRVBfVElNRVIsIHdjaCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTE4MTQtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYzoxODE1OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2d2NoLVxcdTAwM2V0aW1lciwgQ1RDTV9USU1FXzVfU0VDLCBDVENfRVZFTlRfVElNRVIsIHdjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0xODE2LVxcdGZzbV9uZXdzdGF0ZSh3Y2gtXFx1MDAzZWZzbSwgQ1RDX1NUQVRFX1RYKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM9MjEwNT1zdGF0aWMgdm9pZCBkZXZfYWN0aW9uX3Jlc3RhcnQoZnNtX2luc3RhbmNlICpmaSwgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jLTIxMjctXFx0LyogdG8gc2Vuc2UgcmVwb3J0ZWQgd2hlbiBJTyBpcyBhYm9ydGVkXFx0XFx0XFx0ICAqL1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmM6MjEyODpcXHRmc21fYWRkdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfdGltZXIsIHJlc3RhcnRfdGltZXIsXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYy0yMTI5LVxcdFxcdFxcdERFVl9FVkVOVF9TVEFSVCwgZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NDY0PXN0YXRpYyBpbnQgY3RjbV90cmFuc21pdF9za2Ioc3RydWN0IGNoYW5uZWwgKmNoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjctXFx0ZnNtX25ld3N0YXRlKGNoLVxcdTAwM2Vmc20sIENUQ19TVEFURV9UWCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYzo1Njg6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIENUQ01fVElNRV81X1NFQywgQ1RDX0VWRU5UX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy01NjktXFx0c3Bpbl9sb2NrX2lycXNhdmUoZ2V0X2Njd2Rldl9sb2NrKGNoLVxcdTAwM2VjZGV2KSwgc2F2ZWZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM9NTk2PXN0YXRpYyB2b2lkIGN0Y21wY19zZW5kX3N3ZWVwX3JlcShzdHJ1Y3QgY2hhbm5lbCAqcmNoKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYy02MzEtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYzo2MzI6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNlc3dlZXBfdGltZXIsIDEwMCwgQ1RDX0VWRU5UX1JTV0VFUF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNjMzLVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uYz02NDc9c3RhdGljIGludCBjdGNtcGNfdHJhbnNtaXRfc2tiKHN0cnVjdCBjaGFubmVsICpjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg1LVxcdGZzbV9uZXdzdGF0ZShjaC1cXHUwMDNlZnNtLCBDVENfU1RBVEVfVFgpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmM6Nzg2OlxcdGZzbV9hZGR0aW1lcihcXHUwMDI2Y2gtXFx1MDAzZXRpbWVyLCBDVENNX1RJTUVfNV9TRUMsIENUQ19FVkVOVF9USU1FUiwgY2gpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMtNzg3LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTM5OT12b2lkIGN0Y19tcGNfZXN0YWJsaXNoX2Nvbm5lY3Rpdml0eShpbnQgcG9ydF9udW0sXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDY4LVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2Z3JwLVxcdTAwM2V0aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjQ2OTpcXHRcXHRmc21fYWRkdGltZXIoXFx1MDAyNmdycC1cXHUwMDNldGltZXIsIE1QQ19YSURfVElNRU9VVF9WQUxVRSxcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtNDcwLVxcdFxcdFxcdFxcdFxcdFxcdE1QQ0dfRVZFTlRfVElNRVIsIGRldik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmM9NjM5PXN0YXRpYyB2b2lkIGN0Y21wY19zZW5kX3N3ZWVwX3Jlc3Aoc3RydWN0IGNoYW5uZWwgKnJjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy02NjQtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjY2NTpcXHRmc21fYWRkdGltZXIoXFx1MDAyNmNoLVxcdTAwM2Vzd2VlcF90aW1lciwgMTAwLCBDVENfRVZFTlRfUlNXRUVQX1RJTUVSLCBjaCk7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTY2Ni1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYz0xMzM2PXN0YXRpYyB2b2lkIG1wY19hY3Rpb25fZ29faW5vcChmc21faW5zdGFuY2UgKmZpLCBpbnQgZXZlbnQsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDEyLVxcdFxcdGZzbV9kZWx0aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNlcmVzdGFydF90aW1lcik7XFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE0MTM6XFx0XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3RpbWVyLCA1MDAsIERFVl9FVkVOVF9SRVNUQVJULCBkZXYpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYy0xNDE0LVxcdFxcdGZzbV9uZXdzdGF0ZShncnAtXFx1MDAzZWZzbSwgTVBDR19TVEFURV9SRVNFVCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQyMC1cXHRcXHRmc21fZGVsdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXJlc3RhcnRfdGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvY3RjbV9tcGMuYzoxNDIxOlxcdFxcdGZzbV9hZGR0aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNlcmVzdGFydF90aW1lciwgNTAwLCBERVZfRVZFTlRfU1RPUCwgZGV2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTQyMi1cXHRcXHRmc21fbmV3c3RhdGUoZ3JwLVxcdTAwM2Vmc20sIE1QQ0dfU1RBVEVfUkVTRVQpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jPTE2NDk9X19jb250ZXh0X3Vuc2FmZSgvKiBDb25kaXRpb25hbCBsb2NraW5nICovKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jLTE3ODAtXFxuZHJpdmVycy9zMzkwL25ldC9jdGNtX21wYy5jOjE3ODE6XFx0ZnNtX2FkZHRpbWVyKFxcdTAwMjZjaC1cXHUwMDNldGltZXIsIDUwMDAgLCBDVENfRVZFTlRfVElNRVIsIGNoKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2N0Y21fbXBjLmMtMTc4Mi1cXHRyYyA9IGNjd19kZXZpY2Vfc3RhcnQoY2gtXFx1MDAzZWNkZXYsIFxcdTAwMjZjaC1cXHUwMDNlY2N3WzhdLCAwLCAweGZmLCAwKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM9MTY1PWludFxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTY2OmZzbV9hZGR0aW1lcihmc21fdGltZXIgKnRoaXMsIGludCBtaWxsaXNlYywgaW50IGV2ZW50LCB2b2lkICphcmcpXFxuZHJpdmVycy9zMzkwL25ldC9mc20uYy0xNjcte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9mc20uYz0xOTc9RVhQT1JUX1NZTUJPTChmc21fZGVsdGltZXIpO1xcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmM6MTk4OkVYUE9SVF9TWU1CT0woZnNtX2FkZHRpbWVyKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLTE5OS1FWFBPUlRfU1lNQk9MKGZzbV9tb2R0aW1lcik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oPTIyNj1jb25zdCBjaGFyICpmc21fZ2V0c3RhdGVfc3RyKGZzbV9pbnN0YW5jZSAqZmkpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzItICpcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oOjIzMzogKiBQcmVwYXJlcyBhbiBmc21fdGltZXIgZm9yIHVzYWdlIHdpdGggZnNtX2FkZHRpbWVyKCkuXFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yMzQtICovXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oPTI0Mz12b2lkIGZzbV9kZWx0aW1lcihmc21fdGltZXIgKnRpbWVyKTtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjQ1LS8qKlxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjQ2OiAqIGZzbV9hZGR0aW1lciAtIEFkZHMgYW5kIHN0YXJ0cyBhIHRpbWVyIGZvciBhbiBGU00gaW5zdGFuY2VcXG5kcml2ZXJzL3MzOTAvbmV0L2ZzbS5oLTI0Ny0gKiBAdGltZXI6IFRoZSB0aW1lciB0byBiZSBhZGRlZCAodGltZXItXFx1MDAzZWZpIG11c3QgcG9pbnQgdG8gdGhlIEZTTSBpbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmgtMjU2LSAqL1xcbmRyaXZlcnMvczM5MC9uZXQvZnNtLmg6MjU3OmludCBmc21fYWRkdGltZXIoZnNtX3RpbWVyICp0aW1lciwgaW50IG1pbGxpc2VjLCBpbnQgZXZlbnQsIHZvaWQgKmFyZyk7XFxuZHJpdmVycy9zMzkwL25ldC9mc20uaC0yNTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjI3LjAyMzg5OTgxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNTA5NDEzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENvZGUgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIGtleSBpcyB0byBjaGVjayBpZiB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gYW4gYXJjaGl0ZWN0dXJlIHRoYXQncyAqbm90KiB0aGUgdGFyZ2V0LCBhbmQgaWYgdGhlcmUgYXJlIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuIExldCdzIGRpZyBpbi4gRmlyc3QsIEkgbmVlZCB0byBjaGVjayB3aGVyZSBgZnNtX21vZHRpbWVyYCBhbmQgb3RoZXIgc3ltYm9scyBhcmUgdXNlZCBpbiBgZHJpdmVycy9zMzkwL25ldC9mc20uY2AgYW5kIHdoZXJlIGBmc20uY2AgaXMgY29tcGlsZWQuIFRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIGBmc20ub2AgaXMgYnVpbHQgaWYgYENPTkZJR19DVENNYCBpcyBlbmFibGVkLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSBpdCBpc24ndCB1c2VkIGVsc2V3aGVyZSB3aXRoIGEgcXVpY2sgc2VhcmNoLiBUaGUgcmVzdWx0cyBzZWVtIHRvIGJlIGNvbnN0cmFpbmVkIHRvIGBkcml2ZXJzL3MzOTAvbmV0L2AuXG5cblJpZ2h0LCBgZHJpdmVycy9zMzkwL2AuLi4gdGhhdCdzIGEgcmVkIGZsYWcuIExldCdzIGNvbmZpcm0gdGhhdCdzIFMzOTAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBqdXN0IHRvIGJlIHN1cmUuIE15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YC5cblxuT2theSwgdGhlIGd1aWRlbGluZXMuIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyBhcmUgYSBiaWcgbm8tbm8gZm9yIFdvcnRoRnV6emluZy4gU3BlY2lmaWMgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYW5vdGhlci4gU28sIGxldCdzIGxvb2sgYXQgdGhlIG1vZGlmaWVkIGZpbGVzOiBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYC4gQm90aCBvZiB0aG9zZSBhcmUgc3F1YXJlbHkgd2l0aGluIHRoZSBgZHJpdmVycy9zMzkwL25ldC9gIGRpcmVjdG9yeSwgcGFydCBvZiB0aGUgUzM5MCBzdWJzeXN0ZW0uIFxuXG5MZXQncyBub3cgYmUgY2VydGFpbiB0aGF0IGBDT05GSUdfQ1RDTWAgZGVwZW5kcyBvbiBgQ09ORklHX1MzOTBgIG9yIGBDT05GSUdfQ0NXYC4gSW4gdGhlIGBLY29uZmlnYCwgSSBjYW4gc2VlIHRoZSBgbWVudSBcIlMvMzkwIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnNcImAgd2l0aCBhIGRlcGVuZGVuY3kgb24gYE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IFMzOTBgLiBgQ09ORklHX0NUQ01gIGRlcGVuZHMgb24gYENDVyBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU2AuIEkga25vdyB0aGF0IGBDQ1dgIGlzIG9ubHkgYXZhaWxhYmxlIG9uIGBDT05GSUdfUzM5MGAuIFNvIG5vdyBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIEkgY2FuIGV2ZW4gKmVuYWJsZSogYENPTkZJR19TMzkwYCBvciBgQ09ORklHX0NDV2Agb24gYGFtZDY0YC4gTGV0J3MgZ3JlcCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLiBUaGlzIGNsZWFybHkgbG9va3MgbGlrZSB0aGVzZSBjaGFuZ2VzIGFyZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIGFuZCB3aWxsIG5vdCBiZSByZWFjaGVkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDozMS4yNzQ4NDQxNTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDIxMzM3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENDV1xcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9LY29uZmlnPTg2MD1lbmRtZW51XFxuYXJjaC9zMzkwL0tjb25maWctODYxLVxcbmFyY2gvczM5MC9LY29uZmlnOjg2Mjpjb25maWcgQ0NXXFxuYXJjaC9zMzkwL0tjb25maWctODYzLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTk6NTQ6MzQuMTE2OTg2MjY5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNTQ2ODY4NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgczM5MC1TcGVjaWZpYyBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCBgZHJpdmVycy9zMzkwL25ldC9jdGNtX21haW4uY2AgYW5kIGBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jYCBhcmUgdGhlIGZpbGVzIGJlaW5nIG1vZGlmaWVkLiBJIGtub3cgZnJvbSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIHRoYXQgYENPTkZJR19DQ1dgIGlzIGRlZmluZWQgaW4gYGFyY2gvczM5MC9LY29uZmlnYCwgYW5kIHRoZSBuZXR3b3JraW5nIEtjb25maWcgaW4gYGRyaXZlcnMvczM5MC9uZXQvS2NvbmZpZ2AgZGVwZW5kcyBvbiBgUzM5MGAuIFRoaXMgbWVhbnMgdGhlc2UgZmlsZXMgYXJlICpleGNsdXNpdmVseSogYnVpbHQgZm9yIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gVGhleSB3b24ndCBldmVuIGNvbXBpbGUsIGxldCBhbG9uZSBydW4sIG9uIG15IHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LlxuXG5UaGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiIGNhdGVnb3J5IGFzIHBlciB0aGUgZG9jdW1lbnRhdGlvbi4gU2luY2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSwgc28gYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGRpZmYgdG8gY29uZmlybSwgYW5kIHllcywgaXQncyBqdXN0IHRob3NlIHR3byBzMzkwLXNwZWNpZmljIGZpbGVzLiBQZXJmZWN0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgb3V0cHV0LiBJIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGBzZXQtcmVzdWx0c2AgcmVzcG9uc2UuIEkga25vdyB0aGUgZmllbGRzIEkgbmVlZDogYFdvcnRoRnV6emluZ2AsIGBSZWFzb25pbmdgLCBgRm9jdXNTeW1ib2xzYCwgYW5kIGBFbmFibGVDb25maWdzYC5cblxuKiAgIGBXb3J0aEZ1enppbmdgOiBEZWZpbml0ZWx5IGBmYWxzZWAuXG4qICAgYFJlYXNvbmluZ2A6IE9rYXksIHRoZSByZWFzb25pbmcgbmVlZHMgdG8gYmUgY2xlYXIgYW5kIGNvbmNpc2UuIEknbGwgcGhyYXNlIGl0IGFzOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb2RlIGluIGBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jYCBhbmQgYGRyaXZlcnMvczM5MC9uZXQvZnNtLmNgIChDT05GSUdfQ1RDTSksIHdoaWNoIGlzIHNwZWNpZmljIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGNhbm5vdCBiZSBjb21waWxlZCBvciBleGVjdXRlZCBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiXG4qICAgYEZvY3VzU3ltYm9sc2A6IFNpbmNlIHRoZSBjb2RlIGlzIG5vdCB0YXJnZXRlZCwgSSdtIGdvaW5nIHRvIHBhc3MgYW4gZW1wdHkgYXJyYXksIGBbXWAuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBBbHNvLCBhcyBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLCBJJ2xsIHBhc3MgYW4gZW1wdHkgYXJyYXksIGBbXWAuXG5cbkdyZWF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb24gb2YgcGFzc2luZyBlbXB0eSBhcnJheXMgZm9yIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agd2hlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGF0IHNob3VsZCBiZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5NDEsIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE5OjU0OjM4LjM3MTY3NTY4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQk0gUy8zOTAgQ1RDL01QQyBuZXR3b3JrIGRldmljZSBkcml2ZXIgYW5kIGZpbml0ZSBzdGF0ZSBtYWNoaW5lIGhlbHBlciBpbiBkcml2ZXJzL3MzOTAvbmV0L2N0Y21fbWFpbi5jIGFuZCBkcml2ZXJzL3MzOTAvbmV0L2ZzbS5jLiBUaGlzIGNvZGUgaXMgZXhjbHVzaXZlIHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSAoZGVwZW5kcyBvbiBDT05GSUdfUzM5MCBhbmQgQ09ORklHX0NDVykgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElCTSBTLzM5MCBDVEMvTVBDIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBhbmQgZmluaXRlIHN0YXRlIG1hY2hpbmUgaGVscGVyIGluIGRyaXZlcnMvczM5MC9uZXQvY3RjbV9tYWluLmMgYW5kIGRyaXZlcnMvczM5MC9uZXQvZnNtLmMuIFRoaXMgY29kZSBpcyBleGNsdXNpdmUgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIChkZXBlbmRzIG9uIENPTkZJR19TMzkwIGFuZCBDT05GSUdfQ0NXKSBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxOTo1NDozOC4zNzE2OTkxMzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow52pgh[1] Phase: Running StartedAt: 2026-09-07 19:54:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow52pgh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 19:54:49 +0000 UTC FinishedAt: 2026-09-07 19:54: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,}