Name: series-workflowmr7lw Phase: Failed StartedAt: 2026-09-03 00:04:26 +0000 UTC FinishedAt: 2026-09-03 00:31:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmr7lw[0] Phase: Succeeded StartedAt: 2026-09-03 00:04:26 +0000 UTC FinishedAt: 2026-09-03 00:30:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmr7lw[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 00:04:26 +0000 UTC FinishedAt: 2026-09-03 00:30:55 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAwMDozMDowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOWE3NzU2MDI3NzVkNi4uYmVlNjcwMWYxMDI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xNDY4NSw2ICYjNDM7MTQ2ODUsNTAgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRrZnJlZShhci1cdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF82R0haXS5jaGFubmVscyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiYjNDM7e1xuJiM0MztcdGtmcmVlKGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWFkZHJlc3Nlcyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGNvbnN0IHU4ICptYWNfYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGgxMmsgKmFyID0gYXRoMTJrX2FoX3RvX2FyKGFoLCAwKTtcbiYjNDM7XHRzdHJ1Y3QgbWFjX2FkZHJlc3MgKmFkZHJlc3NlcztcbiYjNDM7XHR1MTYgbl9hZGRyZXNzZXM7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhXG4mIzQzO1x0ICogc2luZ2xlLXJhZGlvIHdpcGh5OiB3aXRoIG1vcmUgcmFkaW9zIGVhY2ggcmFkaW8gaGFzIGl0cyBvd24gYmFzZVxuJiM0MztcdCAqIGFkZHJlc3MsIHBvc3NpYmx5IGZyb20gYSBkaWZmZXJlbnQgYXRoMTJrX2Jhc2UuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFoLVx1MDAzZW51bV9yYWRpbyAhPSAxKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBPbmx5IHRoZSB1cHBlciBuaWJibGUgb2YgdGhlIGZpcnN0IG9jdGV0IGlzIHZhcmllZCwgc28gYXQgbW9zdCAxNlxuJiM0MztcdCAqIGFkZHJlc3NlcyBjYW4gYmUgZGVyaXZlZCBmcm9tIG9uZSBiYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdG5fYWRkcmVzc2VzID0gbWluX3QodTE2LCBUQVJHRVRfTlVNX1ZERVZTKGFyLVx1MDAzZWFiKSwgMTYpO1xuJiM0MztcdGlmIChuX2FkZHJlc3NlcyBcdTAwM2M9IDEpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGFkZHJlc3NlcyA9IGt6YWxsb2Nfb2JqcygqYWRkcmVzc2VzLCBuX2FkZHJlc3Nlcyk7XG4mIzQzO1x0aWYgKCFhZGRyZXNzZXMpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpO1xuJiM0MztcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5fYWRkcmVzc2VzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJlc3Nlc1tpXS5hZGRyLCBtYWNfYWRkcik7XG4mIzQzO1x0XHQvKiBzZXQgTG9jYWwgQWRtaW5pc3RlcmVkIEFkZHJlc3MgYml0ICovXG4mIzQzO1x0XHRhZGRyZXNzZXNbaV0uYWRkclswXSB8PSAweDI7XG4mIzQzO1xuJiM0MztcdFx0YWRkcmVzc2VzW2ldLmFkZHJbMF0gJiM0Mzs9IGkgXHUwMDNjXHUwMDNjIDQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VhZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4mIzQzO1x0YWgtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlbl9hZGRyZXNzZXMgPSBuX2FkZHJlc3NlcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cdTAwM2VodztcbkBAIC0xNDcwNCw2ICYjNDM7MTQ3NDgsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4gXHRcdGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKGFyKTtcbiBcbiBcdGF0aDEya19tYWNfY2xlYW51cF9pZmFjZV9jb21iaW5hdGlvbnMoYWgpO1xuJiM0MztcdGF0aDEya19tYWNfY2xlYW51cF9tYWNfYWRkcmVzc19saXN0KGFoKTtcbiBcbiBcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTtcbiB9XG5AQCAtMTQ4MjAsNiAmIzQzOzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XG4gXG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xuJiM0MztcdGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChhaCwgbWFjX2FkZHIpO1xuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGFiLVx1MDAzZWRldik7XG4gXG4gXHRyZXQgPSBhdGgxMmtfbWFjX3NldHVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7XG5AQCAtMTUwNDEsNiAmIzQzOzE1MDg3LDggQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0XHRhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3Rlcihhcik7XG4gXHR9XG4gXG4mIzQzO1x0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xuJiM0MztcbiBcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTtcbiBcbiBcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMDozMDowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCmluZGV4IDlhNzc1NjAyNzc1ZDYuLmJlZTY3MDFmMTAyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTQ2ODUsNiAmIzQzOzE0Njg1LDUwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyKQogCWtmcmVlKGFyLSZndDttYWMuc2JhbmRzW05MODAyMTFfQkFORF82R0haXS5jaGFubmVscyk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKJiM0Mzt7CiYjNDM7CWtmcmVlKGFoLSZndDtody0mZ3Q7d2lwaHktJmd0O2FkZHJlc3Nlcyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCwKJiM0MzsJCQkJCSAgICAgIGNvbnN0IHU4ICptYWNfYWRkcikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmsgKmFyID0gYXRoMTJrX2FoX3RvX2FyKGFoLCAwKTsKJiM0MzsJc3RydWN0IG1hY19hZGRyZXNzICphZGRyZXNzZXM7CiYjNDM7CXUxNiBuX2FkZHJlc3NlczsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CS8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhCiYjNDM7CSAqIHNpbmdsZS1yYWRpbyB3aXBoeTogd2l0aCBtb3JlIHJhZGlvcyBlYWNoIHJhZGlvIGhhcyBpdHMgb3duIGJhc2UKJiM0MzsJICogYWRkcmVzcywgcG9zc2libHkgZnJvbSBhIGRpZmZlcmVudCBhdGgxMmtfYmFzZS4KJiM0MzsJICovCiYjNDM7CWlmIChhaC0mZ3Q7bnVtX3JhZGlvICE9IDEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CS8qIE9ubHkgdGhlIHVwcGVyIG5pYmJsZSBvZiB0aGUgZmlyc3Qgb2N0ZXQgaXMgdmFyaWVkLCBzbyBhdCBtb3N0IDE2CiYjNDM7CSAqIGFkZHJlc3NlcyBjYW4gYmUgZGVyaXZlZCBmcm9tIG9uZSBiYXNlLgomIzQzOwkgKi8KJiM0MzsJbl9hZGRyZXNzZXMgPSBtaW5fdCh1MTYsIFRBUkdFVF9OVU1fVkRFVlMoYXItJmd0O2FiKSwgMTYpOwomIzQzOwlpZiAobl9hZGRyZXNzZXMgJmx0Oz0gMSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJYWRkcmVzc2VzID0ga3phbGxvY19vYmpzKCphZGRyZXNzZXMsIG5fYWRkcmVzc2VzKTsKJiM0MzsJaWYgKCFhZGRyZXNzZXMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpOwomIzQzOwlmb3IgKGkgPSAxOyBpICZsdDsgbl9hZGRyZXNzZXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlldGhlcl9hZGRyX2NvcHkoYWRkcmVzc2VzW2ldLmFkZHIsIG1hY19hZGRyKTsKJiM0MzsJCS8qIHNldCBMb2NhbCBBZG1pbmlzdGVyZWQgQWRkcmVzcyBiaXQgKi8KJiM0MzsJCWFkZHJlc3Nlc1tpXS5hZGRyWzBdIHw9IDB4MjsKJiM0MzsKJiM0MzsJCWFkZHJlc3Nlc1tpXS5hZGRyWzBdICYjNDM7PSBpICZsdDsmbHQ7IDQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJYWgtJmd0O2h3LSZndDt3aXBoeS0mZ3Q7YWRkcmVzc2VzID0gYWRkcmVzc2VzOwomIzQzOwlhaC0mZ3Q7aHctJmd0O3dpcGh5LSZndDtuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFoLSZndDtodzsKQEAgLTE0NzA0LDYgJiM0MzsxNDc0OCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIAkJYXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpOwogCiAJYXRoMTJrX21hY19jbGVhbnVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7CiYjNDM7CWF0aDEya19tYWNfY2xlYW51cF9tYWNfYWRkcmVzc19saXN0KGFoKTsKIAogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTsKIH0KQEAgLTE0ODIwLDYgJiM0MzsxNDg2NSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIAl3aXBoeS0mZ3Q7YXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7CiAKIAlTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpOwomIzQzOwlhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3QoYWgsIG1hY19hZGRyKTsKIAlTRVRfSUVFRTgwMjExX0RFVihodywgYWItJmd0O2Rldik7CiAKIAlyZXQgPSBhdGgxMmtfbWFjX3NldHVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7CkBAIC0xNTA0MSw2ICYjNDM7MTUwODcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpCiAJCWF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKGFyKTsKIAl9CiAKJiM0MzsJYXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpOwomIzQzOwogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTsKIAogCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHkuIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBRdWFsY29tbSBXaS1GaSA3ICg4MDIuMTFiZSkgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiDigJMgV2ktRmkgZHJpdmVycyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlIG5leHQgcXVlc3Rpb24gaXM6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyB0aGluZyB3aXRob3V0IHNwZWNpYWxpemVkIGhhcmR3YXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgYXRoMTJrYCBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgY2FuIEkgdGVzdCB0aGlzIGluIFFFTVUgb3IgR0NFPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIG15IHdvcmtmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgc3VwcG9ydHMuIElzIGl0IFBDSWU/IFVTQj8gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJmYWNlIGlzIGdvaW5nIHRvIGJlIHZpdGFsIHRvIHNldHRpbmcgdXAgYSBzdWl0YWJsZSB0ZXN0aW5nIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgYW5kIHJlbGF0ZWQgZmlsZXMgd2l0aCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQgb3V0IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyBhY3RpdmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzNDM2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE3OmNvbmZpZyBBVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yMC1cdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjc6XHRkZXBlbmRzIG9uIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NjpcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU2LVx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICYjNDM7PSBhdGgxMmsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zLWF0aDEyay15ICYjNDM7PSBjb3JlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gd2lmaTcvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMwLWF0aDEyay0kKENPTkZJR19BQ1BJKSAmIzQzOz0gYWNwaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzItYXRoMTJrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzQtYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTE9c3RhdGljIGludCBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXHRpZiAoIXJvb3RfaGFuZGxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtpbnZhbGlkIGFjcGkgaGFuZGxlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVx0XHRyZXR1cm4gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMi1cdFx0c3dpdGNoIChmdW5jKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzQtXHRcdFx0YWItXHUwMDNlYWNwaS5mdW5jX2JpdCA9IG9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19ESVNBQkxFX0ZMQUc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNy1cdFx0XHRhYi1cdTAwM2VhY3BpLmJpdF9mbGFnID0gb2JqLVx1MDAzZWludGVnZXIudmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDEtXHRcdHN3aXRjaCAoZnVuYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDI6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzOlx0XHRcdGlmIChvYmotXHUwMDNlc3RyaW5nLmxlbmd0aCBcdTAwM2M9IEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ6XHRcdFx0ICAgIG9iai1cdTAwM2VzdHJpbmcubGVuZ3RoIFx1MDAzZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU6XHRcdFx0ICAgIG1lbWNtcChvYmotXHUwMDNlc3RyaW5nLnBvaW50ZXIsIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDY6XHRcdFx0XHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ny1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01OS1cdFx0c3dpdGNoIChmdW5jKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjE6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoIFx1MDAzYyBBVEgxMktfQUNQSV9EU01fRlVOQ19NSU5fQklUTUFQX1NJWkUgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYyOlx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCBcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02My1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNzMtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NzU6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc2LVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04NS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg2Olx0XHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6ODc6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OC1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk3LVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6OTg6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo5OTpcdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAwLVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwOS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExMDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTExOlx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMi1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyMS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEyMjpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0E6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjM6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjQtXHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzMtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMzQ6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM1Olx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM2LVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTYxPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY2Olx0aWYgKHRhc19zYXJfcG93ZXJfdGFibGVbMF0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY3Olx0ICAgIHRhc19zYXJfcG93ZXJfdGFibGVbMV0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjgtXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzMtXHRcdFx0XHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc0Olx0XHRcdFx0ICAgICAgQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTE4Mz1zdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4NzpcdGlmIChhYi1cdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMF0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg4Olx0ICAgIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVsxXSAhPSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBRykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg5LVx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBsYXRlc3QgQUNQSSBCSU9TIFNBUiBkYXRhXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yMDI9c3RhdGljIHZvaWQgYXRoMTJrX2FjcGlfZHNtX25vdGlmeShhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDc6XHRpZiAoZXZlbnQgPT0gQVRIMTJLX0FDUElfTk9USUZZX0VWRU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDgtXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt1bmtub3duIGFjcGkgbm90aWZ5ICV1XFxuXCYjMzQ7LCBldmVudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVx0aWYgKCFhYi1cdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzI6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yNjQ9c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2OS1cdFx0XHRcdCAgICAgIGFiLVx1MDAzZWFjcGkudGFzX2NmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MDpcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjcxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3OC1cdFx0XHRcdCAgICAgIGFiLVx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3OTpcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yOTk9dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjQtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX2NjYV9lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNTpcdFx0YnVmID0gYWItXHUwMDNlYWNwaS5jY2FfZGF0YSAmIzQzOyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNi1cdFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI4LVx0XHRcdFx0XHQgICAgICBidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMjk6XHRcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0zNTE9aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzY5Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NTpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM4MjpcdFx0aWYgKEFUSDEyS19BQ1BJX0NIRUtfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODM6XHRcdFx0XHRcdCAgICAgICBBVEgxMktfQUNQSV9EU01fRElTQUJMRV8xMUJFX0JJVCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODQtXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX2Rpc2FibGVfMTFiZSA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODY6XHRcdGlmICghQVRIMTJLX0FDUElfQ0hFS19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM4NzpcdFx0XHRcdFx0XHRBVEgxMktfQUNQSV9EU01fRElTQUJMRV9SRktJTExfQklUKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4OC1cdFx0XHRhYi1cdTAwM2VhY3BpLmFjcGlfZGlzYWJsZV9yZmtpbGwgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MTpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVx0XHRpZiAocmV0IHx8IGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAmIzM5O1xcMCYjMzk7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAxOlx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDk6XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTA6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDExLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDE2Olx0XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTc6XHRcdCAgICBhYi1cdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGVbMF0gPT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZVsxXSA9PSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTktXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMjpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzA6XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfR0VPX09GRlNFVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzNzpcdFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVswXSA9PSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9WRVJTSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDM5Olx0XHQgICAgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdID09IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQwLVx0XHQgICAgIWFiLVx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NDpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDU6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0Ni1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1MjpcdFx0aWYgKGFiLVx1MDAzZWFjcGkuY2NhX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDUzOlx0XHQgICAgYWItXHUwMDNlYWNwaS5jY2FfZGF0YVtBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVF0gPT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1NDpcdFx0ICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTUtXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX2NjYV9lbmFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1ODpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU5Olx0XHRcdFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Njc6XHRcdGlmIChhYi1cdTAwM2VhY3BpLmJhbmRfZWRnZV9wb3dlclswXSA9PSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2ODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkuYmFuZF9lZGdlX3Bvd2VyWzFdID09IEFUSDEyS19BQ1BJX0JBTkRfRURHRV9FTkFCTEVfRkxBRylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2OS1cdFx0XHRhYi1cdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9NDg1PWludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVx0aWYgKHN0cnNjcHkoYWItXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmcgJiM0MzsgNCwgbWF4X2xlbikgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0OTM6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5NC1cdFx0XHQgICBcJiMzNDthY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NjojaWZuZGVmIEFUSDEyS19BQ1BJX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc6I2RlZmluZSBBVEgxMktfQUNQSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTE6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTXHQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBR1x0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTM6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUXHRcdDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE0OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVJcdFx0NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTU6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUXHRcdDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE2OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBXHRcdDZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE3OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGR1x0XHQ4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxODojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBXHRcdDlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE5OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFXHRcdDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjIxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjI6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUXHRcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyMzojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSXHRcdFx0QklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyNDojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVRcdFx0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI1OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBXHRcdFx0QklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyNjojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkdcdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI3OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEFcdFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI4OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVJcdEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMDojZGVmaW5lIEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVFx0XHRcdDB4ODZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjMxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoX2FjZGF0YSwgX2Z1bmMpXHQoKChfYWNkYXRhKS5mdW5jX2JpdCkgXHUwMDI2IChfZnVuYykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMjojZGVmaW5lIEFUSDEyS19BQ1BJX0NIRUtfQklUX1ZBTElEKF9hY2RhdGEsIF9mdW5jKVx0KCgoX2FjZGF0YSkuYml0X2ZsYWcpIFx1MDAyNiAoX2Z1bmMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozNDojZGVmaW5lIEFUSDEyS19BQ1BJX1RBU19EQVRBX1ZFUlNJT05cdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozNTojZGVmaW5lIEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRVx0XHQweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM2OiNkZWZpbmUgQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTlx0XHQweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM3OiNkZWZpbmUgQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUdcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzg6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX1ZFUlNJT05cdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozOTojZGVmaW5lIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUdcdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0MDojZGVmaW5lIEFUSDEyS19BQ1BJX0JBTkRfRURHRV9WRVJTSU9OXHRcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDE6I2RlZmluZSBBVEgxMktfQUNQSV9CQU5EX0VER0VfRU5BQkxFX0ZMQUdcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0MzojZGVmaW5lIEFUSDEyS19BQ1BJX0dFT19PRkZTRVRfREFUQV9PRkZTRVRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ0OiNkZWZpbmUgQVRIMTJLX0FDUElfREJTX0JBQ0tPRkZfREFUQV9PRkZTRVRcdDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ1OiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVRcdDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ2OiNkZWZpbmUgQVRIMTJLX0FDUElfQklPU19TQVJfREJTX0JBQ0tPRkZfTEVOXHQxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVFx0MTJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ4OiNkZWZpbmUgQVRIMTJLX0FDUElfQklPU19TQVJfR0VPX09GRlNFVF9MRU5cdDE4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0OTojZGVmaW5lIEFUSDEyS19BQ1BJX0JJT1NfU0FSX1RBQkxFX0xFTlx0XHQyMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTA6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9MRU5cdFx0MzZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTI6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRVx0XHRcdDY5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFXHRcdFx0MTA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjU2OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUlOX0JJVE1BUF9TSVpFXHQxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1NzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX01BWF9CSVRNQVBfU0laRVx0NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1OTojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9ESVNBQkxFXzExQkVfQklUXHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYwOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC02MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYyOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOXHQzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2MzojZGVmaW5lIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HXHRcdFwmIzM0O0JERlwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NjQ6I2RlZmluZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTlx0XHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfR0VPX09GRlNFVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njc6XHRcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0JJT1NfU0FSX0dFT19PRkZTRVRfTEVOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njg6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fQklPU19TQVJfREFUQV9TSVpFIChBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njk6XHRcdFx0XHRcdCAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3MDojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFIChBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzE6XHRcdFx0XHQgICAgICAgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfTEVOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg9MTA3PXN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMTQ6I2VuZGlmIC8qIEFUSDEyS19BQ1BJX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDojZGVmaW5lIEFUSDEyS19JUlFfQ0UwX09GRlNFVCA0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxOiNkZWZpbmUgQVRIMTJLX1VQRF9JUlFfV1JEX0xFTiAgMThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2FoYl9kcml2ZXIgKmF0aDEya19haGJfZmFtaWx5X2RyaXZlcnNbQVRIMTJLX0RFVklDRV9GQU1JTFlfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQtc3RhdGljIGNvbnN0IGNoYXIgYXRoMTJrX3VzZXJwZF9pcnFbXVs5XSA9IHtcJiMzNDtzcGF3blwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQyPXN0YXRpYyBERUZJTkVfTVVURVgoYXRoMTJrX3Jwcm9jX2luZm9fbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0NDpzdGF0aWMgY29uc3QgY2hhciAqaXJxX25hbWVbQVRIMTJLX0lSUV9OVU1fTUFYXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDUtXHRcJiMzNDttaXNjLXB1bHNlMVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTE3OD1zdGF0aWMgdm9pZCBfX2F0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE4MjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODMtXHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTI2MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjk6XHRcdGlycV9pZHggPSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcwLVx0XHRzeW5jaHJvbml6ZV9pcnEoYWItXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0yNzQ9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3OTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODAtXHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMxOT1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMyNDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjUtXHRcdGlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTM0MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzQyOlx0aWYgKCF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQzLVx0XHRhdGgxMmtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zNTA9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNTItXHRzdHJ1Y3QgYXRoMTJrX2FoYiAqYWJfYWhiID0gYXRoMTJrX2FiX3RvX2FoYihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM1MzpcdGNoYXIgZndfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzU0Olx0Y2hhciBmdzJfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzU1LVx0c3RydWN0IGRldmljZSAqZGV2ID0gYWItXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNzk6XHRzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksIFwmIzM0OyVzLyVzLyVzJWQlc1wmIzM0OywgQVRIMTJLX0ZXX0RJUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzgwOlx0XHQgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWZ3LmRpciwgQVRIMTJLX0FIQl9GV19QUkVGSVgsIGFiX2FoYi1cdTAwM2V1c2VycGRfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM4MTpcdFx0IEFUSDEyS19BSEJfRldfU1VGRklYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozODk6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7Qm9vdGluZyBmdyBpbWFnZSAlcywgc2l6ZSAlemRcXG5cJiMzNDssIGZ3X25hbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5MC1cdFx0ICAgZnctXHUwMDNlc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5ODpcdHBhc2lkID0gKHUzMl9lbmNvZGVfYml0cyhhYl9haGItXHUwMDNldXNlcnBkX2lkLCBBVEgxMktfVVNFUlBEX0lEX01BU0spKSB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5OTpcdFx0QVRIMTJLX0FIQl9VUERfU1dJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTM6XHRzbnByaW50ZihmdzJfbmFtZSwgc2l6ZW9mKGZ3Ml9uYW1lKSwgXCYjMzQ7JXMvJXMvJXNcJiMzNDssIEFUSDEyS19GV19ESVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQxNDpcdFx0IGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vmdy5kaXIsIEFUSDEyS19BSEJfRlcyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MjI6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7Qm9vdGluZyBmdyBpbWFnZSAlcywgc2l6ZSAlemRcXG5cJiMzNDssIGZ3Ml9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjMtXHRcdCAgIGZ3Mi1cdTAwM2VzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ1NS1cdHRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhYl9haGItXHUwMDNldXNlcnBkX3NwYXduZWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ1NjpcdFx0XHRcdFx0XHRBVEgxMktfVVNFUlBEX1NQQVdOX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NTctXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDYzLVx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfcmVhZHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ2NDpcdFx0XHRcdFx0XHRBVEgxMktfVVNFUlBEX1JFQURZX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NjUtXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0NzM6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7VXNlclBEJWQgaXMgbm93IFVQXFxuXCYjMzQ7LCBhYl9haGItXHUwMDNldXNlcnBkX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9NDgyPXN0YXRpYyB2b2lkIGF0aDEya19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTItXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWJfYWhiLVx1MDAzZXVzZXJwZF9zdG9wcGVkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0OTM6XHRcdFx0XHRcdFx0QVRIMTJLX1VTRVJQRF9TVE9QX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTQtXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTAxLVx0aWYgKGFiX2FoYi1cdTAwM2VzY21fYXV0aF9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjUwMjpcdFx0cGFzaWQgPSAodTMyX2VuY29kZV9iaXRzKGFiX2FoYi1cdTAwM2V1c2VycGRfaWQsIEFUSDEyS19VU0VSUERfSURfTUFTSykpIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAzOlx0XHRcdCBBVEgxMktfQUhCX1VQRF9TV0lEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01MDQtXHRcdC8qIFJlbGVhc2UgdGhlIGZpcm13YXJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz01ODE9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01ODgtXHRyaW5nX21hc2sgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlcmluZ19tYXNrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo1ODk6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTkwLVx0XHRpcnFfZ3JwID0gXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDUtXHRcdFx0ICAgIEJJVChhYi1cdTAwM2VoYWwudGNsX3RvX3dibV9yYm1fbWFwW2pdLndibV9yaW5nX251bSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjYwNjpcdFx0XHQgICAgbnVtX2lycSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDctXHRcdFx0XHRpcnFfZ3JwLVx1MDAzZWlycXNbbnVtX2lycSYjNDM7JiM0MztdID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjEyOlx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MTMtXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MTQ6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjE1LVx0XHRcdFx0aXJxX2dycC1cdTAwM2VpcnFzW251bV9pcnEmIzQzOyYjNDM7XSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MTktXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeF9lcnJbaV0gXHUwMDI2IEJJVChqKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjIwOlx0XHRcdCAgICBudW1faXJxIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjEtXHRcdFx0XHRpcnFfZ3JwLVx1MDAzZWlycXNbbnVtX2lycSYjNDM7JiM0MztdID0gcmVvMmhvc3RfZXhjZXB0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjIzLVx0XHRcdGlmIChyaW5nX21hc2stXHUwMDNlcnhfd2JtX3JlbFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MjQ6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyNS1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPSB3Ym0yaG9zdF9yeF9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjI3LVx0XHRcdGlmIChyaW5nX21hc2stXHUwMDNlcmVvX3N0YXR1c1tpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2Mjg6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyOS1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPSByZW8yaG9zdF9zdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MzEtXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeF9tb25fZGVzdFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MzI6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMy1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9NjU4PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjY3MDpcdFx0aXJxX2lkeCA9IEFUSDEyS19JUlFfQ0UwX09GRlNFVCAmIzQzOyBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MzY9c3RhdGljIGlycXJldHVybl90IGF0aDEya191c2VycGRfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQxOlx0aWYgKGlycSA9PSBhYl9haGItXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TUEFXTl9JUlFdKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Mi1cdFx0Y29tcGxldGUoXHUwMDI2YWJfYWhiLVx1MDAzZXVzZXJwZF9zcGF3bmVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQzOlx0fSBlbHNlIGlmIChpcnEgPT0gYWJfYWhiLVx1MDAzZXVzZXJwZF9pcnFfbnVtW0FUSDEyS19VU0VSUERfUkVBRFlfSVJRXSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NDQtXHRcdGNvbXBsZXRlKFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfcmVhZHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NDU6XHR9IGVsc2UgaWYgKGlycSA9PSBhYl9haGItXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TVE9QX0FDS19JUlFdKVx0e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NDYtXHRcdGNvbXBsZXRlKFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfc3RvcHBlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03NTU9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19ycHJvY19pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzYxOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX1VTRVJQRF9NQVhfSVJROyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjItXHRcdGFiX2FoYi1cdTAwM2V1c2VycGRfaXJxX251bVtpXSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKGFiLVx1MDAzZXBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjc2NzpcdFx0dXBkX2lycV9uYW1lID0gZGV2bV9remFsbG9jKFx1MDAyNmFiLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjgtXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzcyOlx0XHRzY25wcmludGYodXBkX2lycV9uYW1lLCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLCBcJiMzNDtVc2VyUEQldS0lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzczLVx0XHRcdCAgYWJfYWhiLVx1MDAzZXVzZXJwZF9pZCwgYXRoMTJrX3VzZXJwZF9pcnFbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODAyPXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9yb290X3BkX3N0YXRlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjgwODpcdGlmIChldmVudCA9PSBBVEgxMktfUlBST0NfQUZURVJfUE9XRVJVUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo4MDk6XHRcdGF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX0FIQiwgXCYjMzQ7Um9vdCBQRCBpcyBVUFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTgxMC1cdFx0Y29tcGxldGUoXHUwMDI2cnByb2NfaW5mby1cdTAwM2Vyb290cGRfcmVhZHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODg2PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9nZXRfcnByb2Moc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTg5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODk2Olx0aWYgKGFiX2FoYi1cdTAwM2V1c2VycGRfaWQgXHUwMDNlIEFUSDEyS19NQVhfREVWSUNFUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODk3LVx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTg5OS1cdGlmIChnX3Jwcm9jX2luZm8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6OTAwOlx0XHRpZiAoZ19ycHJvY19pbmZvLVx1MDAzZW51bV91c2VycGQgXHUwMDNlPSBBVEgxMktfTUFYX0RFVklDRVMpIHtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjg4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBVEgxMksgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvciBjb2RlIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEFUSDEySyB3aXJlbGVzcyBkcml2ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgY2x1ZXMgYXJlIGhpZGluZyBpbiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGVuYWJsZS9kaXNhYmxlIG9wdGlvbnMgYW5kIGFueSBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBTbywgbGV0IG1lIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCB0aGUgUENJLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jYC4gSG9wZWZ1bGx5LCBiZXR3ZWVuIHRoZXNlIHR3byBmaWxlcywgSSBjYW4gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uIGFuZCBwaW5wb2ludCB0aGUgc291cmNlIG9mIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBRQ09NX1BBU1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgQVRIMTJLX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XG4gIDMwOlx0XHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxuICAzMTpcdFxuICAzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgMzM6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRIMTJLX0RFQlVHRlNcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbiAgNDA6XHRcbiAgNDE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDQyOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXG4gIDQ1Olx0XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDUxOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuICA1NDpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiAgNTU6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDU2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNTc6XHRcdGhlbHBcbiAgNTg6XHRcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDIzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXBwbGljYWJpbGl0eTogVGhlIEF0aDEyayBDb251bmRydW0qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHJ1bGVzIGFyZSBjbGVhcjogY2hhbmdlcyBhcmUgKipub3QqKiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkmIzM5O3JlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGF0aDEyay4gSXMgaXQgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBvciBldmVuIHdpdGggY2xldmVyIHRyaWNrcyBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gPwoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCB0aGlzIGlzIGEgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0IGRyaXZlciwgYW5kIGl0JiMzOTtzIFBDSWUgb3IgQUhCIGJhc2VkLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUgKFdDTjc4NTAsIFFDTjkyNzQsIElQUTUzMzIsIGV0Yy4pIGFuZCByZWxpZXMgb24gTUhJIGJ1cywgUU1JLCBhbmQgZmlybXdhcmUgbG9hZGluZy4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQuIEl0IGVtdWxhdGVzIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgbmV0d29ya2luZywgYnV0IGRlZmluaXRlbHkgbm90IGF0aDEyay4gQW5kIG5vLCBtYWM4MDIxMV9od3NpbSBpcyBhIHNvZnR3YXJlIHNpbXVsYXRvciAtIHRvdGFsbHkgc2VwYXJhdGUgZnJvbSBhdGgxMmsuCgpPa2F5LCBsZXQmIzM5O3MgYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgcnVsZXMgZXhwbGljaXRseSBleGNsdWRlIGNvZGUgdGhhdCYjMzk7cyB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl04oCZcyBhbHNvIHZlcnkgY2xlYXIgYWJvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycy4gTGV0JiMzOTtzIGxvb2sgYWdhaW4gYXQgdGhlIGZpbGUgc3RydWN0dXJlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgaXMgc3RyaWN0bHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgb3IgaWYgdGhlcmUmIzM5O3MgYW55IHByZXRlbnNlIG9mIHZpcnR1YWwgc3VwcG9ydC4gTm8gZW11bGF0ZWQgaGFyZHdhcmUgbWVhbnMgbm8gZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaS5jJiMzNDssCiAgICAmIzM0O2FjcGkuaCYjMzQ7LAogICAgJiMzNDthaGIuYyYjMzQ7LAogICAgJiMzNDthaGIuaCYjMzQ7LAogICAgJiMzNDtjZS5jJiMzNDssCiAgICAmIzM0O2NlLmgmIzM0OywKICAgICYjMzQ7Y21uX2RlZnMuaCYjMzQ7LAogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7Y29yZS5oJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmMmIzM0OywKICAgICYjMzQ7Y29yZWR1bXAuaCYjMzQ7LAogICAgJiMzNDtkYnJpbmcuYyYjMzQ7LAogICAgJiMzNDtkYnJpbmcuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Zy5jJiMzNDssCiAgICAmIzM0O2RlYnVnLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX2h0dF9zdGF0cy5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmc19zdGEuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX3N0YS5oJiMzNDssCiAgICAmIzM0O2RwLmMmIzM0OywKICAgICYjMzQ7ZHAuaCYjMzQ7LAogICAgJiMzNDtkcF9jbW4uaCYjMzQ7LAogICAgJiMzNDtkcF9odHQuYyYjMzQ7LAogICAgJiMzNDtkcF9odHQuaCYjMzQ7LAogICAgJiMzNDtkcF9tb24uYyYjMzQ7LAogICAgJiMzNDtkcF9tb24uaCYjMzQ7LAogICAgJiMzNDtkcF9wZWVyLmMmIzM0OywKICAgICYjMzQ7ZHBfcGVlci5oJiMzNDssCiAgICAmIzM0O2RwX3J4LmMmIzM0OywKICAgICYjMzQ7ZHBfcnguaCYjMzQ7LAogICAgJiMzNDtkcF90eC5jJiMzNDssCiAgICAmIzM0O2RwX3R4LmgmIzM0OywKICAgICYjMzQ7ZncuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2hhbC5jJiMzNDssCiAgICAmIzM0O2hhbC5oJiMzNDssCiAgICAmIzM0O2hpZi5oJiMzNDssCiAgICAmIzM0O2h0Yy5jJiMzNDssCiAgICAmIzM0O2h0Yy5oJiMzNDssCiAgICAmIzM0O2h3LmgmIzM0OywKICAgICYjMzQ7bWFjLmMmIzM0OywKICAgICYjMzQ7bWFjLmgmIzM0OywKICAgICYjMzQ7bWhpLmMmIzM0OywKICAgICYjMzQ7bWhpLmgmIzM0OywKICAgICYjMzQ7cDJwLmMmIzM0OywKICAgICYjMzQ7cDJwLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpLmgmIzM0OywKICAgICYjMzQ7cGVlci5jJiMzNDssCiAgICAmIzM0O3BlZXIuaCYjMzQ7LAogICAgJiMzNDtxbWkuYyYjMzQ7LAogICAgJiMzNDtxbWkuaCYjMzQ7LAogICAgJiMzNDtyZWcuYyYjMzQ7LAogICAgJiMzNDtyZWcuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3Rlc3Rtb2RlLmgmIzM0OywKICAgICYjMzQ7dGhlcm1hbC5jJiMzNDssCiAgICAmIzM0O3RoZXJtYWwuaCYjMzQ7LAogICAgJiMzNDt0cmFjZS5jJiMzNDssCiAgICAmIzM0O3RyYWNlLmgmIzM0OywKICAgICYjMzQ7d21pLmMmIzM0OywKICAgICYjMzQ7d21pLmgmIzM0OywKICAgICYjMzQ7d293LmMmIzM0OywKICAgICYjMzQ7d293LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7d2lmaTcmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDgyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBNQUMgTGF5ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTUFDIGxheWVyIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBwY2kuY2AgYW5kIGBtYWMuY2AgZmlsZXMuIEkgc3VzcGVjdCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIFBDSS1yZWxhdGVkIHNldHVwIGFuZCBNQUMtc3BlY2lmaWMgZnVuY3Rpb25zIHJlc2lkZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byB0cmFjayB0aGUgY2FsbHMgdG8gYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIGFuZCBgYXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0YC4gVGhleSBzb3VuZCBsaWtlIGtleSBmdW5jdGlvbnMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBoYXJkd2FyZSBhbmQgc2V0dGluZyB1cCB0aGUgTUFDIGFkZHJlc3MgbGlzdCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgaWRlbnRpZnlpbmcgdGhpcyBwYXJ0aWN1bGFyIGRldmljZSBvbiB0aGUgbmV0d29yay4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCB0byBncmFzcCB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgYmVpbmcgY29uZmlndXJlZCB3aXRoIE1BQyBhZGRyZXNzZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhbGwgc2l0ZXMgb2YgYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIHRvIGRldGVybWluZSB0aGUgcHJvZ3JhbSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfbWFjX2h3X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDc1Nj1zdGF0aWMgaW50IGF0aDEya19tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ3OTA6c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTMwNT1pbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTMxNDpcdFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzE1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03MDM3LVx0ICogc28gdGhlIGNvbXBsZXRpb24gY2Fubm90IGJlIG1hcmtlZCBhdCB0aGF0IHBvaW50LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3MDM4Olx0ICogVGhpcyBib290LXRpbWUgdXBkYXRlIGlzIGhhbmRsZWQgaW4gYXRoMTJrX21hY19od19yZWdpc3RlcigpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwMzktXHQgKiBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg4OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA1MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBhdGgxMmsgRHJpdmVyKioKCk9rYXksIHNvIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzIFF1YWxjb21tIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIG9yIGBhdGgxMmtfY29yZV9zdGFydGAgZnVuY3Rpb25zLCBvciBkdXJpbmcgdGhlIGRyaXZlciBwcm9iZS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgdGllZCB0byBhY3R1YWwgUXVhbGNvbW0gaGFyZHdhcmUuIExldCBtZSBjb25maXJtLi4uIHllcywgaXQmIzM5O3MgYSBXaS1GaSA3IGRyaXZlciBkZXNpZ25lZCBmb3IgUENJZSBhbmQgQUhCIGF0dGFjaGVkIGhhcmR3YXJlIGxpa2UgdGhlIFdDTjc4NTAgYW5kIFFDTjkyNzQuCgpUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIFF1YWxjb21tIFNvQy4gVGhpcyBtZWFucyBpdCBjYW4mIzM5O3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgZXZlbiBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3Igc3l6a2FsbGVyLiBTb2Z0d2FyZSBlbXVsYXRpb24sIHN1Y2ggYXMgd2hhdCBgbWFjODAyMTFfaHdzaW1gIGRvZXMsIHVzZXMgaXRzIG93biBkcml2ZXIsIGRpc3RpbmN0IGZyb20gYGF0aDEya2AuCgpOb3csIHJldmlld2luZyB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgZXhjbHVzaW9uIGd1aWRlbGluZXMsIGxpbmUgYnkgbGluZSwgdG8gZW5zdXJlIG5vIG92ZXJzaWdodC4KClRoZSBwYXRjaCBmYWxscyBzcXVhcmVseSB1bmRlciB0aGVzZSBydWxlczoKCiogICAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IC0gYGF0aDEya2AgaXMgb3V0IGJlY2F1c2Ugb2YgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kuCiogICAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyAtIGBhdGgxMmtgIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBhbmQgcmVxdWlyZXMgUENJZSBoYXJkd2FyZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHRoZSBhbnN3ZXIgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgbG9nZ2VkIHdpdGggdGhlIGBzZXQtcmVzdWx0c2AgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTJrIFdpLUZpIDcgZHJpdmVyIChhdGgxMmsvbWFjLmMpIHRvIHNldCB1cCBNQUMgYWRkcmVzcyBsaXN0cyBmb3Igc2luZ2xlLXJhZGlvIHdpcGh5IGluc3RhbmNlcy4gVGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMS45MjIwODA3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjE5MzI1MjI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMmsgV2ktRmkgNyBkcml2ZXIgKGF0aDEyay9tYWMuYykgdG8gc2V0IHVwIE1BQyBhZGRyZXNzIGxpc3RzIGZvciBzaW5nbGUtcmFkaW8gd2lwaHkgaW5zdGFuY2VzLiBUaGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMS45MjIxMTM0NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDkwNjc4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzA6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5pbmRleCA5YTc3NTYwMjc3NWQ2Li5iZWU2NzAxZjEwMjk0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTE0Njg1LDYgKzE0Njg1LDUwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyKVxcbiBcXHRrZnJlZShhci1cXHUwMDNlbWFjLnNiYW5kc1tOTDgwMjExX0JBTkRfNkdIWl0uY2hhbm5lbHMpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG4re1xcbitcXHRrZnJlZShhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VhZGRyZXNzZXMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3Qoc3RydWN0IGF0aDEya19odyAqYWgsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICptYWNfYWRkcilcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrICphciA9IGF0aDEya19haF90b19hcihhaCwgMCk7XFxuK1xcdHN0cnVjdCBtYWNfYWRkcmVzcyAqYWRkcmVzc2VzO1xcbitcXHR1MTYgbl9hZGRyZXNzZXM7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0LyogVGhlIHBvb2wgaXMgZGVyaXZlZCBmcm9tIG9uZSBiYXNlIGFkZHJlc3MsIHNvIGl0IGNhbiBkZXNjcmliZSBvbmx5IGFcXG4rXFx0ICogc2luZ2xlLXJhZGlvIHdpcGh5OiB3aXRoIG1vcmUgcmFkaW9zIGVhY2ggcmFkaW8gaGFzIGl0cyBvd24gYmFzZVxcbitcXHQgKiBhZGRyZXNzLCBwb3NzaWJseSBmcm9tIGEgZGlmZmVyZW50IGF0aDEya19iYXNlLlxcbitcXHQgKi9cXG4rXFx0aWYgKGFoLVxcdTAwM2VudW1fcmFkaW8gIT0gMSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LyogT25seSB0aGUgdXBwZXIgbmliYmxlIG9mIHRoZSBmaXJzdCBvY3RldCBpcyB2YXJpZWQsIHNvIGF0IG1vc3QgMTZcXG4rXFx0ICogYWRkcmVzc2VzIGNhbiBiZSBkZXJpdmVkIGZyb20gb25lIGJhc2UuXFxuK1xcdCAqL1xcbitcXHRuX2FkZHJlc3NlcyA9IG1pbl90KHUxNiwgVEFSR0VUX05VTV9WREVWUyhhci1cXHUwMDNlYWIpLCAxNik7XFxuK1xcdGlmIChuX2FkZHJlc3NlcyBcXHUwMDNjPSAxKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRhZGRyZXNzZXMgPSBremFsbG9jX29ianMoKmFkZHJlc3Nlcywgbl9hZGRyZXNzZXMpO1xcbitcXHRpZiAoIWFkZHJlc3NlcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJlc3Nlc1swXS5hZGRyLCBtYWNfYWRkcik7XFxuK1xcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyBuX2FkZHJlc3NlczsgaSsrKSB7XFxuK1xcdFxcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbaV0uYWRkciwgbWFjX2FkZHIpO1xcbitcXHRcXHQvKiBzZXQgTG9jYWwgQWRtaW5pc3RlcmVkIEFkZHJlc3MgYml0ICovXFxuK1xcdFxcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdIHw9IDB4MjtcXG4rXFxuK1xcdFxcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdICs9IGkgXFx1MDAzY1xcdTAwM2MgNDtcXG4rXFx0fVxcbitcXG4rXFx0YWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYWRkcmVzc2VzID0gYWRkcmVzc2VzO1xcbitcXHRhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cXHUwMDNlaHc7XFxuQEAgLTE0NzA0LDYgKzE0NzQ4LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19od191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxcbiBcXHRcXHRhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3Rlcihhcik7XFxuIFxcbiBcXHRhdGgxMmtfbWFjX2NsZWFudXBfaWZhY2VfY29tYmluYXRpb25zKGFoKTtcXG4rXFx0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xcbiBcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIE5VTEwpO1xcbiB9XFxuQEAgLTE0ODIwLDYgKzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxcbiBcXHR3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XFxuIFxcbiBcXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xcbitcXHRhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3QoYWgsIG1hY19hZGRyKTtcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGFiLVxcdTAwM2VkZXYpO1xcbiBcXG4gXFx0cmV0ID0gYXRoMTJrX21hY19zZXR1cF9pZmFjZV9jb21iaW5hdGlvbnMoYWgpO1xcbkBAIC0xNTA0MSw2ICsxNTA4Nyw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG4gXFx0XFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xcbiBcXHR9XFxuIFxcbitcXHRhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChhaCk7XFxuK1xcbiBcXHRTRVRfSUVFRTgwMjExX0RFVihodywgTlVMTCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMy40NzIxNTAyMDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMwNjQzMTY5MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTJrIFdpLUZpIDcgZHJpdmVyIChhdGgxMmsvbWFjLmMpIHRvIHNldCB1cCBNQUMgYWRkcmVzcyBsaXN0cyBmb3Igc2luZ2xlLXJhZGlvIHdpcGh5IGluc3RhbmNlcy4gVGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWVlMDhiMjA2N2ZkYTk0ZDk1ZTg1YWI2MWM2Y2MzM2NhMDNmNGU4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzA6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOWE3NzU2MDI3NzVkNi4uYmVlNjcwMWYxMDI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xNDY4NSw2ICsxNDY4NSw1MCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcbiBcdGtmcmVlKGFyLVx1MDAzZW1hYy5zYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdLmNoYW5uZWxzKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3Qoc3RydWN0IGF0aDEya19odyAqYWgpXG4re1xuK1x0a2ZyZWUoYWgtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlYWRkcmVzc2VzKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0KHN0cnVjdCBhdGgxMmtfaHcgKmFoLFxuK1x0XHRcdFx0XHQgICAgICBjb25zdCB1OCAqbWFjX2FkZHIpXG4re1xuK1x0c3RydWN0IGF0aDEyayAqYXIgPSBhdGgxMmtfYWhfdG9fYXIoYWgsIDApO1xuK1x0c3RydWN0IG1hY19hZGRyZXNzICphZGRyZXNzZXM7XG4rXHR1MTYgbl9hZGRyZXNzZXM7XG4rXHRpbnQgaTtcbitcbitcdC8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhXG4rXHQgKiBzaW5nbGUtcmFkaW8gd2lwaHk6IHdpdGggbW9yZSByYWRpb3MgZWFjaCByYWRpbyBoYXMgaXRzIG93biBiYXNlXG4rXHQgKiBhZGRyZXNzLCBwb3NzaWJseSBmcm9tIGEgZGlmZmVyZW50IGF0aDEya19iYXNlLlxuK1x0ICovXG4rXHRpZiAoYWgtXHUwMDNlbnVtX3JhZGlvICE9IDEpXG4rXHRcdHJldHVybjtcbitcbitcdC8qIE9ubHkgdGhlIHVwcGVyIG5pYmJsZSBvZiB0aGUgZmlyc3Qgb2N0ZXQgaXMgdmFyaWVkLCBzbyBhdCBtb3N0IDE2XG4rXHQgKiBhZGRyZXNzZXMgY2FuIGJlIGRlcml2ZWQgZnJvbSBvbmUgYmFzZS5cbitcdCAqL1xuK1x0bl9hZGRyZXNzZXMgPSBtaW5fdCh1MTYsIFRBUkdFVF9OVU1fVkRFVlMoYXItXHUwMDNlYWIpLCAxNik7XG4rXHRpZiAobl9hZGRyZXNzZXMgXHUwMDNjPSAxKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRhZGRyZXNzZXMgPSBremFsbG9jX29ianMoKmFkZHJlc3Nlcywgbl9hZGRyZXNzZXMpO1xuK1x0aWYgKCFhZGRyZXNzZXMpXG4rXHRcdHJldHVybjtcbitcbitcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpO1xuK1x0Zm9yIChpID0gMTsgaSBcdTAwM2Mgbl9hZGRyZXNzZXM7IGkrKykge1xuK1x0XHRldGhlcl9hZGRyX2NvcHkoYWRkcmVzc2VzW2ldLmFkZHIsIG1hY19hZGRyKTtcbitcdFx0Lyogc2V0IExvY2FsIEFkbWluaXN0ZXJlZCBBZGRyZXNzIGJpdCAqL1xuK1x0XHRhZGRyZXNzZXNbaV0uYWRkclswXSB8PSAweDI7XG4rXG4rXHRcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdICs9IGkgXHUwMDNjXHUwMDNjIDQ7XG4rXHR9XG4rXG4rXHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VhZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4rXHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzO1xuK31cbitcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cdTAwM2VodztcbkBAIC0xNDcwNCw2ICsxNDc0OCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xuIFxuIFx0YXRoMTJrX21hY19jbGVhbnVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7XG4rXHRhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChhaCk7XG4gXG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgTlVMTCk7XG4gfVxuQEAgLTE0ODIwLDYgKzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XG4gXG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xuK1x0YXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0KGFoLCBtYWNfYWRkcik7XG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgYWItXHUwMDNlZGV2KTtcbiBcbiBcdHJldCA9IGF0aDEya19tYWNfc2V0dXBfaWZhY2VfY29tYmluYXRpb25zKGFoKTtcbkBAIC0xNTA0MSw2ICsxNTA4Nyw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xuIFx0fVxuIFxuK1x0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xuK1xuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIE5VTEwpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjEzLjQ3MjE1MjYwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyODMyNzgwNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCdzIGZ1enotd29ydGh5LiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIFJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uIOKAkyBXaS1GaSBkcml2ZXJzIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBUaGUgbmV4dCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtgIGlzIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIOKAkyBjYW4gSSB0ZXN0IHRoaXMgaW4gUUVNVSBvciBHQ0U/IFRoYXQncyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciBteSB3b3JrZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGl0IHN1cHBvcnRzLiBJcyBpdCBQQ0llPyBVU0I/IFVuZGVyc3RhbmRpbmcgdGhlIGludGVyZmFjZSBpcyBnb2luZyB0byBiZSB2aXRhbCB0byBzZXR0aW5nIHVwIGEgc3VpdGFibGUgdGVzdGluZyBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGFuZCByZWxhdGVkIGZpbGVzIHdpdGggYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kIG91dCBhYm91dCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBob3cgaXQncyBhY3RpdmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoyNi4zMDQ5NDM3OTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNTM5MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDEyS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzNDM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICs9IGF0aDEyay5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zLWF0aDEyay15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjU6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19BSEIpICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19BVEgxMkspICs9IHdpZmk3L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMwLWF0aDEyay0kKENPTkZJR19BQ1BJKSArPSBhY3BpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzItYXRoMTJrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzQtYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTExPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXFx0aWYgKCFyb290X2hhbmRsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5OlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImludmFsaWQgYWNwaSBoYW5kbGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNi1cXHRpZiAoIW9iaikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3OlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImFjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOC1cXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyLVxcdFxcdHN3aXRjaCAoZnVuYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DUzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNC1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5mdW5jX2JpdCA9IG9iai1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNy1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5iaXRfZmxhZyA9IG9iai1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxLVxcdFxcdHN3aXRjaCAoZnVuYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VzdHJpbmcubGVuZ3RoIFxcdTAwM2M9IEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0OlxcdFxcdFxcdCAgICBvYmotXFx1MDAzZXN0cmluZy5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1OlxcdFxcdFxcdCAgICBtZW1jbXAob2JqLVxcdTAwM2VzdHJpbmcucG9pbnRlciwgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDY6XFx0XFx0XFx0XFx0ICAgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBCREYgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01OS1cXHRcXHRzd2l0Y2ggKGZ1bmMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MDpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1NVUFBPUlRfRlVOQ1M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjE6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCBcXHUwMDNjIEFUSDEyS19BQ1BJX0RTTV9GVU5DX01JTl9CSVRNQVBfU0laRSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYyOlxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02My1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTczLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjc0OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGRzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NTpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ni1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg2OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEE6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6ODc6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg4LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk3LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjk4OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6OTk6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQklPU19TQVJfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAwLVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIEJJT1MgU0FSIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMDktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTEwOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTE6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTItXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIxLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEyMjpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0NDQTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjM6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNC1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gQ0NBIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzMtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM0OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEzNTpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM2LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTE2MT1zdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2NjpcXHRpZiAodGFzX3Nhcl9wb3dlcl90YWJsZVswXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9WRVJTSU9OIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY3OlxcdCAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlWzFdICE9IEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OC1cXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImxhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTczLVxcdFxcdFxcdFxcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc0OlxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTgzPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg3OlxcdGlmIChhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzBdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX1ZFUlNJT04gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODg6XFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODktXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MjAyPXN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA3OlxcdGlmIChldmVudCA9PSBBVEgxMktfQUNQSV9OT1RJRllfRVZFTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDgtXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ1bmtub3duIGFjcGkgbm90aWZ5ICV1XFxcXG5cXFwiLCBldmVudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTItXFx0aWYgKCFhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTM6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV90YXNfZW5hYmxlIGlzIGZhbHNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxNzpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MjY0PXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2OS1cXHRcXHRcXHRcXHQgICAgICBhYi1cXHUwMDNlYWNwaS50YXNfY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MDpcXHRcXHRcXHRcXHQgICAgICBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc5OlxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9Mjk5PXZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjQtXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfY2NhX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNTpcXHRcXHRidWYgPSBhYi1cXHUwMDNlYWNwaS5jY2FfZGF0YSArIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0RBVEFfT0ZGU0VUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNi1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyOC1cXHRcXHRcXHRcXHRcXHQgICAgICBidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMwLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTM1MT1pbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjk6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0RJU0FCTEVfRkxBRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19ESVNBQkxFX0ZMQUcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzgyOlxcdFxcdGlmIChBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0RTTV9ESVNBQkxFXzExQkVfQklUKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODQtXFx0XFx0XFx0YWItXFx1MDAzZWFjcGkuYWNwaV9kaXNhYmxlXzExYmUgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODY6XFx0XFx0aWYgKCFBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODc6XFx0XFx0XFx0XFx0XFx0XFx0QVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzg4LVxcdFxcdFxcdGFiLVxcdTAwM2VhY3BpLmFjcGlfZGlzYWJsZV9yZmtpbGwgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JERl9FWFQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVxcdFxcdGlmIChyZXQgfHwgYWItXFx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAnXFxcXDAnKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAxOlxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwOTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19EQVRBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxNjpcXHRcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDE3OlxcdFxcdCAgICBhYi1cXHUwMDNlYWNwaS50YXNfc2FyX3Bvd2VyX3RhYmxlWzBdID09IEFUSDEyS19BQ1BJX1RBU19EQVRBX1ZFUlNJT04gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTg6XFx0XFx0ICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGVbMV0gPT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxOS1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMjpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMDpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Mzc6XFx0XFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Mzg6XFx0XFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzOTpcXHRcXHQgICAgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVsxXSA9PSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBRyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0MC1cXHRcXHQgICAgIWFiLVxcdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDQ6XFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1MjpcXHRcXHRpZiAoYWItXFx1MDAzZWFjcGkuY2NhX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDUzOlxcdFxcdCAgICBhYi1cXHUwMDNlYWNwaS5jY2FfZGF0YVtBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVF0gPT1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NTQ6XFx0XFx0ICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDU1LVxcdFxcdFxcdGFiLVxcdTAwM2VhY3BpLmFjcGlfY2NhX2VuYWJsZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU4OlxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NTk6XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Njc6XFx0XFx0aWYgKGFiLVxcdTAwM2VhY3BpLmJhbmRfZWRnZV9wb3dlclswXSA9PSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2ODpcXHRcXHQgICAgYWItXFx1MDAzZWFjcGkuYmFuZF9lZGdlX3Bvd2VyWzFdID09IEFUSDEyS19BQ1BJX0JBTkRfRURHRV9FTkFCTEVfRkxBRylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjktXFx0XFx0XFx0YWItXFx1MDAzZWFjcGkuYWNwaV9iYW5kX2VkZ2VfZW5hYmxlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTQ4NT1pbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVxcdGlmIChzdHJzY3B5KGFiLVxcdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVxcdTAwM2VhY3BpLmJkZl9zdHJpbmcgKyA0LCBtYXhfbGVuKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDkzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTQtXFx0XFx0XFx0ICAgXFxcImFjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2OiNpZm5kZWYgQVRIMTJLX0FDUElfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc6I2RlZmluZSBBVEgxMktfQUNQSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjExOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DU1xcdDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBR1xcdDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFRcXHRcXHQzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUlxcdFxcdDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxNTojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVRcXHRcXHQ1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTY6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0FcXHRcXHQ2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTc6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHXFx0XFx0OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE4OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEFcXHRcXHQ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTk6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9CQU5EX0VER0VcXHRcXHQxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjIxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjI6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjM6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUlxcdFxcdFxcdEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI0OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfR0VPX09GRlNFVFxcdFxcdFxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI1OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBXFx0XFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjY6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHXFx0XFx0XFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mjc6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfREFUQVxcdFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI4OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVJcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMDojZGVmaW5lIEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVFxcdFxcdFxcdDB4ODZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMTojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKF9hY2RhdGEsIF9mdW5jKVxcdCgoKF9hY2RhdGEpLmZ1bmNfYml0KSBcXHUwMDI2IChfZnVuYykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MzI6I2RlZmluZSBBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChfYWNkYXRhLCBfZnVuYylcXHQoKChfYWNkYXRhKS5iaXRfZmxhZykgXFx1MDAyNiAoX2Z1bmMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM0OiNkZWZpbmUgQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTlxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM1OiNkZWZpbmUgQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MzY6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9WRVJTSU9OXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBR1xcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM4OiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzk6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX0VOQUJMRV9GTEFHXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDA6I2RlZmluZSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTlxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQxOiNkZWZpbmUgQVRIMTJLX0FDUElfQkFORF9FREdFX0VOQUJMRV9GTEFHXFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDM6I2RlZmluZSBBVEgxMktfQUNQSV9HRU9fT0ZGU0VUX0RBVEFfT0ZGU0VUXFx0MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ0OiNkZWZpbmUgQVRIMTJLX0FDUElfREJTX0JBQ0tPRkZfREFUQV9PRkZTRVRcXHQyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDU6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVFxcdDVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0NjojZGVmaW5lIEFUSDEyS19BQ1BJX0JJT1NfU0FSX0RCU19CQUNLT0ZGX0xFTlxcdDEwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVFxcdDEyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDg6I2RlZmluZSBBVEgxMktfQUNQSV9CSU9TX1NBUl9HRU9fT0ZGU0VUX0xFTlxcdDE4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDk6I2RlZmluZSBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU5cXHRcXHQyMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjUwOiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfTEVOXFx0XFx0MzZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFXFx0XFx0XFx0NjlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFXFx0XFx0MTAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFXFx0XFx0XFx0MTA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTY6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NSU5fQklUTUFQX1NJWkVcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTc6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkVcXHQ0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTk6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRElTQUJMRV8xMUJFX0JJVFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYwOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYyOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOXFx0M1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYzOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdcXHRcXHRcXFwiQkRGXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjY0OiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX01BWF9MRU5cXHRcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfR0VPX09GRlNFVF9EQVRBX09GRlNFVCArIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NzpcXHRcXHRcXHRcXHRcXHQgICAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9HRU9fT0ZGU0VUX0xFTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2ODojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUgKEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0RBVEFfT0ZGU0VUICsgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjY5OlxcdFxcdFxcdFxcdFxcdCAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzA6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVQgKyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzE6XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC03Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oPTEwNz1zdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTE0OiNlbmRpZiAvKiBBVEgxMktfQUNQSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjA6I2RlZmluZSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE6I2RlZmluZSBBVEgxMktfVVBEX0lSUV9XUkRfTEVOICAxOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzpzdGF0aWMgc3RydWN0IGF0aDEya19haGJfZHJpdmVyICphdGgxMmtfYWhiX2ZhbWlseV9kcml2ZXJzW0FUSDEyS19ERVZJQ0VfRkFNSUxZX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNC1zdGF0aWMgY29uc3QgY2hhciBhdGgxMmtfdXNlcnBkX2lycVtdWzldID0ge1xcXCJzcGF3blxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQyPXN0YXRpYyBERUZJTkVfTVVURVgoYXRoMTJrX3Jwcm9jX2luZm9fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ0OnN0YXRpYyBjb25zdCBjaGFyICppcnFfbmFtZVtBVEgxMktfSVJRX05VTV9NQVhdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDUtXFx0XFxcIm1pc2MtcHVsc2UxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTc4PXN0YXRpYyB2b2lkIF9fYXRoMTJrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTgyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODMtXFx0XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTI2MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjk6XFx0XFx0aXJxX2lkeCA9IEFUSDEyS19JUlFfQ0UwX09GRlNFVCArIGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzAtXFx0XFx0c3luY2hyb25pemVfaXJxKGFiLVxcdTAwM2VpcnFfbnVtW2lycV9pZHhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9Mjc0PXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzk6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4MC1cXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzE5PXN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzI0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjUtXFx0XFx0aXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTM0MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM0MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNDI6XFx0aWYgKCF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQzLVxcdFxcdGF0aDEya19haGJfY2VfaXJxc19kaXNhYmxlKGFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzUwPXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNTItXFx0c3RydWN0IGF0aDEya19haGIgKmFiX2FoYiA9IGF0aDEya19hYl90b19haGIoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzUzOlxcdGNoYXIgZndfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM1NDpcXHRjaGFyIGZ3Ml9uYW1lW0FUSDEyS19VU0VSUERfRldfTkFNRV9MRU5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzU1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFiLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM3OTpcXHRzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksIFxcXCIlcy8lcy8lcyVkJXNcXFwiLCBBVEgxMktfRldfRElSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzgwOlxcdFxcdCBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vmdy5kaXIsIEFUSDEyS19BSEJfRldfUFJFRklYLCBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM4MTpcXHRcXHQgQVRIMTJLX0FIQl9GV19TVUZGSVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozODk6XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19BSEIsIFxcXCJCb290aW5nIGZ3IGltYWdlICVzLCBzaXplICV6ZFxcXFxuXFxcIiwgZndfbmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5MC1cXHRcXHQgICBmdy1cXHUwMDNlc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5ODpcXHRwYXNpZCA9ICh1MzJfZW5jb2RlX2JpdHMoYWJfYWhiLVxcdTAwM2V1c2VycGRfaWQsIEFUSDEyS19VU0VSUERfSURfTUFTSykpIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5OTpcXHRcXHRBVEgxMktfQUhCX1VQRF9TV0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTM6XFx0c25wcmludGYoZncyX25hbWUsIHNpemVvZihmdzJfbmFtZSksIFxcXCIlcy8lcy8lc1xcXCIsIEFUSDEyS19GV19ESVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTQ6XFx0XFx0IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWZ3LmRpciwgQVRIMTJLX0FIQl9GVzIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MjI6XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19BSEIsIFxcXCJCb290aW5nIGZ3IGltYWdlICVzLCBzaXplICV6ZFxcXFxuXFxcIiwgZncyX25hbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjMtXFx0XFx0ICAgZncyLVxcdTAwM2VzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDU1LVxcdHRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3Bhd25lZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ1NjpcXHRcXHRcXHRcXHRcXHRcXHRBVEgxMktfVVNFUlBEX1NQQVdOX1RJTUVPVVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDU3LVxcdGlmICghdGltZV9sZWZ0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ2My1cXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFiX2FoYi1cXHUwMDNldXNlcnBkX3JlYWR5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDY0OlxcdFxcdFxcdFxcdFxcdFxcdEFUSDEyS19VU0VSUERfUkVBRFlfVElNRU9VVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NjUtXFx0aWYgKCF0aW1lX2xlZnQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDczOlxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQUhCLCBcXFwiVXNlclBEJWQgaXMgbm93IFVQXFxcXG5cXFwiLCBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQ4Mj1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTItXFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZhYl9haGItXFx1MDAzZXVzZXJwZF9zdG9wcGVkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDkzOlxcdFxcdFxcdFxcdFxcdFxcdEFUSDEyS19VU0VSUERfU1RPUF9USU1FT1VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ5NC1cXHRpZiAoIXRpbWVfbGVmdCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01MDEtXFx0aWYgKGFiX2FoYi1cXHUwMDNlc2NtX2F1dGhfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAyOlxcdFxcdHBhc2lkID0gKHUzMl9lbmNvZGVfYml0cyhhYl9haGItXFx1MDAzZXVzZXJwZF9pZCwgQVRIMTJLX1VTRVJQRF9JRF9NQVNLKSkgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAzOlxcdFxcdFxcdCBBVEgxMktfQUhCX1VQRF9TV0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTA0LVxcdFxcdC8qIFJlbGVhc2UgdGhlIGZpcm13YXJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTU4MT1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTg4LVxcdHJpbmdfbWFzayA9IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZXJpbmdfbWFzaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjU4OTpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTkwLVxcdFxcdGlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDUtXFx0XFx0XFx0ICAgIEJJVChhYi1cXHUwMDNlaGFsLnRjbF90b193Ym1fcmJtX21hcFtqXS53Ym1fcmluZ19udW0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MDY6XFx0XFx0XFx0ICAgIG51bV9pcnEgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDctXFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjEyOlxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYOyBqKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxMy1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjE0OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjE1LVxcdFxcdFxcdFxcdGlycV9ncnAtXFx1MDAzZWlycXNbbnVtX2lycSsrXSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxOS1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeF9lcnJbaV0gXFx1MDAyNiBCSVQoaikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjYyMDpcXHRcXHRcXHQgICAgbnVtX2lycSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjEtXFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID0gcmVvMmhvc3RfZXhjZXB0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjMtXFx0XFx0XFx0aWYgKHJpbmdfbWFzay1cXHUwMDNlcnhfd2JtX3JlbFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjI0OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyNS1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPSB3Ym0yaG9zdF9yeF9yZWxlYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjctXFx0XFx0XFx0aWYgKHJpbmdfbWFzay1cXHUwMDNlcmVvX3N0YXR1c1tpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjI4OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyOS1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPSByZW8yaG9zdF9zdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMS1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeF9tb25fZGVzdFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjMyOlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMy1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz02NTg9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjcwOlxcdFxcdGlycV9pZHggPSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgKyBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MzY9c3RhdGljIGlycXJldHVybl90IGF0aDEya191c2VycGRfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQxOlxcdGlmIChpcnEgPT0gYWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtBVEgxMktfVVNFUlBEX1NQQVdOX0lSUV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Mi1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3Bhd25lZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NDM6XFx0fSBlbHNlIGlmIChpcnEgPT0gYWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtBVEgxMktfVVNFUlBEX1JFQURZX0lSUV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0NC1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfcmVhZHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQ1OlxcdH0gZWxzZSBpZiAoaXJxID09IGFiX2FoYi1cXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TVE9QX0FDS19JUlFdKVxcdHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Ni1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3RvcHBlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTc1NT1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX3Jwcm9jX2lycShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NjE6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19VU0VSUERfTUFYX0lSUTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjItXFx0XFx0YWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtpXSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKGFiLVxcdTAwM2VwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3Njc6XFx0XFx0dXBkX2lycV9uYW1lID0gZGV2bV9remFsbG9jKFxcdTAwMjZhYi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzcyOlxcdFxcdHNjbnByaW50Zih1cGRfaXJxX25hbWUsIEFUSDEyS19VUERfSVJRX1dSRF9MRU4sIFxcXCJVc2VyUEQldS0lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NzMtXFx0XFx0XFx0ICBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCwgYXRoMTJrX3VzZXJwZF9pcnFbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04MDI9c3RhdGljIGludCBhdGgxMmtfYWhiX3Jvb3RfcGRfc3RhdGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODA4OlxcdGlmIChldmVudCA9PSBBVEgxMktfUlBST0NfQUZURVJfUE9XRVJVUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODA5OlxcdFxcdGF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX0FIQiwgXFxcIlJvb3QgUEQgaXMgVVBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODEwLVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZycHJvY19pbmZvLVxcdTAwM2Vyb290cGRfcmVhZHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ODY9c3RhdGljIGludCBhdGgxMmtfYWhiX2dldF9ycHJvYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo4OTY6XFx0aWYgKGFiX2FoYi1cXHUwMDNldXNlcnBkX2lkIFxcdTAwM2UgQVRIMTJLX01BWF9ERVZJQ0VTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODk3LVxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04OTktXFx0aWYgKGdfcnByb2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6OTAwOlxcdFxcdGlmIChnX3Jwcm9jX2luZm8tXFx1MDAzZW51bV91c2VycGQgXFx1MDAzZT0gQVRIMTJLX01BWF9ERVZJQ0VTKSB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjI2LjQzNzQ4Nzc0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDEwNjYxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQVRIMTJLIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvciBjb2RlIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEFUSDEySyB3aXJlbGVzcyBkcml2ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgY2x1ZXMgYXJlIGhpZGluZyBpbiB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSDigJMgdGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBlbmFibGUvZGlzYWJsZSBvcHRpb25zIGFuZCBhbnkgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gU28sIGxldCBtZSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLiBJJ2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBQQ0ktc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNgLiBIb3BlZnVsbHksIGJldHdlZW4gdGhlc2UgdHdvIGZpbGVzLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzaXR1YXRpb24gYW5kIHBpbnBvaW50IHRoZSBzb3VyY2Ugb2Ygd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyODgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoyOC42Nzg1NTcyNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fUEFTXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjI4LjY3ODY2MzExOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NDE3MjQzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBcHBsaWNhYmlsaXR5OiBUaGUgQXRoMTJrIENvbnVuZHJ1bSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHJ1bGVzIGFyZSBjbGVhcjogY2hhbmdlcyBhcmUgKipub3QqKiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkncmUgbGltaXRlZCB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgYXRoMTJrLiBJcyBpdCByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gd2l0aCBjbGV2ZXIgdHJpY2tzIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWA/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyBubywgdGhpcyBpcyBhIFF1YWxjb21tIFdpLUZpIDcgY2hpcHNldCBkcml2ZXIsIGFuZCBpdCdzIFBDSWUgb3IgQUhCIGJhc2VkLiBJdCdzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZSAoV0NONzg1MCwgUUNOOTI3NCwgSVBRNTMzMiwgZXRjLikgYW5kIHJlbGllcyBvbiBNSEkgYnVzLCBRTUksIGFuZCBmaXJtd2FyZSBsb2FkaW5nLiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGF0LiBJdCBlbXVsYXRlcyB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIG5ldHdvcmtpbmcsIGJ1dCBkZWZpbml0ZWx5IG5vdCBhdGgxMmsuIEFuZCBubywgbWFjODAyMTFfaHdzaW0gaXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IgLSB0b3RhbGx5IHNlcGFyYXRlIGZyb20gYXRoMTJrLlxuXG5Pa2F5LCBsZXQncyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIFRoZSBydWxlcyBleHBsaWNpdGx5IGV4Y2x1ZGUgY29kZSB0aGF0J3MgdW5yZWFjaGFibGUgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJdOKAmXMgYWxzbyB2ZXJ5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMuIExldCdzIGxvb2sgYWdhaW4gYXQgdGhlIGZpbGUgc3RydWN0dXJlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgaXMgc3RyaWN0bHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgb3IgaWYgdGhlcmUncyBhbnkgcHJldGVuc2Ugb2YgdmlydHVhbCBzdXBwb3J0LiBObyBlbXVsYXRlZCBoYXJkd2FyZSBtZWFucyBubyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjM1LjIyMDM5MDA0NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhY3BpLmNcIixcbiAgICBcImFjcGkuaFwiLFxuICAgIFwiYWhiLmNcIixcbiAgICBcImFoYi5oXCIsXG4gICAgXCJjZS5jXCIsXG4gICAgXCJjZS5oXCIsXG4gICAgXCJjbW5fZGVmcy5oXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmUuaFwiLFxuICAgIFwiY29yZWR1bXAuY1wiLFxuICAgIFwiY29yZWR1bXAuaFwiLFxuICAgIFwiZGJyaW5nLmNcIixcbiAgICBcImRicmluZy5oXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJkZWJ1Zy5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRlYnVnZnMuaFwiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuY1wiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuaFwiLFxuICAgIFwiZGVidWdmc19zdGEuY1wiLFxuICAgIFwiZGVidWdmc19zdGEuaFwiLFxuICAgIFwiZHAuY1wiLFxuICAgIFwiZHAuaFwiLFxuICAgIFwiZHBfY21uLmhcIixcbiAgICBcImRwX2h0dC5jXCIsXG4gICAgXCJkcF9odHQuaFwiLFxuICAgIFwiZHBfbW9uLmNcIixcbiAgICBcImRwX21vbi5oXCIsXG4gICAgXCJkcF9wZWVyLmNcIixcbiAgICBcImRwX3BlZXIuaFwiLFxuICAgIFwiZHBfcnguY1wiLFxuICAgIFwiZHBfcnguaFwiLFxuICAgIFwiZHBfdHguY1wiLFxuICAgIFwiZHBfdHguaFwiLFxuICAgIFwiZncuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaGFsLmNcIixcbiAgICBcImhhbC5oXCIsXG4gICAgXCJoaWYuaFwiLFxuICAgIFwiaHRjLmNcIixcbiAgICBcImh0Yy5oXCIsXG4gICAgXCJody5oXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1oaS5jXCIsXG4gICAgXCJtaGkuaFwiLFxuICAgIFwicDJwLmNcIixcbiAgICBcInAycC5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidGVzdG1vZGUuaFwiLFxuICAgIFwidGhlcm1hbC5jXCIsXG4gICAgXCJ0aGVybWFsLmhcIixcbiAgICBcInRyYWNlLmNcIixcbiAgICBcInRyYWNlLmhcIixcbiAgICBcIndtaS5jXCIsXG4gICAgXCJ3bWkuaFwiLFxuICAgIFwid293LmNcIixcbiAgICBcIndvdy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIndpZmk3XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzA6MzUuMjIwNDkzODc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyMTQ3MTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBNQUMgTGF5ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNQUMgbGF5ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYHBjaS5jYCBhbmQgYG1hYy5jYCBmaWxlcy4gSSBzdXNwZWN0IHRoYXQncyB3aGVyZSB0aGUgY29yZSBQQ0ktcmVsYXRlZCBzZXR1cCBhbmQgTUFDLXNwZWNpZmljIGZ1bmN0aW9ucyByZXNpZGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIHRyYWNrIHRoZSBjYWxscyB0byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgYW5kIGBhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3RgLiBUaGV5IHNvdW5kIGxpa2Uga2V5IGZ1bmN0aW9ucyBmb3IgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlIGFuZCBzZXR0aW5nIHVwIHRoZSBNQUMgYWRkcmVzcyBsaXN0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBpZGVudGlmeWluZyB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlIG9uIHRoZSBuZXR3b3JrLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgdG8gZ3Jhc3AgdGhlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBob3cgdGhlIGhhcmR3YXJlIGlzIGJlaW5nIGNvbmZpZ3VyZWQgd2l0aCBNQUMgYWRkcmVzc2VzLiBMZXQncyBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhbGwgc2l0ZXMgb2YgYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIHRvIGRldGVybWluZSB0aGUgcHJvZ3JhbSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDozNy44NDE5Njc4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODIzMTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ3NTY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzkwOnN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTUzMDU9aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUzMTQ6XFx0XFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTMxNS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz02OTU5PXN0YXRpYyBpbnQgYXRoMTJrX3JlZ19jaGFuX2xpc3RfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzAzNy1cXHQgKiBzbyB0aGUgY29tcGxldGlvbiBjYW5ub3QgYmUgbWFya2VkIGF0IHRoYXQgcG9pbnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3MDM4OlxcdCAqIFRoaXMgYm9vdC10aW1lIHVwZGF0ZSBpcyBoYW5kbGVkIGluIGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzAzOS1cXHQgKiBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDozOC43NjAyMDY5ODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTM1NTA4NTk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IGF0aDEyayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBRdWFsY29tbSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBvciBgYXRoMTJrX2NvcmVfc3RhcnRgIGZ1bmN0aW9ucywgb3IgZHVyaW5nIHRoZSBkcml2ZXIgcHJvYmUuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYGF0aDEya2AgZHJpdmVyIGlzIHRpZWQgdG8gYWN0dWFsIFF1YWxjb21tIGhhcmR3YXJlLiBMZXQgbWUgY29uZmlybS4uLiB5ZXMsIGl0J3MgYSBXaS1GaSA3IGRyaXZlciBkZXNpZ25lZCBmb3IgUENJZSBhbmQgQUhCIGF0dGFjaGVkIGhhcmR3YXJlIGxpa2UgdGhlIFdDTjc4NTAgYW5kIFFDTjkyNzQuXG5cblRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgUXVhbGNvbW0gU29DLiBUaGlzIG1lYW5zIGl0IGNhbid0IGJlIGVtdWxhdGVkIG9yIGluc3RhbnRpYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIGV2ZW4gZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIHN5emthbGxlci4gU29mdHdhcmUgZW11bGF0aW9uLCBzdWNoIGFzIHdoYXQgYG1hYzgwMjExX2h3c2ltYCBkb2VzLCB1c2VzIGl0cyBvd24gZHJpdmVyLCBkaXN0aW5jdCBmcm9tIGBhdGgxMmtgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLCBsZXQncyBnbyBvdmVyIHRoZSBleGNsdXNpb24gZ3VpZGVsaW5lcywgbGluZSBieSBsaW5lLCB0byBlbnN1cmUgbm8gb3ZlcnNpZ2h0LlxuXG5UaGUgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlc2UgcnVsZXM6XG5cbiogICBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIC0gYGF0aDEya2AgaXMgb3V0IGJlY2F1c2Ugb2YgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG4qICAgXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgLSBgYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgYW5kIHJlcXVpcmVzIFBDSWUgaGFyZHdhcmUuXG5cblNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHRoZSBhbnN3ZXIgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQncyBnZXQgdGhhdCBsb2dnZWQgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg4OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzA6NDQuMTE1Mjk0ODY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMmsgV2ktRmkgNyBkcml2ZXIgKGF0aDEyay9tYWMuYykgdG8gc2V0IHVwIE1BQyBhZGRyZXNzIGxpc3RzIGZvciBzaW5nbGUtcmFkaW8gd2lwaHkgaW5zdGFuY2VzLiBUaGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDo0NC4xMTUzMjE1MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmr7lw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 00:04:26 +0000 UTC FinishedAt: 2026-09-03 00:30:45 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAwMDozMDowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOWE3NzU2MDI3NzVkNi4uYmVlNjcwMWYxMDI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xNDY4NSw2ICYjNDM7MTQ2ODUsNTAgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRrZnJlZShhci1cdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF82R0haXS5jaGFubmVscyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiYjNDM7e1xuJiM0MztcdGtmcmVlKGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWFkZHJlc3Nlcyk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGNvbnN0IHU4ICptYWNfYWRkcilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGgxMmsgKmFyID0gYXRoMTJrX2FoX3RvX2FyKGFoLCAwKTtcbiYjNDM7XHRzdHJ1Y3QgbWFjX2FkZHJlc3MgKmFkZHJlc3NlcztcbiYjNDM7XHR1MTYgbl9hZGRyZXNzZXM7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhXG4mIzQzO1x0ICogc2luZ2xlLXJhZGlvIHdpcGh5OiB3aXRoIG1vcmUgcmFkaW9zIGVhY2ggcmFkaW8gaGFzIGl0cyBvd24gYmFzZVxuJiM0MztcdCAqIGFkZHJlc3MsIHBvc3NpYmx5IGZyb20gYSBkaWZmZXJlbnQgYXRoMTJrX2Jhc2UuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFoLVx1MDAzZW51bV9yYWRpbyAhPSAxKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBPbmx5IHRoZSB1cHBlciBuaWJibGUgb2YgdGhlIGZpcnN0IG9jdGV0IGlzIHZhcmllZCwgc28gYXQgbW9zdCAxNlxuJiM0MztcdCAqIGFkZHJlc3NlcyBjYW4gYmUgZGVyaXZlZCBmcm9tIG9uZSBiYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdG5fYWRkcmVzc2VzID0gbWluX3QodTE2LCBUQVJHRVRfTlVNX1ZERVZTKGFyLVx1MDAzZWFiKSwgMTYpO1xuJiM0MztcdGlmIChuX2FkZHJlc3NlcyBcdTAwM2M9IDEpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGFkZHJlc3NlcyA9IGt6YWxsb2Nfb2JqcygqYWRkcmVzc2VzLCBuX2FkZHJlc3Nlcyk7XG4mIzQzO1x0aWYgKCFhZGRyZXNzZXMpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpO1xuJiM0MztcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG5fYWRkcmVzc2VzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJlc3Nlc1tpXS5hZGRyLCBtYWNfYWRkcik7XG4mIzQzO1x0XHQvKiBzZXQgTG9jYWwgQWRtaW5pc3RlcmVkIEFkZHJlc3MgYml0ICovXG4mIzQzO1x0XHRhZGRyZXNzZXNbaV0uYWRkclswXSB8PSAweDI7XG4mIzQzO1xuJiM0MztcdFx0YWRkcmVzc2VzW2ldLmFkZHJbMF0gJiM0Mzs9IGkgXHUwMDNjXHUwMDNjIDQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VhZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4mIzQzO1x0YWgtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlbl9hZGRyZXNzZXMgPSBuX2FkZHJlc3NlcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cdTAwM2VodztcbkBAIC0xNDcwNCw2ICYjNDM7MTQ3NDgsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4gXHRcdGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKGFyKTtcbiBcbiBcdGF0aDEya19tYWNfY2xlYW51cF9pZmFjZV9jb21iaW5hdGlvbnMoYWgpO1xuJiM0MztcdGF0aDEya19tYWNfY2xlYW51cF9tYWNfYWRkcmVzc19saXN0KGFoKTtcbiBcbiBcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTtcbiB9XG5AQCAtMTQ4MjAsNiAmIzQzOzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XG4gXG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xuJiM0MztcdGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChhaCwgbWFjX2FkZHIpO1xuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGFiLVx1MDAzZWRldik7XG4gXG4gXHRyZXQgPSBhdGgxMmtfbWFjX3NldHVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7XG5AQCAtMTUwNDEsNiAmIzQzOzE1MDg3LDggQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0XHRhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3Rlcihhcik7XG4gXHR9XG4gXG4mIzQzO1x0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xuJiM0MztcbiBcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTtcbiBcbiBcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAwMDozMDowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCmluZGV4IDlhNzc1NjAyNzc1ZDYuLmJlZTY3MDFmMTAyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwpAQCAtMTQ2ODUsNiAmIzQzOzE0Njg1LDUwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyKQogCWtmcmVlKGFyLSZndDttYWMuc2JhbmRzW05MODAyMTFfQkFORF82R0haXS5jaGFubmVscyk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKJiM0Mzt7CiYjNDM7CWtmcmVlKGFoLSZndDtody0mZ3Q7d2lwaHktJmd0O2FkZHJlc3Nlcyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaCwKJiM0MzsJCQkJCSAgICAgIGNvbnN0IHU4ICptYWNfYWRkcikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmsgKmFyID0gYXRoMTJrX2FoX3RvX2FyKGFoLCAwKTsKJiM0MzsJc3RydWN0IG1hY19hZGRyZXNzICphZGRyZXNzZXM7CiYjNDM7CXUxNiBuX2FkZHJlc3NlczsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CS8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhCiYjNDM7CSAqIHNpbmdsZS1yYWRpbyB3aXBoeTogd2l0aCBtb3JlIHJhZGlvcyBlYWNoIHJhZGlvIGhhcyBpdHMgb3duIGJhc2UKJiM0MzsJICogYWRkcmVzcywgcG9zc2libHkgZnJvbSBhIGRpZmZlcmVudCBhdGgxMmtfYmFzZS4KJiM0MzsJICovCiYjNDM7CWlmIChhaC0mZ3Q7bnVtX3JhZGlvICE9IDEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CS8qIE9ubHkgdGhlIHVwcGVyIG5pYmJsZSBvZiB0aGUgZmlyc3Qgb2N0ZXQgaXMgdmFyaWVkLCBzbyBhdCBtb3N0IDE2CiYjNDM7CSAqIGFkZHJlc3NlcyBjYW4gYmUgZGVyaXZlZCBmcm9tIG9uZSBiYXNlLgomIzQzOwkgKi8KJiM0MzsJbl9hZGRyZXNzZXMgPSBtaW5fdCh1MTYsIFRBUkdFVF9OVU1fVkRFVlMoYXItJmd0O2FiKSwgMTYpOwomIzQzOwlpZiAobl9hZGRyZXNzZXMgJmx0Oz0gMSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJYWRkcmVzc2VzID0ga3phbGxvY19vYmpzKCphZGRyZXNzZXMsIG5fYWRkcmVzc2VzKTsKJiM0MzsJaWYgKCFhZGRyZXNzZXMpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpOwomIzQzOwlmb3IgKGkgPSAxOyBpICZsdDsgbl9hZGRyZXNzZXM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlldGhlcl9hZGRyX2NvcHkoYWRkcmVzc2VzW2ldLmFkZHIsIG1hY19hZGRyKTsKJiM0MzsJCS8qIHNldCBMb2NhbCBBZG1pbmlzdGVyZWQgQWRkcmVzcyBiaXQgKi8KJiM0MzsJCWFkZHJlc3Nlc1tpXS5hZGRyWzBdIHw9IDB4MjsKJiM0MzsKJiM0MzsJCWFkZHJlc3Nlc1tpXS5hZGRyWzBdICYjNDM7PSBpICZsdDsmbHQ7IDQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJYWgtJmd0O2h3LSZndDt3aXBoeS0mZ3Q7YWRkcmVzc2VzID0gYWRkcmVzc2VzOwomIzQzOwlhaC0mZ3Q7aHctJmd0O3dpcGh5LSZndDtuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFoLSZndDtodzsKQEAgLTE0NzA0LDYgJiM0MzsxNDc0OCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIAkJYXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpOwogCiAJYXRoMTJrX21hY19jbGVhbnVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7CiYjNDM7CWF0aDEya19tYWNfY2xlYW51cF9tYWNfYWRkcmVzc19saXN0KGFoKTsKIAogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTsKIH0KQEAgLTE0ODIwLDYgJiM0MzsxNDg2NSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaCkKIAl3aXBoeS0mZ3Q7YXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7CiAKIAlTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpOwomIzQzOwlhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3QoYWgsIG1hY19hZGRyKTsKIAlTRVRfSUVFRTgwMjExX0RFVihodywgYWItJmd0O2Rldik7CiAKIAlyZXQgPSBhdGgxMmtfbWFjX3NldHVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7CkBAIC0xNTA0MSw2ICYjNDM7MTUwODcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpCiAJCWF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKGFyKTsKIAl9CiAKJiM0MzsJYXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpOwomIzQzOwogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBOVUxMKTsKIAogCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHkuIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBRdWFsY29tbSBXaS1GaSA3ICg4MDIuMTFiZSkgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbiDigJMgV2ktRmkgZHJpdmVycyBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlIG5leHQgcXVlc3Rpb24gaXM6IENhbiBJIGV2ZW4gcmVhY2ggdGhpcyB0aGluZyB3aXRob3V0IHNwZWNpYWxpemVkIGhhcmR3YXJlPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgYXRoMTJrYCBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgY2FuIEkgdGVzdCB0aGlzIGluIFFFTVUgb3IgR0NFPyBUaGF0JiMzOTtzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIG15IHdvcmtmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgc3VwcG9ydHMuIElzIGl0IFBDSWU/IFVTQj8gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJmYWNlIGlzIGdvaW5nIHRvIGJlIHZpdGFsIHRvIHNldHRpbmcgdXAgYSBzdWl0YWJsZSB0ZXN0aW5nIGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgYW5kIHJlbGF0ZWQgZmlsZXMgd2l0aCBgZ3JlcHBlcmAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQgb3V0IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyBhY3RpdmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzNDM2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE3OmNvbmZpZyBBVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yMC1cdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjc6XHRkZXBlbmRzIG9uIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTI4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM3Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDUtXHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NjpcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU2LVx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICYjNDM7PSBhdGgxMmsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zLWF0aDEyay15ICYjNDM7PSBjb3JlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gd2lmaTcvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMwLWF0aDEyay0kKENPTkZJR19BQ1BJKSAmIzQzOz0gYWNwaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzItYXRoMTJrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzQtYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTE9c3RhdGljIGludCBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IGZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXHRpZiAoIXJvb3RfaGFuZGxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtpbnZhbGlkIGFjcGkgaGFuZGxlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVx0XHRyZXR1cm4gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMi1cdFx0c3dpdGNoIChmdW5jKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzQtXHRcdFx0YWItXHUwMDNlYWNwaS5mdW5jX2JpdCA9IG9iai1cdTAwM2VpbnRlZ2VyLnZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19ESVNBQkxFX0ZMQUc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNy1cdFx0XHRhYi1cdTAwM2VhY3BpLmJpdF9mbGFnID0gb2JqLVx1MDAzZWludGVnZXIudmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDEtXHRcdHN3aXRjaCAoZnVuYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDI6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzOlx0XHRcdGlmIChvYmotXHUwMDNlc3RyaW5nLmxlbmd0aCBcdTAwM2M9IEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ6XHRcdFx0ICAgIG9iai1cdTAwM2VzdHJpbmcubGVuZ3RoIFx1MDAzZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU6XHRcdFx0ICAgIG1lbWNtcChvYmotXHUwMDNlc3RyaW5nLnBvaW50ZXIsIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDY6XHRcdFx0XHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ny1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01OS1cdFx0c3dpdGNoIChmdW5jKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjE6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoIFx1MDAzYyBBVEgxMktfQUNQSV9EU01fRlVOQ19NSU5fQklUTUFQX1NJWkUgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYyOlx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCBcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02My1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNzMtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NzU6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc2LVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04NS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg2Olx0XHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6ODc6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OC1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk3LVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6OTg6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo5OTpcdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAwLVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwOS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExMDpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTExOlx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMi1cdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyMS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEyMjpcdFx0Y2FzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0E6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjM6XHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjQtXHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzMtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMzQ6XHRcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM1Olx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM2LVx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTYxPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY2Olx0aWYgKHRhc19zYXJfcG93ZXJfdGFibGVbMF0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY3Olx0ICAgIHRhc19zYXJfcG93ZXJfdGFibGVbMV0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjgtXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzMtXHRcdFx0XHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc0Olx0XHRcdFx0ICAgICAgQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTE4Mz1zdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4NzpcdGlmIChhYi1cdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMF0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg4Olx0ICAgIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVsxXSAhPSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBRykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg5LVx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBsYXRlc3QgQUNQSSBCSU9TIFNBUiBkYXRhXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yMDI9c3RhdGljIHZvaWQgYXRoMTJrX2FjcGlfZHNtX25vdGlmeShhY3BpX2hhbmRsZSBoYW5kbGUsIHUzMiBldmVudCwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDc6XHRpZiAoZXZlbnQgPT0gQVRIMTJLX0FDUElfTk9USUZZX0VWRU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDgtXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt1bmtub3duIGFjcGkgbm90aWZ5ICV1XFxuXCYjMzQ7LCBldmVudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVx0aWYgKCFhYi1cdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxOC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzI6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yNjQ9c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2OS1cdFx0XHRcdCAgICAgIGFiLVx1MDAzZWFjcGkudGFzX2NmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MDpcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjcxLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3OC1cdFx0XHRcdCAgICAgIGFiLVx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3OTpcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0yOTk9dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjQtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX2NjYV9lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNTpcdFx0YnVmID0gYWItXHUwMDNlYWNwaS5jY2FfZGF0YSAmIzQzOyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNi1cdFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI4LVx0XHRcdFx0XHQgICAgICBidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMjk6XHRcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYz0zNTE9aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzY5Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NTpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM4MjpcdFx0aWYgKEFUSDEyS19BQ1BJX0NIRUtfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODM6XHRcdFx0XHRcdCAgICAgICBBVEgxMktfQUNQSV9EU01fRElTQUJMRV8xMUJFX0JJVCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODQtXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX2Rpc2FibGVfMTFiZSA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODY6XHRcdGlmICghQVRIMTJLX0FDUElfQ0hFS19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM4NzpcdFx0XHRcdFx0XHRBVEgxMktfQUNQSV9EU01fRElTQUJMRV9SRktJTExfQklUKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4OC1cdFx0XHRhYi1cdTAwM2VhY3BpLmFjcGlfZGlzYWJsZV9yZmtpbGwgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MTpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVx0XHRpZiAocmV0IHx8IGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAmIzM5O1xcMCYjMzk7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAxOlx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDk6XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTA6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDExLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDE2Olx0XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTc6XHRcdCAgICBhYi1cdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGVbMF0gPT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZVsxXSA9PSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTktXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMjpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzA6XHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfR0VPX09GRlNFVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzNzpcdFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVswXSA9PSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9WRVJTSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDM5Olx0XHQgICAgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdID09IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQwLVx0XHQgICAgIWFiLVx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NDpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDU6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0Ni1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1MjpcdFx0aWYgKGFiLVx1MDAzZWFjcGkuY2NhX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDUzOlx0XHQgICAgYWItXHUwMDNlYWNwaS5jY2FfZGF0YVtBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVF0gPT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1NDpcdFx0ICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTUtXHRcdFx0YWItXHUwMDNlYWNwaS5hY3BpX2NjYV9lbmFibGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1ODpcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU5Olx0XHRcdFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Njc6XHRcdGlmIChhYi1cdTAwM2VhY3BpLmJhbmRfZWRnZV9wb3dlclswXSA9PSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2ODpcdFx0ICAgIGFiLVx1MDAzZWFjcGkuYmFuZF9lZGdlX3Bvd2VyWzFdID09IEFUSDEyS19BQ1BJX0JBTkRfRURHRV9FTkFCTEVfRkxBRylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2OS1cdFx0XHRhYi1cdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9NDg1PWludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVx0aWYgKHN0cnNjcHkoYWItXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmcgJiM0MzsgNCwgbWF4X2xlbikgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0OTM6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5NC1cdFx0XHQgICBcJiMzNDthY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NjojaWZuZGVmIEFUSDEyS19BQ1BJX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc6I2RlZmluZSBBVEgxMktfQUNQSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTE6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTXHQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBR1x0MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTM6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUXHRcdDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE0OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVJcdFx0NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTU6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19HRU9fT0ZGU0VUXHRcdDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE2OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBXHRcdDZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE3OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGR1x0XHQ4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxODojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBXHRcdDlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE5OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFXHRcdDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjIxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjI6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUXHRcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyMzojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSXHRcdFx0QklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyNDojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVRcdFx0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI1OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBXHRcdFx0QklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoyNjojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkdcdFx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI3OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEFcdFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI4OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVJcdEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMDojZGVmaW5lIEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVFx0XHRcdDB4ODZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjMxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoX2FjZGF0YSwgX2Z1bmMpXHQoKChfYWNkYXRhKS5mdW5jX2JpdCkgXHUwMDI2IChfZnVuYykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMjojZGVmaW5lIEFUSDEyS19BQ1BJX0NIRUtfQklUX1ZBTElEKF9hY2RhdGEsIF9mdW5jKVx0KCgoX2FjZGF0YSkuYml0X2ZsYWcpIFx1MDAyNiAoX2Z1bmMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozNDojZGVmaW5lIEFUSDEyS19BQ1BJX1RBU19EQVRBX1ZFUlNJT05cdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozNTojZGVmaW5lIEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRVx0XHQweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM2OiNkZWZpbmUgQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTlx0XHQweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM3OiNkZWZpbmUgQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUdcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzg6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX1ZFUlNJT05cdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozOTojZGVmaW5lIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUdcdFx0MHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0MDojZGVmaW5lIEFUSDEyS19BQ1BJX0JBTkRfRURHRV9WRVJTSU9OXHRcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDE6I2RlZmluZSBBVEgxMktfQUNQSV9CQU5EX0VER0VfRU5BQkxFX0ZMQUdcdDB4MVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0MzojZGVmaW5lIEFUSDEyS19BQ1BJX0dFT19PRkZTRVRfREFUQV9PRkZTRVRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ0OiNkZWZpbmUgQVRIMTJLX0FDUElfREJTX0JBQ0tPRkZfREFUQV9PRkZTRVRcdDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ1OiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVRcdDVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ2OiNkZWZpbmUgQVRIMTJLX0FDUElfQklPU19TQVJfREJTX0JBQ0tPRkZfTEVOXHQxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVFx0MTJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ4OiNkZWZpbmUgQVRIMTJLX0FDUElfQklPU19TQVJfR0VPX09GRlNFVF9MRU5cdDE4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0OTojZGVmaW5lIEFUSDEyS19BQ1BJX0JJT1NfU0FSX1RBQkxFX0xFTlx0XHQyMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTA6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9MRU5cdFx0MzZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTI6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRVx0XHRcdDY5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFXHRcdFx0MTA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjU2OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUlOX0JJVE1BUF9TSVpFXHQxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1NzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX01BWF9CSVRNQVBfU0laRVx0NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1OTojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9ESVNBQkxFXzExQkVfQklUXHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYwOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC02MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYyOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOXHQzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2MzojZGVmaW5lIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HXHRcdFwmIzM0O0JERlwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NjQ6I2RlZmluZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTlx0XHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfR0VPX09GRlNFVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njc6XHRcdFx0XHRcdCAgICAgIEFUSDEyS19BQ1BJX0JJT1NfU0FSX0dFT19PRkZTRVRfTEVOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njg6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fQklPU19TQVJfREFUQV9TSVpFIChBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Njk6XHRcdFx0XHRcdCAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3MDojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFIChBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVCAmIzQzOyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzE6XHRcdFx0XHQgICAgICAgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfTEVOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg9MTA3PXN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMTQ6I2VuZGlmIC8qIEFUSDEyS19BQ1BJX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDojZGVmaW5lIEFUSDEyS19JUlFfQ0UwX09GRlNFVCA0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxOiNkZWZpbmUgQVRIMTJLX1VQRF9JUlFfV1JEX0xFTiAgMThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2FoYl9kcml2ZXIgKmF0aDEya19haGJfZmFtaWx5X2RyaXZlcnNbQVRIMTJLX0RFVklDRV9GQU1JTFlfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQtc3RhdGljIGNvbnN0IGNoYXIgYXRoMTJrX3VzZXJwZF9pcnFbXVs5XSA9IHtcJiMzNDtzcGF3blwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQyPXN0YXRpYyBERUZJTkVfTVVURVgoYXRoMTJrX3Jwcm9jX2luZm9fbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0NDpzdGF0aWMgY29uc3QgY2hhciAqaXJxX25hbWVbQVRIMTJLX0lSUV9OVU1fTUFYXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDUtXHRcJiMzNDttaXNjLXB1bHNlMVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTE3OD1zdGF0aWMgdm9pZCBfX2F0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE4MjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODMtXHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTI2MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjk6XHRcdGlycV9pZHggPSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgJiM0MzsgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcwLVx0XHRzeW5jaHJvbml6ZV9pcnEoYWItXHUwMDNlaXJxX251bVtpcnFfaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0yNzQ9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3OTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODAtXHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMxOT1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMyNDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjUtXHRcdGlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTM0MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzQyOlx0aWYgKCF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQzLVx0XHRhdGgxMmtfYWhiX2NlX2lycXNfZGlzYWJsZShhYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zNTA9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNTItXHRzdHJ1Y3QgYXRoMTJrX2FoYiAqYWJfYWhiID0gYXRoMTJrX2FiX3RvX2FoYihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM1MzpcdGNoYXIgZndfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzU0Olx0Y2hhciBmdzJfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzU1LVx0c3RydWN0IGRldmljZSAqZGV2ID0gYWItXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNzk6XHRzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksIFwmIzM0OyVzLyVzLyVzJWQlc1wmIzM0OywgQVRIMTJLX0ZXX0RJUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzgwOlx0XHQgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWZ3LmRpciwgQVRIMTJLX0FIQl9GV19QUkVGSVgsIGFiX2FoYi1cdTAwM2V1c2VycGRfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM4MTpcdFx0IEFUSDEyS19BSEJfRldfU1VGRklYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozODk6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7Qm9vdGluZyBmdyBpbWFnZSAlcywgc2l6ZSAlemRcXG5cJiMzNDssIGZ3X25hbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5MC1cdFx0ICAgZnctXHUwMDNlc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5ODpcdHBhc2lkID0gKHUzMl9lbmNvZGVfYml0cyhhYl9haGItXHUwMDNldXNlcnBkX2lkLCBBVEgxMktfVVNFUlBEX0lEX01BU0spKSB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5OTpcdFx0QVRIMTJLX0FIQl9VUERfU1dJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTM6XHRzbnByaW50ZihmdzJfbmFtZSwgc2l6ZW9mKGZ3Ml9uYW1lKSwgXCYjMzQ7JXMvJXMvJXNcJiMzNDssIEFUSDEyS19GV19ESVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQxNDpcdFx0IGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vmdy5kaXIsIEFUSDEyS19BSEJfRlcyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MjI6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7Qm9vdGluZyBmdyBpbWFnZSAlcywgc2l6ZSAlemRcXG5cJiMzNDssIGZ3Ml9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjMtXHRcdCAgIGZ3Mi1cdTAwM2VzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ1NS1cdHRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhYl9haGItXHUwMDNldXNlcnBkX3NwYXduZWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ1NjpcdFx0XHRcdFx0XHRBVEgxMktfVVNFUlBEX1NQQVdOX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NTctXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDYzLVx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfcmVhZHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ2NDpcdFx0XHRcdFx0XHRBVEgxMktfVVNFUlBEX1JFQURZX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NjUtXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0NzM6XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0FIQiwgXCYjMzQ7VXNlclBEJWQgaXMgbm93IFVQXFxuXCYjMzQ7LCBhYl9haGItXHUwMDNldXNlcnBkX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9NDgyPXN0YXRpYyB2b2lkIGF0aDEya19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTItXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWJfYWhiLVx1MDAzZXVzZXJwZF9zdG9wcGVkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0OTM6XHRcdFx0XHRcdFx0QVRIMTJLX1VTRVJQRF9TVE9QX1RJTUVPVVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTQtXHRpZiAoIXRpbWVfbGVmdCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTAxLVx0aWYgKGFiX2FoYi1cdTAwM2VzY21fYXV0aF9lbmFibGVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjUwMjpcdFx0cGFzaWQgPSAodTMyX2VuY29kZV9iaXRzKGFiX2FoYi1cdTAwM2V1c2VycGRfaWQsIEFUSDEyS19VU0VSUERfSURfTUFTSykpIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAzOlx0XHRcdCBBVEgxMktfQUhCX1VQRF9TV0lEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01MDQtXHRcdC8qIFJlbGVhc2UgdGhlIGZpcm13YXJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz01ODE9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01ODgtXHRyaW5nX21hc2sgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlcmluZ19tYXNrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo1ODk6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTkwLVx0XHRpcnFfZ3JwID0gXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDUtXHRcdFx0ICAgIEJJVChhYi1cdTAwM2VoYWwudGNsX3RvX3dibV9yYm1fbWFwW2pdLndibV9yaW5nX251bSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjYwNjpcdFx0XHQgICAgbnVtX2lycSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDctXHRcdFx0XHRpcnFfZ3JwLVx1MDAzZWlycXNbbnVtX2lycSYjNDM7JiM0MztdID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjEyOlx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MTMtXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MTQ6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjE1LVx0XHRcdFx0aXJxX2dycC1cdTAwM2VpcnFzW251bV9pcnEmIzQzOyYjNDM7XSA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MTktXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeF9lcnJbaV0gXHUwMDI2IEJJVChqKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjIwOlx0XHRcdCAgICBudW1faXJxIFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjEtXHRcdFx0XHRpcnFfZ3JwLVx1MDAzZWlycXNbbnVtX2lycSYjNDM7JiM0MztdID0gcmVvMmhvc3RfZXhjZXB0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjIzLVx0XHRcdGlmIChyaW5nX21hc2stXHUwMDNlcnhfd2JtX3JlbFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MjQ6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyNS1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPSB3Ym0yaG9zdF9yeF9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjI3LVx0XHRcdGlmIChyaW5nX21hc2stXHUwMDNlcmVvX3N0YXR1c1tpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2Mjg6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyOS1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPSByZW8yaG9zdF9zdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MzEtXHRcdFx0aWYgKHJpbmdfbWFzay1cdTAwM2VyeF9tb25fZGVzdFtpXSBcdTAwMjYgQklUKGopIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MzI6XHRcdFx0ICAgIG51bV9pcnEgXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMy1cdFx0XHRcdGlycV9ncnAtXHUwMDNlaXJxc1tudW1faXJxJiM0MzsmIzQzO10gPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9NjU4PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjY3MDpcdFx0aXJxX2lkeCA9IEFUSDEyS19JUlFfQ0UwX09GRlNFVCAmIzQzOyBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MzY9c3RhdGljIGlycXJldHVybl90IGF0aDEya191c2VycGRfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQxOlx0aWYgKGlycSA9PSBhYl9haGItXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TUEFXTl9JUlFdKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Mi1cdFx0Y29tcGxldGUoXHUwMDI2YWJfYWhiLVx1MDAzZXVzZXJwZF9zcGF3bmVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQzOlx0fSBlbHNlIGlmIChpcnEgPT0gYWJfYWhiLVx1MDAzZXVzZXJwZF9pcnFfbnVtW0FUSDEyS19VU0VSUERfUkVBRFlfSVJRXSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NDQtXHRcdGNvbXBsZXRlKFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfcmVhZHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NDU6XHR9IGVsc2UgaWYgKGlycSA9PSBhYl9haGItXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TVE9QX0FDS19JUlFdKVx0e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NDYtXHRcdGNvbXBsZXRlKFx1MDAyNmFiX2FoYi1cdTAwM2V1c2VycGRfc3RvcHBlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03NTU9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19ycHJvY19pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzYxOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX1VTRVJQRF9NQVhfSVJROyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjItXHRcdGFiX2FoYi1cdTAwM2V1c2VycGRfaXJxX251bVtpXSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKGFiLVx1MDAzZXBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjc2NzpcdFx0dXBkX2lycV9uYW1lID0gZGV2bV9remFsbG9jKFx1MDAyNmFiLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjgtXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzcyOlx0XHRzY25wcmludGYodXBkX2lycV9uYW1lLCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLCBcJiMzNDtVc2VyUEQldS0lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzczLVx0XHRcdCAgYWJfYWhiLVx1MDAzZXVzZXJwZF9pZCwgYXRoMTJrX3VzZXJwZF9pcnFbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODAyPXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9yb290X3BkX3N0YXRlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjgwODpcdGlmIChldmVudCA9PSBBVEgxMktfUlBST0NfQUZURVJfUE9XRVJVUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo4MDk6XHRcdGF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX0FIQiwgXCYjMzQ7Um9vdCBQRCBpcyBVUFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTgxMC1cdFx0Y29tcGxldGUoXHUwMDI2cnByb2NfaW5mby1cdTAwM2Vyb290cGRfcmVhZHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODg2PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9nZXRfcnByb2Moc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTg5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODk2Olx0aWYgKGFiX2FoYi1cdTAwM2V1c2VycGRfaWQgXHUwMDNlIEFUSDEyS19NQVhfREVWSUNFUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODk3LVx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTg5OS1cdGlmIChnX3Jwcm9jX2luZm8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6OTAwOlx0XHRpZiAoZ19ycHJvY19pbmZvLVx1MDAzZW51bV91c2VycGQgXHUwMDNlPSBBVEgxMktfTUFYX0RFVklDRVMpIHtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjg4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBVEgxMksgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvciBjb2RlIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEFUSDEySyB3aXJlbGVzcyBkcml2ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgY2x1ZXMgYXJlIGhpZGluZyBpbiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGVuYWJsZS9kaXNhYmxlIG9wdGlvbnMgYW5kIGFueSBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBTbywgbGV0IG1lIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLiBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCB0aGUgUENJLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jYC4gSG9wZWZ1bGx5LCBiZXR3ZWVuIHRoZXNlIHR3byBmaWxlcywgSSBjYW4gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uIGFuZCBwaW5wb2ludCB0aGUgc291cmNlIG9mIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIEFUSDEyS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbiAgIDU6XHRcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXG4gICA2Olx0XHRzZWxlY3QgTUhJX0JVU1xuICAgNzpcdFx0c2VsZWN0IFFSVFJcbiAgIDg6XHRcdHNlbGVjdCBRUlRSX01ISVxuICAgOTpcdFx0c2VsZWN0IFBDSV9QV1JDVFJMX1BXUlNFUSBpZiBIQVZFX1BXUkNUUkxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRW5hYmxlIHN1cHBvcnQgZm9yIFF1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IChJRUVFXG4gIDEyOlx0XHQgIDgwMi4xMWJlKSBmYW1pbHkgb2YgY2hpcHNldHMsIGZvciBleGFtcGxlIFdDTjc4NTAgYW5kXG4gIDEzOlx0XHQgIFFDTjkyNzQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBBVEgxMktfQUhCXG4gIDE4Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0NcbiAgMjA6XHRcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBRQ09NX1BBU1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgQXRoMTJrIEFIQiBidXMgY2hpcHNldHMsIGV4YW1wbGUgSVBRNTMzMi5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgQVRIMTJLX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIEVuYWJsZSBkZWJ1ZyBzdXBwb3J0LCBmb3IgZXhhbXBsZSBkZWJ1ZyBtZXNzYWdlcyB3aGljaCBtdXN0XG4gIDMwOlx0XHQgIGJlIGVuYWJsZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyLlxuICAzMTpcdFxuICAzMjpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgMzM6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgQVRIMTJLX0RFQlVHRlNcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbiAgNDA6XHRcbiAgNDE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDQyOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXG4gIDQ1Olx0XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDUxOlx0XHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXG4gIDUyOlx0XG4gIDUzOlx0Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuICA1NDpcdFx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbiAgNTU6XHRcdGRlcGVuZHMgb24gQVRIMTJLXG4gIDU2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgNTc6XHRcdGhlbHBcbiAgNTg6XHRcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDIzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogODA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQXBwbGljYWJpbGl0eTogVGhlIEF0aDEyayBDb251bmRydW0qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHJ1bGVzIGFyZSBjbGVhcjogY2hhbmdlcyBhcmUgKipub3QqKiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkmIzM5O3JlIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIGRlY29yYXRpdmUgbG9nZ2luZywgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGF0aDEyay4gSXMgaXQgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgUUVNVSBvciBldmVuIHdpdGggY2xldmVyIHRyaWNrcyBsaWtlIGB1c2IgZ2FkZ2V0YCBvciBgbWFjODAyMTFfaHdzaW1gPwoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCB0aGlzIGlzIGEgUXVhbGNvbW0gV2ktRmkgNyBjaGlwc2V0IGRyaXZlciwgYW5kIGl0JiMzOTtzIFBDSWUgb3IgQUhCIGJhc2VkLiBJdCYjMzk7cyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUgKFdDTjc4NTAsIFFDTjkyNzQsIElQUTUzMzIsIGV0Yy4pIGFuZCByZWxpZXMgb24gTUhJIGJ1cywgUU1JLCBhbmQgZmlybXdhcmUgbG9hZGluZy4gU3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQuIEl0IGVtdWxhdGVzIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgbmV0d29ya2luZywgYnV0IGRlZmluaXRlbHkgbm90IGF0aDEyay4gQW5kIG5vLCBtYWM4MDIxMV9od3NpbSBpcyBhIHNvZnR3YXJlIHNpbXVsYXRvciAtIHRvdGFsbHkgc2VwYXJhdGUgZnJvbSBhdGgxMmsuCgpPa2F5LCBsZXQmIzM5O3MgYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgcnVsZXMgZXhwbGljaXRseSBleGNsdWRlIGNvZGUgdGhhdCYjMzk7cyB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEl04oCZcyBhbHNvIHZlcnkgY2xlYXIgYWJvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycy4gTGV0JiMzOTtzIGxvb2sgYWdhaW4gYXQgdGhlIGZpbGUgc3RydWN0dXJlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgaXMgc3RyaWN0bHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgb3IgaWYgdGhlcmUmIzM5O3MgYW55IHByZXRlbnNlIG9mIHZpcnR1YWwgc3VwcG9ydC4gTm8gZW11bGF0ZWQgaGFyZHdhcmUgbWVhbnMgbm8gZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaS5jJiMzNDssCiAgICAmIzM0O2FjcGkuaCYjMzQ7LAogICAgJiMzNDthaGIuYyYjMzQ7LAogICAgJiMzNDthaGIuaCYjMzQ7LAogICAgJiMzNDtjZS5jJiMzNDssCiAgICAmIzM0O2NlLmgmIzM0OywKICAgICYjMzQ7Y21uX2RlZnMuaCYjMzQ7LAogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7Y29yZS5oJiMzNDssCiAgICAmIzM0O2NvcmVkdW1wLmMmIzM0OywKICAgICYjMzQ7Y29yZWR1bXAuaCYjMzQ7LAogICAgJiMzNDtkYnJpbmcuYyYjMzQ7LAogICAgJiMzNDtkYnJpbmcuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Zy5jJiMzNDssCiAgICAmIzM0O2RlYnVnLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX2h0dF9zdGF0cy5jJiMzNDssCiAgICAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmgmIzM0OywKICAgICYjMzQ7ZGVidWdmc19zdGEuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzX3N0YS5oJiMzNDssCiAgICAmIzM0O2RwLmMmIzM0OywKICAgICYjMzQ7ZHAuaCYjMzQ7LAogICAgJiMzNDtkcF9jbW4uaCYjMzQ7LAogICAgJiMzNDtkcF9odHQuYyYjMzQ7LAogICAgJiMzNDtkcF9odHQuaCYjMzQ7LAogICAgJiMzNDtkcF9tb24uYyYjMzQ7LAogICAgJiMzNDtkcF9tb24uaCYjMzQ7LAogICAgJiMzNDtkcF9wZWVyLmMmIzM0OywKICAgICYjMzQ7ZHBfcGVlci5oJiMzNDssCiAgICAmIzM0O2RwX3J4LmMmIzM0OywKICAgICYjMzQ7ZHBfcnguaCYjMzQ7LAogICAgJiMzNDtkcF90eC5jJiMzNDssCiAgICAmIzM0O2RwX3R4LmgmIzM0OywKICAgICYjMzQ7ZncuYyYjMzQ7LAogICAgJiMzNDtmdy5oJiMzNDssCiAgICAmIzM0O2hhbC5jJiMzNDssCiAgICAmIzM0O2hhbC5oJiMzNDssCiAgICAmIzM0O2hpZi5oJiMzNDssCiAgICAmIzM0O2h0Yy5jJiMzNDssCiAgICAmIzM0O2h0Yy5oJiMzNDssCiAgICAmIzM0O2h3LmgmIzM0OywKICAgICYjMzQ7bWFjLmMmIzM0OywKICAgICYjMzQ7bWFjLmgmIzM0OywKICAgICYjMzQ7bWhpLmMmIzM0OywKICAgICYjMzQ7bWhpLmgmIzM0OywKICAgICYjMzQ7cDJwLmMmIzM0OywKICAgICYjMzQ7cDJwLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpLmgmIzM0OywKICAgICYjMzQ7cGVlci5jJiMzNDssCiAgICAmIzM0O3BlZXIuaCYjMzQ7LAogICAgJiMzNDtxbWkuYyYjMzQ7LAogICAgJiMzNDtxbWkuaCYjMzQ7LAogICAgJiMzNDtyZWcuYyYjMzQ7LAogICAgJiMzNDtyZWcuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3Rlc3Rtb2RlLmgmIzM0OywKICAgICYjMzQ7dGhlcm1hbC5jJiMzNDssCiAgICAmIzM0O3RoZXJtYWwuaCYjMzQ7LAogICAgJiMzNDt0cmFjZS5jJiMzNDssCiAgICAmIzM0O3RyYWNlLmgmIzM0OywKICAgICYjMzQ7d21pLmMmIzM0OywKICAgICYjMzQ7d21pLmgmIzM0OywKICAgICYjMzQ7d293LmMmIzM0OywKICAgICYjMzQ7d293LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7d2lmaTcmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDgyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBNQUMgTGF5ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTUFDIGxheWVyIGlzIGJlaW5nIGluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBwY2kuY2AgYW5kIGBtYWMuY2AgZmlsZXMuIEkgc3VzcGVjdCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIFBDSS1yZWxhdGVkIHNldHVwIGFuZCBNQUMtc3BlY2lmaWMgZnVuY3Rpb25zIHJlc2lkZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byB0cmFjayB0aGUgY2FsbHMgdG8gYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIGFuZCBgYXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0YC4gVGhleSBzb3VuZCBsaWtlIGtleSBmdW5jdGlvbnMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBoYXJkd2FyZSBhbmQgc2V0dGluZyB1cCB0aGUgTUFDIGFkZHJlc3MgbGlzdCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgaWRlbnRpZnlpbmcgdGhpcyBwYXJ0aWN1bGFyIGRldmljZSBvbiB0aGUgbmV0d29yay4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkgYXJlIGJlaW5nIGNhbGxlZCB0byBncmFzcCB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgYmVpbmcgY29uZmlndXJlZCB3aXRoIE1BQyBhZGRyZXNzZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhbGwgc2l0ZXMgb2YgYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIHRvIGRldGVybWluZSB0aGUgcHJvZ3JhbSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfbWFjX2h3X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDc1Nj1zdGF0aWMgaW50IGF0aDEya19tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ3OTA6c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNTMwNT1pbnQgYXRoMTJrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTMxNDpcdFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzE1LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9Njk1OT1zdGF0aWMgaW50IGF0aDEya19yZWdfY2hhbl9saXN0X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03MDM3LVx0ICogc28gdGhlIGNvbXBsZXRpb24gY2Fubm90IGJlIG1hcmtlZCBhdCB0aGF0IHBvaW50LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3MDM4Olx0ICogVGhpcyBib290LXRpbWUgdXBkYXRlIGlzIGhhbmRsZWQgaW4gYXRoMTJrX21hY19od19yZWdpc3RlcigpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTcwMzktXHQgKiBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAwMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg4OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA1MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBhdGgxMmsgRHJpdmVyKioKCk9rYXksIHNvIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBpcyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzIFF1YWxjb21tIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfc3RhcnRgIG9yIGBhdGgxMmtfY29yZV9zdGFydGAgZnVuY3Rpb25zLCBvciBkdXJpbmcgdGhlIGRyaXZlciBwcm9iZS4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgdGllZCB0byBhY3R1YWwgUXVhbGNvbW0gaGFyZHdhcmUuIExldCBtZSBjb25maXJtLi4uIHllcywgaXQmIzM5O3MgYSBXaS1GaSA3IGRyaXZlciBkZXNpZ25lZCBmb3IgUENJZSBhbmQgQUhCIGF0dGFjaGVkIGhhcmR3YXJlIGxpa2UgdGhlIFdDTjc4NTAgYW5kIFFDTjkyNzQuCgpUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIFF1YWxjb21tIFNvQy4gVGhpcyBtZWFucyBpdCBjYW4mIzM5O3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgZXZlbiBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3Igc3l6a2FsbGVyLiBTb2Z0d2FyZSBlbXVsYXRpb24sIHN1Y2ggYXMgd2hhdCBgbWFjODAyMTFfaHdzaW1gIGRvZXMsIHVzZXMgaXRzIG93biBkcml2ZXIsIGRpc3RpbmN0IGZyb20gYGF0aDEya2AuCgpOb3csIHJldmlld2luZyB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgZXhjbHVzaW9uIGd1aWRlbGluZXMsIGxpbmUgYnkgbGluZSwgdG8gZW5zdXJlIG5vIG92ZXJzaWdodC4KClRoZSBwYXRjaCBmYWxscyBzcXVhcmVseSB1bmRlciB0aGVzZSBydWxlczoKCiogICAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7IC0gYGF0aDEya2AgaXMgb3V0IGJlY2F1c2Ugb2YgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kuCiogICAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyAtIGBhdGgxMmtgIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBhbmQgcmVxdWlyZXMgUENJZSBoYXJkd2FyZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHRoZSBhbnN3ZXIgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgbG9nZ2VkIHdpdGggdGhlIGBzZXQtcmVzdWx0c2AgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMDA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTJrIFdpLUZpIDcgZHJpdmVyIChhdGgxMmsvbWFjLmMpIHRvIHNldCB1cCBNQUMgYWRkcmVzcyBsaXN0cyBmb3Igc2luZ2xlLXJhZGlvIHdpcGh5IGluc3RhbmNlcy4gVGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDAwOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMS45MjIwODA3MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjE5MzI1MjI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMmsgV2ktRmkgNyBkcml2ZXIgKGF0aDEyay9tYWMuYykgdG8gc2V0IHVwIE1BQyBhZGRyZXNzIGxpc3RzIGZvciBzaW5nbGUtcmFkaW8gd2lwaHkgaW5zdGFuY2VzLiBUaGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMS45MjIxMTM0NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDkwNjc4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZWUwOGIyMDY3ZmRhOTRkOTVlODVhYjYxYzZjYzMzY2EwM2Y0ZThjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzA6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5pbmRleCA5YTc3NTYwMjc3NWQ2Li5iZWU2NzAxZjEwMjk0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTE0Njg1LDYgKzE0Njg1LDUwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfY2xlYW51cF91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyKVxcbiBcXHRrZnJlZShhci1cXHUwMDNlbWFjLnNiYW5kc1tOTDgwMjExX0JBTkRfNkdIWl0uY2hhbm5lbHMpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG4re1xcbitcXHRrZnJlZShhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VhZGRyZXNzZXMpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3Qoc3RydWN0IGF0aDEya19odyAqYWgsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICptYWNfYWRkcilcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrICphciA9IGF0aDEya19haF90b19hcihhaCwgMCk7XFxuK1xcdHN0cnVjdCBtYWNfYWRkcmVzcyAqYWRkcmVzc2VzO1xcbitcXHR1MTYgbl9hZGRyZXNzZXM7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0LyogVGhlIHBvb2wgaXMgZGVyaXZlZCBmcm9tIG9uZSBiYXNlIGFkZHJlc3MsIHNvIGl0IGNhbiBkZXNjcmliZSBvbmx5IGFcXG4rXFx0ICogc2luZ2xlLXJhZGlvIHdpcGh5OiB3aXRoIG1vcmUgcmFkaW9zIGVhY2ggcmFkaW8gaGFzIGl0cyBvd24gYmFzZVxcbitcXHQgKiBhZGRyZXNzLCBwb3NzaWJseSBmcm9tIGEgZGlmZmVyZW50IGF0aDEya19iYXNlLlxcbitcXHQgKi9cXG4rXFx0aWYgKGFoLVxcdTAwM2VudW1fcmFkaW8gIT0gMSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LyogT25seSB0aGUgdXBwZXIgbmliYmxlIG9mIHRoZSBmaXJzdCBvY3RldCBpcyB2YXJpZWQsIHNvIGF0IG1vc3QgMTZcXG4rXFx0ICogYWRkcmVzc2VzIGNhbiBiZSBkZXJpdmVkIGZyb20gb25lIGJhc2UuXFxuK1xcdCAqL1xcbitcXHRuX2FkZHJlc3NlcyA9IG1pbl90KHUxNiwgVEFSR0VUX05VTV9WREVWUyhhci1cXHUwMDNlYWIpLCAxNik7XFxuK1xcdGlmIChuX2FkZHJlc3NlcyBcXHUwMDNjPSAxKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRhZGRyZXNzZXMgPSBremFsbG9jX29ianMoKmFkZHJlc3Nlcywgbl9hZGRyZXNzZXMpO1xcbitcXHRpZiAoIWFkZHJlc3NlcylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXRoZXJfYWRkcl9jb3B5KGFkZHJlc3Nlc1swXS5hZGRyLCBtYWNfYWRkcik7XFxuK1xcdGZvciAoaSA9IDE7IGkgXFx1MDAzYyBuX2FkZHJlc3NlczsgaSsrKSB7XFxuK1xcdFxcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbaV0uYWRkciwgbWFjX2FkZHIpO1xcbitcXHRcXHQvKiBzZXQgTG9jYWwgQWRtaW5pc3RlcmVkIEFkZHJlc3MgYml0ICovXFxuK1xcdFxcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdIHw9IDB4MjtcXG4rXFxuK1xcdFxcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdICs9IGkgXFx1MDAzY1xcdTAwM2MgNDtcXG4rXFx0fVxcbitcXG4rXFx0YWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYWRkcmVzc2VzID0gYWRkcmVzc2VzO1xcbitcXHRhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cXHUwMDNlaHc7XFxuQEAgLTE0NzA0LDYgKzE0NzQ4LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19od191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxcbiBcXHRcXHRhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3Rlcihhcik7XFxuIFxcbiBcXHRhdGgxMmtfbWFjX2NsZWFudXBfaWZhY2VfY29tYmluYXRpb25zKGFoKTtcXG4rXFx0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xcbiBcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIE5VTEwpO1xcbiB9XFxuQEAgLTE0ODIwLDYgKzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxcbiBcXHR3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XFxuIFxcbiBcXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xcbitcXHRhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3QoYWgsIG1hY19hZGRyKTtcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGFiLVxcdTAwM2VkZXYpO1xcbiBcXG4gXFx0cmV0ID0gYXRoMTJrX21hY19zZXR1cF9pZmFjZV9jb21iaW5hdGlvbnMoYWgpO1xcbkBAIC0xNTA0MSw2ICsxNTA4Nyw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG4gXFx0XFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xcbiBcXHR9XFxuIFxcbitcXHRhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChhaCk7XFxuK1xcbiBcXHRTRVRfSUVFRTgwMjExX0RFVihodywgTlVMTCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoxMy40NzIxNTAyMDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMwNjQzMTY5MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTJrIFdpLUZpIDcgZHJpdmVyIChhdGgxMmsvbWFjLmMpIHRvIHNldCB1cCBNQUMgYWRkcmVzcyBsaXN0cyBmb3Igc2luZ2xlLXJhZGlvIHdpcGh5IGluc3RhbmNlcy4gVGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IFBDSWUvQUhCIGRldmljZXMgKGUuZy4sIFdDTjc4NTAsIFFDTjkyNzQpIHdoaWNoIGNhbm5vdCBiZSBlbXVsYXRlZCBvciByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWVlMDhiMjA2N2ZkYTk0ZDk1ZTg1YWI2MWM2Y2MzM2NhMDNmNGU4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDMgMDA6MzA6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOWE3NzU2MDI3NzVkNi4uYmVlNjcwMWYxMDI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xNDY4NSw2ICsxNDY4NSw1MCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2NsZWFudXBfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcbiBcdGtmcmVlKGFyLVx1MDAzZW1hYy5zYmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdLmNoYW5uZWxzKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3Qoc3RydWN0IGF0aDEya19odyAqYWgpXG4re1xuK1x0a2ZyZWUoYWgtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlYWRkcmVzc2VzKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0KHN0cnVjdCBhdGgxMmtfaHcgKmFoLFxuK1x0XHRcdFx0XHQgICAgICBjb25zdCB1OCAqbWFjX2FkZHIpXG4re1xuK1x0c3RydWN0IGF0aDEyayAqYXIgPSBhdGgxMmtfYWhfdG9fYXIoYWgsIDApO1xuK1x0c3RydWN0IG1hY19hZGRyZXNzICphZGRyZXNzZXM7XG4rXHR1MTYgbl9hZGRyZXNzZXM7XG4rXHRpbnQgaTtcbitcbitcdC8qIFRoZSBwb29sIGlzIGRlcml2ZWQgZnJvbSBvbmUgYmFzZSBhZGRyZXNzLCBzbyBpdCBjYW4gZGVzY3JpYmUgb25seSBhXG4rXHQgKiBzaW5nbGUtcmFkaW8gd2lwaHk6IHdpdGggbW9yZSByYWRpb3MgZWFjaCByYWRpbyBoYXMgaXRzIG93biBiYXNlXG4rXHQgKiBhZGRyZXNzLCBwb3NzaWJseSBmcm9tIGEgZGlmZmVyZW50IGF0aDEya19iYXNlLlxuK1x0ICovXG4rXHRpZiAoYWgtXHUwMDNlbnVtX3JhZGlvICE9IDEpXG4rXHRcdHJldHVybjtcbitcbitcdC8qIE9ubHkgdGhlIHVwcGVyIG5pYmJsZSBvZiB0aGUgZmlyc3Qgb2N0ZXQgaXMgdmFyaWVkLCBzbyBhdCBtb3N0IDE2XG4rXHQgKiBhZGRyZXNzZXMgY2FuIGJlIGRlcml2ZWQgZnJvbSBvbmUgYmFzZS5cbitcdCAqL1xuK1x0bl9hZGRyZXNzZXMgPSBtaW5fdCh1MTYsIFRBUkdFVF9OVU1fVkRFVlMoYXItXHUwMDNlYWIpLCAxNik7XG4rXHRpZiAobl9hZGRyZXNzZXMgXHUwMDNjPSAxKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRhZGRyZXNzZXMgPSBremFsbG9jX29ianMoKmFkZHJlc3Nlcywgbl9hZGRyZXNzZXMpO1xuK1x0aWYgKCFhZGRyZXNzZXMpXG4rXHRcdHJldHVybjtcbitcbitcdGV0aGVyX2FkZHJfY29weShhZGRyZXNzZXNbMF0uYWRkciwgbWFjX2FkZHIpO1xuK1x0Zm9yIChpID0gMTsgaSBcdTAwM2Mgbl9hZGRyZXNzZXM7IGkrKykge1xuK1x0XHRldGhlcl9hZGRyX2NvcHkoYWRkcmVzc2VzW2ldLmFkZHIsIG1hY19hZGRyKTtcbitcdFx0Lyogc2V0IExvY2FsIEFkbWluaXN0ZXJlZCBBZGRyZXNzIGJpdCAqL1xuK1x0XHRhZGRyZXNzZXNbaV0uYWRkclswXSB8PSAweDI7XG4rXG4rXHRcdGFkZHJlc3Nlc1tpXS5hZGRyWzBdICs9IGkgXHUwMDNjXHUwMDNjIDQ7XG4rXHR9XG4rXG4rXHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VhZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4rXHRhaC1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VuX2FkZHJlc3NlcyA9IG5fYWRkcmVzc2VzO1xuK31cbitcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX2h3X3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhaC1cdTAwM2VodztcbkBAIC0xNDcwNCw2ICsxNDc0OCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfaHdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xuIFxuIFx0YXRoMTJrX21hY19jbGVhbnVwX2lmYWNlX2NvbWJpbmF0aW9ucyhhaCk7XG4rXHRhdGgxMmtfbWFjX2NsZWFudXBfbWFjX2FkZHJlc3NfbGlzdChhaCk7XG4gXG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgTlVMTCk7XG4gfVxuQEAgLTE0ODIwLDYgKzE0ODY1LDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4ID0gYW50ZW5uYXNfdHg7XG4gXG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgbWFjX2FkZHIpO1xuK1x0YXRoMTJrX21hY19zZXR1cF9tYWNfYWRkcmVzc19saXN0KGFoLCBtYWNfYWRkcik7XG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgYWItXHUwMDNlZGV2KTtcbiBcbiBcdHJldCA9IGF0aDEya19tYWNfc2V0dXBfaWZhY2VfY29tYmluYXRpb25zKGFoKTtcbkBAIC0xNTA0MSw2ICsxNTA4Nyw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdFx0YXRoMTJrX21hY19jbGVhbnVwX3VucmVnaXN0ZXIoYXIpO1xuIFx0fVxuIFxuK1x0YXRoMTJrX21hY19jbGVhbnVwX21hY19hZGRyZXNzX2xpc3QoYWgpO1xuK1xuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIE5VTEwpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjEzLjQ3MjE1MjYwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyODMyNzgwNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCdzIGZ1enotd29ydGh5LiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jYC4gIFJpZ2h0LCB0aGF0J3MgdGhlIFF1YWxjb21tIFdpLUZpIDcgKDgwMi4xMWJlKSBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uIOKAkyBXaS1GaSBkcml2ZXJzIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBUaGUgbmV4dCBxdWVzdGlvbiBpczogQ2FuIEkgZXZlbiByZWFjaCB0aGlzIHRoaW5nIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtgIGlzIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIOKAkyBjYW4gSSB0ZXN0IHRoaXMgaW4gUUVNVSBvciBHQ0U/IFRoYXQncyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciBteSB3b3JrZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGl0IHN1cHBvcnRzLiBJcyBpdCBQQ0llPyBVU0I/IFVuZGVyc3RhbmRpbmcgdGhlIGludGVyZmFjZSBpcyBnb2luZyB0byBiZSB2aXRhbCB0byBzZXR0aW5nIHVwIGEgc3VpdGFibGUgdGVzdGluZyBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGFuZCByZWxhdGVkIGZpbGVzIHdpdGggYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kIG91dCBhYm91dCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBob3cgaXQncyBhY3RpdmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoyNi4zMDQ5NDM3OTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNTM5MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDEyS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzNDM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICs9IGF0aDEyay5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zLWF0aDEyay15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjU6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19BSEIpICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19BVEgxMkspICs9IHdpZmk3L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMwLWF0aDEyay0kKENPTkZJR19BQ1BJKSArPSBhY3BpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzItYXRoMTJrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzQtYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTExPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXFx0aWYgKCFyb290X2hhbmRsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5OlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImludmFsaWQgYWNwaSBoYW5kbGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNi1cXHRpZiAoIW9iaikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3OlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImFjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOC1cXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyLVxcdFxcdHN3aXRjaCAoZnVuYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DUzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNC1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5mdW5jX2JpdCA9IG9iai1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNy1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5iaXRfZmxhZyA9IG9iai1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxLVxcdFxcdHN3aXRjaCAoZnVuYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VzdHJpbmcubGVuZ3RoIFxcdTAwM2M9IEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0OlxcdFxcdFxcdCAgICBvYmotXFx1MDAzZXN0cmluZy5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9CREZfTUFYX0xFTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1OlxcdFxcdFxcdCAgICBtZW1jbXAob2JqLVxcdTAwM2VzdHJpbmcucG9pbnRlciwgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDY6XFx0XFx0XFx0XFx0ICAgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBCREYgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01OS1cXHRcXHRzd2l0Y2ggKGZ1bmMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MDpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1NVUFBPUlRfRlVOQ1M6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjE6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCBcXHUwMDNjIEFUSDEyS19BQ1BJX0RTTV9GVU5DX01JTl9CSVRNQVBfU0laRSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYyOlxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02My1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTczLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjc0OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0NGRzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NTpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ni1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg2OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEE6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6ODc6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg4LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk3LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjk4OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6OTk6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQklPU19TQVJfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAwLVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIEJJT1MgU0FSIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMDktXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTEwOlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTE6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTItXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIxLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEyMjpcXHRcXHRjYXNlIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0NDQTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjM6XFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNC1cXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gQ0NBIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzMtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM0OlxcdFxcdGNhc2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEzNTpcXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM2LVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTE2MT1zdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2NjpcXHRpZiAodGFzX3Nhcl9wb3dlcl90YWJsZVswXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9WRVJTSU9OIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTY3OlxcdCAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlWzFdICE9IEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OC1cXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImxhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTczLVxcdFxcdFxcdFxcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc0OlxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MTgzPXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg3OlxcdGlmIChhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzBdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX1ZFUlNJT04gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODg6XFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODktXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MjAyPXN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA3OlxcdGlmIChldmVudCA9PSBBVEgxMktfQUNQSV9OT1RJRllfRVZFTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDgtXFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ1bmtub3duIGFjcGkgbm90aWZ5ICV1XFxcXG5cXFwiLCBldmVudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTItXFx0aWYgKCFhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTM6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV90YXNfZW5hYmxlIGlzIGZhbHNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxNzpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9MjY0PXN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2OS1cXHRcXHRcXHRcXHQgICAgICBhYi1cXHUwMDNlYWNwaS50YXNfY2ZnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MDpcXHRcXHRcXHRcXHQgICAgICBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc5OlxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM9Mjk5PXZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjQtXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfY2NhX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNTpcXHRcXHRidWYgPSBhYi1cXHUwMDNlYWNwaS5jY2FfZGF0YSArIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0RBVEFfT0ZGU0VUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNi1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyOC1cXHRcXHRcXHRcXHRcXHQgICAgICBidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMwLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTM1MT1pbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjk6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0RJU0FCTEVfRkxBRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19ESVNBQkxFX0ZMQUcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzgyOlxcdFxcdGlmIChBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0RTTV9ESVNBQkxFXzExQkVfQklUKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zODQtXFx0XFx0XFx0YWItXFx1MDAzZWFjcGkuYWNwaV9kaXNhYmxlXzExYmUgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODY6XFx0XFx0aWYgKCFBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozODc6XFx0XFx0XFx0XFx0XFx0XFx0QVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzg4LVxcdFxcdFxcdGFiLVxcdTAwM2VhY3BpLmFjcGlfZGlzYWJsZV9yZmtpbGwgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JERl9FWFQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVxcdFxcdGlmIChyZXQgfHwgYWItXFx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAnXFxcXDAnKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAxOlxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwOTpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19EQVRBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxNjpcXHRcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19DRkcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDE3OlxcdFxcdCAgICBhYi1cXHUwMDNlYWNwaS50YXNfc2FyX3Bvd2VyX3RhYmxlWzBdID09IEFUSDEyS19BQ1BJX1RBU19EQVRBX1ZFUlNJT04gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTg6XFx0XFx0ICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGVbMV0gPT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxOS1cXHRcXHRcXHRhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMjpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMDpcXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Mzc6XFx0XFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Mzg6XFx0XFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfVkVSU0lPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzOTpcXHRcXHQgICAgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YVsxXSA9PSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBRyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0MC1cXHRcXHQgICAgIWFiLVxcdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDQ6XFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ1MjpcXHRcXHRpZiAoYWItXFx1MDAzZWFjcGkuY2NhX2RhdGFbMF0gPT0gQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDUzOlxcdFxcdCAgICBhYi1cXHUwMDNlYWNwaS5jY2FfZGF0YVtBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVF0gPT1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NTQ6XFx0XFx0ICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfRU5BQkxFX0ZMQUcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDU1LVxcdFxcdFxcdGFiLVxcdTAwM2VhY3BpLmFjcGlfY2NhX2VuYWJsZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDU4OlxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NTk6XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0Njc6XFx0XFx0aWYgKGFiLVxcdTAwM2VhY3BpLmJhbmRfZWRnZV9wb3dlclswXSA9PSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2ODpcXHRcXHQgICAgYWItXFx1MDAzZWFjcGkuYmFuZF9lZGdlX3Bvd2VyWzFdID09IEFUSDEyS19BQ1BJX0JBTkRfRURHRV9FTkFCTEVfRkxBRylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjktXFx0XFx0XFx0YWItXFx1MDAzZWFjcGkuYWNwaV9iYW5kX2VkZ2VfZW5hYmxlID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jPTQ4NT1pbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVxcdGlmIChzdHJzY3B5KGFiLVxcdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVxcdTAwM2VhY3BpLmJkZl9zdHJpbmcgKyA0LCBtYXhfbGVuKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDkzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTQtXFx0XFx0XFx0ICAgXFxcImFjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2OiNpZm5kZWYgQVRIMTJLX0FDUElfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc6I2RlZmluZSBBVEgxMktfQUNQSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjExOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DU1xcdDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBR1xcdDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFRcXHRcXHQzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUlxcdFxcdDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxNTojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVRcXHRcXHQ1XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTY6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0FcXHRcXHQ2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTc6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHXFx0XFx0OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjE4OiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEFcXHRcXHQ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTk6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9CQU5EX0VER0VcXHRcXHQxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjIxOiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjI6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjM6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUlxcdFxcdFxcdEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI0OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfR0VPX09GRlNFVFxcdFxcdFxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI1OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBXFx0XFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MjY6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHXFx0XFx0XFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mjc6I2RlZmluZSBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfREFUQVxcdFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjI4OiNkZWZpbmUgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVJcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMDojZGVmaW5lIEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVFxcdFxcdFxcdDB4ODZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDozMTojZGVmaW5lIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKF9hY2RhdGEsIF9mdW5jKVxcdCgoKF9hY2RhdGEpLmZ1bmNfYml0KSBcXHUwMDI2IChfZnVuYykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MzI6I2RlZmluZSBBVEgxMktfQUNQSV9DSEVLX0JJVF9WQUxJRChfYWNkYXRhLCBfZnVuYylcXHQoKChfYWNkYXRhKS5iaXRfZmxhZykgXFx1MDAyNiAoX2Z1bmMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM0OiNkZWZpbmUgQVRIMTJLX0FDUElfVEFTX0RBVEFfVkVSU0lPTlxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM1OiNkZWZpbmUgQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MzY6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9WRVJTSU9OXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9FTkFCTEVfRkxBR1xcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjM4OiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9WRVJTSU9OXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Mzk6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX0VOQUJMRV9GTEFHXFx0XFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDA6I2RlZmluZSBBVEgxMktfQUNQSV9CQU5EX0VER0VfVkVSU0lPTlxcdFxcdDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQxOiNkZWZpbmUgQVRIMTJLX0FDUElfQkFORF9FREdFX0VOQUJMRV9GTEFHXFx0MHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDM6I2RlZmluZSBBVEgxMktfQUNQSV9HRU9fT0ZGU0VUX0RBVEFfT0ZGU0VUXFx0MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjQ0OiNkZWZpbmUgQVRIMTJLX0FDUElfREJTX0JBQ0tPRkZfREFUQV9PRkZTRVRcXHQyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDU6I2RlZmluZSBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVFxcdDVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo0NjojZGVmaW5lIEFUSDEyS19BQ1BJX0JJT1NfU0FSX0RCU19CQUNLT0ZGX0xFTlxcdDEwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDc6I2RlZmluZSBBVEgxMktfQUNQSV9QT1dFUl9MSU1JVF9EQVRBX09GRlNFVFxcdDEyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDg6I2RlZmluZSBBVEgxMktfQUNQSV9CSU9TX1NBUl9HRU9fT0ZGU0VUX0xFTlxcdDE4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NDk6I2RlZmluZSBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU5cXHRcXHQyMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjUwOiNkZWZpbmUgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfTEVOXFx0XFx0MzZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFXFx0XFx0XFx0NjlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo1MzojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFXFx0XFx0MTAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTQ6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFXFx0XFx0XFx0MTA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTY6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NSU5fQklUTUFQX1NJWkVcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTc6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkVcXHQ0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NTk6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fRElTQUJMRV8xMUJFX0JJVFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYwOiNkZWZpbmUgQVRIMTJLX0FDUElfRFNNX0RJU0FCTEVfUkZLSUxMX0JJVFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYyOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOXFx0M1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjYzOiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdcXHRcXHRcXFwiQkRGXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjY0OiNkZWZpbmUgQVRIMTJLX0FDUElfQkRGX01BWF9MRU5cXHRcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NjojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfR0VPX09GRlNFVF9EQVRBX09GRlNFVCArIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2NzpcXHRcXHRcXHRcXHRcXHQgICAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9HRU9fT0ZGU0VUX0xFTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo2ODojZGVmaW5lIEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUgKEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0RBVEFfT0ZGU0VUICsgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjY5OlxcdFxcdFxcdFxcdFxcdCAgICBBVEgxMktfQUNQSV9CSU9TX1NBUl9UQUJMRV9MRU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzA6I2RlZmluZSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSAoQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVQgKyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzE6XFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0xFTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC03Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oPTEwNz1zdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTE0OiNlbmRpZiAvKiBBVEgxMktfQUNQSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjA6I2RlZmluZSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE6I2RlZmluZSBBVEgxMktfVVBEX0lSUV9XUkRfTEVOICAxOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzpzdGF0aWMgc3RydWN0IGF0aDEya19haGJfZHJpdmVyICphdGgxMmtfYWhiX2ZhbWlseV9kcml2ZXJzW0FUSDEyS19ERVZJQ0VfRkFNSUxZX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNC1zdGF0aWMgY29uc3QgY2hhciBhdGgxMmtfdXNlcnBkX2lycVtdWzldID0ge1xcXCJzcGF3blxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQyPXN0YXRpYyBERUZJTkVfTVVURVgoYXRoMTJrX3Jwcm9jX2luZm9fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ0OnN0YXRpYyBjb25zdCBjaGFyICppcnFfbmFtZVtBVEgxMktfSVJRX05VTV9NQVhdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDUtXFx0XFxcIm1pc2MtcHVsc2UxXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTc4PXN0YXRpYyB2b2lkIF9fYXRoMTJrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTgyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODMtXFx0XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTI2MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjk6XFx0XFx0aXJxX2lkeCA9IEFUSDEyS19JUlFfQ0UwX09GRlNFVCArIGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzAtXFx0XFx0c3luY2hyb25pemVfaXJxKGFiLVxcdTAwM2VpcnFfbnVtW2lycV9pZHhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9Mjc0PXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzk6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4MC1cXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzE5PXN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzI0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMjUtXFx0XFx0aXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTM0MD1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM0MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNDI6XFx0aWYgKCF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzQzLVxcdFxcdGF0aDEya19haGJfY2VfaXJxc19kaXNhYmxlKGFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzUwPXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNTItXFx0c3RydWN0IGF0aDEya19haGIgKmFiX2FoYiA9IGF0aDEya19hYl90b19haGIoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzUzOlxcdGNoYXIgZndfbmFtZVtBVEgxMktfVVNFUlBEX0ZXX05BTUVfTEVOXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM1NDpcXHRjaGFyIGZ3Ml9uYW1lW0FUSDEyS19VU0VSUERfRldfTkFNRV9MRU5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzU1LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFiLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM3OTpcXHRzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksIFxcXCIlcy8lcy8lcyVkJXNcXFwiLCBBVEgxMktfRldfRElSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzgwOlxcdFxcdCBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vmdy5kaXIsIEFUSDEyS19BSEJfRldfUFJFRklYLCBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM4MTpcXHRcXHQgQVRIMTJLX0FIQl9GV19TVUZGSVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozODk6XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19BSEIsIFxcXCJCb290aW5nIGZ3IGltYWdlICVzLCBzaXplICV6ZFxcXFxuXFxcIiwgZndfbmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5MC1cXHRcXHQgICBmdy1cXHUwMDNlc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5ODpcXHRwYXNpZCA9ICh1MzJfZW5jb2RlX2JpdHMoYWJfYWhiLVxcdTAwM2V1c2VycGRfaWQsIEFUSDEyS19VU0VSUERfSURfTUFTSykpIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM5OTpcXHRcXHRBVEgxMktfQUhCX1VQRF9TV0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTM6XFx0c25wcmludGYoZncyX25hbWUsIHNpemVvZihmdzJfbmFtZSksIFxcXCIlcy8lcy8lc1xcXCIsIEFUSDEyS19GV19ESVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MTQ6XFx0XFx0IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWZ3LmRpciwgQVRIMTJLX0FIQl9GVzIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MjI6XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19BSEIsIFxcXCJCb290aW5nIGZ3IGltYWdlICVzLCBzaXplICV6ZFxcXFxuXFxcIiwgZncyX25hbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MjMtXFx0XFx0ICAgZncyLVxcdTAwM2VzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDU1LVxcdHRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3Bhd25lZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQ1NjpcXHRcXHRcXHRcXHRcXHRcXHRBVEgxMktfVVNFUlBEX1NQQVdOX1RJTUVPVVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDU3LVxcdGlmICghdGltZV9sZWZ0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ2My1cXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFiX2FoYi1cXHUwMDNldXNlcnBkX3JlYWR5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDY0OlxcdFxcdFxcdFxcdFxcdFxcdEFUSDEyS19VU0VSUERfUkVBRFlfVElNRU9VVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NjUtXFx0aWYgKCF0aW1lX2xlZnQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDczOlxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQUhCLCBcXFwiVXNlclBEJWQgaXMgbm93IFVQXFxcXG5cXFwiLCBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTQ4Mj1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00OTItXFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZhYl9haGItXFx1MDAzZXVzZXJwZF9zdG9wcGVkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDkzOlxcdFxcdFxcdFxcdFxcdFxcdEFUSDEyS19VU0VSUERfU1RPUF9USU1FT1VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQ5NC1cXHRpZiAoIXRpbWVfbGVmdCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01MDEtXFx0aWYgKGFiX2FoYi1cXHUwMDNlc2NtX2F1dGhfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAyOlxcdFxcdHBhc2lkID0gKHUzMl9lbmNvZGVfYml0cyhhYl9haGItXFx1MDAzZXVzZXJwZF9pZCwgQVRIMTJLX1VTRVJQRF9JRF9NQVNLKSkgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTAzOlxcdFxcdFxcdCBBVEgxMktfQUhCX1VQRF9TV0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTA0LVxcdFxcdC8qIFJlbGVhc2UgdGhlIGZpcm13YXJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTU4MT1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTg4LVxcdHJpbmdfbWFzayA9IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZXJpbmdfbWFzaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjU4OTpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTkwLVxcdFxcdGlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDUtXFx0XFx0XFx0ICAgIEJJVChhYi1cXHUwMDNlaGFsLnRjbF90b193Ym1fcmJtX21hcFtqXS53Ym1fcmluZ19udW0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo2MDY6XFx0XFx0XFx0ICAgIG51bV9pcnEgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MDctXFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjEyOlxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9OVU1fTUFYOyBqKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxMy1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjE0OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjE1LVxcdFxcdFxcdFxcdGlycV9ncnAtXFx1MDAzZWlycXNbbnVtX2lycSsrXSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYxOS1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeF9lcnJbaV0gXFx1MDAyNiBCSVQoaikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjYyMDpcXHRcXHRcXHQgICAgbnVtX2lycSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX05VTV9NQVgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjEtXFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID0gcmVvMmhvc3RfZXhjZXB0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjMtXFx0XFx0XFx0aWYgKHJpbmdfbWFzay1cXHUwMDNlcnhfd2JtX3JlbFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjI0OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyNS1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPSB3Ym0yaG9zdF9yeF9yZWxlYXNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy02MjctXFx0XFx0XFx0aWYgKHJpbmdfbWFzay1cXHUwMDNlcmVvX3N0YXR1c1tpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjI4OlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYyOS1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPSByZW8yaG9zdF9zdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMS1cXHRcXHRcXHRpZiAocmluZ19tYXNrLVxcdTAwM2VyeF9tb25fZGVzdFtpXSBcXHUwMDI2IEJJVChqKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjMyOlxcdFxcdFxcdCAgICBudW1faXJxIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfTlVNX01BWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTYzMy1cXHRcXHRcXHRcXHRpcnFfZ3JwLVxcdTAwM2VpcnFzW251bV9pcnErK10gPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz02NTg9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NjcwOlxcdFxcdGlycV9pZHggPSBBVEgxMktfSVJRX0NFMF9PRkZTRVQgKyBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MzY9c3RhdGljIGlycXJldHVybl90IGF0aDEya191c2VycGRfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQxOlxcdGlmIChpcnEgPT0gYWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtBVEgxMktfVVNFUlBEX1NQQVdOX0lSUV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Mi1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3Bhd25lZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NDM6XFx0fSBlbHNlIGlmIChpcnEgPT0gYWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtBVEgxMktfVVNFUlBEX1JFQURZX0lSUV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0NC1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfcmVhZHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzQ1OlxcdH0gZWxzZSBpZiAoaXJxID09IGFiX2FoYi1cXHUwMDNldXNlcnBkX2lycV9udW1bQVRIMTJLX1VTRVJQRF9TVE9QX0FDS19JUlFdKVxcdHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTc0Ni1cXHRcXHRjb21wbGV0ZShcXHUwMDI2YWJfYWhiLVxcdTAwM2V1c2VycGRfc3RvcHBlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTc1NT1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX3Jwcm9jX2lycShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3NjE6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19VU0VSUERfTUFYX0lSUTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjItXFx0XFx0YWJfYWhiLVxcdTAwM2V1c2VycGRfaXJxX251bVtpXSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKGFiLVxcdTAwM2VwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo3Njc6XFx0XFx0dXBkX2lycV9uYW1lID0gZGV2bV9remFsbG9jKFxcdTAwMjZhYi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBBVEgxMktfVVBEX0lSUV9XUkRfTEVOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzcyOlxcdFxcdHNjbnByaW50Zih1cGRfaXJxX25hbWUsIEFUSDEyS19VUERfSVJRX1dSRF9MRU4sIFxcXCJVc2VyUEQldS0lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03NzMtXFx0XFx0XFx0ICBhYl9haGItXFx1MDAzZXVzZXJwZF9pZCwgYXRoMTJrX3VzZXJwZF9pcnFbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04MDI9c3RhdGljIGludCBhdGgxMmtfYWhiX3Jvb3RfcGRfc3RhdGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODA4OlxcdGlmIChldmVudCA9PSBBVEgxMktfUlBST0NfQUZURVJfUE9XRVJVUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6ODA5OlxcdFxcdGF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX0FIQiwgXFxcIlJvb3QgUEQgaXMgVVBcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODEwLVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZycHJvY19pbmZvLVxcdTAwM2Vyb290cGRfcmVhZHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ODY9c3RhdGljIGludCBhdGgxMmtfYWhiX2dldF9ycHJvYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo4OTY6XFx0aWYgKGFiX2FoYi1cXHUwMDNldXNlcnBkX2lkIFxcdTAwM2UgQVRIMTJLX01BWF9ERVZJQ0VTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtODk3LVxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy04OTktXFx0aWYgKGdfcnByb2NfaW5mbykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6OTAwOlxcdFxcdGlmIChnX3Jwcm9jX2luZm8tXFx1MDAzZW51bV91c2VycGQgXFx1MDAzZT0gQVRIMTJLX01BWF9ERVZJQ0VTKSB7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjI2LjQzNzQ4Nzc0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDEwNjYxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQVRIMTJLIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBvciBjb2RlIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIEFUSDEySyB3aXJlbGVzcyBkcml2ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiBhbnkgY2x1ZXMgYXJlIGhpZGluZyBpbiB0aGUgdXN1YWwgc3VzcGVjdHMuIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSDigJMgdGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBlbmFibGUvZGlzYWJsZSBvcHRpb25zIGFuZCBhbnkgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gU28sIGxldCBtZSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLiBJJ2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBQQ0ktc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNgLiBIb3BlZnVsbHksIGJldHdlZW4gdGhlc2UgdHdvIGZpbGVzLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzaXR1YXRpb24gYW5kIHBpbnBvaW50IHRoZSBzb3VyY2Ugb2Ygd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyODgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDoyOC42Nzg1NTcyNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fUEFTXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjI4LjY3ODY2MzExOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NDE3MjQzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBBcHBsaWNhYmlsaXR5OiBUaGUgQXRoMTJrIENvbnVuZHJ1bSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHJ1bGVzIGFyZSBjbGVhcjogY2hhbmdlcyBhcmUgKipub3QqKiB3b3J0aCBmdXp6aW5nIGlmIHRoZXkncmUgbGltaXRlZCB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBNeSBwcmltYXJ5IGNvbmNlcm4gaXMgYXRoMTJrLiBJcyBpdCByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gd2l0aCBjbGV2ZXIgdHJpY2tzIGxpa2UgYHVzYiBnYWRnZXRgIG9yIGBtYWM4MDIxMV9od3NpbWA/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyBubywgdGhpcyBpcyBhIFF1YWxjb21tIFdpLUZpIDcgY2hpcHNldCBkcml2ZXIsIGFuZCBpdCdzIFBDSWUgb3IgQUhCIGJhc2VkLiBJdCdzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZSAoV0NONzg1MCwgUUNOOTI3NCwgSVBRNTMzMiwgZXRjLikgYW5kIHJlbGllcyBvbiBNSEkgYnVzLCBRTUksIGFuZCBmaXJtd2FyZSBsb2FkaW5nLiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGF0LiBJdCBlbXVsYXRlcyB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIG5ldHdvcmtpbmcsIGJ1dCBkZWZpbml0ZWx5IG5vdCBhdGgxMmsuIEFuZCBubywgbWFjODAyMTFfaHdzaW0gaXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IgLSB0b3RhbGx5IHNlcGFyYXRlIGZyb20gYXRoMTJrLlxuXG5Pa2F5LCBsZXQncyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIFRoZSBydWxlcyBleHBsaWNpdGx5IGV4Y2x1ZGUgY29kZSB0aGF0J3MgdW5yZWFjaGFibGUgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJdOKAmXMgYWxzbyB2ZXJ5IGNsZWFyIGFib3V0IHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMuIExldCdzIGxvb2sgYWdhaW4gYXQgdGhlIGZpbGUgc3RydWN0dXJlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiBUaGlzIHdpbGwgY29uZmlybSB3aGV0aGVyIHRoaXMgaXMgc3RyaWN0bHkgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIgb3IgaWYgdGhlcmUncyBhbnkgcHJldGVuc2Ugb2YgdmlydHVhbCBzdXBwb3J0LiBObyBlbXVsYXRlZCBoYXJkd2FyZSBtZWFucyBubyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDAwOjMwOjM1LjIyMDM5MDA0NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhY3BpLmNcIixcbiAgICBcImFjcGkuaFwiLFxuICAgIFwiYWhiLmNcIixcbiAgICBcImFoYi5oXCIsXG4gICAgXCJjZS5jXCIsXG4gICAgXCJjZS5oXCIsXG4gICAgXCJjbW5fZGVmcy5oXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmUuaFwiLFxuICAgIFwiY29yZWR1bXAuY1wiLFxuICAgIFwiY29yZWR1bXAuaFwiLFxuICAgIFwiZGJyaW5nLmNcIixcbiAgICBcImRicmluZy5oXCIsXG4gICAgXCJkZWJ1Zy5jXCIsXG4gICAgXCJkZWJ1Zy5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImRlYnVnZnMuaFwiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuY1wiLFxuICAgIFwiZGVidWdmc19odHRfc3RhdHMuaFwiLFxuICAgIFwiZGVidWdmc19zdGEuY1wiLFxuICAgIFwiZGVidWdmc19zdGEuaFwiLFxuICAgIFwiZHAuY1wiLFxuICAgIFwiZHAuaFwiLFxuICAgIFwiZHBfY21uLmhcIixcbiAgICBcImRwX2h0dC5jXCIsXG4gICAgXCJkcF9odHQuaFwiLFxuICAgIFwiZHBfbW9uLmNcIixcbiAgICBcImRwX21vbi5oXCIsXG4gICAgXCJkcF9wZWVyLmNcIixcbiAgICBcImRwX3BlZXIuaFwiLFxuICAgIFwiZHBfcnguY1wiLFxuICAgIFwiZHBfcnguaFwiLFxuICAgIFwiZHBfdHguY1wiLFxuICAgIFwiZHBfdHguaFwiLFxuICAgIFwiZncuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaGFsLmNcIixcbiAgICBcImhhbC5oXCIsXG4gICAgXCJoaWYuaFwiLFxuICAgIFwiaHRjLmNcIixcbiAgICBcImh0Yy5oXCIsXG4gICAgXCJody5oXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1oaS5jXCIsXG4gICAgXCJtaGkuaFwiLFxuICAgIFwicDJwLmNcIixcbiAgICBcInAycC5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpLmhcIixcbiAgICBcInBlZXIuY1wiLFxuICAgIFwicGVlci5oXCIsXG4gICAgXCJxbWkuY1wiLFxuICAgIFwicW1pLmhcIixcbiAgICBcInJlZy5jXCIsXG4gICAgXCJyZWcuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidGVzdG1vZGUuaFwiLFxuICAgIFwidGhlcm1hbC5jXCIsXG4gICAgXCJ0aGVybWFsLmhcIixcbiAgICBcInRyYWNlLmNcIixcbiAgICBcInRyYWNlLmhcIixcbiAgICBcIndtaS5jXCIsXG4gICAgXCJ3bWkuaFwiLFxuICAgIFwid293LmNcIixcbiAgICBcIndvdy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIndpZmk3XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzA6MzUuMjIwNDkzODc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyMTQ3MTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBNQUMgTGF5ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNQUMgbGF5ZXIgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYHBjaS5jYCBhbmQgYG1hYy5jYCBmaWxlcy4gSSBzdXNwZWN0IHRoYXQncyB3aGVyZSB0aGUgY29yZSBQQ0ktcmVsYXRlZCBzZXR1cCBhbmQgTUFDLXNwZWNpZmljIGZ1bmN0aW9ucyByZXNpZGUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCB0aGUgc29mdHdhcmUgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIHRyYWNrIHRoZSBjYWxscyB0byBgYXRoMTJrX21hY19od19yZWdpc3RlcmAgYW5kIGBhdGgxMmtfbWFjX3NldHVwX21hY19hZGRyZXNzX2xpc3RgLiBUaGV5IHNvdW5kIGxpa2Uga2V5IGZ1bmN0aW9ucyBmb3IgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlIGFuZCBzZXR0aW5nIHVwIHRoZSBNQUMgYWRkcmVzcyBsaXN0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBpZGVudGlmeWluZyB0aGlzIHBhcnRpY3VsYXIgZGV2aWNlIG9uIHRoZSBuZXR3b3JrLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgdG8gZ3Jhc3AgdGhlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBob3cgdGhlIGhhcmR3YXJlIGlzIGJlaW5nIGNvbmZpZ3VyZWQgd2l0aCBNQUMgYWRkcmVzc2VzLiBMZXQncyBzdGFydCB3aXRoIHRyYWNpbmcgdGhlIGNhbGwgc2l0ZXMgb2YgYGF0aDEya19tYWNfaHdfcmVnaXN0ZXJgIHRvIGRldGVybWluZSB0aGUgcHJvZ3JhbSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDozNy44NDE5Njc4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODIzMTUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ3NTY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzkwOnN0YXRpYyBpbnQgYXRoMTJrX21hY19od19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX2h3ICphaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTUzMDU9aW50IGF0aDEya19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1MzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTUzMTQ6XFx0XFx0cmV0ID0gYXRoMTJrX21hY19od19yZWdpc3RlcihhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTMxNS1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz02OTU5PXN0YXRpYyBpbnQgYXRoMTJrX3JlZ19jaGFuX2xpc3RfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzAzNy1cXHQgKiBzbyB0aGUgY29tcGxldGlvbiBjYW5ub3QgYmUgbWFya2VkIGF0IHRoYXQgcG9pbnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3MDM4OlxcdCAqIFRoaXMgYm9vdC10aW1lIHVwZGF0ZSBpcyBoYW5kbGVkIGluIGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNzAzOS1cXHQgKiBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhlIGhhcmR3YXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDozOC43NjAyMDY5ODJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTM1NTA4NTk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IGF0aDEyayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoMTJrX21hY19yZWdpc3RlcmAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBRdWFsY29tbSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGF0aDEya19jb3JlX2h3X2dyb3VwX3N0YXJ0YCBvciBgYXRoMTJrX2NvcmVfc3RhcnRgIGZ1bmN0aW9ucywgb3IgZHVyaW5nIHRoZSBkcml2ZXIgcHJvYmUuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYGF0aDEya2AgZHJpdmVyIGlzIHRpZWQgdG8gYWN0dWFsIFF1YWxjb21tIGhhcmR3YXJlLiBMZXQgbWUgY29uZmlybS4uLiB5ZXMsIGl0J3MgYSBXaS1GaSA3IGRyaXZlciBkZXNpZ25lZCBmb3IgUENJZSBhbmQgQUhCIGF0dGFjaGVkIGhhcmR3YXJlIGxpa2UgdGhlIFdDTjc4NTAgYW5kIFFDTjkyNzQuXG5cblRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgUXVhbGNvbW0gU29DLiBUaGlzIG1lYW5zIGl0IGNhbid0IGJlIGVtdWxhdGVkIG9yIGluc3RhbnRpYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIGV2ZW4gZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIHN5emthbGxlci4gU29mdHdhcmUgZW11bGF0aW9uLCBzdWNoIGFzIHdoYXQgYG1hYzgwMjExX2h3c2ltYCBkb2VzLCB1c2VzIGl0cyBvd24gZHJpdmVyLCBkaXN0aW5jdCBmcm9tIGBhdGgxMmtgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgV29ydGhGdXp6aW5nIGNyaXRlcmlhLCBsZXQncyBnbyBvdmVyIHRoZSBleGNsdXNpb24gZ3VpZGVsaW5lcywgbGluZSBieSBsaW5lLCB0byBlbnN1cmUgbm8gb3ZlcnNpZ2h0LlxuXG5UaGUgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlc2UgcnVsZXM6XG5cbiogICBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIC0gYGF0aDEya2AgaXMgb3V0IGJlY2F1c2Ugb2YgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY3kuXG4qICAgXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgLSBgYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgYW5kIHJlcXVpcmVzIFBDSWUgaGFyZHdhcmUuXG5cblNvLCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHRoZSBhbnN3ZXIgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBMZXQncyBnZXQgdGhhdCBsb2dnZWQgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg4OCwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMDA6MzA6NDQuMTE1Mjk0ODY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDEyayBXaS1GaSA3IGRyaXZlciAoYXRoMTJrL21hYy5jKSB0byBzZXQgdXAgTUFDIGFkZHJlc3MgbGlzdHMgZm9yIHNpbmdsZS1yYWRpbyB3aXBoeSBpbnN0YW5jZXMuIFRoZSBhdGgxMmsgZHJpdmVyIGlzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBmb3IgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBQQ0llL0FIQiBkZXZpY2VzIChlLmcuLCBXQ043ODUwLCBRQ045Mjc0KSB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMmsgV2ktRmkgNyBkcml2ZXIgKGF0aDEyay9tYWMuYykgdG8gc2V0IHVwIE1BQyBhZGRyZXNzIGxpc3RzIGZvciBzaW5nbGUtcmFkaW8gd2lwaHkgaW5zdGFuY2VzLiBUaGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgUENJZS9BSEIgZGV2aWNlcyAoZS5nLiwgV0NONzg1MCwgUUNOOTI3NCkgd2hpY2ggY2Fubm90IGJlIGVtdWxhdGVkIG9yIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QwMDozMDo0NC4xMTUzMjE1MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmr7lw[1] Phase: Running StartedAt: 2026-09-03 00:30:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmr7lw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-03 00:30:55 +0000 UTC FinishedAt: 2026-09-03 00:30:59 +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,}