Name: series-workflowrrp5h Phase: Failed StartedAt: 2026-07-13 07:44:11 +0000 UTC FinishedAt: 2026-07-13 08:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrp5h[0] Phase: Succeeded StartedAt: 2026-07-13 07:44:11 +0000 UTC FinishedAt: 2026-07-13 08:05:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrp5h[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 07:44:11 +0000 UTC FinishedAt: 2026-07-13 08:05:22 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBvciBBSEIgZGV2aWNlIGFuZCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCAwZTdjNzMyZjgyMjI2NS4uY2Y5YzViMDY4ZmE2NzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0xNTQ3LDYgJiM0MzsxNTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcHJlX3JlY29uZmlndXJlX3JlY292ZXJ5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRcdH1cbiBcbiBcdFx0d2lwaHlfdW5sb2NrKGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiYjNDM7XG4mIzQzO1x0XHRjb21wbGV0ZShcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUpO1xuIFx0fVxuIFxuIFx0d2FrZV91cChcdTAwMjZhYi1cdTAwM2V3bWlfYWIudHhfY3JlZGl0c193cSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLjMwNzI2ZTU4MDgzM2UxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNzIsNiAmIzQzOzcyLDcgQEBcbiBcbiAjZGVmaW5lIEFUSDEyS19NQVhfTUxPX1BFRVJTICAgICAgICAgICAgMjU2XG4gI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRlxuJiM0MzsjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXG4gXG4gI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTFcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxuQEAgLTc5Myw2ICYjNDM7Nzk0LDggQEAgc3RydWN0IGF0aDEya19odyB7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuJiM0MztcdGJvb2wgaG9zdF9hbGxvY19tbF9pZDtcbiYjNDM7XHRzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7XG4gXG4gXHR1OCBudW1fcmFkaW87XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbkBAIC02LDYgJiM0Mzs2LDcgQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtwZWVyLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZHBfcGVlci5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aHRjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9odHQuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmhcJiMzNDtcbkBAIC01NzUsNiAmIzQzOzU3Niw1MSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBodHRfcmVzcF9tc2cgKnJlc3AgPSAoc3RydWN0IGh0dF9yZXNwX21zZyAqKXNrYi1cdTAwM2VkYXRhO1xuJiM0MztcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCAqZXYgPSBcdTAwMjZyZXNwLVx1MDAzZW1sb19wZWVyX21hcF9ldjtcbiYjNDM7XHR1MTYgcmF3X3BlZXJfaWQsIHBlZXJfaWQsIGFkZHJfaDE2O1xuJiM0MztcdHU4IHBlZXJfYWRkcltFVEhfQUxFTl07XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqZXYpKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmF3X3BlZXJfaWQgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8wLFxuJiM0MztcdFx0XHRcdCAgICBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMF9NTE9fUEVFUl9JRCk7XG4mIzQzO1x0cGVlcl9pZCA9IHJhd19wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7XG4mIzQzO1xuJiM0MztcdGFkZHJfaDE2ID0gbGUzMl9nZXRfYml0cyhldi1cdTAwM2VpbmZvMSxcbiYjNDM7XHRcdFx0XHQgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2KTtcbiYjNDM7XHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVx1MDAzZW1hY19hZGRyX2wzMiksIGFkZHJfaDE2LFxuJiM0MztcdFx0XHQgICAgICAgcGVlcl9hZGRyKTtcbiYjNDM7XG4mIzQzO1x0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFwmIzM0O2h0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBwZWVyX2FkZHIsIHBlZXJfaWQpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZpeCB1cCB0aGUgZHBfcGVlciBlbnRyeSBjcmVhdGVkIHdpdGggQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkdcbiYjNDM7XHQgKiBlYXJsaWVyOyBvbiBjaGlwcyB3aXRoIGhvc3RfYWxsb2NfbWxfaWQgPT0gZmFsc2UgdGhpcyBpcyB0aGUgb25seVxuJiM0MztcdCAqIHBvaW50IGF0IHdoaWNoIHRoZSBob3N0IGxlYXJucyB0aGUgZmlybXdhcmUtYXNzaWduZWQgSUQuIENoaXBzXG4mIzQzO1x0ICogdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3QgYWxzbyByZWNlaXZlIHRoaXMgZXZlbnQgYnV0IHRoZVxuJiM0MztcdCAqIGZpcm13YXJlLXJlcG9ydGVkIElEIG1hdGNoZXMgdGhlIGhvc3QtYWxsb2NhdGVkIG9uZSwgc28gdGhlcmUgaXNcbiYjNDM7XHQgKiBub3RoaW5nIHRvIGZpeCB1cC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vob3N0X2FsbG9jX21sX2lkKSB7XG4mIzQzO1x0XHRyZXQgPSBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKGFiLCBwZWVyX2FkZHIsXG4mIzQzO1x0XHRcdFx0XHRcdCAgIHBlZXJfaWQpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0YXRoMTJrX3dhcm4oYWIsXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBmaXggdXAgcGVlciBpZCAldSBmb3IgZHAgcGVlciAlcE06ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICBwZWVyX2lkLCBwZWVyX2FkZHIsIHJldCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjU5LDYgJiM0Mzs3MDUsOSBAQCB2b2lkIGF0aDEya19kcF9odHRfaHRjX3QyaF9tc2dfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0Y2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDpcbiBcdFx0YXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVA6XG4mIzQzO1x0XHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RQX0hUVCwgXCYjMzQ7ZHBfaHR0IGV2ZW50ICVkIG5vdCBoYW5kbGVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHR5cGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5pbmRleCA5ODc2ODlmMTFjZGE0NS4uMmRiN2ZiMjdjMDM2MTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5AQCAtOTMwLDYgJiM0Mzs5MzAsNyBAQCBlbnVtIGh0dF90MmhfbXNnX3R5cGUge1xuIFx0SFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsXG4gXHRIVFRfVDJIX01TR19UWVBFX0JLUFJFU1NVUkVfRVZFTlRfSU5EID0gMHgyNCxcbiBcdEhUVF9UMkhfTVNHX1RZUEVfTUxPX1RJTUVTVEFNUF9PRkZTRVRfSU5EID0gMHgyOCxcbiYjNDM7XHRIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCA9IDB4MjksXG4gXHRIVFRfVDJIX01TR19UWVBFX1BFRVJfTUFQM1x0PSAweDJiLFxuIFx0SFRUX1QySF9NU0dfVFlQRV9WREVWX1RYUlhfU1RBVFNfUEVSSU9ESUNfSU5EID0gMHgyYyxcbiB9O1xuQEAgLTk3NCwxMSAmIzQzOzk3NSwyMiBAQCBzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHtcbiBcdF9fbGUzMiBpbmZvMTtcbiB9IF9fcGFja2VkO1xuIFxuJiM0MzsjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEXHRcdEdFTk1BU0soMjMsIDgpXG4mIzQzOyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2XHRcdEdFTk1BU0soMTUsIDApXG4mIzQzO1xuJiM0MztzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQge1xuJiM0MztcdF9fbGUzMiBpbmZvMDtcbiYjNDM7XHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xuJiM0MztcdF9fbGUzMiBpbmZvMTtcbiYjNDM7XHRfX2xlMzIgcmVzZXJ2ZWRbNV07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuIHN0cnVjdCBodHRfcmVzcF9tc2cge1xuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF92ZXJzaW9uX2NvbmZfbXNnIHZlcnNpb25fbXNnO1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX21hcF9ldmVudCBwZWVyX21hcF9ldjtcbiBcdFx0c3RydWN0IGh0dF90MmhfcGVlcl91bm1hcF9ldmVudCBwZWVyX3VubWFwX2V2O1xuJiM0MztcdFx0c3RydWN0IGh0dF90MmhfbWxvX3BlZXJfbWFwX2V2ZW50IG1sb19wZWVyX21hcF9ldjtcbiBcdH07XG4gfSBfX3BhY2tlZDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXG5pbmRleCA0N2QwMDlhMGQ2MWZlZi4uMDkxNDJkY2I3NGY5OGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcbkBAIC00NzIsNyAmIzQzOzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0ZHBfcGVlci1cdTAwM2Vpc19tbG8gPSBwYXJhbXMtXHUwMDNlaXNfbWxvO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXG4mIzQzO1x0ICogRm9yIE1MTyBjbGllbnQsIHRoZSBNTCBwZWVyIElELCBlaXRoZXIga25vd24gb3IgUEVORElORywgbmVlZHMgdG8gYmVcbiYjNDM7XHQgKiBpbml0aWFsaXplZCBoZXJlIHNpbmNlIHRoZSBmb2xsb3dpbmcgbG9naWMgZGVwZW5kcyBvbiBpdC5cbiYjNDM7XHQgKlxuIFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmVcbiBcdCAqIGFzc2lnbmVkIGF0IHRoZSB0aW1lIG9mIGxpbmsgcGVlciBjcmVhdGlvblxuIFx0ICovXG5AQCAtNDg4LDEzICYjNDM7NDkwLDE3IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0bGlzdF9hZGQoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZkcF9ody1cdTAwM2VkcF9wZWVyc19saXN0KTtcbiBcbiBcdC8qXG4tXHQgKiBGb3IgTUxPIGNsaWVudCwgdGhlIHBlZXJfaWQgZm9yIGF0aDEya19kcF9wZWVyIGlzIGFsbG9jYXRlZCBieSBob3N0XG4tXHQgKiBhbmQgdGhhdCBwZWVyX2lkIGlzIGtub3duIGF0IHRoaXMgcG9pbnQsIGFuZCBoZW5jZSB0aGlzIGF0aDEya19kcF9wZWVyXG4tXHQgKiBjYW4gYmUgYWRkZWQgdG8gdGhlIFJDVSB0YWJsZSB1c2luZyB0aGUgcGVlcl9pZC5cbi1cdCAqIEZvciBub24tTUxPIGNsaWVudCwgdGhpcyBhZGRpdGlvbiB0byBSQ1UgdGFibGUgc2hhbGwgYmUgZG9uZSBhdCB0aGVcbi1cdCAqIHRpbWUgb2YgYXNzaWdubWVudCBvZiBhdGgxMmtfZHBfbGlua19wZWVyIHRvIGF0aDEya19kcF9wZWVyLlxuJiM0MztcdCAqIEZvciBhbiBNTE8gY2xpZW50IHdob3NlIE1MIHBlZXIgSUQgaXMgYWxsb2NhdGVkIGJ5IHRoZSBob3N0LCB0aGVcbiYjNDM7XHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXG4mIzQzO1x0ICogdGFibGUgdXNpbmcgaXQuIEZvciBhbiBNTE8gY2xpZW50IG9uIGNoaXBzIHdoZXJlIHRoZSBmaXJtd2FyZVxuJiM0MztcdCAqIGFsbG9jYXRlcyB0aGUgSUQsIHBlZXJfaWQgaXMgQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcgYW5kIHRoZVxuJiM0MztcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxuJiM0MztcdCAqIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQIGhhbmRsZXIuIEZvciBhIG5vbi1NTE8gY2xpZW50XG4mIzQzO1x0ICogdGhlIHB1Ymxpc2ggaGFwcGVucyBsYXRlciwgYXQgdGhlIHRpbWUgb2YgYXNzaWdubWVudCBvZlxuJiM0MztcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4gXHQgKi9cbi1cdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbylcbiYjNDM7XHRpZiAoZHBfcGVlci1cdTAwM2Vpc19tbG8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXHUwMDNlcGVlcl9pZF0sIGRwX3BlZXIpO1xuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHBfaHctXHUwMDNlcGVlcl9sb2NrKTtcbkBAIC01MTUsNyAmIzQzOzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvKVxuJiM0MztcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZHBfcGVlci1cdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSwgTlVMTCk7XG4gXG4gXHRsaXN0X2RlbChcdTAwMjZkcF9wZWVyLVx1MDAzZWxpc3QpO1xuQEAgLTY4OCwzICYjNDM7Njk1LDU1IEBAIHZvaWQgYXRoMTJrX2RwX2xpbmtfcGVlcl9yZXNldF9yeF9zdGF0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgY29uc3QgdTggKmFkZHIpXG4gXHRpZiAocnhfc3RhdHMpXG4gXHRcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xuIH1cbiYjNDM7XG4mIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4mIzQzO1x0XHRcdFx0IGNvbnN0IHU4ICpwZWVyX2FkZHIsIHUxNiBwZWVyX2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKmxpbmtfcGVlcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnID0gYWItXHUwMDNlYWc7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAocGVlcl9pZCBcdTAwM2U9IChBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCB8IEFUSDEyS19NQVhfTUxPX1BFRVJTKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1faHc7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRhaCA9IGFnLVx1MDAzZWFoW2ldO1xuJiM0MztcdFx0aWYgKCFhaClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4mIzQzO1x0XHRkcF9wZWVyID0gYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9hZGRyKFx1MDAyNmFoLVx1MDAzZWRwX2h3LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAodTggKilwZWVyX2FkZHIpO1xuJiM0MztcdFx0aWYgKGRwX3BlZXIpIHtcbiYjNDM7XHRcdFx0ZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFkcF9wZWVyKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9FTlQ7XG4mIzQzO1xuJiM0MztcdC8qIGRwX2h3LVx1MDAzZXBlZXJfbG9jayBpcyBoZWxkICovXG4mIzQzO1xuJiM0MztcdGRwX3BlZXItXHUwMDNlcGVlcl9pZCA9IHBlZXJfaWQ7XG4mIzQzO1x0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW3BlZXJfaWRdLCBkcF9wZWVyKTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX05VTV9NQVhfTElOS1M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRsaW5rX3BlZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRwX3BlZXItXHUwMDNlbGlua19wZWVyc1tpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jaykpO1xuJiM0MztcdFx0aWYgKGxpbmtfcGVlcilcbiYjNDM7XHRcdFx0bGlua19wZWVyLVx1MDAzZW1sX2lkID0gcGVlcl9pZDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpLVx1MDAzZW1sX3BlZXJfaWQgPSBwZWVyX2lkO1xuJiM0MztcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuJiM0MztcbiYjNDM7XHRjb21wbGV0ZShcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcbmluZGV4IGY1MDY3ZTY2ZjFlMTgyLi45ODQyNjcxYjU0NzU5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaFxuQEAgLTE4MCw0ICYjNDM7MTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BcbiBzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcbiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7XG4mIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGNvbnN0IHU4ICpwZWVyX2FkZHIsXG4mIzQzO1x0XHRcdFx0IHUxNiBwZWVyX2lkKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbmluZGV4IGQxMzViMjkzNjM3ODhiLi44MDkxNTAxY2Y3NDJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5AQCAtMjMyLDYgJiM0MzsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7XG4gXHRcdHUzMiBtYXhfY2xpZW50X2RicztcbiBcdFx0dTMyIG1heF9jbGllbnRfZGJzX3NicztcbiBcdH0gY2xpZW50O1xuJiM0MztcbiYjNDM7XHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XG4gfTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDQ5MGMxMzRjMWYyOTBiLi5hZTg3NDExNGRjNTE4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xMjc4LDEzICYjNDM7MTI3OCwxNyBAQCB2b2lkIGF0aDEya19tYWNfZHBfcGVlcl9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wO1xuIFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiBcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4mIzQzO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cGVlcnMpO1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHBfcGVlciwgdG1wLCBcdTAwMjZkcF9ody1cdTAwM2VkcF9wZWVyc19saXN0LCBsaXN0KSB7XG4gXHRcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbykge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLCBOVUxMKTtcbi1cdFx0XHRjbGVhcl9iaXQoZHBfcGVlci1cdTAwM2VwZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbiYjNDM7XHRcdFx0aWYgKGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiYjNDM7XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgTlVMTCk7XG4mIzQzO1x0XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpKTtcbiBcdFx0fVxuIFxuIFx0XHRsaXN0X21vdmUoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZwZWVycyk7XG5AQCAtMzUyNywxMSAmIzQzOzM1MzEsMTYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3BlZXJfYXNzb2NfaF9tbG8oc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGEsXG4gXHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS1cdTAwM2VhaHN0YTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhX3A7XG4gXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGFyc3RhLVx1MDAzZWFydmlmLVx1MDAzZWFyLVx1MDAzZWFoO1xuIFx0dW5zaWduZWQgbG9uZyBsaW5rcztcbiBcdHU4IGxpbmtfaWQ7XG4gXHRpbnQgaTtcbiBcbi1cdGlmICghc3RhLVx1MDAzZW1sbyB8fCBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKVxuJiM0MztcdGlmICghc3RhLVx1MDAzZW1sbylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1sLVx1MDAzZWVuYWJsZWQgPSB0cnVlO1xuQEAgLTM1MzksMTIgJiM0MzszNTQ4LDI1IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLFxuIFxuIFx0LyogRm9yIG5vdyBjb25zaWRlcmluZyB0aGUgcHJpbWFyeSB1bWFjIGJhc2VkIG9uIGFzc29jIGxpbmsgKi9cbiBcdG1sLVx1MDAzZXByaW1hcnlfdW1hYyA9IGFyc3RhLVx1MDAzZWlzX2Fzc29jX2xpbms7XG4tXHRtbC1cdTAwM2VwZWVyX2lkX3ZhbGlkID0gdHJ1ZTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9ubHkgY2hpcHMgdGhhdCBhbGxvY2F0ZSB0aGUgTUxEIHBlZXIgSUQgb24gdGhlIGhvc3Qgc2VuZCBhIHZhbGlkXG4mIzQzO1x0ICogbWxfcGVlcl9pZCBpbiBXTUlfUEVFUl9BU1NPQ19DTURJRC4gRm9yIGNoaXBzIHdoZXJlIHRoZSBmaXJtd2FyZVxuJiM0MztcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtbC1cdTAwM2VwZWVyX2lkX3ZhbGlkID0gYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbiBcdG1sLVx1MDAzZWxvZ2ljYWxfbGlua19pZHhfdmFsaWQgPSB0cnVlO1xuIFxuIFx0ZXRoZXJfYWRkcl9jb3B5KG1sLVx1MDAzZW1sZF9hZGRyLCBzdGEtXHUwMDNlYWRkcik7XG4gXHRtbC1cdTAwM2Vsb2dpY2FsX2xpbmtfaWR4ID0gYXJzdGEtXHUwMDNlbGlua19pZHg7XG4tXHRtbC1cdTAwM2VtbF9wZWVyX2lkID0gYWhzdGEtXHUwMDNlbWxfcGVlcl9pZDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFdNSV9NTE9fUEVFUl9BU1NPQ19QQVJBTVMgZXhwZWN0cyB0aGUgcmF3IE1MIHBlZXIgSUQgd2l0aG91dFxuJiM0MztcdCAqIHRoZSBob3N0LXNpZGUgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQgYm9va2tlZXBpbmcgYml0LiBGb3IgY2hpcHNcbiYjNDM7XHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXG4mIzQzO1x0ICogZmlybXdhcmUgYWx3YXlzIGFsbG9jYXRlcyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBoZXJlKTsgc2VuZCAwXG4mIzQzO1x0ICogdG8gbWFrZSB0aGF0IGludGVudCBleHBsaWNpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtbC1cdTAwM2VtbF9wZWVyX2lkID0gYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA/XG4mIzQzO1x0XHRcdCAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCBcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElEKSA6IDA7XG4gXHRtbC1cdTAwM2VpZWVlX2xpbmtfaWQgPSBhcnN0YS1cdTAwM2VsaW5rX2lkO1xuIFx0bWwtXHUwMDNlbnVtX3BhcnRuZXJfbGlua3MgPSAwO1xuIFx0bWwtXHUwMDNlZW1sX2NhcCA9IHN0YS1cdTAwM2VlbWxfY2FwO1xuQEAgLTM1OTEsOCAmIzQzOzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTtcbiBcbi1cdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4tXG4gXHRhcmctXHUwMDNlcGVlcl9uZXdfYXNzb2MgPSAhcmVhc3NvYztcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7XG5AQCAtMzgzMiw2ICYjNDM7Mzg1Miw1MiBAQCBzdGF0aWMgdTMyIGF0aDEya19tYWNfaWVlZTgwMjExX3N0YV9id190b193bWkoc3RydWN0IGF0aDEyayAqYXIsXG4gXHRyZXR1cm4gYnc7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcgKnBlZXJfYXJnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4mIzQzO1x0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQsIHJldCk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZvciBkZXZpY2VzIHdoZXJlIHRoZSBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MRCBwZWVyIElELCB0aGUgaG9zdFxuJiM0MztcdCAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzXG4mIzQzO1x0ICogaGFuZGxlZCBpbiBhIHNvZnRpcnEgKEJIIHdvcmtxdWV1ZSkgY29udGV4dCB0aGF0IGNhbm5vdCB0YWtlIHRoZVxuJiM0MztcdCAqIHdpcGh5IGxvY2suIEJsb2NrIGhlcmUsIHdoaWxlIHN0aWxsIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2ssIHVudGlsXG4mIzQzO1x0ICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3RcbiYjNDM7XHQgKiBhbGwgb3RoZXIgd2lwaHktbG9ja2VkIG1sX3BlZXJfaWQgYWNjZXNzZXMuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmtcbiYjNDM7XHQgKiBwZWVyIGFzc29jLCBzbyBibG9jayBvbmx5IGZvciB0aGF0IGxpbmsuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGVlcl9hcmctXHUwMDNlbWwuZW5hYmxlZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGVlcl9hcmctXHUwMDNlbWwuYXNzb2NfbGluayBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUsIDEgKiBIWikpIHtcbiYjNDM7XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBwZWVyX2FyZy1cdTAwM2VwZWVyX21hYywgcGVlcl9hcmctXHUwMDNldmRldl9pZCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxuQEAgLTM5MTIsMTggJiM0MzszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHR9XG4gXG4gXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG4tXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgICBic3NfY29uZi1cdTAwM2Vic3NpZCwgYXJ2aWYtXHUwMDNldmRldl9pZCwgcmV0KTtcbi1cdFx0cmV0dXJuO1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4tXHRcdFx0ICAgIGJzc19jb25mLVx1MDAzZWJzc2lkLCBhcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbiYjNDM7XHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiYjNDM7XHRpZiAocmV0KVxuIFx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsXG4gXHRcdFx0XHQgICAgIFx1MDAyNmxpbmtfc3RhLVx1MDAzZWh0X2NhcCwgXHUwMDI2bGlua19zdGEtXHUwMDNlaGVfNmdoel9jYXBhKTtcbkBAIC02NDc3LDE4ICYjNDM7NjUzNSwxMCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbiBcdH1cbiBcbiBcdHBlZXJfYXJnLVx1MDAzZWlzX2Fzc29jID0gdHJ1ZTtcbi1cdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCByZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4tXHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbi1cdH1cbiYjNDM7XHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbiBcdG51bV92aHRfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1fdmh0X3JhdGVzKGFyLCBiYW5kLCBtYXNrKTtcbiBcdG51bV9oZV9yYXRlcyA9IGF0aDEya19tYWNfYml0cmF0ZV9tYXNrX251bV9oZV9yYXRlcyhhciwgYmFuZCwgbWFzayk7XG5AQCAtNjgzNywxNCAmIzQzOzY4ODcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd2spXG4gXHRcdFx0XHRcdFx0ICBwZWVyX2FyZywgdHJ1ZSk7XG4gXG4gXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbi1cdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgU1RBICVwTSB2ZGV2ICVpOiAlZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQsIGVycik7XG4gXG4tXHRcdFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC03MjYyLDEwICYjNDM7NzMwNiw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfbWxfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLFxuIFx0XHRhdGgxMmtfbWFjX2ZyZWVfdW5hc3NpZ25fbGlua19zdGEoYWgsIGFoc3RhLCBsaW5rX2lkKTtcbiBcdH1cbiBcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuJiM0MztcdGlmIChzdGEtXHUwMDNlbWxvKVxuJiM0MztcdFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19tYWNfaGFuZGxlX2xpbmtfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuQEAgLTc3MjksMTUgJiM0Mzs3NzcxLDIzIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0LyogTUwgc3RhICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvIFx1MDAyNlx1MDAyNiAhYWhzdGEtXHUwMDNlbGlua3NfbWFwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKGh3ZWlnaHQxNihzdGEtXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XG4tXHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbi1cdFx0XHRpZiAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCkge1xuLVx0XHRcdFx0YXRoMTJrX2h3X3dhcm4oYWgsIFwmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICAgc3RhLVx1MDAzZWFkZHIpO1xuLVx0XHRcdFx0Z290byBleGl0O1xuJiM0MztcdFx0XHRpZiAoYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xuJiM0MztcdFx0XHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBhdGgxMmtfcGVlcl9tbF9hbGxvYyhhaCk7XG4mIzQzO1x0XHRcdFx0aWYgKGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHtcbiYjNDM7XHRcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1x0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQgYW5kIG5vdGlmaWVzXG4mIzQzO1x0XHRcdFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRkcF9wYXJhbXMuaXNfbWxvID0gdHJ1ZTtcbi1cdFx0XHRkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcbiYjNDM7XHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkO1xuIFx0XHR9XG4gXG4gXHRcdGRwX3BhcmFtcy5zdGEgPSBzdGE7XG5AQCAtNzg3NCwxMCAmIzQzOzc5MjQsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gcGVlcl9kZWxldGU6XG4gXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXHUwMDI2YWgtXHUwMDNlZHBfaHcsIHN0YS1cdTAwM2VhZGRyLCBzdGEpO1xuIG1sX3BlZXJfaWRfY2xlYXI6XG4tXHRpZiAoc3RhLVx1MDAzZW1sbykge1xuLVx0XHRjbGVhcl9iaXQoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCwgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4tXHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbi1cdH1cbiYjNDM7XHRpZiAoc3RhLVx1MDAzZW1sbylcbiYjNDM7XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiBleGl0OlxuIFx0LyogdXBkYXRlIHRoZSBzdGF0ZSBpZiBldmVyeXRoaW5nIHdlbnQgd2VsbCAqL1xuIFx0aWYgKCFyZXQpXG5AQCAtMTUzMDcsNiAmIzQzOzE1MzU1LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXHRhaC1cdTAwM2VudW1fcmFkaW8gPSBudW1fcGRldl9tYXA7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiYjNDM7XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbiBcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhaC1cdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcbkBAIC0xNTM4MSw4ICYjNDM7MTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdGludCBtYWNfaWQsIGRldmljZV9pZCwgdG90YWxfcmFkaW8sIG51bV9odztcbiBcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XG4gXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbi1cdGludCByZXQsIGksIGo7XG4mIzQzO1x0Ym9vbCBjb25mID0gZmFsc2U7XG4gXHR1OCByYWRpb19wZXJfaHc7XG4mIzQzO1x0aW50IHJldCwgaSwgajtcbiBcbiBcdHRvdGFsX3JhZGlvID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFnLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuQEAgLTE1NDIyLDYgJiM0MzsxNTQ3MiwxOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdFx0XHR9XG4gXG4gXHRcdFx0YWIgPSBhZy1cdTAwM2VhYltkZXZpY2VfaWRdO1xuJiM0MztcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogdGhlIGFzc3VtcHRpb24gaXMgYWxsIGRldmljZXMgd2l0aGluIGFuIGFoXG4mIzQzO1x0XHRcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGogPT0gMCkge1xuJiM0MztcdFx0XHRcdGNvbmYgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmIChjb25mICE9IGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vob3N0X2FsbG9jX21sX2lkKSB7XG4mIzQzO1x0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2luY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJiMzOTt0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgIGNvbmYgPyBcJiMzNDtob3N0XCYjMzQ7IDogXCYjMzQ7ZmlybXdhcmVcJiMzNDssIGRldmljZV9pZCk7XG4mIzQzO1x0XHRcdFx0Z290byBlcnI7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4gXHRcdFx0cGRldl9tYXBbal0uYWIgPSBhYjtcbiBcdFx0XHRwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDtcbiBcdFx0XHRtYWNfaWQmIzQzOyYjNDM7O1xuQEAgLTE1NDQ2LDYgJiM0MzsxNTUwOSw3IEBAIGludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuIFx0XHR9XG4gXG4gXHRcdGFoLVx1MDAzZWRldiA9IGFiLVx1MDAzZWRldjtcbiYjNDM7XHRcdGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgPSBjb25mO1xuIFxuIFx0XHRhZy1cdTAwM2VhaFtpXSA9IGFoO1xuIFx0XHRhZy1cdTAwM2VudW1faHcmIzQzOyYjNDM7O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbmluZGV4IGMyMjJiZGFhMzMzYzUyLi4yNWU0Yjc5ZjExZDYzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuQEAgLTIzMCw3ICYjNDM7MjMwLDE2IEBAIGludCBhdGgxMmtfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHQvKiBGaWxsIE1MIGluZm8gaW50byBjcmVhdGVkIHBlZXIgKi9cbiBcdFx0aWYgKHN0YS1cdTAwM2VtbG8pIHtcbiBcdFx0XHRtbF9wZWVyX2lkID0gYWhzdGEtXHUwMDNlbWxfcGVlcl9pZDtcbi1cdFx0XHRwZWVyLVx1MDAzZW1sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBGb3IgY2hpcHMgd2hlcmUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElELFxuJiM0MztcdFx0XHQgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZVxuJiM0MztcdFx0XHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcbiYjNDM7XHRcdFx0ICogcGVlci1cdTAwM2VtbF9pZCBvbmNlIHRoZSBJRCBpcyBrbm93bi5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuJiM0MztcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBtbF9wZWVyX2lkO1xuIFx0XHRcdGV0aGVyX2FkZHJfY29weShwZWVyLVx1MDAzZW1sX2FkZHIsIHN0YS1cdTAwM2VhZGRyKTtcbiBcbiBcdFx0XHQvKiB0aGUgYXNzb2MgbGluayBpcyBjb25zaWRlcmVkIHByaW1hcnkgZm9yIG5vdyAqL1xuQEAgLTI3Niw5ICYjNDM7Mjg1LDI1IEBAIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdH1cbiBcbiBcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NQVhfTUxPX1BFRVJTKVxuLVx0XHRtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4mIzQzO1x0XHRyZXR1cm4gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4gXG4tXHRyZXR1cm4gbWxfcGVlcl9pZDtcbiYjNDM7XHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBPbmx5IGRldmljZXMgdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3Qgb3duIGEgc2xvdCBpblxuJiM0MztcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAzY1xuJiM0MztcdCAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSlcbiYjNDM7XHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAyNiB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQsXG4mIzQzO1x0XHRcdCAgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4mIzQzO1x0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuIH1cbiBcbiBpbnQgYXRoMTJrX3BlZXJfbWxvX2xpbmtfcGVlcnNfZGVsZXRlKHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmhcbmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxuQEAgLTI2LDQgJiM0MzsyNiw1IEBAIGludCBhdGgxMmtfbGlua19zdGFfcmhhc2hfYWRkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyXG4gc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXRoMTJrX2xpbmtfc3RhX2ZpbmRfYnlfYWRkcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0XHRcdCAgICAgY29uc3QgdTggKmFkZHIpO1xuIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaCk7XG4mIzQzO3ZvaWQgYXRoMTJrX3BlZXJfbWxfZnJlZShzdHJ1Y3QgYXRoMTJrX2h3ICphaCwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKTtcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGU1YmY5ZDIxODEwNDBkLi4wYzI3N2Y1MWQ5OWMxYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtNDM5LDYgJiM0Mzs0MzksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCYjMzQ7d2NuNzg1MCBodzIuMFwmIzM0OyxcbkBAIC01MzAsNiAmIzQzOzUzMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4mIzQzO1xuJiM0MztcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSBmYWxzZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCYjMzQ7cWNuOTI3NCBodzIuMFwmIzM0OyxcbkBAIC02MTcsNiAmIzQzOzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4mIzQzO1xuJiM0MztcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxuIFx0fSxcbiBcdHtcbiBcdFx0Lm5hbWUgPSBcJiMzNDtpcHE1MzMyIGh3MS4wXCYjMzQ7LFxuQEAgLTY5Nyw2ICYjNDM7NzAzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcbiBcdFx0XHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcbiBcdFx0fSxcbiYjNDM7XG4mIzQzO1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwmIzM0O3FjYzIwNzIgaHcxLjBcJiMzNDssXG5AQCAtNzg5LDYgJiM0Mzs3OTcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwmIzM0O2lwcTU0MjQgaHcxLjBcJiMzNDssXG5AQCAtODczLDYgJiM0Mzs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkgdG8gZnVuY3Rpb24uIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggMGU3YzczMmY4MjIyNjUuLmNmOWM1YjA2OGZhNjcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMTU0Nyw2ICYjNDM7MTU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3ByZV9yZWNvbmZpZ3VyZV9yZWNvdmVyeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCQl9CiAKIAkJd2lwaHlfdW5sb2NrKGFoLSZndDtody0mZ3Q7d2lwaHkpOwomIzQzOwomIzQzOwkJY29tcGxldGUoJmFtcDthaC0mZ3Q7cGVlcl9tbF9pZF9kb25lKTsKIAl9CiAKIAl3YWtlX3VwKCZhbXA7YWItJmd0O3dtaV9hYi50eF9jcmVkaXRzX3dxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKaW5kZXggZmM1MTI3YjVjMWEzN2YuLjMwNzI2ZTU4MDgzM2UxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaApAQCAtNzIsNiAmIzQzOzcyLDcgQEAKIAogI2RlZmluZSBBVEgxMktfTUFYX01MT19QRUVSUyAgICAgICAgICAgIDI1NgogI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRgomIzQzOyNkZWZpbmUgQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcgICAgICAweEZGRkUKIAogI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTEKICNkZWZpbmUgQVRIMTJLX0lOVkFMSURfUlNTSV9FTVBUWSAtMTI4CkBAIC03OTMsNiAmIzQzOzc5NCw4IEBAIHN0cnVjdCBhdGgxMmtfaHcgewogCWVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlOwogCWJvb2wgcmVnZF91cGRhdGVkOwogCWJvb2wgdXNlXzZnaHpfcmVnZDsKJiM0MzsJYm9vbCBob3N0X2FsbG9jX21sX2lkOwomIzQzOwlzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7CiAKIAl1OCBudW1fcmFkaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jCmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKIAogI2luY2x1ZGUgJiMzNDtjb3JlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwZWVyLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7ZHBfcGVlci5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9odHQuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmgmIzM0OwpAQCAtNTc1LDYgJiM0Mzs1NzYsNTEgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYiwKJiM0MzsJCQkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gJmFtcDtyZXNwLSZndDttbG9fcGVlcl9tYXBfZXY7CiYjNDM7CXUxNiByYXdfcGVlcl9pZCwgcGVlcl9pZCwgYWRkcl9oMTY7CiYjNDM7CXU4IHBlZXJfYWRkcltFVEhfQUxFTl07CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqZXYpKSB7CiYjNDM7CQlhdGgxMmtfd2FybihhYiwgJiMzNDt1bmV4cGVjdGVkIGh0dCBtbG8gcGVlciBtYXAgZXZlbnQgbGVuICV1XG4mIzM0OywKJiM0MzsJCQkgICAgc2tiLSZndDtsZW4pOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJhd19wZWVyX2lkID0gbGUzMl9nZXRfYml0cyhldi0mZ3Q7aW5mbzAsCiYjNDM7CQkJCSAgICBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMF9NTE9fUEVFUl9JRCk7CiYjNDM7CXBlZXJfaWQgPSByYXdfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzOwomIzQzOwlhZGRyX2gxNiA9IGxlMzJfZ2V0X2JpdHMoZXYtJmd0O2luZm8xLAomIzQzOwkJCQkgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2KTsKJiM0MzsJYXRoMTJrX2RwX2dldF9tYWNfYWRkcihsZTMyX3RvX2NwdShldi0mZ3Q7bWFjX2FkZHJfbDMyKSwgYWRkcl9oMTYsCiYjNDM7CQkJICAgICAgIHBlZXJfYWRkcik7CiYjNDM7CiYjNDM7CWF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCAmIzM0O2h0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcbiYjMzQ7LAomIzQzOwkJICAgcGVlcl9hZGRyLCBwZWVyX2lkKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRml4IHVwIHRoZSBkcF9wZWVyIGVudHJ5IGNyZWF0ZWQgd2l0aCBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORwomIzQzOwkgKiBlYXJsaWVyOyBvbiBjaGlwcyB3aXRoIGhvc3RfYWxsb2NfbWxfaWQgPT0gZmFsc2UgdGhpcyBpcyB0aGUgb25seQomIzQzOwkgKiBwb2ludCBhdCB3aGljaCB0aGUgaG9zdCBsZWFybnMgdGhlIGZpcm13YXJlLWFzc2lnbmVkIElELiBDaGlwcwomIzQzOwkgKiB0aGF0IGFsbG9jYXRlIHRoZSBJRCBvbiB0aGUgaG9zdCBhbHNvIHJlY2VpdmUgdGhpcyBldmVudCBidXQgdGhlCiYjNDM7CSAqIGZpcm13YXJlLXJlcG9ydGVkIElEIG1hdGNoZXMgdGhlIGhvc3QtYWxsb2NhdGVkIG9uZSwgc28gdGhlcmUgaXMKJiM0MzsJICogbm90aGluZyB0byBmaXggdXAuCiYjNDM7CSAqLwomIzQzOwlpZiAoIWFiLSZndDtod19wYXJhbXMtJmd0O2hvc3RfYWxsb2NfbWxfaWQpIHsKJiM0MzsJCXJldCA9IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoYWIsIHBlZXJfYWRkciwKJiM0MzsJCQkJCQkgICBwZWVyX2lkKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJYXRoMTJrX3dhcm4oYWIsCiYjNDM7CQkJCSAgICAmIzM0O2ZhaWxlZCB0byBmaXggdXAgcGVlciBpZCAldSBmb3IgZHAgcGVlciAlcE06ICVkXG4mIzM0OywKJiM0MzsJCQkJICAgIHBlZXJfaWQsIHBlZXJfYWRkciwgcmV0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02NTksNiAmIzQzOzcwNSw5IEBAIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJY2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDoKIAkJYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7CiAJCWJyZWFrOwomIzQzOwljYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOgomIzQzOwkJYXRoMTJrX2RwX2h0dF9tbG9fcGVlcl9tYXBfaGFuZGxlcihhYiwgc2tiKTsKJiM0MzsJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCAmIzM0O2RwX2h0dCBldmVudCAlZCBub3QgaGFuZGxlZFxuJiMzNDssCiAJCQkgICB0eXBlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oCmluZGV4IDk4NzY4OWYxMWNkYTQ1Li4yZGI3ZmIyN2MwMzYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oCkBAIC05MzAsNiAmIzQzOzkzMCw3IEBAIGVudW0gaHR0X3QyaF9tc2dfdHlwZSB7CiAJSFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsCiAJSFRUX1QySF9NU0dfVFlQRV9CS1BSRVNTVVJFX0VWRU5UX0lORCA9IDB4MjQsCiAJSFRUX1QySF9NU0dfVFlQRV9NTE9fVElNRVNUQU1QX09GRlNFVF9JTkQgPSAweDI4LAomIzQzOwlIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCA9IDB4MjksCiAJSFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDMJPSAweDJiLAogCUhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsCiB9OwpAQCAtOTc0LDExICYjNDM7OTc1LDIyIEBAIHN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQgewogCV9fbGUzMiBpbmZvMTsKIH0gX19wYWNrZWQ7CiAKJiM0MzsjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lECQlHRU5NQVNLKDIzLCA4KQomIzQzOyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2CQlHRU5NQVNLKDE1LCAwKQomIzQzOwomIzQzO3N0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCB7CiYjNDM7CV9fbGUzMiBpbmZvMDsKJiM0MzsJX19sZTMyIG1hY19hZGRyX2wzMjsKJiM0MzsJX19sZTMyIGluZm8xOwomIzQzOwlfX2xlMzIgcmVzZXJ2ZWRbNV07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKIHN0cnVjdCBodHRfcmVzcF9tc2cgewogCXVuaW9uIHsKIAkJc3RydWN0IGh0dF90MmhfdmVyc2lvbl9jb25mX21zZyB2ZXJzaW9uX21zZzsKIAkJc3RydWN0IGh0dF90MmhfcGVlcl9tYXBfZXZlbnQgcGVlcl9tYXBfZXY7CiAJCXN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQgcGVlcl91bm1hcF9ldjsKJiM0MzsJCXN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7CiAJfTsKIH0gX19wYWNrZWQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMKaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYwpAQCAtNDcyLDcgJiM0Mzs0NzIsOSBAQCBpbnQgYXRoMTJrX2RwX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAlkcF9wZWVyLSZndDtpc19tbG8gPSBwYXJhbXMtJmd0O2lzX21sbzsKIAogCS8qCi0JICogRm9yIE1MTyBjbGllbnQsIHRoZSBob3N0IGFzc2lnbnMgdGhlIE1MIHBlZXIgSUQsIHNvIHNldCBwZWVyX2lkIGluIGRwX3BlZXIKJiM0MzsJICogRm9yIE1MTyBjbGllbnQsIHRoZSBNTCBwZWVyIElELCBlaXRoZXIga25vd24gb3IgUEVORElORywgbmVlZHMgdG8gYmUKJiM0MzsJICogaW5pdGlhbGl6ZWQgaGVyZSBzaW5jZSB0aGUgZm9sbG93aW5nIGxvZ2ljIGRlcGVuZHMgb24gaXQuCiYjNDM7CSAqCiAJICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmUKIAkgKiBhc3NpZ25lZCBhdCB0aGUgdGltZSBvZiBsaW5rIHBlZXIgY3JlYXRpb24KIAkgKi8KQEAgLTQ4OCwxMyAmIzQzOzQ5MCwxNyBAQCBpbnQgYXRoMTJrX2RwX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAlsaXN0X2FkZCgmYW1wO2RwX3BlZXItJmd0O2xpc3QsICZhbXA7ZHBfaHctJmd0O2RwX3BlZXJzX2xpc3QpOwogCiAJLyoKLQkgKiBGb3IgTUxPIGNsaWVudCwgdGhlIHBlZXJfaWQgZm9yIGF0aDEya19kcF9wZWVyIGlzIGFsbG9jYXRlZCBieSBob3N0Ci0JICogYW5kIHRoYXQgcGVlcl9pZCBpcyBrbm93biBhdCB0aGlzIHBvaW50LCBhbmQgaGVuY2UgdGhpcyBhdGgxMmtfZHBfcGVlcgotCSAqIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVIHRhYmxlIHVzaW5nIHRoZSBwZWVyX2lkLgotCSAqIEZvciBub24tTUxPIGNsaWVudCwgdGhpcyBhZGRpdGlvbiB0byBSQ1UgdGFibGUgc2hhbGwgYmUgZG9uZSBhdCB0aGUKLQkgKiB0aW1lIG9mIGFzc2lnbm1lbnQgb2YgYXRoMTJrX2RwX2xpbmtfcGVlciB0byBhdGgxMmtfZHBfcGVlci4KJiM0MzsJICogRm9yIGFuIE1MTyBjbGllbnQgd2hvc2UgTUwgcGVlciBJRCBpcyBhbGxvY2F0ZWQgYnkgdGhlIGhvc3QsIHRoZQomIzQzOwkgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVCiYjNDM7CSAqIHRhYmxlIHVzaW5nIGl0LiBGb3IgYW4gTUxPIGNsaWVudCBvbiBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmUKJiM0MzsJICogYWxsb2NhdGVzIHRoZSBJRCwgcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBhbmQgdGhlCiYjNDM7CSAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZQomIzQzOwkgKiBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCBoYW5kbGVyLiBGb3IgYSBub24tTUxPIGNsaWVudAomIzQzOwkgKiB0aGUgcHVibGlzaCBoYXBwZW5zIGxhdGVyLCBhdCB0aGUgdGltZSBvZiBhc3NpZ25tZW50IG9mCiYjNDM7CSAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuCiAJICovCi0JaWYgKGRwX3BlZXItJmd0O2lzX21sbykKJiM0MzsJaWYgKGRwX3BlZXItJmd0O2lzX21sbyAmYW1wOyZhbXA7CiYjNDM7CSAgICBkcF9wZWVyLSZndDtwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKQogCQlyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctJmd0O2RwX3BlZXJzW2RwX3BlZXItJmd0O3BlZXJfaWRdLCBkcF9wZWVyKTsKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZHBfaHctJmd0O3BlZXJfbG9jayk7CkBAIC01MTUsNyAmIzQzOzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAkJcmV0dXJuOwogCX0KIAotCWlmIChkcF9wZWVyLSZndDtpc19tbG8pCiYjNDM7CWlmIChkcF9wZWVyLSZndDtpc19tbG8gJmFtcDsmYW1wOwomIzQzOwkgICAgZHBfcGVlci0mZ3Q7cGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORykKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LSZndDtkcF9wZWVyc1tkcF9wZWVyLSZndDtwZWVyX2lkXSwgTlVMTCk7CiAKIAlsaXN0X2RlbCgmYW1wO2RwX3BlZXItJmd0O2xpc3QpOwpAQCAtNjg4LDMgJiM0Mzs2OTUsNTUgQEAgdm9pZCBhdGgxMmtfZHBfbGlua19wZWVyX3Jlc2V0X3J4X3N0YXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBjb25zdCB1OCAqYWRkcikKIAlpZiAocnhfc3RhdHMpCiAJCW1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpOwogfQomIzQzOwomIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiYjNDM7CQkJCSBjb25zdCB1OCAqcGVlcl9hZGRyLCB1MTYgcGVlcl9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpsaW5rX3BlZXI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlciA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnID0gYWItJmd0O2FnOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odyA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJaWYgKHBlZXJfaWQgJmd0Oz0gKEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIHwgQVRIMTJLX01BWF9NTE9fUEVFUlMpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBhZy0mZ3Q7bnVtX2h3OyBpJiM0MzsmIzQzOykgewomIzQzOwkJYWggPSBhZy0mZ3Q7YWhbaV07CiYjNDM7CQlpZiAoIWFoKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWgtJmd0O2RwX2h3LnBlZXJfbG9jayk7CiYjNDM7CQlkcF9wZWVyID0gYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9hZGRyKCZhbXA7YWgtJmd0O2RwX2h3LAomIzQzOwkJCQkJCSAgICAgICh1OCAqKXBlZXJfYWRkcik7CiYjNDM7CQlpZiAoZHBfcGVlcikgewomIzQzOwkJCWRwX2h3ID0gJmFtcDthaC0mZ3Q7ZHBfaHc7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FoLSZndDtkcF9ody5wZWVyX2xvY2spOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghZHBfcGVlcikKJiM0MzsJCXJldHVybiAtRU5PRU5UOwomIzQzOwomIzQzOwkvKiBkcF9ody0mZ3Q7cGVlcl9sb2NrIGlzIGhlbGQgKi8KJiM0MzsKJiM0MzsJZHBfcGVlci0mZ3Q7cGVlcl9pZCA9IHBlZXJfaWQ7CiYjNDM7CXJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody0mZ3Q7ZHBfcGVlcnNbcGVlcl9pZF0sIGRwX3BlZXIpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVRIMTJLX05VTV9NQVhfTElOS1M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlsaW5rX3BlZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRwX3BlZXItJmd0O2xpbmtfcGVlcnNbaV0sCiYjNDM7CQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7ZHBfaHctJmd0O3BlZXJfbG9jaykpOwomIzQzOwkJaWYgKGxpbmtfcGVlcikKJiM0MzsJCQlsaW5rX3BlZXItJmd0O21sX2lkID0gcGVlcl9pZDsKJiM0MzsJfQomIzQzOwomIzQzOwlhdGgxMmtfc3RhX3RvX2Foc3RhKGRwX3BlZXItJmd0O3N0YSktJmd0O21sX3BlZXJfaWQgPSBwZWVyX2lkOwomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2RwX2h3LSZndDtwZWVyX2xvY2spOwomIzQzOwomIzQzOwljb21wbGV0ZSgmYW1wO2FoLSZndDtwZWVyX21sX2lkX2RvbmUpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oCmluZGV4IGY1MDY3ZTY2ZjFlMTgyLi45ODQyNjcxYjU0NzU5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmgKQEAgLTE4MCw0ICYjNDM7MTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3AKIHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICoKIGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9wZWVyaWQoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCB1MTYgcGVlcl9pZCk7CiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7CiYjNDM7aW50IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgY29uc3QgdTggKnBlZXJfYWRkciwKJiM0MzsJCQkJIHUxNiBwZWVyX2lkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IGQxMzViMjkzNjM3ODhiLi44MDkxNTAxY2Y3NDJhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaApAQCAtMjMyLDYgJiM0MzsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7CiAJCXUzMiBtYXhfY2xpZW50X2RiczsKIAkJdTMyIG1heF9jbGllbnRfZGJzX3NiczsKIAl9IGNsaWVudDsKJiM0MzsKJiM0MzsJYm9vbCBob3N0X2FsbG9jX21sX2lkOwogfTsKIAogc3RydWN0IGF0aDEya19od19vcHMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggNDkwYzEzNGMxZjI5MGIuLmFlODc0MTE0ZGM1MThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTEyNzgsMTMgJiM0MzsxMjc4LDE3IEBAIHZvaWQgYXRoMTJrX21hY19kcF9wZWVyX2NsZWFudXAoc3RydWN0IGF0aDEya19odyAqYWgpCiAJc3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wOwogCXN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gJmFtcDthaC0mZ3Q7ZHBfaHc7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtJmd0O2h3LSZndDt3aXBoeSk7CiYjNDM7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtwZWVycyk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkcF9ody0mZ3Q7cGVlcl9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHBfcGVlciwgdG1wLCAmYW1wO2RwX2h3LSZndDtkcF9wZWVyc19saXN0LCBsaXN0KSB7CiAJCWlmIChkcF9wZWVyLSZndDtpc19tbG8pIHsKLQkJCXJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody0mZ3Q7ZHBfcGVlcnNbZHBfcGVlci0mZ3Q7cGVlcl9pZF0sIE5VTEwpOwotCQkJY2xlYXJfYml0KGRwX3BlZXItJmd0O3BlZXJfaWQsIGFoLSZndDtmcmVlX21sX3BlZXJfaWRfbWFwKTsKJiM0MzsJCQlpZiAoZHBfcGVlci0mZ3Q7cGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORykKJiM0MzsJCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LSZndDtkcF9wZWVyc1tkcF9wZWVyLSZndDtwZWVyX2lkXSwKJiM0MzsJCQkJCQkgICBOVUxMKTsKJiM0MzsJCQlhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhdGgxMmtfc3RhX3RvX2Foc3RhKGRwX3BlZXItJmd0O3N0YSkpOwogCQl9CiAKIAkJbGlzdF9tb3ZlKCZhbXA7ZHBfcGVlci0mZ3Q7bGlzdCwgJmFtcDtwZWVycyk7CkBAIC0zNTI3LDExICYjNDM7MzUzMSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSwKIAlzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS0mZ3Q7YWhzdGE7CiAJc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGFfcDsKIAlzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWggPSBhcnN0YS0mZ3Q7YXJ2aWYtJmd0O2FyLSZndDthaDsKIAl1bnNpZ25lZCBsb25nIGxpbmtzOwogCXU4IGxpbmtfaWQ7CiAJaW50IGk7CiAKLQlpZiAoIXN0YS0mZ3Q7bWxvIHx8IGFoc3RhLSZndDttbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKQomIzQzOwlpZiAoIXN0YS0mZ3Q7bWxvKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQgJmFtcDsmYW1wOwomIzQzOwkgICAgYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpCiAJCXJldHVybjsKIAogCW1sLSZndDtlbmFibGVkID0gdHJ1ZTsKQEAgLTM1MzksMTIgJiM0MzszNTQ4LDI1IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLAogCiAJLyogRm9yIG5vdyBjb25zaWRlcmluZyB0aGUgcHJpbWFyeSB1bWFjIGJhc2VkIG9uIGFzc29jIGxpbmsgKi8KIAltbC0mZ3Q7cHJpbWFyeV91bWFjID0gYXJzdGEtJmd0O2lzX2Fzc29jX2xpbms7Ci0JbWwtJmd0O3BlZXJfaWRfdmFsaWQgPSB0cnVlOwomIzQzOwkvKgomIzQzOwkgKiBPbmx5IGNoaXBzIHRoYXQgYWxsb2NhdGUgdGhlIE1MRCBwZWVyIElEIG9uIHRoZSBob3N0IHNlbmQgYSB2YWxpZAomIzQzOwkgKiBtbF9wZWVyX2lkIGluIFdNSV9QRUVSX0FTU09DX0NNRElELiBGb3IgY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlCiYjNDM7CSAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy4KJiM0MzsJICovCiYjNDM7CW1sLSZndDtwZWVyX2lkX3ZhbGlkID0gYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQ7CiAJbWwtJmd0O2xvZ2ljYWxfbGlua19pZHhfdmFsaWQgPSB0cnVlOwogCiAJZXRoZXJfYWRkcl9jb3B5KG1sLSZndDttbGRfYWRkciwgc3RhLSZndDthZGRyKTsKIAltbC0mZ3Q7bG9naWNhbF9saW5rX2lkeCA9IGFyc3RhLSZndDtsaW5rX2lkeDsKLQltbC0mZ3Q7bWxfcGVlcl9pZCA9IGFoc3RhLSZndDttbF9wZWVyX2lkOwomIzQzOwkvKgomIzQzOwkgKiBXTUlfTUxPX1BFRVJfQVNTT0NfUEFSQU1TIGV4cGVjdHMgdGhlIHJhdyBNTCBwZWVyIElEIHdpdGhvdXQKJiM0MzsJICogdGhlIGhvc3Qtc2lkZSBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCBib29ra2VlcGluZyBiaXQuIEZvciBjaGlwcwomIzQzOwkgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlCiYjNDM7CSAqIGZpcm13YXJlIGFsd2F5cyBhbGxvY2F0ZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgaGVyZSk7IHNlbmQgMAomIzQzOwkgKiB0byBtYWtlIHRoYXQgaW50ZW50IGV4cGxpY2l0LgomIzQzOwkgKi8KJiM0MzsJbWwtJmd0O21sX3BlZXJfaWQgPSBhaC0mZ3Q7aG9zdF9hbGxvY19tbF9pZCA/CiYjNDM7CQkJIChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmYW1wOyB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpIDogMDsKIAltbC0mZ3Q7aWVlZV9saW5rX2lkID0gYXJzdGEtJmd0O2xpbmtfaWQ7CiAJbWwtJmd0O251bV9wYXJ0bmVyX2xpbmtzID0gMDsKIAltbC0mZ3Q7ZW1sX2NhcCA9IHN0YS0mZ3Q7ZW1sX2NhcDsKQEAgLTM1OTEsOCAmIzQzOzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLAogCiAJbWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTsKIAotCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSk7Ci0KIAlhcmctJmd0O3BlZXJfbmV3X2Fzc29jID0gIXJlYXNzb2M7CiAJYXRoMTJrX3BlZXJfYXNzb2NfaF9iYXNpYyhhciwgYXJ2aWYsIGFyc3RhLCBhcmcpOwogCWF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7CkBAIC0zODMyLDYgJiM0MzszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphciwKIAlyZXR1cm4gYnc7CiB9CiAKJiM0MztzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphciwKJiM0MzsJCQkJIHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnICpwZWVyX2FyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmVpbml0X2NvbXBsZXRpb24oJmFtcDthci0mZ3Q7cGVlcl9hc3NvY19kb25lKTsKJiM0MzsJcmVpbml0X2NvbXBsZXRpb24oJmFtcDthaC0mZ3Q7cGVlcl9tbF9pZF9kb25lKTsKJiM0MzsKJiM0MzsJcmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxuJiMzNDssCiYjNDM7CQkJICAgIHBlZXJfYXJnLSZndDtwZWVyX21hYywgcGVlcl9hcmctJmd0O3ZkZXZfaWQsIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkgewomIzQzOwkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCiYjNDM7CQkJICAgIHBlZXJfYXJnLSZndDtwZWVyX21hYywgcGVlcl9hcmctJmd0O3ZkZXZfaWQpOwomIzQzOwkJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRm9yIGRldmljZXMgd2hlcmUgdGhlIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUxEIHBlZXIgSUQsIHRoZSBob3N0CiYjNDM7CSAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzCiYjNDM7CSAqIGhhbmRsZWQgaW4gYSBzb2Z0aXJxIChCSCB3b3JrcXVldWUpIGNvbnRleHQgdGhhdCBjYW5ub3QgdGFrZSB0aGUKJiM0MzsJICogd2lwaHkgbG9jay4gQmxvY2sgaGVyZSwgd2hpbGUgc3RpbGwgaG9sZGluZyB0aGUgd2lwaHkgbG9jaywgdW50aWwKJiM0MzsJICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3QKJiM0MzsJICogYWxsIG90aGVyIHdpcGh5LWxvY2tlZCBtbF9wZWVyX2lkIGFjY2Vzc2VzLgomIzQzOwkgKgomIzQzOwkgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmsKJiM0MzsJICogcGVlciBhc3NvYywgc28gYmxvY2sgb25seSBmb3IgdGhhdCBsaW5rLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFhaC0mZ3Q7aG9zdF9hbGxvY19tbF9pZCAmYW1wOyZhbXA7CiYjNDM7CSAgICBwZWVyX2FyZy0mZ3Q7aXNfYXNzb2MgJmFtcDsmYW1wOwomIzQzOwkgICAgcGVlcl9hcmctJmd0O21sLmVuYWJsZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgcGVlcl9hcmctJmd0O21sLmFzc29jX2xpbmsgJmFtcDsmYW1wOwomIzQzOwkgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FoLSZndDtwZWVyX21sX2lkX2RvbmUsIDEgKiBIWikpIHsKJiM0MzsJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcbiYjMzQ7LAomIzQzOwkJCSAgICBwZWVyX2FyZy0mZ3Q7cGVlcl9tYWMsIHBlZXJfYXJnLSZndDt2ZGV2X2lkKTsKJiM0MzsJCXJldHVybiAtRVRJTUVET1VUOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJCQkgICAgIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLAogCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZikKQEAgLTM5MTIsMTggJiM0MzszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJfQogCiAJcGVlcl9hcmctJmd0O2lzX2Fzc29jID0gdHJ1ZTsKLQlyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTsKLQlpZiAocmV0KSB7Ci0JCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxuJiMzNDssCi0JCQkgICAgYnNzX2NvbmYtJmd0O2Jzc2lkLCBhcnZpZi0mZ3Q7dmRldl9pZCwgcmV0KTsKLQkJcmV0dXJuOwotCX0KIAotCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkgewotCQlhdGgxMmtfd2Fybihhci0mZ3Q7YWIsICYjMzQ7ZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXG4mIzM0OywKLQkJCSAgICBic3NfY29uZi0mZ3Q7YnNzaWQsIGFydmlmLSZndDt2ZGV2X2lkKTsKJiM0MzsJcmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7CiYjNDM7CWlmIChyZXQpCiAJCXJldHVybjsKLQl9CiAKIAlyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtJmd0O2Jzc2lkLAogCQkJCSAgICAgJmFtcDtsaW5rX3N0YS0mZ3Q7aHRfY2FwLCAmYW1wO2xpbmtfc3RhLSZndDtoZV82Z2h6X2NhcGEpOwpAQCAtNjQ3NywxOCAmIzQzOzY1MzUsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX3N0YXRpb25fYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJfQogCiAJcGVlcl9hcmctJmd0O2lzX2Fzc29jID0gdHJ1ZTsKLQlyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTsKLQlpZiAocmV0KSB7Ci0JCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcbiYjMzQ7LAotCQkJICAgIGFyc3RhLSZndDthZGRyLCBhcnZpZi0mZ3Q7dmRldl9pZCwgcmV0KTsKLQkJcmV0dXJuIHJldDsKLQl9CiAKLQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FyLSZndDtwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpIHsKLQkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCi0JCQkgICAgYXJzdGEtJmd0O2FkZHIsIGFydmlmLSZndDt2ZGV2X2lkKTsKLQkJcmV0dXJuIC1FVElNRURPVVQ7Ci0JfQomIzQzOwlyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAludW1fdmh0X3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX3ZodF9yYXRlcyhhciwgYmFuZCwgbWFzayk7CiAJbnVtX2hlX3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX2hlX3JhdGVzKGFyLCBiYW5kLCBtYXNrKTsKQEAgLTY4MzcsMTQgJiM0Mzs2ODg3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3N0YV9yY191cGRhdGVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndrKQogCQkJCQkJICBwZWVyX2FyZywgdHJ1ZSk7CiAKIAkJCXBlZXJfYXJnLSZndDtpc19hc3NvYyA9IGZhbHNlOwotCQkJZXJyID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7Ci0JCQlpZiAoZXJyKQotCQkJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcbiYjMzQ7LAotCQkJCQkgICAgYXJzdGEtJmd0O2FkZHIsIGFydmlmLSZndDt2ZGV2X2lkLCBlcnIpOwogCi0JCQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FyLSZndDtwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpCi0JCQkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCi0JCQkJCSAgICBhcnN0YS0mZ3Q7YWRkciwgYXJ2aWYtJmd0O3ZkZXZfaWQpOwomIzQzOwkJCWF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpOwogCQl9CiAJfQogfQpAQCAtNzI2MiwxMCAmIzQzOzczMDYsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX21sX3N0YXRpb25fcmVtb3ZlKHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiwKIAkJYXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7CiAJfQogCi0JaWYgKHN0YS0mZ3Q7bWxvKSB7Ci0JCWNsZWFyX2JpdChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCwgYWgtJmd0O2ZyZWVfbWxfcGVlcl9pZF9tYXApOwotCQlhaHN0YS0mZ3Q7bWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEOwotCX0KJiM0MzsJaWYgKHN0YS0mZ3Q7bWxvKQomIzQzOwkJYXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpOwogfQogCiBzdGF0aWMgaW50IGF0aDEya19tYWNfaGFuZGxlX2xpbmtfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LApAQCAtNzcyOSwxNSAmIzQzOzc3NzEsMjMgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkvKiBNTCBzdGEgKi8KIAkJaWYgKHN0YS0mZ3Q7bWxvICZhbXA7JmFtcDsgIWFoc3RhLSZndDtsaW5rc19tYXAgJmFtcDsmYW1wOwogCQkgICAgKGh3ZWlnaHQxNihzdGEtJmd0O3ZhbGlkX2xpbmtzKSA9PSAxKSkgewotCQkJYWhzdGEtJmd0O21sX3BlZXJfaWQgPSBhdGgxMmtfcGVlcl9tbF9hbGxvYyhhaCk7Ci0JCQlpZiAoYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHsKLQkJCQlhdGgxMmtfaHdfd2FybihhaCwgJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTSYjMzQ7LAotCQkJCQkgICAgICAgc3RhLSZndDthZGRyKTsKLQkJCQlnb3RvIGV4aXQ7CiYjNDM7CQkJaWYgKGFoLSZndDtob3N0X2FsbG9jX21sX2lkKSB7CiYjNDM7CQkJCWFoc3RhLSZndDttbF9wZWVyX2lkID0gYXRoMTJrX3BlZXJfbWxfYWxsb2MoYWgpOwomIzQzOwkJCQlpZiAoYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHsKJiM0MzsJCQkJCWF0aDEya19od193YXJuKGFoLCAmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNJiMzNDssCiYjNDM7CQkJCQkJICAgICAgIHN0YS0mZ3Q7YWRkcik7CiYjNDM7CQkJCQlnb3RvIGV4aXQ7CiYjNDM7CQkJCX0KJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQgYW5kIG5vdGlmaWVzCiYjNDM7CQkJCSAqIHRoZSBob3N0IHZpYSBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUAomIzQzOwkJCQkgKi8KJiM0MzsJCQkJYWhzdGEtJmd0O21sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORzsKIAkJCX0KIAogCQkJZHBfcGFyYW1zLmlzX21sbyA9IHRydWU7Ci0JCQlkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLSZndDttbF9wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7CiYjNDM7CQkJZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS0mZ3Q7bWxfcGVlcl9pZDsKIAkJfQogCiAJCWRwX3BhcmFtcy5zdGEgPSBzdGE7CkBAIC03ODc0LDEwICYjNDM7NzkyNCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIHBlZXJfZGVsZXRlOgogCWF0aDEya19kcF9wZWVyX2RlbGV0ZSgmYW1wO2FoLSZndDtkcF9odywgc3RhLSZndDthZGRyLCBzdGEpOwogbWxfcGVlcl9pZF9jbGVhcjoKLQlpZiAoc3RhLSZndDttbG8pIHsKLQkJY2xlYXJfYml0KGFoc3RhLSZndDttbF9wZWVyX2lkLCBhaC0mZ3Q7ZnJlZV9tbF9wZWVyX2lkX21hcCk7Ci0JCWFoc3RhLSZndDttbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7Ci0JfQomIzQzOwlpZiAoc3RhLSZndDttbG8pCiYjNDM7CQlhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhaHN0YSk7CiBleGl0OgogCS8qIHVwZGF0ZSB0aGUgc3RhdGUgaWYgZXZlcnl0aGluZyB3ZW50IHdlbGwgKi8KIAlpZiAoIXJldCkKQEAgLTE1MzA3LDYgJiM0MzsxNTM1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLAogCWFoLSZndDtudW1fcmFkaW8gPSBudW1fcGRldl9tYXA7CiAKIAltdXRleF9pbml0KCZhbXA7YWgtJmd0O2h3X211dGV4KTsKJiM0MzsJaW5pdF9jb21wbGV0aW9uKCZhbXA7YWgtJmd0O3BlZXJfbWxfaWRfZG9uZSk7CiAKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2FoLSZndDtkcF9ody5wZWVyX2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWgtJmd0O2RwX2h3LmRwX3BlZXJzX2xpc3QpOwpAQCAtMTUzODEsOCAmIzQzOzE1NDMwLDkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpCiAJaW50IG1hY19pZCwgZGV2aWNlX2lkLCB0b3RhbF9yYWRpbywgbnVtX2h3OwogCXN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7CiAJc3RydWN0IGF0aDEya19odyAqYWg7Ci0JaW50IHJldCwgaSwgajsKJiM0MzsJYm9vbCBjb25mID0gZmFsc2U7CiAJdTggcmFkaW9fcGVyX2h3OwomIzQzOwlpbnQgcmV0LCBpLCBqOwogCiAJdG90YWxfcmFkaW8gPSAwOwogCWZvciAoaSA9IDA7IGkgJmx0OyBhZy0mZ3Q7bnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CkBAIC0xNTQyMiw2ICYjNDM7MTU0NzIsMTkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpCiAJCQl9CiAKIAkJCWFiID0gYWctJmd0O2FiW2RldmljZV9pZF07CiYjNDM7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiB0aGUgYXNzdW1wdGlvbiBpcyBhbGwgZGV2aWNlcyB3aXRoaW4gYW4gYWgKJiM0MzsJCQkgKiBzaGFyZSB0aGUgc2FtZSBob3N0X2FsbG9jX21sX2lkIGNvbmZpZ3VyYXRpb24KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoaiA9PSAwKSB7CiYjNDM7CQkJCWNvbmYgPSBhYi0mZ3Q7aHdfcGFyYW1zLSZndDtob3N0X2FsbG9jX21sX2lkOwomIzQzOwkJCX0gZWxzZSBpZiAoY29uZiAhPSBhYi0mZ3Q7aHdfcGFyYW1zLSZndDtob3N0X2FsbG9jX21sX2lkKSB7CiYjNDM7CQkJCWF0aDEya193YXJuKGFiLCAmIzM0O2luY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJiMzOTt0XG4mIzM0OywKJiM0MzsJCQkJCSAgICBjb25mID8gJiMzNDtob3N0JiMzNDsgOiAmIzM0O2Zpcm13YXJlJiMzNDssIGRldmljZV9pZCk7CiYjNDM7CQkJCWdvdG8gZXJyOwomIzQzOwkJCX0KJiM0MzsKIAkJCXBkZXZfbWFwW2pdLmFiID0gYWI7CiAJCQlwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDsKIAkJCW1hY19pZCYjNDM7JiM0Mzs7CkBAIC0xNTQ0Niw2ICYjNDM7MTU1MDksNyBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZykKIAkJfQogCiAJCWFoLSZndDtkZXYgPSBhYi0mZ3Q7ZGV2OwomIzQzOwkJYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQgPSBjb25mOwogCiAJCWFnLSZndDthaFtpXSA9IGFoOwogCQlhZy0mZ3Q7bnVtX2h3JiM0MzsmIzQzOzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMKaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYwpAQCAtMjMwLDcgJiM0MzsyMzAsMTYgQEAgaW50IGF0aDEya19wZWVyX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAJCS8qIEZpbGwgTUwgaW5mbyBpbnRvIGNyZWF0ZWQgcGVlciAqLwogCQlpZiAoc3RhLSZndDttbG8pIHsKIAkJCW1sX3BlZXJfaWQgPSBhaHN0YS0mZ3Q7bWxfcGVlcl9pZDsKLQkJCXBlZXItJmd0O21sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzOwkJCS8qCiYjNDM7CQkJICogRm9yIGNoaXBzIHdoZXJlIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUwgcGVlciBJRCwKJiM0MzsJCQkgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZQomIzQzOwkJCSAqIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQgaGFuZGxlciBmaXhlcyB1cAomIzQzOwkJCSAqIHBlZXItJmd0O21sX2lkIG9uY2UgdGhlIElEIGlzIGtub3duLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKQomIzQzOwkJCQlwZWVyLSZndDttbF9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcGVlci0mZ3Q7bWxfaWQgPSBtbF9wZWVyX2lkOwogCQkJZXRoZXJfYWRkcl9jb3B5KHBlZXItJmd0O21sX2FkZHIsIHN0YS0mZ3Q7YWRkcik7CiAKIAkJCS8qIHRoZSBhc3NvYyBsaW5rIGlzIGNvbnNpZGVyZWQgcHJpbWFyeSBmb3Igbm93ICovCkBAIC0yNzYsOSAmIzQzOzI4NSwyNSBAQCB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpCiAJfQogCiAJaWYgKG1sX3BlZXJfaWQgPT0gQVRIMTJLX01BWF9NTE9fUEVFUlMpCi0JCW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDsKJiM0MzsJCXJldHVybiBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDsKIAotCXJldHVybiBtbF9wZWVyX2lkOwomIzQzOwlyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSkKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLSZndDtody0mZ3Q7d2lwaHkpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBPbmx5IGRldmljZXMgdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3Qgb3duIGEgc2xvdCBpbgomIzQzOwkgKiBmcmVlX21sX3BlZXJfaWRfbWFwLgomIzQzOwkgKi8KJiM0MzsJaWYgKGFoLSZndDtob3N0X2FsbG9jX21sX2lkICZhbXA7JmFtcDsKJiM0MzsJICAgIChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmbHQ7CiYjNDM7CSAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSkKJiM0MzsJCWNsZWFyX2JpdChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmYW1wOyB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQsCiYjNDM7CQkJICBhaC0mZ3Q7ZnJlZV9tbF9wZWVyX2lkX21hcCk7CiYjNDM7CWFoc3RhLSZndDttbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7CiB9CiAKIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oCmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmgKQEAgLTI2LDQgJiM0MzsyNiw1IEBAIGludCBhdGgxMmtfbGlua19zdGFfcmhhc2hfYWRkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyCiBzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphdGgxMmtfbGlua19zdGFfZmluZF9ieV9hZGRyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJCQkgICAgIGNvbnN0IHU4ICphZGRyKTsKIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaCk7CiYjNDM7dm9pZCBhdGgxMmtfcGVlcl9tbF9mcmVlKHN0cnVjdCBhdGgxMmtfaHcgKmFoLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpOwogI2VuZGlmIC8qIF9QRUVSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggZTViZjlkMjE4MTA0MGQuLjBjMjc3ZjUxZDk5YzFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCkBAIC00MzksNiAmIzQzOzQzOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7CiAJCQkubWF4X2NsaWVudF9kYnMgPSAxMjgsCiAJCQkubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LAogCQl9LAomIzQzOwomIzQzOwkJLmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7d2NuNzg1MCBodzIuMCYjMzQ7LApAQCAtNTMwLDYgJiM0Mzs1MzIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsCiAJfSwKIAl7CiAJCS5uYW1lID0gJiMzNDtxY245Mjc0IGh3Mi4wJiMzNDssCkBAIC02MTcsNiAmIzQzOzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7CiAJCQkubWF4X2NsaWVudF9kYnMgPSAxMjgsCiAJCQkubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LAogCQl9LAomIzQzOwomIzQzOwkJLmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7aXBxNTMzMiBodzEuMCYjMzQ7LApAQCAtNjk3LDYgJiM0Mzs3MDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSwKIAl9LAogCXsKIAkJLm5hbWUgPSAmIzM0O3FjYzIwNzIgaHcxLjAmIzM0OywKQEAgLTc4OSw2ICYjNDM7Nzk3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHsKIAkJCS5tYXhfY2xpZW50X2RicyA9IDEyOCwKIAkJCS5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsCiAJCX0sCiYjNDM7CiYjNDM7CQkuaG9zdF9hbGxvY19tbF9pZCA9IGZhbHNlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7aXBxNTQyNCBodzEuMCYjMzQ7LApAQCAtODczLDYgJiM0Mzs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSwKIAl9LAogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc0NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGJpZyBkZWFsIGJlY2F1c2UgYGF0aDEya2AgaXMgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5LiBUaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0JiMzOTtzIGFkZGluZyBhIGZsYWcsIGEgbmV3IEhUVCBldmVudCBoYW5kbGVyIGZvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBwZWVyIG1hcHBpbmcsIGFuZCBtb2RpZnlpbmcgYSBidW5jaCBvZiBleGlzdGluZyBmdW5jdGlvbnMgcmVsYXRlZCB0byBwZWVyIGFzc29jaWF0aW9uIGFuZCBjcmVhdGlvbi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhZGRpbmcgTUxPIHN1cHBvcnQgdG8gdGhlIGRyaXZlci4gVGhpcyBpcyBpbnRlcmVzdGluZywgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRlc3RhYmlsaXR5LiBDYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8KCk15IGNvbmNlcm4gaXMgdGhhdCBXaS1GaSBkcml2ZXJzLCAqZXNwZWNpYWxseSogYXQgdGhpcyBsZXZlbCwgdXN1YWxseSBkZXBlbmQgb24gYWN0dWFsIGhhcmR3YXJlLiBZb3UgbmVlZCBhIFBDSWUgZGV2aWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgdGhhdCBtYWtlcyBmdXp6aW5nIGFuZCB0ZXN0aW5nIGluIFFFTVUgb3IgR0NFIHByZXR0eSB0cmlja3kuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgYG1hYzgwMjExX2h3c2ltYCwgdGhlIHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgbWFjODAyMTEsIGJ1dCB0aGF0JiMzOTtzIG1hYzgwMjExLiBJdCB3b3VsZG4mIzM5O3QgbW9kZWwgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgYGF0aDEya2AgaGFyZHdhcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gYGF0aDEya2AgYmUgZnV6emVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBtYWM4MDIxMSBzdXBwb3J0LCBidXQgdGhhdOKAmXMgYnJvYWQgYW5kIHByb2JhYmx5IHdvdWxkbuKAmXQgaGl0IHRoaXMgcGFydGljdWxhciBkcml2ZXIgdW5sZXNzIHRoZXJlIHdhcyBhIHNwZWNpZmljIGVtdWxhdG9yLiBXZSBoYXZlIGVtdWxhdG9ycyBmb3Igb3RoZXIgaGFyZHdhcmUgdHlwZXMsIGxpa2UgYHZoY2lgIGZvciBCbHVldG9vdGggb3IgYGR1bW15X2hjZGAgZm9yIFVTQiwgYnV0IEnigJltIG5vdCBhd2FyZSBvZiBhbnl0aGluZyBsaWtlIHRoYXQgZm9yIGBhdGgxMmtgLiBObyBzcGVjaWZpYyB2aXJ0dWFsIGRldmljZSwgbm8uCgpUaGVuIEkgcmVjYWxsZWQgc3l6a2FsbGVyIGhhcyBQQ0kgZnV6emluZyB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbXVsYXRlZCBQQ0kgKGUuZy4gYHZmaW9gKS4gQnV0IHdhaXQsIHRoZSBvcmlnaW5hbCBwcm9tcHQgKnNwZWNpZmljYWxseSogc2FpZCBpdCYjMzk7cyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBoYXJkd2FyZSBlbXVsYXRpb24uIFNvLCBpcyB0aGlzIHBhdGNoIHJlYWNoYWJsZSBhdCBhbGw/CgpUaGlzIG1lYW5zIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogd2F5IHRvIGdldCB0byB0aGlzIGBhdGgxMmtgIGNvZGUgd2l0aCBmdXp6aW5nLiBJcyB0aGVyZSBhbnl0aGluZyBpbiBzeXprYWxsZXImIzM5O3MgZGVmaW5pdGlvbnMgZm9yIFBDSSBkZXZpY2VzLCBvciBhbnl0aGluZyBleHBsaWNpdGx5IHRhcmdldGluZyBgYXRoMTJrYD8gSSBzaG91bGQgY2hlY2sgYHN5cy9saW51eC9kZXZfd2lmaS50eHRgIGFuZCB0aGUga2VybmVsIHNvdXJjZSwgYW5kIG1heWJlIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBhbnkgc2lnbnMgb2YgZnV6emluZyBvciB2aXJ0dWFsIGRldmljZXMgcmVsYXRlZCB0byBgYXRoMTJrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHRlc3QgbW9kdWxlIG9yIGFueSB3YXkgb2YgdmlydHVhbGl6aW5nIG9yIGVtdWxhdGluZyBgYXRoMTJrYCwgYmVjYXVzZSBpZiB0aGVyZSBpc24mIzM5O3QsIHRoaXMgcGF0Y2ggaXMgcHJvYmFibHkgaW5hY2Nlc3NpYmxlIHdpdGhvdXQgcmVhbCBoYXJkd2FyZSwgd2hpY2ggbWFrZXMgaXQgbXVjaCBoYXJkZXIgdG8gdGVzdCBhbmQgZnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3RpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYGF0aDEya2AgRW11bGF0b3IgUHJlc2VuY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGtlcm5lbCBhbmQgdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgd2lyZWxlc3MgY2hpcHNldCBkZXZlbG9wbWVudCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVzZSBkcml2ZXJzLCBteSBmaXJzdCB0aG91Z2h0IGlzOiBIYXMgYW55b25lLCBzb21ld2hlcmUsIGNyZWF0ZWQgYW4gKmVtdWxhdG9yKiBmb3IgYGF0aDEya2Agd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmPyBJJiMzOTttIG5vdCB0YWxraW5nIGFib3V0IGZ1bGwgZW11bGF0aW9uIGxpa2UgUUVNVSBvciBzb21ldGhpbmc7IEkmIzM5O20gdGhpbmtpbmcgbW9yZSBhbG9uZyB0aGUgbGluZXMgb2YgYSBzb2Z0d2FyZS1iYXNlZCByZXByZXNlbnRhdGlvbiBmb3IgdGVzdGluZyBwdXJwb3NlcywgbWF5YmUgc2ltdWxhdGluZyBjZXJ0YWluIGhhcmR3YXJlIGJlaGF2aW9ycyBvciBmb3IgZHJpdmVyIGRldmVsb3BtZW50IGluIHRoZSBhYnNlbmNlIG9mIHRoZSByZWFsIGhhcmR3YXJlLiBTbywgbXkgaW5pdGlhbCBxdWVzdGlvbiBpczogRG9lcyBhIGtlcm5lbC1sZXZlbCBgYXRoMTJrYCBlbXVsYXRvciBleGlzdCwgYW5kLCBpZiBzbywgd2hhdCBhcmUgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgc3lzdGVtPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MDEyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZz02NT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Njpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0FUSDExSylcdFx0JiM0Mzs9IGF0aDExay9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQVRIMTJLKVx0XHQmIzQzOz0gYXRoMTJrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNTpcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MTc9Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxODpcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yNT1jb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRIMTJLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTM1PWNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5Olx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz00ND1jb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NTpcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz01Mz1jb25maWcgQVRIMTJLX0NPUkVEVU1QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6XHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVx0ZGVwZW5kcyBvbiBBVEgxMktcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTg6XHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gYXRoMTJrLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzphdGgxMmsteSAmIzQzOz0gY29yZS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTQtXHQgICAgaGFsLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gd2lmaTcvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMwOmF0aDEyay0kKENPTkZJR19BQ1BJKSAmIzQzOz0gYWNwaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzI6YXRoMTJrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM1OmF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IGZ1bmMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXHRpZiAoIXJvb3RfaGFuZGxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtpbnZhbGlkIGFjcGkgaGFuZGxlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVx0XHRyZXR1cm4gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ni1cdFx0XHRcdCAgIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gQkRGIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDgtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlc3RyaW5nLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNjItXHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoIFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYzOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTY0LVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc1LVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NjpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBjb25maWcgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ny1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04Ny1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg4Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gVEFTIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy05OS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTAwOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAxLVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0dFT19PRkZTRVRfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTI6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIEdFTyBPRkZTRVQgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMy1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjMtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjQ6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzUtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMzY6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEzNy1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDctXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTQ4Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7QUNQSSBEU00gbWV0aG9kIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG9iamVjdCB0eXBlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE0OS1cdFx0XHQgICAgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2MTpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjctXHQgICAgdGFzX3Nhcl9wb3dlcl90YWJsZVsxXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2ODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2xhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzI6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0RBVEFfVFlQRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3My1cdFx0XHRcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTgzOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4OC1cdCAgICBhYi1cdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4OTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgbGF0ZXN0IEFDUEkgQklPUyBTQVIgZGF0YVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5MzpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5NTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjAyOnN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA0LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwNTpcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA3LVx0aWYgKGV2ZW50ID09IEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA4Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dW5rbm93biBhY3BpIG5vdGlmeSAldVxcblwmIzM0OywgZXZlbnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVx0aWYgKCFhYi1cdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxOC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxOTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byB1cGRhdGUgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjM6XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjI0LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjI1Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIFRBUyBwb3dlciBsaW1pdCBkYXRhOiAlZFwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM0Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHVwZGF0ZSBCSU9TIFNBUjogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzg6XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcG93ZXIoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQwOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBCSU9TIFNBUiBwb3dlciBsaW1pdDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDU6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0OTpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTItXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU1Olx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19nZW9fY21kKGFiLCBhYi1cdTAwM2VhY3BpLmdlb19vZmZzZXRfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTc6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBHRU8gdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2NDpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2ODpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfQ09ORklHX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjktXHRcdFx0XHQgICAgICBhYi1cdTAwM2VhY3BpLnRhc19jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjcxLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjcyOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgY29uZmlnIHRhYmxlIHBhcmFtZXRlcjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzMtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc3Olx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzgtXHRcdFx0XHQgICAgICBhYi1cdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgwLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjgxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgyLVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4OTpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTQ6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDgtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMwOTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEwLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTE6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIHBhcmFtZXRlcnM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEyLVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTYtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX2Jpb3Nfc2FyX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzE3Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxOC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzE5Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBBQ1BJIEJJT1MgU0FSOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyMC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI1LVx0XHRidWYgPSBhYi1cdTAwM2VhY3BpLmNjYV9kYXRhICYjNDM7IEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0RBVEFfT0ZGU0VUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI2Olx0XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNy1cdFx0XHRcdFx0ICAgICAgV01JX0JJT1NfUEFSQU1fQ0NBX1RIUkVTSE9MRF9UWVBFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzMxOlx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIENDQSB0aHJlc2hvbGQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMyLVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM3LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV9iYW5kX2VkZ2VfZW5hYmxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzg6XHRcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM5LVx0XHRcdFx0XHQgICAgICBXTUlfQklPU19QQVJBTV9UWVBFX0JBTkRFREdFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0Mi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzQzOlx0XHRcdGF0aDEya193YXJuKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzQ0LVx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM1MTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzY5Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3NS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc4Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRElTQUJMRSBGTEFHOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3OS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVx0XHRpZiAocmV0IHx8IGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAmIzM5O1xcMCYjMzk7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTQ6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBCREYgRVhUOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19DRkcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAzLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDQ6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBUQVMgY29uZmlnIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwNS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwOS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfREFUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMjpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxMy1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMi1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyNTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIGJpb3Mgc2FyIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI2LVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMwLVx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzE6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMzpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIGdlbyBvZmZzZXQgZGF0YTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzQtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDQtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0NDQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NzpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkIGNvbmZpZ3VyYXRpb246ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ4LVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDU5LVx0XHRcdFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MjpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBiYW5kIGVkZ2UgY2hhbm5lbCBwb3dlcjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjMtXHRcdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzMtXHRcdFx0XHRcdCAgICAgQUNQSV9ERVZJQ0VfTk9USUZZLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc0Olx0XHRcdFx0XHQgICAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnksIGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3NS1cdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGluc3RhbGwgRFNNIG5vdGlmeSBjYWxsYmFjazogJWRcXG5cJiMzNDssIHN0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ4NTppbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTItXHRpZiAoc3Ryc2NweShhYi1cdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZyAmIzQzOyA0LCBtYXhfbGVuKSBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ5MzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk0LVx0XHRcdCAgIFwmIzM0O2FjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwMDp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA2LVx0XHRcdFx0ICAgQUNQSV9ERVZJQ0VfTk9USUZZLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NTA3Olx0XHRcdFx0ICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3NTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Njp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Nzpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc4OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc5OnZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODA6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjg0OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTM6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTg6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDM6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDc6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjpzdGF0aWMgc3RydWN0IGF0aDEya19haGJfZHJpdmVyICphdGgxMmtfYWhiX2ZhbWlseV9kcml2ZXJzW0FUSDEyS19ERVZJQ0VfRkFNSUxZX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBjb25zdCBjaGFyIGF0aDEya191c2VycGRfaXJxW11bOV0gPSB7XCYjMzQ7c3Bhd25cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0LVx0XHRcdFx0ICAgICBcJiMzNDtyZWFkeVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTgzPWVudW0gZXh0X2lycV9udW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMjM6c3RhdGljIHUzMiBhdGgxMmtfYWhiX3JlYWQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMS1cdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzk6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jYW5jZWxfd29ya3F1ZXVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE0NDpcdFx0c3RydWN0IGF0aDEya19jZV9waXBlICpjZV9waXBlID0gXHUwMDI2YWItXHUwMDNlY2UuY2VfcGlwZVtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDY6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDctXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE1MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjE6c3RhdGljIHZvaWQgX19hdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2NjpcdFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2ODpcdFx0YXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2OS1cdFx0aWYgKGlycV9ncnAtXHUwMDNlbmFwaV9lbmFibGVkKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE3NzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE4NTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg5Olx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5MDpcdGF0aDEya19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5NzpcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFx1MDAyNiB+QklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIwMTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjEyLVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTM6XHRcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNS1cdGlmIChjZV9hdHRyLVx1MDAzZWRlc3RfbmVudHJpZXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE2Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE3Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxOC1cdFx0XHRcdCAgICBpZTNfcmVnX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzMtXHRpZiAoY2VfYXR0ci1cdTAwM2VzcmNfbmVudHJpZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNDpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzYtXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNzpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM4Olx0XHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICYjNDM7IENFX0hPU1RfSUVfM19TSElGVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM5LVx0XHRcdFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0OTpcdFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1MC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjU3OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjYyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI2MzpcdFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycXNfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3NzpcdFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3OC1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjc5Olx0XHRhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycXNfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjg3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODg6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODktXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5MDpcdFx0YXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk0OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTY6XHRhdGgxMmtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3Olx0YXRoMTJrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDQ6XHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDUtXHRpbnQgaTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTg4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJldmlld2luZyB0aGUgYGF0aDEya2AgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoMTJrYCwgYW5kIGl0JiMzOTtzIGdvdCBib3RoIGBhdGgxMmtfYWhiYCBhbmQgYGF0aDEya19wY2lgIHZhcmlhbnRzLiAgVGhlbiB0aGVyZSYjMzk7cyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBzaW11bGF0ZXMgbWFjODAyMTEsIGJ1dCB0aGF0JiMzOTtzIGRpc3RpbmN0IGZyb20gdGhlIGBhdGgxMmtgIGhhcmR3YXJlIGRyaXZlciBpdHNlbGYuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBgYXRoMTJrYCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyJiMzOTtzIGdvdCBQQ0kgZnV6emluZywgd2hpY2ggc291bmRzIHByb21pc2luZyBzaW5jZSBgYXRoMTJrYCBoYXMgYSBQQ0kgaW50ZXJmYWNlLgoKVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCB3YXJyYW50IGZ1enppbmcuICBUaGUgcHJvbXB0JiMzOTtzIHdhcm5pbmcgaXMgcmVsZXZhbnQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBhcmUgbm90IHdvcnRoIGZ1enppbmcmIzM0Oy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDEya2AgKmlzKiByZWFjaGFibGUuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gQnV0LCBob2xkIG9uLiAgYHN5el9wY2lkZXZgIGlzbiYjMzk7dCBnZW5lcmFsbHkgdXNlZCB0byBmdXp6IGNvbXBsZXggV2ktRmkgZHJpdmVycyBsaWtlIGBhdGgxMmtgIGJlY2F1c2UgdGhleSB0eXBpY2FsbHkgaW52b2x2ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBETUEsIHdoaWNoIHRoZSBQQ0kgZnV6emVyIHN0cnVnZ2xlcyB3aXRoLgoKSG93ZXZlciwgdGhlIHByZXNlbmNlIG9mICYjMzQ7c3l6LWNsdXN0ZXImIzM0OyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgaXMgaW50ZXJlc3RpbmcuIERvZXMgdGhpcyBtZWFuIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgZHJpdmVyPyBObywgSSBhbSByZXZpZXdpbmcgYSBwYXRjaC4gSSBhbSBsb29raW5nIGF0IGl0IHRvIGRldGVybWluZSBpZiBpdCBpcyB3b3J0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYGF0aDEya2AgcmVxdWlyZXMgaGFyZHdhcmUgb3IgYW4gZW11bGF0b3IuIERvZXMgaXQgaGF2ZSB0ZXN0bW9kZSBvciBhIHNvZnR3YXJlIHNpbXVsYXRvcj8gQ2FuIGl0IGJlIHJlYWNoZWQgaW4gUUVNVT8gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGEgZGVkaWNhdGVkIGBhdGgxMmtgIGVtdWxhdG9yIGluIFFFTVUsIGFuZCBQQ0kgZnV6emluZyBvZnRlbiBmYWlscyBkdWUgdG8gdGhlIGRyaXZlciYjMzk7cyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVpcmVtZW50cyBhbmQgZGV2aWNlIGJvb3Qgc2VxdWVuY2UgKGBhdGgxMmtfY29yZV9mZXRjaF9iZGZgLCBldGMuKS4gV2l0aG91dCBhIHJlYWwgZGV2aWNlIG9yIGEgZ29vZCBlbXVsYXRvciwgdGhlIHByb2JlIHdpbGwgZmFpbCBhbmQgbW9zdCBvZiB0aGUgY29kZSBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBldGMuIHdpbGwgYmUgdW5yZWFjaGFibGUuCgpJJiMzOTtsbCBjaGVjayBmb3IgYSB0ZXN0IG1vZGUgb3Igc29mdHdhcmUgc2ltdWxhdG9yLiBMb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlYCwgSSBzZWUgYGF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub2AuIFRoaXMgdGVzdCBtb2RlIGlzIGZvciBubDgwMjExIHRlc3QgY29tbWFuZHMsIGJ1dCBpdCBzdGlsbCBzZWVtcyB0byByZXF1aXJlIGhhcmR3YXJlIHByZXNlbmNlLiBUaGVyZSBpcyBhbHNvIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBpdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHNwZWNpZmljIHRvIGBhdGgxMmtgLiBGaW5hbGx5LCBJIHNob3VsZCBsb29rIGF0IGBhdGgxMmtfcGNpX3Byb2JlYC4gSXQgc2VlbXMgZG91YnRmdWwgdGhlIGBhdGgxMmtgIGRyaXZlciBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUxNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTM4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUzOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODE4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzktXHRwY2lfZHJpdmVyLVx1MDAzZWlkX3RhYmxlID0gZHJpdmVyLVx1MDAzZWlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzQ4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDEya19wY2lfcHJvYmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBhdGgxMmtfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW5jZS4gSXMgaXQgKnJlcXVpcmVkKiB0byBoYXZlIHRoZSBwaHlzaWNhbCBQQ0kgZGV2aWNlIGNvbm5lY3RlZCB0byBldmVuIGZ1bmN0aW9uIGluIHNvbWUgY2FwYWNpdHk/IERvZXMgaXQgbmVlZCB0byBkbyBzb21lIGRldmljZSBpbml0aWFsaXphdGlvbiB0aGF0IG5lY2Vzc2l0YXRlcyB0aGUgaGFyZHdhcmU/IFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3Igd2hhdGV2ZXIgdGVzdGluZyBvciBhbmFseXNpcyB3ZSYjMzk7cmUgcGxhbm5pbmcuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlcGVuZGVuY2llcyBpbiB0aGF0IHJlc3BlY3QuIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IGVtdWxhdGUgdGhpcyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgaW4gcGxhY2UuIElmIGl0ICpkb2VzKiByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgSSBuZWVkIHRvIGtub3cgcHJlY2lzZWx5IHdoaWNoIG9uZXMsIHNvIEkgY2FuIHRyeSB0byBzaW11bGF0ZSB0aGVtIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTUzODpcdHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbjE1Mzk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4xNTQwOlx0e1xuMTU0MTpcdFx0ZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQ7XG4xNTQyOlx0XHRzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpO1xuMTU0MzpcdFx0c3RydWN0IGF0aDEya19iYXNlICphYjtcbjE1NDQ6XHRcdGludCByZXQ7XG4xNTQ1Olx0XG4xNTQ2Olx0XHRhYiA9IGF0aDEya19jb3JlX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKmFiX3BjaSksIEFUSDEyS19CVVNfUENJKTtcbjE1NDc6XHRcdGlmICghYWIpIHtcbjE1NDg6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDEyayBiYXNlXFxuXCYjMzQ7KTtcbjE1NDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xNTUwOlx0XHR9XG4xNTUxOlx0XG4xNTUyOlx0XHRhYi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjE1NTM6XHRcdGFiX3BjaSA9IGF0aDEya19wY2lfcHJpdihhYik7XG4xNTU0Olx0XHRhYl9wY2ktXHUwMDNlZGV2X2lkID0gcGNpX2Rldi1cdTAwM2VkZXZpY2U7XG4xNTU1Olx0XHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbjE1NTY6XHRcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbjE1NTc6XHRcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XG4xNTU4Olx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuMTU1OTpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbjE1NjA6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFiX3BjaS1cdTAwM2V3aW5kb3dfbG9jayk7XG4xNTYxOlx0XG4xNTYyOlx0XHRyZXQgPSBhdGgxMmtfcGNpX2NsYWltKGFiX3BjaSwgcGRldik7XG4xNTYzOlx0XHRpZiAocmV0KSB7XG4xNTY0Olx0XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBjbGFpbSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTU2NTpcdFx0XHRnb3RvIGVycl9mcmVlX2NvcmU7XG4xNTY2Olx0XHR9XG4xNTY3Olx0XG4xNTY4Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O3BjaSBwcm9iZSAlMDR4OiUwNHggJTA0eDolMDR4XFxuXCYjMzQ7LFxuMTU2OTpcdFx0XHQgICBwZGV2LVx1MDAzZXZlbmRvciwgcGRldi1cdTAwM2VkZXZpY2UsXG4xNTcwOlx0XHRcdCAgIHBkZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciwgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlKTtcbjE1NzE6XHRcbjE1NzI6XHRcdGFiLVx1MDAzZWlkLnZlbmRvciA9IHBkZXYtXHUwMDNldmVuZG9yO1xuMTU3MzpcdFx0YWItXHUwMDNlaWQuZGV2aWNlID0gcGRldi1cdTAwM2VkZXZpY2U7XG4xNTc0Olx0XHRhYi1cdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yO1xuMTU3NTpcdFx0YWItXHUwMDNlaWQuc3Vic3lzdGVtX2RldmljZSA9IHBkZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcbjE1NzY6XHRcbjE1Nzc6XHRcdGRldmljZV9pZCA9IGF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShwY2lfZGV2KTtcbjE1Nzg6XHRcdGlmIChkZXZpY2VfaWQgXHUwMDNlPSBBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVgpIHtcbjE1Nzk6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBkZXZpY2UgZmFtaWx5IGlkXFxuXCYjMzQ7KTtcbjE1ODA6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjE1ODE6XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTU4MjpcdFx0fVxuMTU4MzpcdFxuMTU4NDpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19QQ0ksIFwmIzM0O1BDSSBkZXZpY2UgZmFtaWx5IGlkOiAlZFxcblwmIzM0OywgZGV2aWNlX2lkKTtcbjE1ODU6XHRcbjE1ODY6XHRcdGFiX3BjaS1cdTAwM2VkZXZpY2VfZmFtaWx5X29wcyA9IFx1MDAyNmF0aDEya19wY2lfZmFtaWx5X2RyaXZlcnNbZGV2aWNlX2lkXS1cdTAwM2VvcHM7XG4xNTg3Olx0XHRhYl9wY2ktXHUwMDNlcmVnX2Jhc2UgPSBhdGgxMmtfcGNpX2ZhbWlseV9kcml2ZXJzW2RldmljZV9pZF0tXHUwMDNlcmVnX2Jhc2U7XG4xNTg4Olx0XG4xNTg5Olx0XHQvKiBDYWxsIGRldmljZSBzcGVjaWZpYyBwcm9iZS4gVGhpcyBpcyB0aGUgY2FsbGJhY2sgdGhhdCBjYW5cbjE1OTA6XHRcdCAqIGJlIHVzZWQgdG8gb3ZlcnJpZGUgYW55IG9wcyBpbiBmdXR1cmVcbjE1OTE6XHRcdCAqIHByb2JlIGlzIHZhbGlkYXRlZCBmb3IgTlVMTCBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuMTU5MjpcdFx0ICovXG4xNTkzOlx0XHRyZXQgPSBhYl9wY2ktXHUwMDNlZGV2aWNlX2ZhbWlseV9vcHMtXHUwMDNlcHJvYmUocGRldiwgcGNpX2Rldik7XG4xNTk0Olx0XHRpZiAocmV0KSB7XG4xNTk1Olx0XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBwcm9iZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTU5NjpcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xNTk3Olx0XHR9XG4xNTk4Olx0XG4xNTk5Olx0XHRyZXQgPSBhdGgxMmtfcGNpX21zaV9hbGxvYyhhYl9wY2kpO1xuMTYwMDpcdFx0aWYgKHJldCkge1xuMTYwMTpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2MgbXNpOiAlZFxcblwmIzM0OywgcmV0KTtcbjE2MDI6XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTYwMzpcdFx0fVxuMTYwNDpcdFxuMTYwNTpcdFx0cmV0ID0gYXRoMTJrX2NvcmVfcHJlX2luaXQoYWIpO1xuMTYwNjpcdFx0aWYgKHJldClcbjE2MDc6XHRcdFx0Z290byBlcnJfcGNpX21zaV9mcmVlO1xuMTYwODpcdFxuMTYwOTpcdFx0cmV0ID0gYXRoMTJrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoYWJfcGNpLCBjcHVtYXNrX29mKDApKTtcbjE2MTA6XHRcdGlmIChyZXQpIHtcbjE2MTE6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBpcnEgYWZmaW5pdHkgJWRcXG5cJiMzNDssIHJldCk7XG4xNjEyOlx0XHRcdGdvdG8gZXJyX3BjaV9tc2lfZnJlZTtcbjE2MTM6XHRcdH1cbjE2MTQ6XHRcbjE2MTU6XHRcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcbjE2MTY6XHRcdGlmIChyZXQpIHtcbjE2MTc6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIG1oaTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjE4Olx0XHRcdGdvdG8gZXJyX2lycV9hZmZpbml0eV9jbGVhbnVwO1xuMTYxOTpcdFx0fVxuMTYyMDpcdFxuMTYyMTpcdFx0cmV0ID0gYXRoMTJrX2hhbF9zcm5nX2luaXQoYWIpO1xuMTYyMjpcdFx0aWYgKHJldClcbjE2MjM6XHRcdFx0Z290byBlcnJfbWhpX3VucmVnaXN0ZXI7XG4xNjI0Olx0XG4xNjI1Olx0XHRyZXQgPSBhdGgxMmtfY2VfYWxsb2NfcGlwZXMoYWIpO1xuMTYyNjpcdFx0aWYgKHJldCkge1xuMTYyNzpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgY2UgcGlwZXM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTYyODpcdFx0XHRnb3RvIGVycl9oYWxfc3JuZ19kZWluaXQ7XG4xNjI5Olx0XHR9XG4xNjMwOlx0XG4xNjMxOlx0XHRhdGgxMmtfcGNpX2luaXRfcW1pX2NlX2NvbmZpZyhhYik7XG4xNjMyOlx0XG4xNjMzOlx0XHRyZXQgPSBhdGgxMmtfcGNpX2NvbmZpZ19pcnEoYWIpO1xuMTYzNDpcdFx0aWYgKHJldCkge1xuMTYzNTpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gY29uZmlnIGlycTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjM2Olx0XHRcdGdvdG8gZXJyX2NlX2ZyZWU7XG4xNjM3Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODAwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBBdGgxMmsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgd2hldGhlciB0aGlzIHBhdGNoLCB0b3VjaGluZyBgYXRoMTJrYCBjb2RlLCBpcyB3b3J0aCBmdXp6aW5nLCBnaXZlbiB0aGUgY29uc3RyYWludHMgb2Ygb3VyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgdXRpbGl6ZXMgdGhlIE1vZGVtIEhvc3QgSW50ZXJmYWNlIChNSEkpIHRvIGNvbW11bmljYXRlIHdpdGggaXRzIGZpcm13YXJlLCBhbmQgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggKmNvdWxkKiB0aGVvcmV0aWNhbGx5IHNpbXVsYXRlIHRoZSBNSEkgc3RhdGUgbWFjaGluZSwgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCBmb3IgdGhlIGZ1enplciB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB0aGUgTUhJIHN0YXRlIG1hY2hpbmUuCgpIb3dldmVyLCB0aGUga2V5IGlzIHRoZSBwcm9tcHQmIzM5O3MgZXhwbGljaXQgZXhjbHVzaW9uIG9mIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMuIENhbiBgYXRoMTJrYCBiZSByZWFjaGVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGBhdGgxMmtgPyBOb3BlLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyYCwgYGF0aDEya19tYWNfcGVlcl9hc3NvY2AsIGFuZCBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBOb3csIEkgcmVjb2duaXplIHRoZXNlIGFzIG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgSFRUIGV2ZW50IGhhbmRsZXJzLiBCdXQgaWYgdGhlIGRldmljZSBpdHNlbGYgaXNuJiMzOTt0IHN1Y2Nlc3NmdWxseSBwcm9iZWQgYW5kIGluc3RhbnRpYXRlZCwgdGhlc2UgY2FsbGJhY2tzICp3b24mIzM5O3QqIGV2ZW4gYmUgcmVnaXN0ZXJlZCBiZWNhdXNlIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBoYXBwZW5zICphZnRlciogZmlybXdhcmUgbG9hZGluZyBhbmQgV01JIGluaXRpYWxpemF0aW9uLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogY2FuIGBhdGgxMmtgICpiZSogZnV6emVkPyBXZWxsLCBzeXprYWxsZXIgaGFzIGEgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIHdoaWNoIGlzIGZpbmUgZm9yIHRoZSBtYWM4MDIxMSBzdGFjay4gQnV0IGl0IGRvZXNuJiMzOTt0ICp0YXJnZXQqIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBgYXRoMTJrYCB1bmxlc3MgaXQgY2FuIGJlIGluc3RhbnRpYXRlZC4gU2luY2UgYGF0aDEya2AgZnVuZGFtZW50YWxseSByZXF1aXJlcyBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgQUhCIGRldmljZSwgYW5kIHRoZXJlJiMzOTtzIG5vIHN1aXRhYmxlIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBpdCwgaXQmIzM5O3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgdGhlcmUmIzM5O3MgKmFueSogdGVzdGluZyBtb2RlIG9yIHNpbXVsYXRpb24gZmxhZ3MgYnVpbHQgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIGxvb2sgZm9yIGFueXRoaW5nIHdpdGggJiMzNDt0ZXN0bW9kZSYjMzQ7IG9yICYjMzQ7c2ltJiMzNDsgaW4gaXQuIElmIHRoZXJlIGlzIG5vdCwgbXkgZmluYWwgY29uY2x1c2lvbiB3aWxsIGJlIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW18c2ltfGR1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz01NjM9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjU3ODpcdFx0aXJxX2dycC1cdTAwM2VuYXBpX25kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTU3OS1cdFx0aWYgKCFpcnFfZ3JwLVx1MDAzZW5hcGlfbmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMDI9c3RhdGljIGludCBhdGgxMmtfY29yZV9jb250aW51ZV9zdXNwZW5kX3Jlc3VtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEwOS1cdC8qIHNvIGZhciBzaW5nbGVfcGRldl9vbmx5IGNoaXBzIGhhdmUgc3VwcG9ydHNfc3VzcGVuZCBhcyB0cnVlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTA6XHQgKiBzbyBwYXNzIDAgYXMgYSBkdW1teSBwZGV2X2lkIGhlcmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTEtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaD00OTI9c3RydWN0IGF0aDEya19saW5rX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NDk2Olx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC00OTctXHR1OCBhZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEzOnN0YXRpYyBzc2l6ZV90IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVx0XHRcdFx0XHQgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMjAtXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MjE6XHRyZXQgPSBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfcmFkYXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMjpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMzOlx0Lm9wZW4gPSBzaW1wbGVfb3BlblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzY6c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cdFx0XHRcdFx0ICAgICBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDAtXHRjb25zdCBjaGFyIGJ1ZltdID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlx0XHRcJiMzNDtUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXG5cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQyLVx0XHRcJiMzNDtgYXNzZXJ0YCAtIHNlbmQgV01JX0ZPUkNFX0ZXX0hBTkdfQ01ESUQgdG8gZmlybXdhcmUgdG8gY2F1c2UgYXNzZXJ0LlxcblwmIzM0OztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIHN0cmxlbihidWYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQ1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz00Nz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDg6YXRoMTJrX3dyaXRlX3NpbXVsYXRlX2Z3X2NyYXNoKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlx0cmMgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNjQtXHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXHRpZiAoIXN0cmNtcChidWYsIFwmIzM0O2Fzc2VydFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgyOlx0XHRhdGgxMmtfaW5mbyhhYiwgXCYjMzQ7c2ltdWxhdGluZyBmaXJtd2FyZSBhc3NlcnQgY3Jhc2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODMtXHRcdHJldCA9IGF0aDEya193bWlfZm9yY2VfZndfaGFuZ19jbWQoYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjk4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfZndfY3Jhc2ggPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcdC5yZWFkID0gYXRoMTJrX3JlYWRfc2ltdWxhdGVfZndfY3Jhc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDA6XHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDE6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy03ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy03OTEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3RwY19zdGF0c190eXBlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODA5LVx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6ODEwOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2Vlayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodWJ1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9OTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZXh0ZF9yeF9zdGF0cyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfZXh0ZF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkwMzpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDQtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEwMjU9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTM6XHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTIxOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTktXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIyMDpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjIxLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTIyNT12b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjI2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjc6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NpbXVsYXRlX2Z3X2NyYXNoXCYjMzQ7LCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjI4Olx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI2MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTI2NC1cdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjY1Olx0ICogd291bGQgYmUgZW1wdHkuIFRoaXMgc2ltcGxpZmllcyB0aGUgZGlyZWN0b3J5IGhhbmRsaW5nIGFuZCBpdCYjMzk7c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTI2Ni1cdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzMTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfdmRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTMyNDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzMjUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzkxOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM5Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTQ0NT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9wZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDUyOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ1My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTQ2Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ2NDphdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDY1LVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4NC1cdHdpcGh5X2xvY2sod2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ4NTpcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UoYXIsIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDg2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NzpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE0OTg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ5OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE1MjA9dm9pZCBhdGgxMmtfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU0LVx0aWYgKGFyLVx1MDAzZW1hYy5zYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdLmNoYW5uZWxzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTU1Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Rmc19zaW11bGF0ZV9yYWRhclwmIzM0OywgMDIwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NTYtXHRcdFx0XHQgICAgYXItXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE1NTc6XHRcdFx0XHQgICAgXHUwMDI2Zm9wc19zaW11bGF0ZV9yYWRhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NjgtXHRcdCAgICAgYXItXHUwMDNlYWItXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTY5Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlXCYjMzQ7LCAwMjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU3MC1cdFx0XHRcdCAgICBhci1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BkZXYsIGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTU3MTpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NzItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTg4ND1hdGgxMmtfaHR0X3ByaW50X2h3X3N0YXRzX3doYWxfdHhfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsIHUxNiB0YWdfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy05MDQtXHRcdFx0IGxlMzJfdG9fY3B1KGh0dF9zdGF0c19idWYtXHUwMDNlaHdzY2hfdW5wYXVzZV93YWl0X3RxbV93cml0ZSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNTpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2h3c2NoX2R1bW15X3Rsdl9za2lwcGVkID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6OTA2Olx0XHRcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVx1MDAzZWh3c2NoX2R1bW15X3Rsdl9za2lwcGVkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA3LVx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9MTUzNT1hdGgxMmtfaHR0X3ByaW50X3R4X2RlX2NvbXBsX3N0YXRzX3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLCB1MTYgdGFnX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU0Ni1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O0hUVF9UWF9ERV9DT01QTF9TVEFUU19UTFY6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ3Olx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dGNsX2R1bW15X2ZyYW1lID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0ODpcdFx0XHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cdTAwM2V0Y2xfZHVtbXlfZnJhbWUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ5Olx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dHFtX2R1bW15X2ZyYW1lID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU1MDpcdFx0XHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cdTAwM2V0cW1fZHVtbXlfZnJhbWUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy0xNTUxLVx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dHFtX25vdGlmeV9mcmFtZSA9ICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MTY1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0c190eXBlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYxODA6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE4MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYyMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyNy1cdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MjI4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI5LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYzNTE9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYwLVx0bGVuZ3RoID0gbWluX3QodTMyLCBzdGF0c19yZXEtXHUwMDNlYnVmX2xlbiwgQVRIMTJLX0hUVF9TVEFUU19CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjM2MTpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjQyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2h0dF9zdGF0c19yZXNldCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI3LVx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2h0dF9zdGF0c19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2NDI4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI5LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTc1ND1zdHJ1Y3QgYXRoMTJrX2h0dF9od19zdGF0c193aGFsX3R4X3RsdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTc1Ny1cdF9fbGUzMiBod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjc1ODpcdF9fbGUzMiBod3NjaF9kdW1teV90bHZfc2tpcHBlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC03NTktXHRfX2xlMzIgaHdzY2hfbWlzYWxpZ25lZF9vZmZzZXRfcmVjZWl2ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTk3OD1zdHJ1Y3QgYXRoMTJrX2h0dF90eF9kZV9jb21wbF9zdGF0c190bHYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjk3OTpcdF9fbGUzMiB0Y2xfZHVtbXlfZnJhbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6OTgwOlx0X19sZTMyIHRxbV9kdW1teV9mcmFtZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC05ODEtXHRfX2xlMzIgdHFtX25vdGlmeV9mcmFtZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MTM5PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0MS1cdGlmIChsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQyOlx0XHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDMtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yNDY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yeF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDctXHQucmVhZCA9IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQ4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDktXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVzZXRfcnhfc3RhdHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk3LVx0LndyaXRlID0gYXRoMTJrX2RiZ19zdGFfcmVzZXRfcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6Mjk4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yOTktXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYz01MzY9aW50IGF0aDEya19kcF9saW5rX3BlZXJfYXNzaWduKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy01OTktXHRcdCAqIElmIG9sZCBlbnRyeSBhZGRpdGlvbiBhbHNvIGZhaWxzLCB0aGVuIG5vdGhpbmdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jOjYwMDpcdFx0ICogY2FuIGJlIGRvbmUsIHNpbXBseSBwcm9jZWVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy02MDEtXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9NTU4PWludCBhdGgxMmtfaHRjX2Nvbm5lY3Rfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2h0YyAqaHRjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTYzLVx0c3RydWN0IGF0aDEya19odGNfY29ubl9zdmMgKnJlcV9tc2c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU2NDpcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgcmVzcF9tc2dfZHVtbXk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU2NTpcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgKnJlc3BfbXNnID0gXHUwMDI2cmVzcF9tc2dfZHVtbXk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTU2Ni1cdGVudW0gYXRoMTJrX2h0Y19lcF9pZCBhc3NpZ25lZF9laWQgPSBBVEgxMktfSFRDX0VQX0NPVU5UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTgwLVx0XHRtYXhfbXNnX3NpemUgPSBBVEgxMktfSFRDX01BWF9DVFJMX01TR19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU4MTpcdFx0bWVtc2V0KFx1MDAyNnJlc3BfbXNnX2R1bW15LCAwLCBzaXplb2YocmVzcF9tc2dfZHVtbXkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTgyLVx0XHRnb3RvIHNldHVwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MjM4MD1zdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX3ZodChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjI0MjI6XHQvKiBUT0RPOiBzaW1pbGFyIGZsYWdzIHJlcXVpcmVkPyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0yNDIzLVx0YXJnLVx1MDAzZXZodF9jYXBhYmxlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTEyNjI1PWludCBhdGgxMmtfbWFjX29wX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTEyNjMzLVx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTI2MzQ6XHQgKiBIZW5jZSBpbXBsZW1lbnQgYSBkdW1teSBjYWxsYmFjayBqdXN0IHRvIHNheSBmcmFnbWVudGF0aW9uIGlzbiYjMzk7dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xMjYzNS1cdCAqIHN1cHBvcnRlZC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBtYWM4MDIxMSBmcm9tIGRvaW5nIGZyYW1lXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz01Mzk9c3RhdGljIGludCBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy01NjUtXHRcdGlycV9ncnAtXHUwMDNlZ3JwX2lkID0gaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6NTY2Olx0XHRpcnFfZ3JwLVx1MDAzZW5hcGlfbmRldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY3LVx0XHRpZiAoIWlycV9ncnAtXHUwMDNlbmFwaV9uZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTM4PXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE2Mzk6XHQvKiBrZXJuZWwgbWF5IGFsbG9jYXRlIGEgZHVtbXkgdmVjdG9yIGJlZm9yZSByZXF1ZXN0X2lycSBhbmRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTY0MC1cdCAqIHRoZW4gYWxsb2NhdGUgYSByZWFsIHZlY3RvciB3aGVuIHJlcXVlc3RfaXJxIGlzIGNhbGxlZC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jPTI2OT1pbnQgYXRoMTJrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBib29sIGluaXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jOjMzODpcdC8qIGZpcm13YXJlIHByb3ZpZGVzIHJlZyBydWxlcyB3aGljaCBhcmUgc2ltaWxhciBmb3IgMiBHSHogYW5kIDUgR0h6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzOS1cdCAqIHBkZXYgYnV0IDYgR0h6IHBkZXYgaGFzIHN1cGVyc2V0IG9mIGFsbCBydWxlcyBpbmNsdWRpbmcgcnVsZXMgZm9yXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ4Mz1hdGgxMmtfd21pX3NlbmRfdW5pdF90ZXN0X2NtZChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDUzNjppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTUtXHQgKiBDdXJyZW50bHkgd2UgY291bGQgcGFzcyBzZWdtZW50X2lkKGIwIC0gYjEpLCBjaGlycChiMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA1NTY6XHQgKiBmcmVxIG9mZnNldCAoYjMgLSBiMTApIHRvIHVuaXQgdGVzdC4gRm9yIHNpbXVsYXRpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTctXHQgKiBwdXJwb3NlIHRoaXMgY2FuIGJlIHNldCB0byAwIHdoaWNoIGlzIHZhbGlkLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA1NzE9aW50IGF0aDEya193bWlfc2VuZF90cGNfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDYzOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZShzdHJ1Y3QgYXRoMTJrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2NDAtXHRcdFx0XHRcdFx0ICAgICAgdTMyIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjY4LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNjY5Olx0XHQgICBcJiMzNDtUcmlnZ2VyaW5nIGluY3VtYmVudCBzaWduYWwgaW50ZXJmZXJlbmNlIHNpbXVsYXRpb24sIGludGVyZmVyZW5jZSBiaXRtYXA6IDB4JXhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjcwLVx0XHQgICBjaGFuX2J3X2ludGVyZmVyZW5jZV9iaXRtYXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9MzY5Nz1lbnVtIHdtaV9zdGFfcHNfbW9kZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zNzA5LS8qIHR5cGUsIDA6dW51c2VkIDE6IEFTU0VSVCAyOiBub3QgcmVzcG9uZCBkZXRlY3QgY29tbWFuZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozNzEwOiAqIGRlbGF5X3RpbWVfbXMsIHRoZSBzaW11bGF0ZSB3aWxsIGRlbGF5IHRpbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzcxMS0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTY2MDc9aW50IGF0aDEya193bWlfc2VuZF9wZGV2X3NldF9yZWdkb21haW4oc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY2MDgtXHRcdFx0XHQgICAgICAgc3RydWN0IGF0aDEya193bWlfcGRldl9zZXRfcmVnZG9tYWluX2FyZyAqYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjYwOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY2MTAtaW50IGF0aDEya193bWlfc2VuZF90d3RfZW5hYmxlX2NtZChzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjcyMD1pbnQgYXRoMTJrX3dtaV9zZW5kX21sb19saW5rX3NldF9hY3RpdmVfY21kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY3MjEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qgd21pX21sb19saW5rX3NldF9hY3RpdmVfYXJnICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjY3MjI6aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY3MjMtXHRcdFx0XHRcdFx0ICAgICAgdTMyIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogYXRoMTJrIFBhdGNoIFJldmlldyoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgYGF0aDEya2AuIFdhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggY2FtZSBmcm9tIGBzeXotY2x1c3RlcmAsIHdoaWNoIG1lYW5zIHN5emthbGxlciBmb3VuZCAqc29tZXRoaW5nKiEgRWl0aGVyIGEgYnVnIG9yIGEgdGVzdC4gIEkga25vdyBzeXprYWxsZXIgKmNhbiogZnV6eiBgYXRoMTJrYCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBgQ09ORklHX1BDSWAgYW5kIGBDT05GSUdfQVRIMTJLYCwgdXNpbmcgYHN5el9wY2lkZXZgIG9yIGBzeXpfdXNiZGV2YC4gQnV0IGhvbGQgb24sIGBhdGgxMmtgIHVzZXMgTUhJLi4uZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBNSEkgZW11bGF0b3I/IE5vLCBpdCBkb2VzbiYjMzk7dC4gSG93ZXZlciwgaXQgKmNvdWxkKiBpbmplY3QgbWFjODAyMTEgZnJhbWVzIG9yIGludGVyYWN0IHdpdGggbWFjODAyMTEgdmlhIGBtYWM4MDIxMV9od3NpbWAuIAoKQnV0IGlmIGBhdGgxMmtgIGlzIHVucmVhY2hhYmxlLCB3aHkgZGlkIHN5emthbGxlciBldmVuIGFwcGx5IHRoaXMgcGF0Y2g/IEFoLCByaWdodC4gTXkgam9iIGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgaWYgaXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAgVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2gsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5LiBJcyB0aGVyZSBhbnkgdmlydHVhbCBgYXRoMTJrYCBoYXJkd2FyZSBpbiBRRU1VPyBOb3BlLiBDYW4gSSBnZXQgdG8gaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgdGhhdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlci4gIE9rYXksIHdoYXQgYWJvdXQgYHN5el9wY2lkZXZgPwoKU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpZGV2YCAqY291bGQqIHRyaWdnZXIgYGF0aDEya19wY2lfcHJvYmVgLiAgQnV0LCBgYXRoMTJrX3BjaV9wcm9iZWAgY2FsbHMgYGF0aDEya19taGlfcmVnaXN0ZXJgLCB3aGljaCB3YWl0cyBmb3IgdGhlIE1ISSBkZXZpY2UgdG8gYm9vdC4gV2l0aG91dCBhIHJlYWwgTUhJIGRldmljZSBvciBhbiBlbXVsYXRvci4uLiBpdCYjMzk7bGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd29uJiMzOTt0IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEuICBTbyBldmVuIHdpdGggdGhlIFBDSSBwcm9iZSwgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGdldCBwYXN0IHRoYXQgTUhJIHJlZ2lzdHJhdGlvbiBzdGVwLiBJIHNob3VsZCBjaGVjayBgYXRoMTJrX21oaV9yZWdpc3RlcmAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB2aXJ0dWFsaXphdGlvbiBsaW1pdGF0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhlIE1ISSBkZXZpY2UgaXMgdGhlIGNyaXRpY2FsIGJsb2NrZXIgdG8gdGhlIGNvZGUgcGF0aCwgSSYjMzk7bGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhdGNoIHNlcmllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21oaV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9MTgwPXN0YXRpYyB2b2lkIGF0aDEya19taGlfb3Bfd3JpdGVfcmVnKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzoxODc6aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5oPTM1PXZvaWQgYXRoMTJrX21oaV9zdG9wKHN0cnVjdCBhdGgxMmtfcGNpICphcl9wY2ksIGJvb2wgaXNfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5oOjM2OmludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphcl9wY2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaC0zNy12b2lkIGF0aDEya19taGlfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1Mzg9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTYxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTYxNTpcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTYxNi1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NTAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgYXRoMTJrX21oaV9yZWdpc3RlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkb2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGF0aDEyayBkcml2ZXIgYW5kIHRoZSBNSEkgaW50ZXJmYWNlLiBJcyBpdCByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSBhIGRldmljZSBvciByZXNvdXJjZSwgd2l0aCB0aGUgTUhJIHN1YnN5c3RlbT8gUGVyaGFwcyBpdCYjMzk7cyBpbml0aWFsaXppbmcgTUhJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3Igc2V0dGluZyB1cCBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGZ1bmN0aW9uJiMzOTtzIGFyZ3VtZW50cywgcmV0dXJuIHZhbHVlcywgYW5kIHdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgcmVsYXRlZCB0byB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGhvc3QgZHJpdmVyIChhdGgxMmspIGFuZCB0aGUgTUhJIGZpcm13YXJlIG9uIHRoZSBRdWFsY29tbSBjaGlwLiBLbm93aW5nIHRoZSBmbG93IGZyb20gcmVnaXN0ZXIgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBiZSBpbXBvcnRhbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTg3Olx0aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbiAxODg6XHR7XG4gMTg5Olx0XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gYWJfcGNpLVx1MDAzZWFiO1xuIDE5MDpcdFx0c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY3RybDtcbiAxOTE6XHRcdHVuc2lnbmVkIGludCBib2FyZF9pZDtcbiAxOTI6XHRcdGludCByZXQ7XG4gMTkzOlx0XHRib29sIGR1YWxtYWMgPSBmYWxzZTtcbiAxOTQ6XHRcbiAxOTU6XHRcdG1oaV9jdHJsID0gbWhpX2FsbG9jX2NvbnRyb2xsZXIoKTtcbiAxOTY6XHRcdGlmICghbWhpX2N0cmwpXG4gMTk3Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE5ODpcdFxuIDE5OTpcdFx0YWJfcGNpLVx1MDAzZW1oaV9wcmVfY2IgPSBNSElfQ0JfSU5WQUxJRDtcbiAyMDA6XHRcdGFiX3BjaS1cdTAwM2VtaGlfY3RybCA9IG1oaV9jdHJsO1xuIDIwMTpcdFx0bWhpX2N0cmwtXHUwMDNlY250cmxfZGV2ID0gYWItXHUwMDNlZGV2O1xuIDIwMjpcdFx0bWhpX2N0cmwtXHUwMDNlcmVncyA9IGFiLVx1MDAzZW1lbTtcbiAyMDM6XHRcdG1oaV9jdHJsLVx1MDAzZXJlZ19sZW4gPSBhYi1cdTAwM2VtZW1fbGVuO1xuIDIwNDpcdFx0bWhpX2N0cmwtXHUwMDNlcmRkbV9zaXplID0gYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZXJkZG1fc2l6ZTtcbiAyMDU6XHRcbiAyMDY6XHRcdGlmIChhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKSB7XG4gMjA3Olx0XHRcdGJvYXJkX2lkID1cbiAyMDg6XHRcdFx0XHRhdGgxMmtfcGNpX3JlYWQzMihhYiwgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW90cF9ib2FyZF9pZF9yZWdpc3Rlcik7XG4gMjA5Olx0XHRcdGJvYXJkX2lkID0gdTMyX2dldF9iaXRzKGJvYXJkX2lkLCBPVFBfQk9BUkRfSURfTUFTSyk7XG4gMjEwOlx0XG4gMjExOlx0XHRcdGlmICghYm9hcmRfaWQgfHwgKGJvYXJkX2lkID09IE9UUF9JTlZBTElEX0JPQVJEX0lEKSkge1xuIDIxMjpcdFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbiAyMTM6XHRcdFx0XHRcdCAgIFwmIzM0O2ZhaWxlZCB0byByZWFkIGJvYXJkIGlkXFxuXCYjMzQ7KTtcbiAyMTQ6XHRcdFx0fSBlbHNlIGlmIChib2FyZF9pZCBcdTAwMjYgT1RQX1ZBTElEX0RVQUxNQUNfQk9BUkRfSURfTUFTSykge1xuIDIxNTpcdFx0XHRcdGR1YWxtYWMgPSB0cnVlO1xuIDIxNjpcdFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbiAyMTc6XHRcdFx0XHRcdCAgIFwmIzM0O2R1YWxtYWMgZncgc2VsZWN0ZWQgZm9yIGJvYXJkIGlkOiAleFxcblwmIzM0OywgYm9hcmRfaWQpO1xuIDIxODpcdFx0XHR9XG4gMjE5Olx0XHR9XG4gMjIwOlx0XG4gMjIxOlx0XHRpZiAoZHVhbG1hYykge1xuIDIyMjpcdFx0XHRpZiAoYWItXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGEgXHUwMDI2XHUwMDI2IGFiLVx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW4gXHUwMDNlIDApIHtcbiAyMjM6XHRcdFx0XHQvKiB1c2UgTUhJIGZpcm13YXJlIGZpbGUgZnJvbSBmaXJtd2FyZS1OLmJpbiAqL1xuIDIyNDpcdFx0XHRcdG1oaV9jdHJsLVx1MDAzZWZ3X2RhdGEgPSBhYi1cdTAwM2Vmdy5hbXNzX2R1YWxtYWNfZGF0YTtcbiAyMjU6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19zeiA9IGFiLVx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW47XG4gMjI2Olx0XHRcdH0gZWxzZSB7XG4gMjI3Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2R1YWxtYWMgZmlybXdhcmUgSUUgbm90IHByZXNlbnQgaW4gZmlybXdhcmUtTi5iaW5cXG5cJiMzNDspO1xuIDIyODpcdFx0XHRcdHJldCA9IC1FTk9FTlQ7XG4gMjI5Olx0XHRcdFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XG4gMjMwOlx0XHRcdH1cbiAyMzE6XHRcdH0gZWxzZSB7XG4gMjMyOlx0XHRcdGlmIChhYi1cdTAwM2Vmdy5hbXNzX2RhdGEgXHUwMDI2XHUwMDI2IGFiLVx1MDAzZWZ3LmFtc3NfbGVuIFx1MDAzZSAwKSB7XG4gMjMzOlx0XHRcdFx0LyogdXNlIE1ISSBmaXJtd2FyZSBmaWxlIGZyb20gZmlybXdhcmUtTi5iaW4gKi9cbiAyMzQ6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19kYXRhID0gYWItXHUwMDNlZncuYW1zc19kYXRhO1xuIDIzNTpcdFx0XHRcdG1oaV9jdHJsLVx1MDAzZWZ3X3N6ID0gYWItXHUwMDNlZncuYW1zc19sZW47XG4gMjM2Olx0XHRcdH0gZWxzZSB7XG4gMjM3Olx0XHRcdFx0LyogdXNlIHRoZSBvbGQgc2VwYXJhdGUgbWhpLmJpbiBNSEkgZmlybXdhcmUgZmlsZSAqL1xuIDIzODpcdFx0XHRcdGF0aDEya19jb3JlX2NyZWF0ZV9maXJtd2FyZV9wYXRoKGFiLCBBVEgxMktfQU1TU19GSUxFLFxuIDIzOTpcdFx0XHRcdFx0XHRcdFx0IGFiX3BjaS1cdTAwM2VhbXNzX3BhdGgsXG4gMjQwOlx0XHRcdFx0XHRcdFx0XHQgc2l6ZW9mKGFiX3BjaS1cdTAwM2VhbXNzX3BhdGgpKTtcbiAyNDE6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19pbWFnZSA9IGFiX3BjaS1cdTAwM2VhbXNzX3BhdGg7XG4gMjQyOlx0XHRcdH1cbiAyNDM6XHRcdH1cbiAyNDQ6XHRcbiAyNDU6XHRcdHJldCA9IGF0aDEya19taGlfZ2V0X21zaShhYl9wY2kpO1xuIDI0NjpcdFx0aWYgKHJldCkge1xuIDI0NzpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IG1zaSBmb3IgbWhpXFxuXCYjMzQ7KTtcbiAyNDg6XHRcdFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XG4gMjQ5Olx0XHR9XG4gMjUwOlx0XG4gMjUxOlx0XHRpZiAoIXRlc3RfYml0KEFUSDEyS19QQ0lfRkxBR19NVUxUSV9NU0lfVkVDVE9SUywgXHUwMDI2YWJfcGNpLVx1MDAzZWZsYWdzKSlcbiAyNTI6XHRcdFx0bWhpX2N0cmwtXHUwMDNlaXJxX2ZsYWdzID0gSVJRRl9TSEFSRUQgfCBJUlFGX05PQkFMQU5DSU5HO1xuIDI1MzpcdFxuIDI1NDpcdFx0bWhpX2N0cmwtXHUwMDNlaW92YV9zdGFydCA9IDA7XG4gMjU1Olx0XHRtaGlfY3RybC1cdTAwM2Vpb3ZhX3N0b3AgPSBhYl9wY2ktXHUwMDNlZG1hX21hc2s7XG4gMjU2Olx0XHRtaGlfY3RybC1cdTAwM2VzYmxfc2l6ZSA9IFNaXzUxMks7XG4gMjU3Olx0XHRtaGlfY3RybC1cdTAwM2VzZWdfbGVuID0gU1pfNTEySztcbiAyNTg6XHRcdG1oaV9jdHJsLVx1MDAzZWZiY19kb3dubG9hZCA9IHRydWU7XG4gMjU5Olx0XHRtaGlfY3RybC1cdTAwM2VydW50aW1lX2dldCA9IGF0aDEya19taGlfb3BfcnVudGltZV9nZXQ7XG4gMjYwOlx0XHRtaGlfY3RybC1cdTAwM2VydW50aW1lX3B1dCA9IGF0aDEya19taGlfb3BfcnVudGltZV9wdXQ7XG4gMjYxOlx0XHRtaGlfY3RybC1cdTAwM2VzdGF0dXNfY2IgPSBhdGgxMmtfbWhpX29wX3N0YXR1c19jYjtcbiAyNjI6XHRcdG1oaV9jdHJsLVx1MDAzZXJlYWRfcmVnID0gYXRoMTJrX21oaV9vcF9yZWFkX3JlZztcbiAyNjM6XHRcdG1oaV9jdHJsLVx1MDAzZXdyaXRlX3JlZyA9IGF0aDEya19taGlfb3Bfd3JpdGVfcmVnO1xuIDI2NDpcdFxuIDI2NTpcdFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbiAyNjY6XHRcdGlmIChyZXQpIHtcbiAyNjc6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRvIG1oaSBidXMsIGVyciA9ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDI2ODpcdFx0XHRnb3RvIGZyZWVfY29udHJvbGxlcjtcbiAyNjk6XHRcdH1cbiAyNzA6XHRcbiAyNzE6XHRcdHJldHVybiAwO1xuIDI3MjpcdFxuIDI3MzpcdGZyZWVfY29udHJvbGxlcjpcbiAyNzQ6XHRcdG1oaV9mcmVlX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI3NTpcdFx0YWJfcGNpLVx1MDAzZW1oaV9jdHJsID0gTlVMTDtcbiAyNzY6XHRcdHJldHVybiByZXQ7XG4gMjc3Olx0fVxuIDI3ODpcdFxuIDI3OTpcdHZvaWQgYXRoMTJrX21oaV91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG4gMjgwOlx0e1xuIDI4MTpcdFx0c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY3RybCA9IGFiX3BjaS1cdTAwM2VtaGlfY3RybDtcbiAyODI6XHRcbiAyODM6XHRcdG1oaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI4NDpcdFx0a2ZyZWUobWhpX2N0cmwtXHUwMDNlaXJxKTtcbiAyODU6XHRcdG1oaV9mcmVlX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI4NjpcdFx0YWJfcGNpLVx1MDAzZW1oaV9jdHJsID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1ODcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipDb250cm9sbGVyIEluaXRpYWxpemF0aW9uIENvbnVuZHJ1bSoqCgpSaWdodCwgc28gYG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyYCByZWdpc3RlcnMgdGhlIGNvbnRyb2xsZXIuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEJ1dCBob2xkIG9uLCB0aGUgcmVnaXN0cmF0aW9uIGlzIGp1c3QgdGhlIGZpcnN0IHN0ZXAuIERvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgKmtpY2sgb2ZmKiB0aGUgZmlybXdhcmUgZG93bmxvYWQ/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGlzbiYjMzk7dCBpdD8KCkdlbmVyYWxseSwgSSYjMzk7ZCBleHBlY3QgdGhhdCB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHRyaWdnZXJlZCBieSBlaXRoZXIgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgb3IgYG1oaV9zeW5jX3Bvd2VyX3VwYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgaW4gbWFuYWdpbmcgdGhlIHBvd2VyLXVwIGFuZCBkb3dubG9hZCBwcm9jZXNzLiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBhY3R1YWxseSAqY2FsbGVkKiBpbiB0aGUgY29kZS4gVHJhY2luZyB0aGF0IGNhbGwgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgcG93ZXItdXAgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBoYW5kbGVkIGluIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbmZpcm0gd2hldGhlciB0aGUgZG93bmxvYWQgaXMga2lja2VkIG9mZiBleHBsaWNpdGx5LCBvciBpbXBsaWNpdGx5LiBUaGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9zeW5jX3Bvd2VyX3VwfG1oaV9hc3luY19wb3dlcl91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NDA2PXN0YXRpYyBpbnQgYXRoMTJrX21oaV9zZXRfc3RhdGUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcdFx0cmV0ID0gbWhpX3N5bmNfcG93ZXJfdXAoYWJfcGNpLVx1MDAzZW1oaV9jdHJsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDQwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwOTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX21oaV9zZXRfc3RhdGVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFyb3VuZCBgYXRoMTJrX21oaV9zZXRfc3RhdGVgLiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRpcmVjdGx5IGNhbGwgdGhpcyBvbmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYGF0aDEya2AgTUhJIChNdWx0aS1Ib3N0IEludGVyZmFjZSkgZHJpdmVyIGNvbnRleHQuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIGxpa2VseSBtYW5hZ2VzIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBzb21lIHBhcnQgb2YgdGhlIE1ISSBzdWJzeXN0ZW0g4oCTIHBlcmhhcHMgcG93ZXIgbWFuYWdlbWVudCwgaW5pdGlhbGl6YXRpb24sIG9yIGVycm9yIHJlY292ZXJ5LiBVbmNvdmVyaW5nIHRoZSBjYWxsIGdyYXBoIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZHMgY29uZmlybWluZyB0aGF0IGFuZCB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2Vycy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19taGlfc2V0X3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0yODk9c3RhdGljIGNoYXIgKmF0aDEya19taGlfc3RhdGVfdG9fc3RyKGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0zMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjMxNzpzdGF0aWMgdm9pZCBhdGgxMmtfbWhpX3NldF9zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMzE4LVx0XHRcdFx0ICAgICBlbnVtIGF0aDEya19taGlfc3RhdGUgbWhpX3N0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9MzU2PXN0YXRpYyBpbnQgYXRoMTJrX21oaV9jaGVja19zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDA2OnN0YXRpYyBpbnQgYXRoMTJrX21oaV9zZXRfc3RhdGUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDA3LVx0XHRcdFx0ZW51bSBhdGgxMmtfbWhpX3N0YXRlIG1oaV9zdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDcyOlx0YXRoMTJrX21oaV9zZXRfc3RhdGVfYml0KGFiX3BjaSwgbWhpX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NDgyPWludCBhdGgxMmtfbWhpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQ4ODpcdHJldCA9IGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9JTklUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDg5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDkyOlx0cmV0ID0gYXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1BPV0VSX09OKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUwMj12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MDgtXHRpZiAoaXNfc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NTA5Olx0XHRhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT0ZGX0tFRVBfREVWKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTEwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTE6XHRcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9QT1dFUl9PRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUxMzpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9ERUlOSVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NTE2PXZvaWQgYXRoMTJrX21oaV9zdXNwZW5kKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUxODpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9TVVNQRU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTE5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUyMT12b2lkIGF0aDEya19taGlfcmVzdW1lKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUyMzpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9SRVNVTUUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MjQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBQZXJzcGVjdGl2ZSBvbiB0aGUgYXRoMTJrIERyaXZlciBQb3dlci1VcCBTZXF1ZW5jZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGVyZSwgc3BlY2lmaWNhbGx5IGl0cyBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHMuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBhdGgxMmtfbWhpX3N0YXJ0YCBmdW5jdGlvbiBpcyAqY3J1Y2lhbCogaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYW5kIEkmIzM5O20gbm90aW5nIGl0cyBjYWxsIHN0YWNrLiBJdCYjMzk7cyBpbnZva2VkIGRpcmVjdGx5IGZyb20gYGF0aDEya19wY2lfcG93ZXJfdXBgLiBOb3csIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGludGltYXRlbHkgbGlua2VkIHRvIHRoZSBQQ0kgYnVzIGFuZCB0aGUgZGV2aWNlJiMzOTtzIHBvd2VyIHN0YXRlLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBhdGgxMmtfbWhpX3N0YXJ0YCBtdXN0IGJlIGVzdGFibGlzaGluZyB0aGUgZnVuZGFtZW50YWwgTUhJIChNdWx0aS1GdW5jdGlvbiBIYXJkd2FyZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gY2hhbm5lbCB3aXRoIHRoZSBRdWFsY29tbSBkZXZpY2UuCgpUaGVyZWZvcmUsIHRoaXMgY29uZmlybXMgdGhhdCB0aGUgUENJIHBvd2VyLXVwIGZsb3cgaXMgZGlyZWN0bHkgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGluaXRpYWwgbGluayB0byB0aGUgUXVhbGNvbW0gY2hpcHNldCwgYW5kIGBhdGgxMmtfbWhpX3N0YXJ0YCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuIEkmIzM5O2Qgc3VzcGVjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGluZ3MgbGlrZSB0aGUgTUhJIGVuZHBvaW50IGRpc2NvdmVyeSwgY2xvY2sgY29uZmlndXJhdGlvbiwgYW5kIHBvc3NpYmx5IGV2ZW4gdGhlIGluaXRpYWwgZmlybXdhcmUgZG93bmxvYWQgaWYgaXQmIzM5O3Mgbm90IGhhbmRsZWQgZWxzZXdoZXJlLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBwbGFjZSB3aGVyZSB0aGUgZHJpdmVyJiMzOTtzIGNvbnRyb2wgaXMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgaGFyZHdhcmUgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgb2YgYGF0aDEya19taGlfc3RhcnRgIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgaXQgZXN0YWJsaXNoZXMgdGhpcyBjb25uZWN0aW9uIGFuZCBlbnN1cmUgdGhhdCBpdCYjMzk7cyBoYW5kbGluZyBwb3RlbnRpYWwgZXJyb3Igc2NlbmFyaW9zIGdyYWNlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19wY2lfcG93ZXJfdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTEzMjY9c3RhdGljIHZvaWQgYXRoMTJrX3BjaV9jb3JlZHVtcF9kb3dubG9hZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTQzODppbnQgYXRoMTJrX3BjaV9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE0OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfcGNpX2hpZl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDk4LVx0LnBvd2VyX2Rvd24gPSBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0OTk6XHQucG93ZXJfdXAgPSBhdGgxMmtfcGNpX3Bvd2VyX3VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTAwLVx0LnN1c3BlbmQgPSBhdGgxMmtfcGNpX2hpZl9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTc0PWludCBhdGgxMmtfcGNpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzU6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3Ni12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqVHJhY2luZyB0aGUgYXRoMTJrIFBDSSBQb3dlci1VcCBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgYXRoMTJrX3BjaV9wb3dlcl91cGAgaXMgZGVmaW5lZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGhpZl9vcHNgIHN0cnVjdHVyZSwgcmlnaHQ/IE5vdyB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqY2FsbCBjaGFpbioqLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHBvd2VyLCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgaGlmX29wcy0mZ3Q7cG93ZXJfdXBgIGlzIGFjdHVhbGx5IGludm9rZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgcmVmZXJlbmNlcywgdGhlIHBsYWNlcyB0aGF0IGFjdHVhbGx5ICp1c2UqIHRoYXQgcGFydGljdWxhciBtZW1iZXIgb2YgdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBncmVwLCBvciBteSBJREUmIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgcGxhY2VzIHdoZXJlIGBoaWZfb3BzYCBpcyB1c2VkLCBhbmQgbG9vayBmb3IgYSBkaXJlY3QgY2FsbCBvciBpbmRpcmVjdCBjYWxsIHRvIHRoZSBgcG93ZXJfdXBgIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IGNvbnRhaW5lZCBwaWVjZSBvZiB0aGUgZHJpdmVyLCBzbyBmaW5kaW5nIGl0IHNob3VsZG4mIzM5O3QgYmUgdG9vIGNvbXBsZXguIExldCYjMzk7cyBzZWUuLi4gdGhlIGBoaWZfb3BzYCBzdHJ1Y3QgaXRzZWxmIGlzIGxpa2VseSBkZWZpbmVkIGluIHRoZSBkcml2ZXImIzM5O3MgaGVhZGVyIGZpbGVzLCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gdGhhdCBsb2NhdGlvbiBhbmQgZmluZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBgcG93ZXJfdXBgIGZ1bmN0aW9uIHBvaW50ZXIuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3dlcl91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzIzPXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMzM6c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfYWhiX2hpZl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03MTItXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDEya19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzEzOlx0LnBvd2VyX3VwID0gYXRoMTJrX2FoYl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzE0LVx0LnBvd2VyX2Rvd24gPSBhdGgxMmtfYWhiX3Bvd2VyX2Rvd24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTgxPWludCBhdGgxMmtfY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xODktXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZhYi1cdTAwM2VyZXN0YXJ0X2NvbXBsZXRlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxOTA6XHRyZXQgPSBhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE5MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE3PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgzNDpcdHJldCA9IGF0aDEya19oaWZfcG93ZXJfdXAoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODM1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE2ODI9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxNzY4Olx0XHRhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjktXHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7cmVzZXQgc3RhcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc2OS1cdHN0cnVjdCBhdGgxMmtfZndfc3RhdHMgZndfc3RhdHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo3NzA6XHR1bnNpZ25lZCBsb25nIGxhc3RfdHhfcG93ZXJfdXBkYXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg9MTI9c3RydWN0IGF0aDEya19oaWZfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE4LVx0dm9pZCAoKnN0b3ApKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxOTpcdGludCAoKnBvd2VyX3VwKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMjAtXHR2b2lkICgqcG93ZXJfZG93bikoc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oPTEzMD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2hpZl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBhZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxMzY6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xMzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxMzg6XHRpZiAoIWFiLVx1MDAzZWhpZi5vcHMtXHUwMDNlcG93ZXJfdXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTEzOS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjE0MTpcdHJldHVybiBhYi1cdTAwM2VoaWYub3BzLVx1MDAzZXBvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTQyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTU0Njc9aW50IGF0aDEya19tYWNfb3BfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA0LVx0XHRcdG1zZWNzX3RvX2ppZmZpZXMoQVRIMTJLX1BERVZfVFhfUE9XRVJfUkVGUkVTSF9USU1FX01TRUNTKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1NTA1Olx0XHRcdFx0XHQgYXItXHUwMDNlbGFzdF90eF9wb3dlcl91cGRhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA2LVx0XHRnb3RvIHNlbmRfdHhfcG93ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTI3LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6NTUyODpcdGFyLVx1MDAzZWxhc3RfdHhfcG93ZXJfdXBkYXRlID0gamlmZmllcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTUyOS1cdGF0aDEya19md19zdGF0c19yZXNldChhcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz00MDY9c3RhdGljIGludCBhdGgxMmtfbWhpX3NldF9zdGF0ZShzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDIwLVx0Y2FzZSBBVEgxMktfTUhJX0lOSVQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQyMTpcdFx0cmV0ID0gbWhpX3ByZXBhcmVfZm9yX3Bvd2VyX3VwKGFiX3BjaS1cdTAwM2VtaGlfY3RybCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQyMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MzgtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo0Mzk6XHRcdHJldCA9IG1oaV9zeW5jX3Bvd2VyX3VwKGFiX3BjaS1cdTAwM2VtaGlfY3RybCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xMzI2PXN0YXRpYyB2b2lkIGF0aDEya19wY2lfY29yZWR1bXBfZG93bmxvYWQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0Mzg6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQ5OC1cdC5wb3dlcl9kb3duID0gYXRoMTJrX3BjaV9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNDk5Olx0LnBvd2VyX3VwID0gYXRoMTJrX3BjaV9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwMC1cdC5zdXNwZW5kID0gYXRoMTJrX3BjaV9oaWZfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3ND1pbnQgYXRoMTJrX3BjaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc1OmludCBhdGgxMmtfcGNpX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzYtdm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzMDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBQcm9iZSBGYWlsdXJlKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBhcyBJIHNlZSBpdC4gVGhlIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCBmdW5jdGlvbiBpcyB0aGUgaW5pdGlhbCBjdWxwcml0LiBJdCBjYWxscyBgYXRoMTJrX21oaV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgYW5kIHRoZW4gYG1oaV9zeW5jX3Bvd2VyX3VwYC4gVGhlIGtleSBwcm9ibGVtIGhlcmUgaXMgYG1oaV9zeW5jX3Bvd2VyX3VwYC4gSXQmIzM5O3Mgd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byBzaWduYWwgdGhhdCBpdCBoYXMgZW50ZXJlZCB0aGUgQU1TUyBzdGF0ZSwgaW5kaWNhdGluZyB0aGUgZmlybXdhcmUgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIGlzIHJ1bm5pbmcuIElmIHRoYXQgc2lnbmFsIGRvZXNuJiMzOTt0IGNvbWUsIGBtaGlfc3luY19wb3dlcl91cGAgdGltZXMgb3V0IGFuZCBmYWlscy4KClRoYXQgdGltZW91dCBjYXVzZXMgYSBjYXNjYWRlIG9mIGZhaWx1cmVzLiBgYXRoMTJrX3BjaV9wb3dlcl91cGAgZmFpbHMsIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBmYWlscywgYW5kIHVsdGltYXRlbHksIHRoZSBkcml2ZXIgcHJvYmUgZmFpbHMuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHdpdGhvdXQgYSByZWFsIFF1YWxjb21tIFdpLUZpIGRldmljZSBvciBhbiBleHRyZW1lbHkgc29waGlzdGljYXRlZCBlbXVsYXRvciB0aGF0IGNhbiBwZXJmZWN0bHkgbWltaWMgdGhlIE1ISSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCB0aGVyZSYjMzk7cyBubyB3YXkgYGF0aDEya2AgY2FuIGJlIHByb2JlZCBzdWNjZXNzZnVsbHkuCgpOb3csIG15IG1pbmQgc3RhcnRzIHJhY2luZy4gSSByZW1lbWJlciBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lkZXZgIGZ1bmN0aW9uIHRoYXQgc2ltdWxhdGVzIFBDSSBkZXZpY2VzLiBCdXQgZG9lcyBpdCBzaW11bGF0ZSBNSEk/IE5vLCBpdCYjMzk7cyBhIGdlbmVyaWMgUENJIGZ1enplci4gSXQgcmV0dXJucyByYW5kb20gYnl0ZXMgZm9yIE1NSU8gcmVhZHMuIFN1cmUsIGlmIGBtaGlfc3luY19wb3dlcl91cGAgaXMganVzdCB3YWl0aW5nIGZvciBhIHNwZWNpZmljIGJpdCB0byBiZSBzZXQgaW4gYSByZWdpc3RlciwgdGhlIGZ1enplciBtaWdodCBldmVudHVhbGx5IHJldHVybiB0aGUgcmlnaHQgdmFsdWUgYnkgY2hhbmNlLiBIb3dldmVyLCB0aGUgTUhJIHByb3RvY29sIGlzIGZhciBtb3JlIGNvbXBsZXguIFRoZSBob3N0IHdyaXRlcyB0byBCSEkgcmVnaXN0ZXJzLCB0aGUgZGV2aWNlIGlzIHN1cHBvc2VkIHRvIERNQSB0aGUgZmlybXdhcmUgZnJvbSBob3N0IG1lbW9yeSwgYW5kIHRoZW4gdGhlIGRldmljZSB1cGRhdGVzIGEgc3RhdGUgcmVnaXN0ZXIuIEEgZ2VuZXJpYyBmdXp6ZXIgaGFzIHplcm8gY2hhbmNlIG9mIGZ1bGZpbGxpbmcgdGhpcyBwcm90b2NvbCBieSBsdWNrLgoKVGhpcyBtZWFucyB0aGF0IGBhdGgxMmtgJiMzOTtzIHByb2JlIHdpbGwgKmFsd2F5cyogZmFpbCBpbiBhIHN5emthbGxlciBlbnZpcm9ubWVudCwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNyaXRpY2FsIGBtYWM4MDIxMWAgY2FsbGJhY2tzLCBsaWtlIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAsIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLgoKQnV0IHdhaXQsIGlmIHRoZSBwcm9iZSBpcyBkZXN0aW5lZCB0byBmYWlsLCB3aHkgZGlkIHN5emthbGxlciBhcHBseSAqdGhhdCogcGF0Y2ggaW4gdGhlIGZpcnN0IHBsYWNlPyBJIGtub3cgc3l6a2FsbGVyIGFwcGxpZXMgcGF0Y2hlcyBhdXRvbWF0aWNhbGx5IGlmIHRoZXkgYXJlIHNlbnQgdG8gdGhlIG1haWxpbmcgbGlzdCB3aXRoIHRoZSBzeXpib3QgQ0MmIzM5O2QsIG9yIGlmIGl0JiMzOTtzIGZpeGluZyBhIGJ1ZyB0aGF0IHN5emJvdCBoYXMgYWxyZWFkeSBmb3VuZC4KClRoYXQgbGVhZHMgbWUgdG8gYSBjcml0aWNhbCBwb2ludDogc3l6Ym90ICpkb2VzKiBmaW5kIGJ1Z3MgaW4gYGF0aDEya2AhIFRoaXMgc3VnZ2VzdHMgdGhhdCBldmVuIHRob3VnaCBpdCBjYW4mIzM5O3QgZnVsbHkgcHJvYmUsIGl0JiMzOTtzIHN0aWxsIGV4ZXJjaXNpbmcgKnNvbWUqIGNvZGUgcGF0aHMsIGVub3VnaCB0byB0cmlnZ2VyIHRob3NlIGJ1Z3MuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciBzeXpib3QgcmVwb3J0cyBvbiBidWdzIGluIGBhdGgxMmtgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ2V0dGluZyBoaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UmVwb3J0ZWQtYnk6IHN5emJvdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlIGZvciB0aGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBhdGgxMmtgIHBhdGNoIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgKm1heWJlKiBgc3l6Ym90YCBqdXN0IG1pc3NlZCBzb21lIGJ1Z3MsIGJ1dCB0aGUgcHJvbXB0JiMzOTtzIHByZXR0eSBjbGVhcjogSSBuZWVkIHRvIGZsYWcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBBbmQgYGF0aDEya2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIg4oCTIGl0JiMzOTtzIGFsbCBhYm91dCBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiwgYW5kIGl0IHJlbGllcyBvbiB0aGF0IGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB0aHJvdWdoIE1ISS4KClNvLCBmaXJzdCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgaWYgdGhlcmUgd2FzIHNvbWUgaGlkZGVuIGBod3NpbWAgb3IgYGR1bW15YCBtb2RlIGJ1cmllZCBpbiB0aGUgY29kZS4gSSBzZWFyY2hlZCBmb3IgJiMzNDtod3NpbXxzaW18ZHVtbXkmIzM0OyBhbmQgZm91bmQgYSBmZXcgZGVidWdmcyBjb21tYW5kcyBsaWtlIGBzaW11bGF0ZV9md19jcmFzaGAgYW5kIG90aGVycyByZWxhdGVkIHRvIGVtdWxhdGluZyBpbnRlcmZlcmVuY2UgYW5kIHJhZGFyLCBidXQgdGhvc2UgKnN0aWxsKiBuZWVkIHRoZSBmaXJtd2FyZSBydW5uaW5nLiBUaGVuIEkgZm91bmQgYW4gYGFsbG9jX25ldGRldl9kdW1teSgwKWAgY2FsbCBpbiBgYXRoMTJrX2FoYl9jb25maWdfZXh0X2lycWAgYW5kIGBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnYCwgYnV0IHRoYXQmIzM5O3MganVzdCBmb3IgTkFQSS4gTm90aGluZyB0aGF0IGNvdWxkIGFsbG93IGl0IHRvIHJ1biB3aXRob3V0IHRoZSBoYXJkd2FyZS4gQm90dG9tIGxpbmUsIHRoZXJlJiMzOTtzIG5vIGBod3NpbWAgZm9yIGBhdGgxMmtgLgoKVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBgZHBfcGVlci5jYCwgYW5kIHNvIG9uLCB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmUgKmRlZmluaXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpOb3csIHdhaXQgYSBzZWMsIGlzIHRoZXJlICphbnkqIHdheSB0byBnZXQgYGF0aDEya2AgZnV6emVkICp0aHJvdWdoKiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBCdXQgbm8sIGBtYWM4MDIxMV9od3NpbWAgaXMgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlci4gSXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgIGFuZCBzaW11bGF0ZXMgYSBXaS1GaSBkZXZpY2UgYXQgdGhlIG1hYzgwMjExIGxheWVyLiBJdCBkb2VzbiYjMzk7dCB1c2UgKmFueSogYGF0aDEya2AgY29kZS4KCldoYXQgYWJvdXQgYG5sODAyMTFgIHRlc3Rtb2RlPyBObywgdGhvc2UgY29tbWFuZHMgYXJlIGhhbmRsZWQgYnkgYGF0aDEya190ZXN0bW9kZV9jbWRgLCBidXQgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBwcm9iZWQgYW5kIHRoZSBkZXZpY2UgcHJlc2VudC4KClNvLCB5ZWFoLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwcm9tcHQgdG8gbWFrZSBzdXJlOiBZZXAsIHRoZSBwcm9tcHQgc2F5cyAmIzM0O3JldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyBgYXRoMTJrYCB0byBhIFQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIGlmIHRoZXJlIGlzIGFueSBgQ09ORklHX0FUSDEyS19TSU1gIG9yIHNpbWlsYXIgaW4gdGhlIEtjb25maWcuCgpJIGFtIGNvbmZpZGVudCwgYGF0aDEya2AgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyBhbmQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgdGhlIGZpcm13YXJlIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19BVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEyay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMtYXRoMTJrLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI1OmF0aDEyay0kKENPTkZJR19BVEgxMktfQUhCKSAmIzQzOz0gYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19BVEgxMkspICYjNDM7PSB3aWZpNy9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzAtYXRoMTJrLSQoQ09ORklHX0FDUEkpICYjNDM7PSBhY3BpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zMi1hdGgxMmstJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNC1hdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaD02MjQ9c3RydWN0IGF0aDEyayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzQxLVx0dTMyIGNhY2hlZF9wcGR1X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NzQyOiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc0My1cdHN0cnVjdCBhdGgxMmtfZGVidWcgZGVidWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9OTU3PXN0cnVjdCBhdGgxMmtfYmFzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTA1NS1cdGVudW0gYXRoMTJrX2Rmc19yZWdpb24gZGZzX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oOjEwNTY6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTA1Ny1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc29jO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaD0zNz1zdHJ1Y3QgYXRoMTJrX2R1bXBfZmlsZV9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmVkdW1wLmgtNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmVkdW1wLmg6NjA6I2lmZGVmIENPTkZJR19BVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaC02MS1lbnVtIGF0aDEya19md19jcmFzaF9kdW1wX3R5cGUgYXRoMTJrX2NvcmVkdW1wX2dldF9kdW1wX3R5cGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM9NTU9RVhQT1JUX1NZTUJPTChfX2F0aDEya193YXJuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzo1NzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5jLTU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYz0xMDg9RVhQT1JUX1NZTUJPTChhdGgxMmtfZGJnX2R1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzoxMTA6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUcgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmg9NDE9ZXh0ZXJuIGJvb2wgYXRoMTJrX2Z0bV9tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oOjQzOiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNDQtX19wcmludGYoMywgNCkgdm9pZCBfX2F0aDEya19kYmcoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmg9NDc9dm9pZCBhdGgxMmtfZGJnX2R1bXAoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTAtXHRcdCAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo1MTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTItc3RhdGljIGlubGluZSB2b2lkIF9fYXRoMTJrX2RiZyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTYzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo2NDojZW5kaWYgLyogQ09ORklHX0FUSDEyS19ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaDoxMDojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaC0xMS12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg9MTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTE0NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaDoxNDU6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmgtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaD0yNj12b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9zdGF0c19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mjg6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTI5LXZvaWQgYXRoMTJrX2RlYnVnZnNfaHR0X2V4dF9zdGF0c19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzAtXHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzE6I2Vsc2UgLyogQ09ORklHX0FUSDEyS19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzItc3RhdGljIGlubGluZSB2b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaDoxNTojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmgtMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmg9MTc9dm9pZCBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oOjIyOiNlbmRpZiAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTEyMTI9dm9pZCBhdGgxMmtfcGNpX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTI1ODojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xMjU5LXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9jb3JlZHVtcF9jYWxjdWxhdGVfc2l6ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgKmR1bXBfc2VnX3N6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19oaWZfb3BzIGF0aDEya19wY2lfaGlmX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MTAtXHQucGFuaWNfaGFuZGxlciA9IGF0aDEya19wY2lfcGFuaWNfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUxMTojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTEyLVx0LmNvcmVkdW1wX2Rvd25sb2FkID0gYXRoMTJrX3BjaV9jb3JlZHVtcF9kb3dubG9hZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmgtMTQtLyogY3JlYXRlIGVtcHR5IGZ1bmN0aW9ucyB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaDoxNTojaWYgIWRlZmluZWQoQ09ORklHX0FUSDEyS19UUkFDSU5HKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE2LSN1bmRlZiBUUkFDRV9FVkVOVFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaD0xOD1zdGF0aWMgaW5saW5lIHZvaWQgdHJhY2VfICMjIG5hbWUocHJvdG8pIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmg6MTk6I2VuZGlmIC8qICFDT05GSUdfQVRIMTJLX1RSQUNJTkcgfHwgX19DSEVDS0VSX18gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEya193aWZpNy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTMtYXRoMTJrX3dpZmk3LXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlOjIwOmF0aDEya193aWZpNy0kKENPTkZJR19BVEgxMktfQUhCKSAmIzQzOz0gYWhiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oOjk6I2lmZGVmIENPTkZJR19BVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTEwLWludCBhdGgxMmtfd2lmaTdfYWhiX2luaXQodm9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTExNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTUtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTE5NjojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTE5Ny1cdC52aWZfYWRkX2RlYnVnZnMgICAgICAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19vcF92aWZfYWRkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTk5LVx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEya190bV9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTIwMDojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTIwMS1cdC5saW5rX3N0YV9hZGRfZGVidWdmcyAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05NjU0PXN0YXRpYyB2b2lkIGF0aDEya193bWlfZXZlbnRfdGVhcmRvd25fY29tcGxldGUoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk2NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjk2NzM6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05Njc0LXN0YXRpYyBpbnQgYXRoMTJrX3dtaV90cGNfc3RhdHNfY29weV9idWZmZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0NDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBhbmQgaXQmIzM5O3MgY2xlYXI6IHRoZXJlJiMzOTtzIG5vIHdheSB0byBzaW11bGF0ZSB0aGlzLCBubyBgQ09ORklHX0FUSDEyS19TSU1gIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gVGhpcyBkcml2ZXIsIHRoZSBgYXRoMTJrYCBvbmUsIGlzICpkZWZpbml0ZWx5KiBoYXJkd2FyZS1kZXBlbmRlbnQuIEl0IG5lZWRzIHRoZSByZWFsIGRlYWwuIFNvLCB0aGUgYFdvcnRoRnV6emluZz1mYWxzZWAgdGFnLCByaWdodCBvdXQgb2YgdGhlIGdhdGUsIHNlZW1zIHNwb3Qgb24uCgpMZXQgbWUganVzdCBzb2xpZGlmeSB0aGlzIGluIG15IG1pbmQuIFJpZ2h0LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBhdGgxMmtgIGRyaXZlci4gVGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUg4oCTIHJlYWwgUENJIG9yIEFIQiBkZXZpY2VzLCBhbmQgaW1wb3J0YW50bHksIG5lZWRzIHRoYXQgZmlybXdhcmUgdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZy4gIFRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIHdvcmsgaW4gc29tZSB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4gCgpTbywgeWVhaCwgbm90IHdvcnRoIHRoZSBlZmZvcnQgZm9yIFN5emthbGxlci4KCkhvbGQgb24sIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6X3BjaWRldmAsIHdoaWNoIGFsbG93cyB5b3UgdG8gc2ltdWxhdGUgUENJIGRldmljZXMuIEJ1dCwgaGFuZyBvbi4gVGhlIG1vcmUgSSB0aGluayBhYm91dCBpdCwgYGF0aDEya2AgZG9lcyB0aGUgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkuIFN5el9wY2lkZXYgZG9lc24mIzM5O3QgZG8gdGhhdC4gRG9lcyBzeXprYWxsZXIgZXZlbiBoYXZlIGFuIE1ISSBlbXVsYXRvcj8KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBNSEkgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9lbXVsYXRvcnxtaGlfc2ltfGR1bW15X21oaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDI3CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDEyayBEcml2ZXImIzM5O3MgRnV6emFiaWxpdHkqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gTUhJIGVtdWxhdG9yIGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiAgV2l0aG91dCB0aGF0LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZWZmZWN0aXZlbHkgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHVzaW5nIHN5emthbGxlci4gIFRoZSB3aG9sZSBwcm9jZXNzIGhpbmdlcyBvbiB0aGUgYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgbG9hZCBpdHMgZmlybXdhcmUsIGFuZCB0aGUgTUhJIGlzIGNlbnRyYWwgdG8gdGhhdC4KClNpbmNlIHN5emthbGxlciByZWxpZXMgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHdoaWNoIGFyZSB2aXJ0dWFsaXplZCBhbmQgY2FuJiMzOTt0IGhhbmRsZSB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIEkgaGF2ZSB0byBjb25jbHVkZSB0aGF0IHdlIGNhbiYjMzk7dCByZWxpYWJseSBmdXp6IHRoaXMgZHJpdmVyLiBNeSByZWNvbW1lbmRhdGlvbiBpcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBgYXRoMTJrYCBpcyBhIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBJdHMgZGVwZW5kZW5jZSBvbiBhIHBoeXNpY2FsIGRldmljZSwgYW5kIHRoZSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdCB1c2VzIHRocm91Z2ggTUhJLCBhcmUgaW5zdXJtb3VudGFibGUgb2JzdGFjbGVzIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIFRoZXJlJiMzOTtzIGp1c3Qgbm8gcHJhY3RpY2FsIHBhdGggdG8gZXhlY3V0ZSB0aGUgbmVjZXNzYXJ5IGNvZGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkgdG8gZnVuY3Rpb24uIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMi44Mjg5NDczN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODYwNDEyMjczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMi44Mjg5NTMxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1MjYwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2QzMWVkMThkNDE5OTg3MTY5NjQ3YzNiNzNiY2IwY2MwMDVhYTg0NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuaW5kZXggMGU3YzczMmY4MjIyNjUuLmNmOWM1YjA2OGZhNjcxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMTU0Nyw2ICsxNTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcHJlX3JlY29uZmlndXJlX3JlY292ZXJ5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHdpcGh5X3VubG9jayhhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KTtcXG4rXFxuK1xcdFxcdGNvbXBsZXRlKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4gXFx0fVxcbiBcXG4gXFx0d2FrZV91cChcXHUwMDI2YWItXFx1MDAzZXdtaV9hYi50eF9jcmVkaXRzX3dxKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbmluZGV4IGZjNTEyN2I1YzFhMzdmLi4zMDcyNmU1ODA4MzNlMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuQEAgLTcyLDYgKzcyLDcgQEBcXG4gXFxuICNkZWZpbmUgQVRIMTJLX01BWF9NTE9fUEVFUlMgICAgICAgICAgICAyNTZcXG4gI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRlxcbisjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXFxuIFxcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRlVMTCAtMVxcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxcbkBAIC03OTMsNiArNzk0LDggQEAgc3RydWN0IGF0aDEya19odyB7XFxuIFxcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xcbiBcXHRib29sIHJlZ2RfdXBkYXRlZDtcXG4gXFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xcbitcXHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XFxuK1xcdHN0cnVjdCBjb21wbGV0aW9uIHBlZXJfbWxfaWRfZG9uZTtcXG4gXFxuIFxcdHU4IG51bV9yYWRpbztcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jXFxuaW5kZXggNTJlMTAwNTljNmQ1YTguLjY4OTY4Zjk2YjRmMWIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jXFxuQEAgLTYsNiArNiw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXFwiY29yZS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZHBfcGVlci5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHRjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9odHQuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRlYnVnZnNfaHR0X3N0YXRzLmhcXFwiXFxuQEAgLTU3NSw2ICs1NzYsNTEgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gXFx1MDAyNnJlc3AtXFx1MDAzZW1sb19wZWVyX21hcF9ldjtcXG4rXFx0dTE2IHJhd19wZWVyX2lkLCBwZWVyX2lkLCBhZGRyX2gxNjtcXG4rXFx0dTggcGVlcl9hZGRyW0VUSF9BTEVOXTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqZXYpKSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyYXdfcGVlcl9pZCA9IGxlMzJfZ2V0X2JpdHMoZXYtXFx1MDAzZWluZm8wLFxcbitcXHRcXHRcXHRcXHQgICAgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzBfTUxPX1BFRVJfSUQpO1xcbitcXHRwZWVyX2lkID0gcmF3X3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcXG4rXFxuK1xcdGFkZHJfaDE2ID0gbGUzMl9nZXRfYml0cyhldi1cXHUwMDNlaW5mbzEsXFxuK1xcdFxcdFxcdFxcdCBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMV9NQUNfQUREUl9IMTYpO1xcbitcXHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVxcdTAwM2VtYWNfYWRkcl9sMzIpLCBhZGRyX2gxNixcXG4rXFx0XFx0XFx0ICAgICAgIHBlZXJfYWRkcik7XFxuK1xcbitcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RQX0hUVCwgXFxcImh0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdCAgIHBlZXJfYWRkciwgcGVlcl9pZCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGaXggdXAgdGhlIGRwX3BlZXIgZW50cnkgY3JlYXRlZCB3aXRoIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HXFxuK1xcdCAqIGVhcmxpZXI7IG9uIGNoaXBzIHdpdGggaG9zdF9hbGxvY19tbF9pZCA9PSBmYWxzZSB0aGlzIGlzIHRoZSBvbmx5XFxuK1xcdCAqIHBvaW50IGF0IHdoaWNoIHRoZSBob3N0IGxlYXJucyB0aGUgZmlybXdhcmUtYXNzaWduZWQgSUQuIENoaXBzXFxuK1xcdCAqIHRoYXQgYWxsb2NhdGUgdGhlIElEIG9uIHRoZSBob3N0IGFsc28gcmVjZWl2ZSB0aGlzIGV2ZW50IGJ1dCB0aGVcXG4rXFx0ICogZmlybXdhcmUtcmVwb3J0ZWQgSUQgbWF0Y2hlcyB0aGUgaG9zdC1hbGxvY2F0ZWQgb25lLCBzbyB0aGVyZSBpc1xcbitcXHQgKiBub3RoaW5nIHRvIGZpeCB1cC5cXG4rXFx0ICovXFxuK1xcdGlmICghYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xcbitcXHRcXHRyZXQgPSBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKGFiLCBwZWVyX2FkZHIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHBlZXJfaWQpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRhdGgxMmtfd2FybihhYixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZml4IHVwIHBlZXIgaWQgJXUgZm9yIGRwIHBlZXIgJXBNOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIHBlZXJfaWQsIHBlZXJfYWRkciwgcmV0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiB2b2lkIGF0aDEya19kcF9odHRfaHRjX3QyaF9tc2dfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbkBAIC02NTksNiArNzA1LDkgQEAgdm9pZCBhdGgxMmtfZHBfaHR0X2h0Y190MmhfbXNnX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0Y2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDpcXG4gXFx0XFx0YXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOlxcbitcXHRcXHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFxcXCJkcF9odHQgZXZlbnQgJWQgbm90IGhhbmRsZWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIHR5cGUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaFxcbmluZGV4IDk4NzY4OWYxMWNkYTQ1Li4yZGI3ZmIyN2MwMzYxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaFxcbkBAIC05MzAsNiArOTMwLDcgQEAgZW51bSBodHRfdDJoX21zZ190eXBlIHtcXG4gXFx0SFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsXFxuIFxcdEhUVF9UMkhfTVNHX1RZUEVfQktQUkVTU1VSRV9FVkVOVF9JTkQgPSAweDI0LFxcbiBcXHRIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORCA9IDB4MjgsXFxuK1xcdEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQID0gMHgyOSxcXG4gXFx0SFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDNcXHQ9IDB4MmIsXFxuIFxcdEhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsXFxuIH07XFxuQEAgLTk3NCwxMSArOTc1LDIyIEBAIHN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQge1xcbiBcXHRfX2xlMzIgaW5mbzE7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbisjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEXFx0XFx0R0VOTUFTSygyMywgOClcXG4rI2RlZmluZSBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMV9NQUNfQUREUl9IMTZcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbitcXG4rc3RydWN0IGh0dF90MmhfbWxvX3BlZXJfbWFwX2V2ZW50IHtcXG4rXFx0X19sZTMyIGluZm8wO1xcbitcXHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xcbitcXHRfX2xlMzIgaW5mbzE7XFxuK1xcdF9fbGUzMiByZXNlcnZlZFs1XTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuIHN0cnVjdCBodHRfcmVzcF9tc2cge1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBodHRfdDJoX3ZlcnNpb25fY29uZl9tc2cgdmVyc2lvbl9tc2c7XFxuIFxcdFxcdHN0cnVjdCBodHRfdDJoX3BlZXJfbWFwX2V2ZW50IHBlZXJfbWFwX2V2O1xcbiBcXHRcXHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHBlZXJfdW5tYXBfZXY7XFxuK1xcdFxcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7XFxuIFxcdH07XFxuIH0gX19wYWNrZWQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXFxuaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcXG5AQCAtNDcyLDcgKzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxcbiBcXHRkcF9wZWVyLVxcdTAwM2Vpc19tbG8gPSBwYXJhbXMtXFx1MDAzZWlzX21sbztcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXFxuK1xcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgTUwgcGVlciBJRCwgZWl0aGVyIGtub3duIG9yIFBFTkRJTkcsIG5lZWRzIHRvIGJlXFxuK1xcdCAqIGluaXRpYWxpemVkIGhlcmUgc2luY2UgdGhlIGZvbGxvd2luZyBsb2dpYyBkZXBlbmRzIG9uIGl0LlxcbitcXHQgKlxcbiBcXHQgKiBGb3Igbm9uLU1MTyBjbGllbnQsIGhvc3QgZ2V0cyBsaW5rIHBlZXIgSUQgZnJvbSBmaXJtd2FyZSBhbmQgd2lsbCBiZVxcbiBcXHQgKiBhc3NpZ25lZCBhdCB0aGUgdGltZSBvZiBsaW5rIHBlZXIgY3JlYXRpb25cXG4gXFx0ICovXFxuQEAgLTQ4OCwxMyArNDkwLDE3IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxcbiBcXHRsaXN0X2FkZChcXHUwMDI2ZHBfcGVlci1cXHUwMDNlbGlzdCwgXFx1MDAyNmRwX2h3LVxcdTAwM2VkcF9wZWVyc19saXN0KTtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgcGVlcl9pZCBmb3IgYXRoMTJrX2RwX3BlZXIgaXMgYWxsb2NhdGVkIGJ5IGhvc3RcXG4tXFx0ICogYW5kIHRoYXQgcGVlcl9pZCBpcyBrbm93biBhdCB0aGlzIHBvaW50LCBhbmQgaGVuY2UgdGhpcyBhdGgxMmtfZHBfcGVlclxcbi1cXHQgKiBjYW4gYmUgYWRkZWQgdG8gdGhlIFJDVSB0YWJsZSB1c2luZyB0aGUgcGVlcl9pZC5cXG4tXFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCB0aGlzIGFkZGl0aW9uIHRvIFJDVSB0YWJsZSBzaGFsbCBiZSBkb25lIGF0IHRoZVxcbi1cXHQgKiB0aW1lIG9mIGFzc2lnbm1lbnQgb2YgYXRoMTJrX2RwX2xpbmtfcGVlciB0byBhdGgxMmtfZHBfcGVlci5cXG4rXFx0ICogRm9yIGFuIE1MTyBjbGllbnQgd2hvc2UgTUwgcGVlciBJRCBpcyBhbGxvY2F0ZWQgYnkgdGhlIGhvc3QsIHRoZVxcbitcXHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXFxuK1xcdCAqIHRhYmxlIHVzaW5nIGl0LiBGb3IgYW4gTUxPIGNsaWVudCBvbiBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmVcXG4rXFx0ICogYWxsb2NhdGVzIHRoZSBJRCwgcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBhbmQgdGhlXFxuK1xcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxcbitcXHQgKiBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCBoYW5kbGVyLiBGb3IgYSBub24tTUxPIGNsaWVudFxcbitcXHQgKiB0aGUgcHVibGlzaCBoYXBwZW5zIGxhdGVyLCBhdCB0aGUgdGltZSBvZiBhc3NpZ25tZW50IG9mXFxuK1xcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXFxuIFxcdCAqL1xcbi1cXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvKVxcbitcXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLCBkcF9wZWVyKTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcF9ody1cXHUwMDNlcGVlcl9sb2NrKTtcXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvKVxcbitcXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLCBOVUxMKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZkcF9wZWVyLVxcdTAwM2VsaXN0KTtcXG5AQCAtNjg4LDMgKzY5NSw1NSBAQCB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfcmVzZXRfcnhfc3RhdHMoc3RydWN0IGF0aDEya19kcCAqZHAsIGNvbnN0IHU4ICphZGRyKVxcbiBcXHRpZiAocnhfc3RhdHMpXFxuIFxcdFxcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xcbiB9XFxuK1xcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbitcXHRcXHRcXHRcXHQgY29uc3QgdTggKnBlZXJfYWRkciwgdTE2IHBlZXJfaWQpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKmxpbmtfcGVlcjtcXG4rXFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyID0gTlVMTDtcXG4rXFx0c3RydWN0IGF0aDEya19od19ncm91cCAqYWcgPSBhYi1cXHUwMDNlYWc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gTlVMTDtcXG4rXFx0c3RydWN0IGF0aDEya19odyAqYWg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWYgKHBlZXJfaWQgXFx1MDAzZT0gKEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIHwgQVRIMTJLX01BWF9NTE9fUEVFUlMpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZy1cXHUwMDNlbnVtX2h3OyBpKyspIHtcXG4rXFx0XFx0YWggPSBhZy1cXHUwMDNlYWhbaV07XFxuK1xcdFxcdGlmICghYWgpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4rXFx0XFx0ZHBfcGVlciA9IGF0aDEya19kcF9wZWVyX2ZpbmRfYnlfYWRkcihcXHUwMDI2YWgtXFx1MDAzZWRwX2h3LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAodTggKilwZWVyX2FkZHIpO1xcbitcXHRcXHRpZiAoZHBfcGVlcikge1xcbitcXHRcXHRcXHRkcF9odyA9IFxcdTAwMjZhaC1cXHUwMDNlZHBfaHc7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFkcF9wZWVyKVxcbitcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4rXFxuK1xcdC8qIGRwX2h3LVxcdTAwM2VwZWVyX2xvY2sgaXMgaGVsZCAqL1xcbitcXG4rXFx0ZHBfcGVlci1cXHUwMDNlcGVlcl9pZCA9IHBlZXJfaWQ7XFxuK1xcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cXHUwMDNlZHBfcGVlcnNbcGVlcl9pZF0sIGRwX3BlZXIpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19OVU1fTUFYX0xJTktTOyBpKyspIHtcXG4rXFx0XFx0bGlua19wZWVyID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkcF9wZWVyLVxcdTAwM2VsaW5rX3BlZXJzW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNmRwX2h3LVxcdTAwM2VwZWVyX2xvY2spKTtcXG4rXFx0XFx0aWYgKGxpbmtfcGVlcilcXG4rXFx0XFx0XFx0bGlua19wZWVyLVxcdTAwM2VtbF9pZCA9IHBlZXJfaWQ7XFxuK1xcdH1cXG4rXFxuK1xcdGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cXHUwMDNlc3RhKS1cXHUwMDNlbWxfcGVlcl9pZCA9IHBlZXJfaWQ7XFxuK1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZHBfaHctXFx1MDAzZXBlZXJfbG9jayk7XFxuK1xcbitcXHRjb21wbGV0ZShcXHUwMDI2YWgtXFx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXFxuaW5kZXggZjUwNjdlNjZmMWUxODIuLjk4NDI2NzFiNTQ3NTkwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcXG5AQCAtMTgwLDQgKzE4MCw2IEBAIHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9wZWVyaWQoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wXFxuIHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpcXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcXG4gdm9pZCBhdGgxMmtfZHBfbGlua19wZWVyX2ZyZWUoc3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKnBlZXIpO1xcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBjb25zdCB1OCAqcGVlcl9hZGRyLFxcbitcXHRcXHRcXHRcXHQgdTE2IHBlZXJfaWQpO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuaW5kZXggZDEzNWIyOTM2Mzc4OGIuLjgwOTE1MDFjZjc0MmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxcbkBAIC0yMzIsNiArMjMyLDggQEAgc3RydWN0IGF0aDEya19od19wYXJhbXMge1xcbiBcXHRcXHR1MzIgbWF4X2NsaWVudF9kYnM7XFxuIFxcdFxcdHUzMiBtYXhfY2xpZW50X2Ric19zYnM7XFxuIFxcdH0gY2xpZW50O1xcbitcXG4rXFx0Ym9vbCBob3N0X2FsbG9jX21sX2lkO1xcbiB9O1xcbiBcXG4gc3RydWN0IGF0aDEya19od19vcHMge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDQ5MGMxMzRjMWYyOTBiLi5hZTg3NDExNGRjNTE4ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMjc4LDEzICsxMjc4LDE3IEBAIHZvaWQgYXRoMTJrX21hY19kcF9wZWVyX2NsZWFudXAoc3RydWN0IGF0aDEya19odyAqYWgpXFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlciwgKnRtcDtcXG4gXFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcXHUwMDI2YWgtXFx1MDAzZWRwX2h3O1xcbiBcXG4rXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSk7XFxuK1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cGVlcnMpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkcF9ody1cXHUwMDNlcGVlcl9sb2NrKTtcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRwX3BlZXIsIHRtcCwgXFx1MDAyNmRwX2h3LVxcdTAwM2VkcF9wZWVyc19saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGlmIChkcF9wZWVyLVxcdTAwM2Vpc19tbG8pIHtcXG4tXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVxcdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVxcdTAwM2VwZWVyX2lkXSwgTlVMTCk7XFxuLVxcdFxcdFxcdGNsZWFyX2JpdChkcF9wZWVyLVxcdTAwM2VwZWVyX2lkLCBhaC1cXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XFxuK1xcdFxcdFxcdGlmIChkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbitcXHRcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBOVUxMKTtcXG4rXFx0XFx0XFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYXRoMTJrX3N0YV90b19haHN0YShkcF9wZWVyLVxcdTAwM2VzdGEpKTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0bGlzdF9tb3ZlKFxcdTAwMjZkcF9wZWVyLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGVlcnMpO1xcbkBAIC0zNTI3LDExICszNTMxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS1cXHUwMDNlYWhzdGE7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhX3A7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGFyc3RhLVxcdTAwM2VhcnZpZi1cXHUwMDNlYXItXFx1MDAzZWFoO1xcbiBcXHR1bnNpZ25lZCBsb25nIGxpbmtzO1xcbiBcXHR1OCBsaW5rX2lkO1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGlmICghc3RhLVxcdTAwM2VtbG8gfHwgYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXFxuK1xcdGlmICghc3RhLVxcdTAwM2VtbG8pXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdG1sLVxcdTAwM2VlbmFibGVkID0gdHJ1ZTtcXG5AQCAtMzUzOSwxMiArMzU0OCwyNSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcXG4gXFxuIFxcdC8qIEZvciBub3cgY29uc2lkZXJpbmcgdGhlIHByaW1hcnkgdW1hYyBiYXNlZCBvbiBhc3NvYyBsaW5rICovXFxuIFxcdG1sLVxcdTAwM2VwcmltYXJ5X3VtYWMgPSBhcnN0YS1cXHUwMDNlaXNfYXNzb2NfbGluaztcXG4tXFx0bWwtXFx1MDAzZXBlZXJfaWRfdmFsaWQgPSB0cnVlO1xcbitcXHQvKlxcbitcXHQgKiBPbmx5IGNoaXBzIHRoYXQgYWxsb2NhdGUgdGhlIE1MRCBwZWVyIElEIG9uIHRoZSBob3N0IHNlbmQgYSB2YWxpZFxcbitcXHQgKiBtbF9wZWVyX2lkIGluIFdNSV9QRUVSX0FTU09DX0NNRElELiBGb3IgY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlXFxuK1xcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cXG4rXFx0ICovXFxuK1xcdG1sLVxcdTAwM2VwZWVyX2lkX3ZhbGlkID0gYWgtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQ7XFxuIFxcdG1sLVxcdTAwM2Vsb2dpY2FsX2xpbmtfaWR4X3ZhbGlkID0gdHJ1ZTtcXG4gXFxuIFxcdGV0aGVyX2FkZHJfY29weShtbC1cXHUwMDNlbWxkX2FkZHIsIHN0YS1cXHUwMDNlYWRkcik7XFxuIFxcdG1sLVxcdTAwM2Vsb2dpY2FsX2xpbmtfaWR4ID0gYXJzdGEtXFx1MDAzZWxpbmtfaWR4O1xcbi1cXHRtbC1cXHUwMDNlbWxfcGVlcl9pZCA9IGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkO1xcbitcXHQvKlxcbitcXHQgKiBXTUlfTUxPX1BFRVJfQVNTT0NfUEFSQU1TIGV4cGVjdHMgdGhlIHJhdyBNTCBwZWVyIElEIHdpdGhvdXRcXG4rXFx0ICogdGhlIGhvc3Qtc2lkZSBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCBib29ra2VlcGluZyBiaXQuIEZvciBjaGlwc1xcbitcXHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXFxuK1xcdCAqIGZpcm13YXJlIGFsd2F5cyBhbGxvY2F0ZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgaGVyZSk7IHNlbmQgMFxcbitcXHQgKiB0byBtYWtlIHRoYXQgaW50ZW50IGV4cGxpY2l0LlxcbitcXHQgKi9cXG4rXFx0bWwtXFx1MDAzZW1sX3BlZXJfaWQgPSBhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA/XFxuK1xcdFxcdFxcdCAoYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgXFx1MDAyNiB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpIDogMDtcXG4gXFx0bWwtXFx1MDAzZWllZWVfbGlua19pZCA9IGFyc3RhLVxcdTAwM2VsaW5rX2lkO1xcbiBcXHRtbC1cXHUwMDNlbnVtX3BhcnRuZXJfbGlua3MgPSAwO1xcbiBcXHRtbC1cXHUwMDNlZW1sX2NhcCA9IHN0YS1cXHUwMDNlZW1sX2NhcDtcXG5AQCAtMzU5MSw4ICszNjEzLDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3BlZXJfYXNzb2NfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFxuIFxcdG1lbXNldChhcmcsIDAsIHNpemVvZigqYXJnKSk7XFxuIFxcbi1cXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XFxuLVxcbiBcXHRhcmctXFx1MDAzZXBlZXJfbmV3X2Fzc29jID0gIXJlYXNzb2M7XFxuIFxcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcXG4gXFx0YXRoMTJrX3BlZXJfYXNzb2NfaF9jcnlwdG8oYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcXG5AQCAtMzgzMiw2ICszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFx0cmV0dXJuIGJ3O1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnICpwZWVyX2FyZylcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19hcl90b19haChhcik7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XFxuK1xcdHJlaW5pdF9jb21wbGV0aW9uKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4rXFxuK1xcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgcGVlcl9hcmctXFx1MDAzZXBlZXJfbWFjLCBwZWVyX2FyZy1cXHUwMDNldmRldl9pZCwgcmV0KTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFyLVxcdTAwM2VwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpIHtcXG4rXFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgcGVlcl9hcmctXFx1MDAzZXBlZXJfbWFjLCBwZWVyX2FyZy1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGb3IgZGV2aWNlcyB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTEQgcGVlciBJRCwgdGhlIGhvc3RcXG4rXFx0ICogbGVhcm5zIHRoZSByZWFsIElEIG9ubHkgZnJvbSB0aGUgTUxPX1JYX1BFRVJfTUFQIEhUVCBldmVudCwgd2hpY2ggaXNcXG4rXFx0ICogaGFuZGxlZCBpbiBhIHNvZnRpcnEgKEJIIHdvcmtxdWV1ZSkgY29udGV4dCB0aGF0IGNhbm5vdCB0YWtlIHRoZVxcbitcXHQgKiB3aXBoeSBsb2NrLiBCbG9jayBoZXJlLCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSB3aXBoeSBsb2NrLCB1bnRpbFxcbitcXHQgKiB0aGF0IGV2ZW50IGhhcyBmaXhlZCB1cCB0aGUgSUQuIFRoaXMgc2VyaWFsaXNlcyB0aGUgZml4dXAgYWdhaW5zdFxcbitcXHQgKiBhbGwgb3RoZXIgd2lwaHktbG9ja2VkIG1sX3BlZXJfaWQgYWNjZXNzZXMuXFxuK1xcdCAqXFxuK1xcdCAqIFRoZSBmaXJtd2FyZSBzZW5kcyB0aGUgZXZlbnQgb25seSBvbmNlLCBpbiByZXNwb25zZSB0byB0aGUgYXNzb2MtbGlua1xcbitcXHQgKiBwZWVyIGFzc29jLCBzbyBibG9jayBvbmx5IGZvciB0aGF0IGxpbmsuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWFoLVxcdTAwM2Vob3N0X2FsbG9jX21sX2lkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBlZXJfYXJnLVxcdTAwM2VtbC5lbmFibGVkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwZWVyX2FyZy1cXHUwMDNlbWwuYXNzb2NfbGluayBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWgtXFx1MDAzZXBlZXJfbWxfaWRfZG9uZSwgMSAqIEhaKSkge1xcbitcXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBwZWVyX2FyZy1cXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVxcdTAwM2V2ZGV2X2lkKTtcXG4rXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBhdGgxMmtfYnNzX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxcbkBAIC0zOTEyLDE4ICszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdH1cXG4gXFxuIFxcdHBlZXJfYXJnLVxcdTAwM2Vpc19hc3NvYyA9IHRydWU7XFxuLVxcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xcbi1cXHRpZiAocmV0KSB7XFxuLVxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICAgYnNzX2NvbmYtXFx1MDAzZWJzc2lkLCBhcnZpZi1cXHUwMDNldmRldl9pZCwgcmV0KTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHR9XFxuIFxcbi1cXHRpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xcbi1cXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgICBic3NfY29uZi1cXHUwMDNlYnNzaWQsIGFydmlmLVxcdTAwM2V2ZGV2X2lkKTtcXG4rXFx0cmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XFxuK1xcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0fVxcbiBcXG4gXFx0cmV0ID0gYXRoMTJrX3NldHVwX3BlZXJfc21wcyhhciwgYXJ2aWYsIGJzc19jb25mLVxcdTAwM2Vic3NpZCxcXG4gXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bGlua19zdGEtXFx1MDAzZWh0X2NhcCwgXFx1MDAyNmxpbmtfc3RhLVxcdTAwM2VoZV82Z2h6X2NhcGEpO1xcbkBAIC02NDc3LDE4ICs2NTM1LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBcXHR9XFxuIFxcbiBcXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xcbi1cXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgICBhcnN0YS1cXHUwMDNlYWRkciwgYXJ2aWYtXFx1MDAzZXZkZXZfaWQsIHJldCk7XFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdH1cXG4gXFxuLVxcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZhci1cXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XFxuLVxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAgIGFyc3RhLVxcdTAwM2VhZGRyLCBhcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuLVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi1cXHR9XFxuK1xcdHJldCA9IGF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0bnVtX3ZodF9yYXRlcyA9IGF0aDEya19tYWNfYml0cmF0ZV9tYXNrX251bV92aHRfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xcbiBcXHRudW1faGVfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1faGVfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xcbkBAIC02ODM3LDE0ICs2ODg3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3N0YV9yY191cGRhdGVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndrKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHBlZXJfYXJnLCB0cnVlKTtcXG4gXFxuIFxcdFxcdFxcdHBlZXJfYXJnLVxcdTAwM2Vpc19hc3NvYyA9IGZhbHNlO1xcbi1cXHRcXHRcXHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG4tXFx0XFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgYXJzdGEtXFx1MDAzZWFkZHIsIGFydmlmLVxcdTAwM2V2ZGV2X2lkLCBlcnIpO1xcbiBcXG4tXFx0XFx0XFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFyLVxcdTAwM2VwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpXFxuLVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGFyc3RhLVxcdTAwM2VhZGRyLCBhcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdFxcdGF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC03MjYyLDEwICs3MzA2LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19tbF9zdGF0aW9uX3JlbW92ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsXFxuIFxcdFxcdGF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoc3RhLVxcdTAwM2VtbG8pIHtcXG4tXFx0XFx0Y2xlYXJfYml0KGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkLCBhaC1cXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XFxuLVxcdFxcdGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XFxuLVxcdH1cXG4rXFx0aWYgKHN0YS1cXHUwMDNlbWxvKVxcbitcXHRcXHRhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhaHN0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX21hY19oYW5kbGVfbGlua19zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuQEAgLTc3MjksMTUgKzc3NzEsMjMgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHQvKiBNTCBzdGEgKi9cXG4gXFx0XFx0aWYgKHN0YS1cXHUwMDNlbWxvIFxcdTAwMjZcXHUwMDI2ICFhaHN0YS1cXHUwMDNlbGlua3NfbWFwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAoaHdlaWdodDE2KHN0YS1cXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XFxuLVxcdFxcdFxcdGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID0gYXRoMTJrX3BlZXJfbWxfYWxsb2MoYWgpO1xcbi1cXHRcXHRcXHRpZiAoYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHtcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX2h3X3dhcm4oYWgsIFxcXCJ1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTVxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdGEtXFx1MDAzZWFkZHIpO1xcbi1cXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcdFxcdFxcdGlmIChhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xcbitcXHRcXHRcXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcXG4rXFx0XFx0XFx0XFx0aWYgKGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKSB7XFxuK1xcdFxcdFxcdFxcdFxcdGF0aDEya19od193YXJuKGFoLCBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIE1MIHBlZXIgaWQgZm9yIHN0YSAlcE1cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RhLVxcdTAwM2VhZGRyKTtcXG4rXFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUwgcGVlciBJRCBhbmQgbm90aWZpZXNcXG4rXFx0XFx0XFx0XFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HO1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRkcF9wYXJhbXMuaXNfbWxvID0gdHJ1ZTtcXG4tXFx0XFx0XFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbitcXHRcXHRcXHRkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkcF9wYXJhbXMuc3RhID0gc3RhO1xcbkBAIC03ODc0LDEwICs3OTI0LDggQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBwZWVyX2RlbGV0ZTpcXG4gXFx0YXRoMTJrX2RwX3BlZXJfZGVsZXRlKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcsIHN0YS1cXHUwMDNlYWRkciwgc3RhKTtcXG4gbWxfcGVlcl9pZF9jbGVhcjpcXG4tXFx0aWYgKHN0YS1cXHUwMDNlbWxvKSB7XFxuLVxcdFxcdGNsZWFyX2JpdChhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCwgYWgtXFx1MDAzZWZyZWVfbWxfcGVlcl9pZF9tYXApO1xcbi1cXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xcbi1cXHR9XFxuK1xcdGlmIChzdGEtXFx1MDAzZW1sbylcXG4rXFx0XFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpO1xcbiBleGl0OlxcbiBcXHQvKiB1cGRhdGUgdGhlIHN0YXRlIGlmIGV2ZXJ5dGhpbmcgd2VudCB3ZWxsICovXFxuIFxcdGlmICghcmV0KVxcbkBAIC0xNTMwNyw2ICsxNTM1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxcbiBcXHRhaC1cXHUwMDNlbnVtX3JhZGlvID0gbnVtX3BkZXZfbWFwO1xcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWh3X211dGV4KTtcXG4rXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFoLVxcdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcXG5AQCAtMTUzODEsOCArMTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4gXFx0aW50IG1hY19pZCwgZGV2aWNlX2lkLCB0b3RhbF9yYWRpbywgbnVtX2h3O1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4tXFx0aW50IHJldCwgaSwgajtcXG4rXFx0Ym9vbCBjb25mID0gZmFsc2U7XFxuIFxcdHU4IHJhZGlvX3Blcl9odztcXG4rXFx0aW50IHJldCwgaSwgajtcXG4gXFxuIFxcdHRvdGFsX3JhZGlvID0gMDtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFnLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XFxuQEAgLTE1NDIyLDYgKzE1NDcyLDE5IEBAIGludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRhYiA9IGFnLVxcdTAwM2VhYltkZXZpY2VfaWRdO1xcbitcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogdGhlIGFzc3VtcHRpb24gaXMgYWxsIGRldmljZXMgd2l0aGluIGFuIGFoXFxuK1xcdFxcdFxcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGogPT0gMCkge1xcbitcXHRcXHRcXHRcXHRjb25mID0gYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcXG4rXFx0XFx0XFx0fSBlbHNlIGlmIChjb25mICE9IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcXG4rXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbmNvbnNpc3RlbnQgTUwgSUQgY29uZmlnIHdpdGhpbiBhaCwgZGV2aWNlIDAgdXNlcyAlcyBhbGxvY2F0ZWQgSUQsIHdoaWxlIGRldmljZSAldSBkb2Vzbid0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgY29uZiA/IFxcXCJob3N0XFxcIiA6IFxcXCJmaXJtd2FyZVxcXCIsIGRldmljZV9pZCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRwZGV2X21hcFtqXS5hYiA9IGFiO1xcbiBcXHRcXHRcXHRwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDtcXG4gXFx0XFx0XFx0bWFjX2lkKys7XFxuQEAgLTE1NDQ2LDYgKzE1NTA5LDcgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGFoLVxcdTAwM2VkZXYgPSBhYi1cXHUwMDNlZGV2O1xcbitcXHRcXHRhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA9IGNvbmY7XFxuIFxcbiBcXHRcXHRhZy1cXHUwMDNlYWhbaV0gPSBhaDtcXG4gXFx0XFx0YWctXFx1MDAzZW51bV9odysrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcXG5AQCAtMjMwLDcgKzIzMCwxNiBAQCBpbnQgYXRoMTJrX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG4gXFx0XFx0LyogRmlsbCBNTCBpbmZvIGludG8gY3JlYXRlZCBwZWVyICovXFxuIFxcdFxcdGlmIChzdGEtXFx1MDAzZW1sbykge1xcbiBcXHRcXHRcXHRtbF9wZWVyX2lkID0gYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQ7XFxuLVxcdFxcdFxcdHBlZXItXFx1MDAzZW1sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBGb3IgY2hpcHMgd2hlcmUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElELFxcbitcXHRcXHRcXHQgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZVxcbitcXHRcXHRcXHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcXG4rXFx0XFx0XFx0ICogcGVlci1cXHUwMDNlbWxfaWQgb25jZSB0aGUgSUQgaXMga25vd24uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZiAobWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcXG4rXFx0XFx0XFx0XFx0cGVlci1cXHUwMDNlbWxfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRwZWVyLVxcdTAwM2VtbF9pZCA9IG1sX3BlZXJfaWQ7XFxuIFxcdFxcdFxcdGV0aGVyX2FkZHJfY29weShwZWVyLVxcdTAwM2VtbF9hZGRyLCBzdGEtXFx1MDAzZWFkZHIpO1xcbiBcXG4gXFx0XFx0XFx0LyogdGhlIGFzc29jIGxpbmsgaXMgY29uc2lkZXJlZCBwcmltYXJ5IGZvciBub3cgKi9cXG5AQCAtMjc2LDkgKzI4NSwyNSBAQCB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NQVhfTUxPX1BFRVJTKVxcbi1cXHRcXHRtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XFxuK1xcdFxcdHJldHVybiBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4gXFxuLVxcdHJldHVybiBtbF9wZWVyX2lkO1xcbitcXHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbit9XFxuK1xcbit2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcXG4re1xcbitcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9ubHkgZGV2aWNlcyB0aGF0IGFsbG9jYXRlIHRoZSBJRCBvbiB0aGUgaG9zdCBvd24gYSBzbG90IGluXFxuK1xcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXFxuK1xcdCAqL1xcbitcXHRpZiAoYWgtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIChhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCBcXHUwMDNjXFxuK1xcdCAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSlcXG4rXFx0XFx0Y2xlYXJfYml0KGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkIFxcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElELFxcbitcXHRcXHRcXHQgIGFoLVxcdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcXG4rXFx0YWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4gfVxcbiBcXG4gaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxcbmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXFxuQEAgLTI2LDQgKzI2LDUgQEAgaW50IGF0aDEya19saW5rX3N0YV9yaGFzaF9hZGQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJcXG4gc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXRoMTJrX2xpbmtfc3RhX2ZpbmRfYnlfYWRkcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICphZGRyKTtcXG4gdTE2IGF0aDEya19wZWVyX21sX2FsbG9jKHN0cnVjdCBhdGgxMmtfaHcgKmFoKTtcXG4rdm9pZCBhdGgxMmtfcGVlcl9tbF9mcmVlKHN0cnVjdCBhdGgxMmtfaHcgKmFoLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpO1xcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZTViZjlkMjE4MTA0MGQuLjBjMjc3ZjUxZDk5YzFhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbkBAIC00MzksNiArNDM5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxcbiBcXHRcXHR9LFxcbitcXG4rXFx0XFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxcbiBcXHR9LFxcbiBcXHR7XFxuIFxcdFxcdC5uYW1lID0gXFxcIndjbjc4NTAgaHcyLjBcXFwiLFxcbkBAIC01MzAsNiArNTMyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxcbiBcXHRcXHR9LFxcbitcXG4rXFx0XFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSBmYWxzZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJxY245Mjc0IGh3Mi4wXFxcIixcXG5AQCAtNjE3LDYgKzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJpcHE1MzMyIGh3MS4wXFxcIixcXG5AQCAtNjk3LDYgKzcwMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJxY2MyMDcyIGh3MS4wXFxcIixcXG5AQCAtNzg5LDYgKzc5Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXFxuIFxcdH0sXFxuIFxcdHtcXG4gXFx0XFx0Lm5hbWUgPSBcXFwiaXBxNTQyNCBodzEuMFxcXCIsXFxuQEAgLTg3Myw2ICs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXFxuIFxcdFxcdH0sXFxuK1xcbitcXHRcXHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMy41MzUxNTgxMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzg5NzkwMzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbmluZGV4IDBlN2M3MzJmODIyMjY1Li5jZjljNWIwNjhmYTY3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuQEAgLTE1NDcsNiArMTU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3ByZV9yZWNvbmZpZ3VyZV9yZWNvdmVyeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0XHR9XG4gXG4gXHRcdHdpcGh5X3VubG9jayhhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4rXG4rXHRcdGNvbXBsZXRlKFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XG4gXHR9XG4gXG4gXHR3YWtlX3VwKFx1MDAyNmFiLVx1MDAzZXdtaV9hYi50eF9jcmVkaXRzX3dxKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uMzA3MjZlNTgwODMzZTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03Miw2ICs3Miw3IEBAXG4gXG4gI2RlZmluZSBBVEgxMktfTUFYX01MT19QRUVSUyAgICAgICAgICAgIDI1NlxuICNkZWZpbmUgQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQgICAgICAweEZGRkZcbisjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXG4gXG4gI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTFcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxuQEAgLTc5Myw2ICs3OTQsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xuIFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XG4gXHRib29sIHVzZV82Z2h6X3JlZ2Q7XG4rXHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XG4rXHRzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7XG4gXG4gXHR1OCBudW1fcmFkaW87XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbkBAIC02LDYgKzYsNyBAQFxuIFxuICNpbmNsdWRlIFwiY29yZS5oXCJcbiAjaW5jbHVkZSBcInBlZXIuaFwiXG4rI2luY2x1ZGUgXCJkcF9wZWVyLmhcIlxuICNpbmNsdWRlIFwiaHRjLmhcIlxuICNpbmNsdWRlIFwiZHBfaHR0LmhcIlxuICNpbmNsdWRlIFwiZGVidWdmc19odHRfc3RhdHMuaFwiXG5AQCAtNTc1LDYgKzU3Niw1MSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbitcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gXHUwMDI2cmVzcC1cdTAwM2VtbG9fcGVlcl9tYXBfZXY7XG4rXHR1MTYgcmF3X3BlZXJfaWQsIHBlZXJfaWQsIGFkZHJfaDE2O1xuK1x0dTggcGVlcl9hZGRyW0VUSF9BTEVOXTtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpldikpIHtcbitcdFx0YXRoMTJrX3dhcm4oYWIsIFwidW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcblwiLFxuK1x0XHRcdCAgICBza2ItXHUwMDNlbGVuKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0cmF3X3BlZXJfaWQgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8wLFxuK1x0XHRcdFx0ICAgIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEKTtcbitcdHBlZXJfaWQgPSByYXdfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuK1xuK1x0YWRkcl9oMTYgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8xLFxuK1x0XHRcdFx0IEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8xX01BQ19BRERSX0gxNik7XG4rXHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVx1MDAzZW1hY19hZGRyX2wzMiksIGFkZHJfaDE2LFxuK1x0XHRcdCAgICAgICBwZWVyX2FkZHIpO1xuK1xuK1x0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFwiaHR0IG1sbyBwZWVyIG1hcCBwZWVyICVwTSBpZCAldVxcblwiLFxuK1x0XHQgICBwZWVyX2FkZHIsIHBlZXJfaWQpO1xuK1xuK1x0LypcbitcdCAqIEZpeCB1cCB0aGUgZHBfcGVlciBlbnRyeSBjcmVhdGVkIHdpdGggQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkdcbitcdCAqIGVhcmxpZXI7IG9uIGNoaXBzIHdpdGggaG9zdF9hbGxvY19tbF9pZCA9PSBmYWxzZSB0aGlzIGlzIHRoZSBvbmx5XG4rXHQgKiBwb2ludCBhdCB3aGljaCB0aGUgaG9zdCBsZWFybnMgdGhlIGZpcm13YXJlLWFzc2lnbmVkIElELiBDaGlwc1xuK1x0ICogdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3QgYWxzbyByZWNlaXZlIHRoaXMgZXZlbnQgYnV0IHRoZVxuK1x0ICogZmlybXdhcmUtcmVwb3J0ZWQgSUQgbWF0Y2hlcyB0aGUgaG9zdC1hbGxvY2F0ZWQgb25lLCBzbyB0aGVyZSBpc1xuK1x0ICogbm90aGluZyB0byBmaXggdXAuXG4rXHQgKi9cbitcdGlmICghYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcbitcdFx0cmV0ID0gYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChhYiwgcGVlcl9hZGRyLFxuK1x0XHRcdFx0XHRcdCAgIHBlZXJfaWQpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGF0aDEya193YXJuKGFiLFxuK1x0XHRcdFx0ICAgIFwiZmFpbGVkIHRvIGZpeCB1cCBwZWVyIGlkICV1IGZvciBkcCBwZWVyICVwTTogJWRcXG5cIixcbitcdFx0XHRcdCAgICBwZWVyX2lkLCBwZWVyX2FkZHIsIHJldCk7XG4rXHR9XG4rfVxuK1xuIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjU5LDYgKzcwNSw5IEBAIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1RJTUVTVEFNUF9PRkZTRVRfSU5EOlxuIFx0XHRhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihhYiwgc2tiKTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOlxuK1x0XHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCBcImRwX2h0dCBldmVudCAlZCBub3QgaGFuZGxlZFxcblwiLFxuIFx0XHRcdCAgIHR5cGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5pbmRleCA5ODc2ODlmMTFjZGE0NS4uMmRiN2ZiMjdjMDM2MTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5AQCAtOTMwLDYgKzkzMCw3IEBAIGVudW0gaHR0X3QyaF9tc2dfdHlwZSB7XG4gXHRIVFRfVDJIX01TR19UWVBFX0VYVF9TVEFUU19DT05GID0gMHgxYyxcbiBcdEhUVF9UMkhfTVNHX1RZUEVfQktQUkVTU1VSRV9FVkVOVF9JTkQgPSAweDI0LFxuIFx0SFRUX1QySF9NU0dfVFlQRV9NTE9fVElNRVNUQU1QX09GRlNFVF9JTkQgPSAweDI4LFxuK1x0SFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVAgPSAweDI5LFxuIFx0SFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDNcdD0gMHgyYixcbiBcdEhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsXG4gfTtcbkBAIC05NzQsMTEgKzk3NSwyMiBAQCBzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHtcbiBcdF9fbGUzMiBpbmZvMTtcbiB9IF9fcGFja2VkO1xuIFxuKyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzBfTUxPX1BFRVJfSURcdFx0R0VOTUFTSygyMywgOClcbisjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8xX01BQ19BRERSX0gxNlx0XHRHRU5NQVNLKDE1LCAwKVxuK1xuK3N0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCB7XG4rXHRfX2xlMzIgaW5mbzA7XG4rXHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xuK1x0X19sZTMyIGluZm8xO1xuK1x0X19sZTMyIHJlc2VydmVkWzVdO1xuK30gX19wYWNrZWQ7XG4rXG4gc3RydWN0IGh0dF9yZXNwX21zZyB7XG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBodHRfdDJoX3ZlcnNpb25fY29uZl9tc2cgdmVyc2lvbl9tc2c7XG4gXHRcdHN0cnVjdCBodHRfdDJoX3BlZXJfbWFwX2V2ZW50IHBlZXJfbWFwX2V2O1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHBlZXJfdW5tYXBfZXY7XG4rXHRcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7XG4gXHR9O1xuIH0gX19wYWNrZWQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuY1xuaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXG5AQCAtNDcyLDcgKzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0ZHBfcGVlci1cdTAwM2Vpc19tbG8gPSBwYXJhbXMtXHUwMDNlaXNfbWxvO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXG4rXHQgKiBGb3IgTUxPIGNsaWVudCwgdGhlIE1MIHBlZXIgSUQsIGVpdGhlciBrbm93biBvciBQRU5ESU5HLCBuZWVkcyB0byBiZVxuK1x0ICogaW5pdGlhbGl6ZWQgaGVyZSBzaW5jZSB0aGUgZm9sbG93aW5nIGxvZ2ljIGRlcGVuZHMgb24gaXQuXG4rXHQgKlxuIFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmVcbiBcdCAqIGFzc2lnbmVkIGF0IHRoZSB0aW1lIG9mIGxpbmsgcGVlciBjcmVhdGlvblxuIFx0ICovXG5AQCAtNDg4LDEzICs0OTAsMTcgQEAgaW50IGF0aDEya19kcF9wZWVyX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odywgdTggKmFkZHIsXG4gXHRsaXN0X2FkZChcdTAwMjZkcF9wZWVyLVx1MDAzZWxpc3QsIFx1MDAyNmRwX2h3LVx1MDAzZWRwX3BlZXJzX2xpc3QpO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgcGVlcl9pZCBmb3IgYXRoMTJrX2RwX3BlZXIgaXMgYWxsb2NhdGVkIGJ5IGhvc3Rcbi1cdCAqIGFuZCB0aGF0IHBlZXJfaWQgaXMga25vd24gYXQgdGhpcyBwb2ludCwgYW5kIGhlbmNlIHRoaXMgYXRoMTJrX2RwX3BlZXJcbi1cdCAqIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVIHRhYmxlIHVzaW5nIHRoZSBwZWVyX2lkLlxuLVx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCB0aGlzIGFkZGl0aW9uIHRvIFJDVSB0YWJsZSBzaGFsbCBiZSBkb25lIGF0IHRoZVxuLVx0ICogdGltZSBvZiBhc3NpZ25tZW50IG9mIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4rXHQgKiBGb3IgYW4gTUxPIGNsaWVudCB3aG9zZSBNTCBwZWVyIElEIGlzIGFsbG9jYXRlZCBieSB0aGUgaG9zdCwgdGhlXG4rXHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXG4rXHQgKiB0YWJsZSB1c2luZyBpdC4gRm9yIGFuIE1MTyBjbGllbnQgb24gY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlXG4rXHQgKiBhbGxvY2F0ZXMgdGhlIElELCBwZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGFuZCB0aGVcbitcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxuK1x0ICogSFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVAgaGFuZGxlci4gRm9yIGEgbm9uLU1MTyBjbGllbnRcbitcdCAqIHRoZSBwdWJsaXNoIGhhcHBlbnMgbGF0ZXIsIGF0IHRoZSB0aW1lIG9mIGFzc2lnbm1lbnQgb2ZcbitcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4gXHQgKi9cbi1cdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbylcbitcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbyBcdTAwMjZcdTAwMjZcbitcdCAgICBkcF9wZWVyLVx1MDAzZXBlZXJfaWQgIT0gQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcpXG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLCBkcF9wZWVyKTtcbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jayk7XG5AQCAtNTE1LDcgKzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvKVxuK1x0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXHUwMDNlcGVlcl9pZF0sIE5VTEwpO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0KTtcbkBAIC02ODgsMyArNjk1LDU1IEBAIHZvaWQgYXRoMTJrX2RwX2xpbmtfcGVlcl9yZXNldF9yeF9zdGF0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgY29uc3QgdTggKmFkZHIpXG4gXHRpZiAocnhfc3RhdHMpXG4gXHRcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xuIH1cbitcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuK1x0XHRcdFx0IGNvbnN0IHU4ICpwZWVyX2FkZHIsIHUxNiBwZWVyX2lkKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpsaW5rX3BlZXI7XG4rXHRzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIgPSBOVUxMO1xuK1x0c3RydWN0IGF0aDEya19od19ncm91cCAqYWcgPSBhYi1cdTAwM2VhZztcbitcdHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gTlVMTDtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuK1x0aW50IGk7XG4rXG4rXHRpZiAocGVlcl9pZCBcdTAwM2U9IChBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCB8IEFUSDEyS19NQVhfTUxPX1BFRVJTKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1faHc7IGkrKykge1xuK1x0XHRhaCA9IGFnLVx1MDAzZWFoW2ldO1xuK1x0XHRpZiAoIWFoKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbitcdFx0ZHBfcGVlciA9IGF0aDEya19kcF9wZWVyX2ZpbmRfYnlfYWRkcihcdTAwMjZhaC1cdTAwM2VkcF9odyxcbitcdFx0XHRcdFx0XHQgICAgICAodTggKilwZWVyX2FkZHIpO1xuK1x0XHRpZiAoZHBfcGVlcikge1xuK1x0XHRcdGRwX2h3ID0gXHUwMDI2YWgtXHUwMDNlZHBfaHc7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbitcdH1cbitcbitcdGlmICghZHBfcGVlcilcbitcdFx0cmV0dXJuIC1FTk9FTlQ7XG4rXG4rXHQvKiBkcF9ody1cdTAwM2VwZWVyX2xvY2sgaXMgaGVsZCAqL1xuK1xuK1x0ZHBfcGVlci1cdTAwM2VwZWVyX2lkID0gcGVlcl9pZDtcbitcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1twZWVyX2lkXSwgZHBfcGVlcik7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfTlVNX01BWF9MSU5LUzsgaSsrKSB7XG4rXHRcdGxpbmtfcGVlciA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZHBfcGVlci1cdTAwM2VsaW5rX3BlZXJzW2ldLFxuK1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spKTtcbitcdFx0aWYgKGxpbmtfcGVlcilcbitcdFx0XHRsaW5rX3BlZXItXHUwMDNlbWxfaWQgPSBwZWVyX2lkO1xuK1x0fVxuK1xuK1x0YXRoMTJrX3N0YV90b19haHN0YShkcF9wZWVyLVx1MDAzZXN0YSktXHUwMDNlbWxfcGVlcl9pZCA9IHBlZXJfaWQ7XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuK1xuK1x0Y29tcGxldGUoXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbitcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXG5pbmRleCBmNTA2N2U2NmYxZTE4Mi4uOTg0MjY3MWI1NDc1OTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcbkBAIC0xODAsNCArMTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BcbiBzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcbiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7XG4raW50IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgY29uc3QgdTggKnBlZXJfYWRkcixcbitcdFx0XHRcdCB1MTYgcGVlcl9pZCk7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCBkMTM1YjI5MzYzNzg4Yi4uODA5MTUwMWNmNzQyYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTIzMiw2ICsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7XG4gXHRcdHUzMiBtYXhfY2xpZW50X2RicztcbiBcdFx0dTMyIG1heF9jbGllbnRfZGJzX3NicztcbiBcdH0gY2xpZW50O1xuK1xuK1x0Ym9vbCBob3N0X2FsbG9jX21sX2lkO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19od19vcHMge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCA0OTBjMTM0YzFmMjkwYi4uYWU4NzQxMTRkYzUxOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTI3OCwxMyArMTI3OCwxNyBAQCB2b2lkIGF0aDEya19tYWNfZHBfcGVlcl9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wO1xuIFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiBcbitcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbitcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBlZXJzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRwX3BlZXIsIHRtcCwgXHUwMDI2ZHBfaHctXHUwMDNlZHBfcGVlcnNfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoZHBfcGVlci1cdTAwM2Vpc19tbG8pIHtcbi1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSwgTlVMTCk7XG4tXHRcdFx0Y2xlYXJfYml0KGRwX3BlZXItXHUwMDNlcGVlcl9pZCwgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4rXHRcdFx0aWYgKGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbitcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLFxuK1x0XHRcdFx0XHRcdCAgIE5VTEwpO1xuK1x0XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpKTtcbiBcdFx0fVxuIFxuIFx0XHRsaXN0X21vdmUoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZwZWVycyk7XG5AQCAtMzUyNywxMSArMzUzMSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcbiBcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSA9IGFyc3RhLVx1MDAzZWFoc3RhO1xuIFx0c3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGFfcDtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWggPSBhcnN0YS1cdTAwM2VhcnZpZi1cdTAwM2Vhci1cdTAwM2VhaDtcbiBcdHVuc2lnbmVkIGxvbmcgbGlua3M7XG4gXHR1OCBsaW5rX2lkO1xuIFx0aW50IGk7XG4gXG4tXHRpZiAoIXN0YS1cdTAwM2VtbG8gfHwgYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRClcbitcdGlmICghc3RhLVx1MDAzZW1sbylcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bWwtXHUwMDNlZW5hYmxlZCA9IHRydWU7XG5AQCAtMzUzOSwxMiArMzU0OCwyNSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcbiBcbiBcdC8qIEZvciBub3cgY29uc2lkZXJpbmcgdGhlIHByaW1hcnkgdW1hYyBiYXNlZCBvbiBhc3NvYyBsaW5rICovXG4gXHRtbC1cdTAwM2VwcmltYXJ5X3VtYWMgPSBhcnN0YS1cdTAwM2Vpc19hc3NvY19saW5rO1xuLVx0bWwtXHUwMDNlcGVlcl9pZF92YWxpZCA9IHRydWU7XG4rXHQvKlxuK1x0ICogT25seSBjaGlwcyB0aGF0IGFsbG9jYXRlIHRoZSBNTEQgcGVlciBJRCBvbiB0aGUgaG9zdCBzZW5kIGEgdmFsaWRcbitcdCAqIG1sX3BlZXJfaWQgaW4gV01JX1BFRVJfQVNTT0NfQ01ESUQuIEZvciBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmVcbitcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cbitcdCAqL1xuK1x0bWwtXHUwMDNlcGVlcl9pZF92YWxpZCA9IGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQ7XG4gXHRtbC1cdTAwM2Vsb2dpY2FsX2xpbmtfaWR4X3ZhbGlkID0gdHJ1ZTtcbiBcbiBcdGV0aGVyX2FkZHJfY29weShtbC1cdTAwM2VtbGRfYWRkciwgc3RhLVx1MDAzZWFkZHIpO1xuIFx0bWwtXHUwMDNlbG9naWNhbF9saW5rX2lkeCA9IGFyc3RhLVx1MDAzZWxpbmtfaWR4O1xuLVx0bWwtXHUwMDNlbWxfcGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQ7XG4rXHQvKlxuK1x0ICogV01JX01MT19QRUVSX0FTU09DX1BBUkFNUyBleHBlY3RzIHRoZSByYXcgTUwgcGVlciBJRCB3aXRob3V0XG4rXHQgKiB0aGUgaG9zdC1zaWRlIEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIGJvb2trZWVwaW5nIGJpdC4gRm9yIGNoaXBzXG4rXHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXG4rXHQgKiBmaXJtd2FyZSBhbHdheXMgYWxsb2NhdGVzIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIGhlcmUpOyBzZW5kIDBcbitcdCAqIHRvIG1ha2UgdGhhdCBpbnRlbnQgZXhwbGljaXQuXG4rXHQgKi9cbitcdG1sLVx1MDAzZW1sX3BlZXJfaWQgPSBhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkID9cbitcdFx0XHQgKGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgXHUwMDI2IH5BVEgxMktfUEVFUl9NTF9JRF9WQUxJRCkgOiAwO1xuIFx0bWwtXHUwMDNlaWVlZV9saW5rX2lkID0gYXJzdGEtXHUwMDNlbGlua19pZDtcbiBcdG1sLVx1MDAzZW51bV9wYXJ0bmVyX2xpbmtzID0gMDtcbiBcdG1sLVx1MDAzZWVtbF9jYXAgPSBzdGEtXHUwMDNlZW1sX2NhcDtcbkBAIC0zNTkxLDggKzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTtcbiBcbi1cdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4tXG4gXHRhcmctXHUwMDNlcGVlcl9uZXdfYXNzb2MgPSAhcmVhc3NvYztcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7XG5AQCAtMzgzMiw2ICszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphcixcbiBcdHJldHVybiBidztcbiB9XG4gXG4rc3RhdGljIGludCBhdGgxMmtfbWFjX3BlZXJfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4rXHRcdFx0XHQgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcgKnBlZXJfYXJnKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbitcdGludCByZXQ7XG4rXG4rXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZhci1cdTAwM2VwZWVyX2Fzc29jX2RvbmUpO1xuK1x0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbitcbitcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxcblwiLFxuK1x0XHRcdCAgICBwZWVyX2FyZy1cdTAwM2VwZWVyX21hYywgcGVlcl9hcmctXHUwMDNldmRldl9pZCwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbitcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBGb3IgZGV2aWNlcyB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTEQgcGVlciBJRCwgdGhlIGhvc3RcbitcdCAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzXG4rXHQgKiBoYW5kbGVkIGluIGEgc29mdGlycSAoQkggd29ya3F1ZXVlKSBjb250ZXh0IHRoYXQgY2Fubm90IHRha2UgdGhlXG4rXHQgKiB3aXBoeSBsb2NrLiBCbG9jayBoZXJlLCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSB3aXBoeSBsb2NrLCB1bnRpbFxuK1x0ICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3RcbitcdCAqIGFsbCBvdGhlciB3aXBoeS1sb2NrZWQgbWxfcGVlcl9pZCBhY2Nlc3Nlcy5cbitcdCAqXG4rXHQgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmtcbitcdCAqIHBlZXIgYXNzb2MsIHNvIGJsb2NrIG9ubHkgZm9yIHRoYXQgbGluay5cbitcdCAqL1xuK1x0aWYgKCFhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBlZXJfYXJnLVx1MDAzZWlzX2Fzc29jIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBlZXJfYXJnLVx1MDAzZW1sLmVuYWJsZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGVlcl9hcmctXHUwMDNlbWwuYXNzb2NfbGluayBcdTAwMjZcdTAwMjZcbitcdCAgICAhd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSwgMSAqIEhaKSkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbitcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBhdGgxMmtfYnNzX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0XHRcdCAgICAgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZilcbkBAIC0zOTEyLDE4ICszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHR9XG4gXG4gXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG4tXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciAlcE0gdmRldiAlaTogJWRcXG5cIixcbi1cdFx0XHQgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGFydmlmLVx1MDAzZXZkZXZfaWQsIHJldCk7XG4tXHRcdHJldHVybjtcbi1cdH1cbiBcbi1cdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xuLVx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbi1cdFx0XHQgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuK1x0cmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XG4rXHRpZiAocmV0KVxuIFx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsXG4gXHRcdFx0XHQgICAgIFx1MDAyNmxpbmtfc3RhLVx1MDAzZWh0X2NhcCwgXHUwMDI2bGlua19zdGEtXHUwMDNlaGVfNmdoel9jYXBhKTtcbkBAIC02NDc3LDE4ICs2NTM1LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0fVxuIFxuIFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xuLVx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgU1RBICVwTSB2ZGV2ICVpOiAlZFxcblwiLFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCByZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwiLFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbi1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tXHR9XG4rXHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRudW1fdmh0X3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX3ZodF9yYXRlcyhhciwgYmFuZCwgbWFzayk7XG4gXHRudW1faGVfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1faGVfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xuQEAgLTY4MzcsMTQgKzY4ODcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd2spXG4gXHRcdFx0XHRcdFx0ICBwZWVyX2FyZywgdHJ1ZSk7XG4gXG4gXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbi1cdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxuXCIsXG4tXHRcdFx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBlcnIpO1xuIFxuLVx0XHRcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSlcbi1cdFx0XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwiLFxuLVx0XHRcdFx0XHQgICAgYXJzdGEtXHUwMDNlYWRkciwgYXJ2aWYtXHUwMDNldmRldl9pZCk7XG4rXHRcdFx0YXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtNzI2MiwxMCArNzMwNiw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfbWxfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLFxuIFx0XHRhdGgxMmtfbWFjX2ZyZWVfdW5hc3NpZ25fbGlua19zdGEoYWgsIGFoc3RhLCBsaW5rX2lkKTtcbiBcdH1cbiBcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuK1x0aWYgKHN0YS1cdTAwM2VtbG8pXG4rXHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiB9XG4gXG4gc3RhdGljIGludCBhdGgxMmtfbWFjX2hhbmRsZV9saW5rX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbkBAIC03NzI5LDE1ICs3NzcxLDIzIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0LyogTUwgc3RhICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvIFx1MDAyNlx1MDAyNiAhYWhzdGEtXHUwMDNlbGlua3NfbWFwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKGh3ZWlnaHQxNihzdGEtXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XG4tXHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbi1cdFx0XHRpZiAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCkge1xuLVx0XHRcdFx0YXRoMTJrX2h3X3dhcm4oYWgsIFwidW5hYmxlIHRvIGFsbG9jYXRlIE1MIHBlZXIgaWQgZm9yIHN0YSAlcE1cIixcbi1cdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbi1cdFx0XHRcdGdvdG8gZXhpdDtcbitcdFx0XHRpZiAoYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xuK1x0XHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbitcdFx0XHRcdGlmIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKSB7XG4rXHRcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcInVuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNXCIsXG4rXHRcdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbitcdFx0XHRcdFx0Z290byBleGl0O1xuK1x0XHRcdFx0fVxuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHQvKlxuK1x0XHRcdFx0ICogZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElEIGFuZCBub3RpZmllc1xuK1x0XHRcdFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORztcbiBcdFx0XHR9XG4gXG4gXHRcdFx0ZHBfcGFyYW1zLmlzX21sbyA9IHRydWU7XG4tXHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7XG4rXHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkO1xuIFx0XHR9XG4gXG4gXHRcdGRwX3BhcmFtcy5zdGEgPSBzdGE7XG5AQCAtNzg3NCwxMCArNzkyNCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBwZWVyX2RlbGV0ZTpcbiBcdGF0aDEya19kcF9wZWVyX2RlbGV0ZShcdTAwMjZhaC1cdTAwM2VkcF9odywgc3RhLVx1MDAzZWFkZHIsIHN0YSk7XG4gbWxfcGVlcl9pZF9jbGVhcjpcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuK1x0aWYgKHN0YS1cdTAwM2VtbG8pXG4rXHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiBleGl0OlxuIFx0LyogdXBkYXRlIHRoZSBzdGF0ZSBpZiBldmVyeXRoaW5nIHdlbnQgd2VsbCAqL1xuIFx0aWYgKCFyZXQpXG5AQCAtMTUzMDcsNiArMTUzNTUsNyBAQCBzdGF0aWMgc3RydWN0IGF0aDEya19odyAqYXRoMTJrX21hY19od19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyxcbiBcdGFoLVx1MDAzZW51bV9yYWRpbyA9IG51bV9wZGV2X21hcDtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2YWgtXHUwMDNlaHdfbXV0ZXgpO1xuK1x0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG5AQCAtMTUzODEsOCArMTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdGludCBtYWNfaWQsIGRldmljZV9pZCwgdG90YWxfcmFkaW8sIG51bV9odztcbiBcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XG4gXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbi1cdGludCByZXQsIGksIGo7XG4rXHRib29sIGNvbmYgPSBmYWxzZTtcbiBcdHU4IHJhZGlvX3Blcl9odztcbitcdGludCByZXQsIGksIGo7XG4gXG4gXHR0b3RhbF9yYWRpbyA9IDA7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XG5AQCAtMTU0MjIsNiArMTU0NzIsMTkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdGFiID0gYWctXHUwMDNlYWJbZGV2aWNlX2lkXTtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIHRoZSBhc3N1bXB0aW9uIGlzIGFsbCBkZXZpY2VzIHdpdGhpbiBhbiBhaFxuK1x0XHRcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChqID09IDApIHtcbitcdFx0XHRcdGNvbmYgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbitcdFx0XHR9IGVsc2UgaWYgKGNvbmYgIT0gYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcbitcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcImluY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJ3RcXG5cIixcbitcdFx0XHRcdFx0ICAgIGNvbmYgPyBcImhvc3RcIiA6IFwiZmlybXdhcmVcIiwgZGV2aWNlX2lkKTtcbitcdFx0XHRcdGdvdG8gZXJyO1xuK1x0XHRcdH1cbitcbiBcdFx0XHRwZGV2X21hcFtqXS5hYiA9IGFiO1xuIFx0XHRcdHBkZXZfbWFwW2pdLnBkZXZfaWR4ID0gbWFjX2lkO1xuIFx0XHRcdG1hY19pZCsrO1xuQEAgLTE1NDQ2LDYgKzE1NTA5LDcgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gXHRcdH1cbiBcbiBcdFx0YWgtXHUwMDNlZGV2ID0gYWItXHUwMDNlZGV2O1xuK1x0XHRhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkID0gY29uZjtcbiBcbiBcdFx0YWctXHUwMDNlYWhbaV0gPSBhaDtcbiBcdFx0YWctXHUwMDNlbnVtX2h3Kys7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG5AQCAtMjMwLDcgKzIzMCwxNiBAQCBpbnQgYXRoMTJrX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0LyogRmlsbCBNTCBpbmZvIGludG8gY3JlYXRlZCBwZWVyICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4gXHRcdFx0bWxfcGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQ7XG4tXHRcdFx0cGVlci1cdTAwM2VtbF9pZCA9IG1sX3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIEZvciBjaGlwcyB3aGVyZSBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQsXG4rXHRcdFx0ICogbWxfcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBoZXJlLiBUaGVcbitcdFx0XHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcbitcdFx0XHQgKiBwZWVyLVx1MDAzZW1sX2lkIG9uY2UgdGhlIElEIGlzIGtub3duLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuK1x0XHRcdFx0cGVlci1cdTAwM2VtbF9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBtbF9wZWVyX2lkO1xuIFx0XHRcdGV0aGVyX2FkZHJfY29weShwZWVyLVx1MDAzZW1sX2FkZHIsIHN0YS1cdTAwM2VhZGRyKTtcbiBcbiBcdFx0XHQvKiB0aGUgYXNzb2MgbGluayBpcyBjb25zaWRlcmVkIHByaW1hcnkgZm9yIG5vdyAqL1xuQEAgLTI3Niw5ICsyODUsMjUgQEAgdTE2IGF0aDEya19wZWVyX21sX2FsbG9jKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0fVxuIFxuIFx0aWYgKG1sX3BlZXJfaWQgPT0gQVRIMTJLX01BWF9NTE9fUEVFUlMpXG4tXHRcdG1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbitcdFx0cmV0dXJuIEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuIFxuLVx0cmV0dXJuIG1sX3BlZXJfaWQ7XG4rXHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuK31cbitcbit2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcbit7XG4rXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4rXG4rXHQvKlxuK1x0ICogT25seSBkZXZpY2VzIHRoYXQgYWxsb2NhdGUgdGhlIElEIG9uIHRoZSBob3N0IG93biBhIHNsb3QgaW5cbitcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXG4rXHQgKi9cbitcdGlmIChhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuK1x0ICAgIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAzY1xuK1x0ICAgICAoQVRIMTJLX01BWF9NTE9fUEVFUlMgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCkpKVxuK1x0XHRjbGVhcl9iaXQoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCBcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElELFxuK1x0XHRcdCAgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4rXHRhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4gfVxuIFxuIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxuaW5kZXggNDlkODk3OTZiYzQ2ZTIuLjBmN2YyNWI4ZTg5YzAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXG5AQCAtMjYsNCArMjYsNSBAQCBpbnQgYXRoMTJrX2xpbmtfc3RhX3JoYXNoX2FkZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphclxuIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmF0aDEya19saW5rX3N0YV9maW5kX2J5X2FkZHIoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdFx0XHQgICAgIGNvbnN0IHU4ICphZGRyKTtcbiB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpO1xuK3ZvaWQgYXRoMTJrX3BlZXJfbWxfZnJlZShzdHJ1Y3QgYXRoMTJrX2h3ICphaCwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKTtcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGU1YmY5ZDIxODEwNDBkLi4wYzI3N2Y1MWQ5OWMxYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtNDM5LDYgKzQzOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4rXG4rXHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCJ3Y243ODUwIGh3Mi4wXCIsXG5AQCAtNTMwLDYgKzUzMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4rXG4rXHRcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwicWNuOTI3NCBodzIuMFwiLFxuQEAgLTYxNyw2ICs2MjEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwiaXBxNTMzMiBodzEuMFwiLFxuQEAgLTY5Nyw2ICs3MDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwicWNjMjA3MiBodzEuMFwiLFxuQEAgLTc4OSw2ICs3OTcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IGZhbHNlLFxuIFx0fSxcbiBcdHtcbiBcdFx0Lm5hbWUgPSBcImlwcTU0MjQgaHcxLjBcIixcbkBAIC04NzMsNiArODgzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcbiBcdFx0XHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcbiBcdFx0fSxcbitcbitcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxuIFx0fSxcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MTMuNTM1MTYwNzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2NzAyNTg5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYW4gYXRoMTJrIFBhdGNoIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgYmlnIGRlYWwgYmVjYXVzZSBgYXRoMTJrYCBpcyBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQncyBhZGRpbmcgYSBmbGFnLCBhIG5ldyBIVFQgZXZlbnQgaGFuZGxlciBmb3IgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgcGVlciBtYXBwaW5nLCBhbmQgbW9kaWZ5aW5nIGEgYnVuY2ggb2YgZXhpc3RpbmcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGVlciBhc3NvY2lhdGlvbiBhbmQgY3JlYXRpb24uIEZ1bmN0aW9uYWxseSwgaXQncyBhZGRpbmcgTUxPIHN1cHBvcnQgdG8gdGhlIGRyaXZlci4gVGhpcyBpcyBpbnRlcmVzdGluZywgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRlc3RhYmlsaXR5LiBDYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD9cblxuTXkgY29uY2VybiBpcyB0aGF0IFdpLUZpIGRyaXZlcnMsICplc3BlY2lhbGx5KiBhdCB0aGlzIGxldmVsLCB1c3VhbGx5IGRlcGVuZCBvbiBhY3R1YWwgaGFyZHdhcmUuIFlvdSBuZWVkIGEgUENJZSBkZXZpY2Ugb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IG1ha2VzIGZ1enppbmcgYW5kIHRlc3RpbmcgaW4gUUVNVSBvciBHQ0UgcHJldHR5IHRyaWNreS4gSSBpbW1lZGlhdGVseSB0aGluayBvZiBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBtYWM4MDIxMSwgYnV0IHRoYXQncyBtYWM4MDIxMS4gSXQgd291bGRuJ3QgbW9kZWwgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgYGF0aDEya2AgaGFyZHdhcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiBgYXRoMTJrYCBiZSBmdXp6ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIG1hYzgwMjExIHN1cHBvcnQsIGJ1dCB0aGF04oCZcyBicm9hZCBhbmQgcHJvYmFibHkgd291bGRu4oCZdCBoaXQgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciB1bmxlc3MgdGhlcmUgd2FzIGEgc3BlY2lmaWMgZW11bGF0b3IuIFdlIGhhdmUgZW11bGF0b3JzIGZvciBvdGhlciBoYXJkd2FyZSB0eXBlcywgbGlrZSBgdmhjaWAgZm9yIEJsdWV0b290aCBvciBgZHVtbXlfaGNkYCBmb3IgVVNCLCBidXQgSeKAmW0gbm90IGF3YXJlIG9mIGFueXRoaW5nIGxpa2UgdGhhdCBmb3IgYGF0aDEya2AuIE5vIHNwZWNpZmljIHZpcnR1YWwgZGV2aWNlLCBuby5cblxuVGhlbiBJIHJlY2FsbGVkIHN5emthbGxlciBoYXMgUENJIGZ1enppbmcgdmlhIGBzeXpfcGNpZGV2YCBvciBzaW11bGF0ZWQgUENJIChlLmcuIGB2ZmlvYCkuIEJ1dCB3YWl0LCB0aGUgb3JpZ2luYWwgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIHNhaWQgaXQncyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBoYXJkd2FyZSBlbXVsYXRpb24uIFNvLCBpcyB0aGlzIHBhdGNoIHJlYWNoYWJsZSBhdCBhbGw/XG5cblRoaXMgbWVhbnMgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzICphbnkqIHdheSB0byBnZXQgdG8gdGhpcyBgYXRoMTJrYCBjb2RlIHdpdGggZnV6emluZy4gSXMgdGhlcmUgYW55dGhpbmcgaW4gc3l6a2FsbGVyJ3MgZGVmaW5pdGlvbnMgZm9yIFBDSSBkZXZpY2VzLCBvciBhbnl0aGluZyBleHBsaWNpdGx5IHRhcmdldGluZyBgYXRoMTJrYD8gSSBzaG91bGQgY2hlY2sgYHN5cy9saW51eC9kZXZfd2lmaS50eHRgIGFuZCB0aGUga2VybmVsIHNvdXJjZSwgYW5kIG1heWJlIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBhbnkgc2lnbnMgb2YgZnV6emluZyBvciB2aXJ0dWFsIGRldmljZXMgcmVsYXRlZCB0byBgYXRoMTJrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgdGVzdCBtb2R1bGUgb3IgYW55IHdheSBvZiB2aXJ0dWFsaXppbmcgb3IgZW11bGF0aW5nIGBhdGgxMmtgLCBiZWNhdXNlIGlmIHRoZXJlIGlzbid0LCB0aGlzIHBhdGNoIGlzIHByb2JhYmx5IGluYWNjZXNzaWJsZSB3aXRob3V0IHJlYWwgaGFyZHdhcmUsIHdoaWNoIG1ha2VzIGl0IG11Y2ggaGFyZGVyIHRvIHRlc3QgYW5kIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MjQuMjA1NDIxODY1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NDA4MTA5NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoyNC41OTk1MTM3MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQyMzc4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGdlYXJlZCB0b3dhcmRzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBhdGgxMmtgIEVtdWxhdG9yIFByZXNlbmNlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZSBrZXJuZWwgYW5kIHRoZSBgYXRoMTJrYCBkcml2ZXIuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHdpcmVsZXNzIGNoaXBzZXQgZGV2ZWxvcG1lbnQgYW5kIHRoZSBldm9sdXRpb24gb2YgdGhlc2UgZHJpdmVycywgbXkgZmlyc3QgdGhvdWdodCBpczogSGFzIGFueW9uZSwgc29tZXdoZXJlLCBjcmVhdGVkIGFuICplbXVsYXRvciogZm9yIGBhdGgxMmtgIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZj8gSSdtIG5vdCB0YWxraW5nIGFib3V0IGZ1bGwgZW11bGF0aW9uIGxpa2UgUUVNVSBvciBzb21ldGhpbmc7IEknbSB0aGlua2luZyBtb3JlIGFsb25nIHRoZSBsaW5lcyBvZiBhIHNvZnR3YXJlLWJhc2VkIHJlcHJlc2VudGF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYXliZSBzaW11bGF0aW5nIGNlcnRhaW4gaGFyZHdhcmUgYmVoYXZpb3JzIG9yIGZvciBkcml2ZXIgZGV2ZWxvcG1lbnQgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIHJlYWwgaGFyZHdhcmUuIFNvLCBteSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBEb2VzIGEga2VybmVsLWxldmVsIGBhdGgxMmtgIGVtdWxhdG9yIGV4aXN0LCBhbmQsIGlmIHNvLCB3aGF0IGFyZSBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDMzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MjcuOTQxODk0NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4NDk5OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzUwMTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnPTY1PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY2OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19BVEgxMUspXFx0XFx0Kz0gYXRoMTFrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQVRIMTJLKVxcdFxcdCs9IGF0aDEyay9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1OlxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OlxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5OlxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1OlxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVxcdGRlcGVuZHMgb24gQVRIMTJLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gYXRoMTJrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM6YXRoMTJrLXkgKz0gY29yZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTQtXFx0ICAgIGhhbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgKz0gYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0FUSDEySykgKz0gd2lmaTcvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzA6YXRoMTJrLSQoQ09ORklHX0FDUEkpICs9IGFjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMjphdGgxMmstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzU6YXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTpzdGF0aWMgaW50IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBpbnQgZnVuYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOC1cXHRpZiAoIXJvb3RfaGFuZGxlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTk6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiaW52YWxpZCBhY3BpIGhhbmRsZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVxcdGlmICghb2JqKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV9ldmFsdWF0ZV9kc20oKSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVxcdFxcdHJldHVybiAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYtXFx0XFx0XFx0XFx0ICAgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBCREYgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDgtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlc3RyaW5nLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02Mi1cXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoIFxcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjM6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNjQtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03NS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ny1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg3LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo4ODpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy05OS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMDA6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgQklPUyBTQVIgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMDEtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTEtXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTI6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMy1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyMy1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTI0OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjUtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzUtXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEzNjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM3LVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTQ3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTQ4OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiQUNQSSBEU00gbWV0aG9kIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG9iamVjdCB0eXBlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDktXFx0XFx0XFx0ICAgIG9iai1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTYxOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2Ny1cXHQgICAgdGFzX3Nhcl9wb3dlcl90YWJsZVsxXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjg6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjktXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTcyOlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfREFUQV9UWVBFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3My1cXHRcXHRcXHRcXHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODM6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcG93ZXIoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg4LVxcdCAgICBhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg5OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBsYXRlc3QgQUNQSSBCSU9TIFNBUiBkYXRhXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTkzOlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTU6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWNwaV9kc21fbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIGV2ZW50LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA0LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA1OlxcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDctXFx0aWYgKGV2ZW50ID09IEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwODpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInVua25vd24gYWNwaSBub3RpZnkgJXVcXFxcblxcXCIsIGV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVxcdGlmICghYWItXFx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImFjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTk6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gdXBkYXRlIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjIzOlxcdHJldCA9IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjI0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjU6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgVEFTIHBvd2VyIGxpbWl0IGRhdGE6ICVkXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjYtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzNDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byB1cGRhdGUgQklPUyBTQVI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM4OlxcdHJldCA9IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEJJT1MgU0FSIHBvd2VyIGxpbWl0OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0NTpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wYXJhbXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0OTpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjUxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgU0FSIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTItXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTU6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19nZW9fY21kKGFiLCBhYi1cXHUwMDNlYWNwaS5nZW9fb2Zmc2V0X2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU3OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgR0VPIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjQ6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjY4OlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfQ09ORklHX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY5LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19jZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzEtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGNvbmZpZyB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3My1cXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzc6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGUgcGFyYW1ldGVyOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODItXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjg5OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfcmZraWxsKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTQ6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzA4LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMDk6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzExOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgcGFyYW1ldGVyczogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxNi1cXHRpZiAoYWItXFx1MDAzZWFjcGkuYWNwaV9iaW9zX3Nhcl9lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTc6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTk6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIEJJT1MgU0FSOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjAtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI1LVxcdFxcdGJ1ZiA9IGFiLVxcdTAwM2VhY3BpLmNjYV9kYXRhICsgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI2OlxcdFxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBXTUlfQklPU19QQVJBTV9DQ0FfVEhSRVNIT0xEX1RZUEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzMTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMyLVxcdFxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM3LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX2JhbmRfZWRnZV9lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzg6XFx0XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgIFdNSV9CSU9TX1BBUkFNX1RZUEVfQkFOREVER0UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM0MzpcXHRcXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDQtXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNTE6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjk6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc1LVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NjpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc3LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzg6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRElTQUJMRSBGTEFHOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzktXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MS1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JERl9FWFQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVxcdFxcdGlmIChyZXQgfHwgYWItXFx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAnXFxcXDAnKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzk0OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIEJERiBFWFQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5NS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAxLVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwNDpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBUQVMgY29uZmlnIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDUtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwOS1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19EQVRBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMjpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDEzLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjItXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjM6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI0LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjU6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgYmlvcyBzYXIgZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI2LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzAtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9HRU9fT0ZGU0VUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMTpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMzOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIGdlbyBvZmZzZXQgZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDM0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDQtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NzpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZCBjb25maWd1cmF0aW9uOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDgtXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTktXFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NjI6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjMtXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzMtXFx0XFx0XFx0XFx0XFx0ICAgICBBQ1BJX0RFVklDRV9OT1RJRlksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc0OlxcdFxcdFxcdFxcdFxcdCAgICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSwgYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3NS1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gaW5zdGFsbCBEU00gbm90aWZ5IGNhbGxiYWNrOiAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDg1OmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5Mi1cXHRpZiAoc3Ryc2NweShhYi1cXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cXHUwMDNlYWNwaS5iZGZfc3RyaW5nICsgNCwgbWF4X2xlbikgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ5MzpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk0LVxcdFxcdFxcdCAgIFxcXCJhY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDA6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwNi1cXHRcXHRcXHRcXHQgICBBQ1BJX0RFVklDRV9OT1RJRlksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NTA3OlxcdFxcdFxcdFxcdCAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc1OmludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Njp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzc6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzg6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc5OnZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjgwOmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODQ6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjkzOnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo5ODpzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDM6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIyOnN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2FoYl9kcml2ZXIgKmF0aDEya19haGJfZmFtaWx5X2RyaXZlcnNbQVRIMTJLX0RFVklDRV9GQU1JTFlfTUFYXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBjb25zdCBjaGFyIGF0aDEya191c2VycGRfaXJxW11bOV0gPSB7XFxcInNwYXduXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0LVxcdFxcdFxcdFxcdCAgICAgXFxcInJlYWR5XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODM9ZW51bSBleHRfaXJxX251bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEyMzpzdGF0aWMgdTMyIGF0aDEya19haGJfcmVhZDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzEtXFx0XFx0XFx0ICAgICAgIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTM5OnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2FuY2VsX3dvcmtxdWV1ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDQ6XFx0XFx0c3RydWN0IGF0aDEya19jZV9waXBlICpjZV9waXBlID0gXFx1MDAyNmFiLVxcdTAwM2VjZS5jZV9waXBlW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQ2OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0Ny1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTUzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2dycF9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjE6c3RhdGljIHZvaWQgX19hdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjY6XFx0XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjg6XFx0XFx0YXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjktXFx0XFx0aWYgKGlycV9ncnAtXFx1MDAzZW5hcGlfZW5hYmxlZCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNzc6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg1OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc2V0Yml0MzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg5OlxcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkwOlxcdGF0aDEya19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTc6XFx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XFx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCBcXHUwMDI2IH5CSVQoYml0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjAxOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTItXFx0aWYgKGNlX2F0dHItXFx1MDAzZXNyY19uZW50cmllcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxMzpcXHRcXHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNS1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlZGVzdF9uZW50cmllcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE2OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTJfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE3OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkICsgQ0VfSE9TVF9JRV8zX1NISUZULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE4LVxcdFxcdFxcdFxcdCAgICBpZTNfcmVnX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzMtXFx0aWYgKGNlX2F0dHItXFx1MDAzZXNyY19uZW50cmllcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNDpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM2LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VkZXN0X25lbnRyaWVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzc6XFx0XFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzODpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICsgQ0VfSE9TVF9JRV8zX1NISUZULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM5LVxcdFxcdFxcdFxcdCAgICAgIGllM19yZWdfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNDk6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjUwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNTc6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI2MzpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjcyOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxc19lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjc3OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3OC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3OTpcXHRcXHRhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjgzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxc19kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4ODpcXHRcXHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODktXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTA6XFx0XFx0YXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTQ6c3RhdGljIGludCBhdGgxMmtfYWhiX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk2OlxcdGF0aDEya19haGJfY2VfaXJxc19lbmFibGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3OlxcdGF0aDEya19jZV9yeF9wb3N0X2J1ZihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzA0OlxcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDUtXFx0aW50IGk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjI4LjMxMDQwNDI0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDk5MDI4Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgYGF0aDEya2AgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDEya2AsIGFuZCBpdCdzIGdvdCBib3RoIGBhdGgxMmtfYWhiYCBhbmQgYGF0aDEya19wY2lgIHZhcmlhbnRzLiAgVGhlbiB0aGVyZSdzIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHNpbXVsYXRlcyBtYWM4MDIxMSwgYnV0IHRoYXQncyBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYCBoYXJkd2FyZSBkcml2ZXIgaXRzZWxmLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogYGF0aDEya2Agd2l0aCBzeXprYWxsZXIuIFN5emthbGxlcidzIGdvdCBQQ0kgZnV6emluZywgd2hpY2ggc291bmRzIHByb21pc2luZyBzaW5jZSBgYXRoMTJrYCBoYXMgYSBQQ0kgaW50ZXJmYWNlLlxuXG5UaGUgdGFzayBpcyB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gIFRoZSBwcm9tcHQncyB3YXJuaW5nIGlzIHJlbGV2YW50OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gYXJlIG5vdCB3b3J0aCBmdXp6aW5nXCIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtgICppcyogcmVhY2hhYmxlLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgaXQncyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gQnV0LCBob2xkIG9uLiAgYHN5el9wY2lkZXZgIGlzbid0IGdlbmVyYWxseSB1c2VkIHRvIGZ1enogY29tcGxleCBXaS1GaSBkcml2ZXJzIGxpa2UgYGF0aDEya2AgYmVjYXVzZSB0aGV5IHR5cGljYWxseSBpbnZvbHZlIGZpcm13YXJlIGxvYWRpbmcgYW5kIERNQSwgd2hpY2ggdGhlIFBDSSBmdXp6ZXIgc3RydWdnbGVzIHdpdGguXG5cbkhvd2V2ZXIsIHRoZSBwcmVzZW5jZSBvZiBcInN5ei1jbHVzdGVyXCIgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGlzIGludGVyZXN0aW5nLiBEb2VzIHRoaXMgbWVhbiBzeXprYWxsZXIgZm91bmQgYSBidWcgb3IgaXMgYWN0aXZlbHkgZnV6emluZyB0aGlzIGRyaXZlcj8gTm8sIEkgYW0gcmV2aWV3aW5nIGEgcGF0Y2guIEkgYW0gbG9va2luZyBhdCBpdCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYGF0aDEya2AgcmVxdWlyZXMgaGFyZHdhcmUgb3IgYW4gZW11bGF0b3IuIERvZXMgaXQgaGF2ZSB0ZXN0bW9kZSBvciBhIHNvZnR3YXJlIHNpbXVsYXRvcj8gQ2FuIGl0IGJlIHJlYWNoZWQgaW4gUUVNVT8gVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSBkZWRpY2F0ZWQgYGF0aDEya2AgZW11bGF0b3IgaW4gUUVNVSwgYW5kIFBDSSBmdXp6aW5nIG9mdGVuIGZhaWxzIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgbG9hZGluZyByZXF1aXJlbWVudHMgYW5kIGRldmljZSBib290IHNlcXVlbmNlIChgYXRoMTJrX2NvcmVfZmV0Y2hfYmRmYCwgZXRjLikuIFdpdGhvdXQgYSByZWFsIGRldmljZSBvciBhIGdvb2QgZW11bGF0b3IsIHRoZSBwcm9iZSB3aWxsIGZhaWwgYW5kIG1vc3Qgb2YgdGhlIGNvZGUgaW4gYG1hYy5jYCwgYGRwX2h0dC5jYCwgZXRjLiB3aWxsIGJlIHVucmVhY2hhYmxlLlxuXG5JJ2xsIGNoZWNrIGZvciBhIHRlc3QgbW9kZSBvciBzb2Z0d2FyZSBzaW11bGF0b3IuIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGVgLCBJIHNlZSBgYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9gLiBUaGlzIHRlc3QgbW9kZSBpcyBmb3Igbmw4MDIxMSB0ZXN0IGNvbW1hbmRzLCBidXQgaXQgc3RpbGwgc2VlbXMgdG8gcmVxdWlyZSBoYXJkd2FyZSBwcmVzZW5jZS4gVGhlcmUgaXMgYWxzbyBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQncyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHNwZWNpZmljIHRvIGBhdGgxMmtgLiBGaW5hbGx5LCBJIHNob3VsZCBsb29rIGF0IGBhdGgxMmtfcGNpX3Byb2JlYC4gSXQgc2VlbXMgZG91YnRmdWwgdGhlIGBhdGgxMmtgIGRyaXZlciBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTg4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjQwLjgwOTQzNTkyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgyOTE5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MTc9YXRoMTJrX2dldF9kZXZpY2VfZmFtaWx5KGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUzODpzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxOD1pbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzktXFx0cGNpX2RyaXZlci1cXHUwMDNlaWRfdGFibGUgPSBkcml2ZXItXFx1MDAzZWlkX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzo0MC45NTc3MzI3NTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ4OTQxNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgYXRoMTJrX3BjaV9wcm9iZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGBhdGgxMmtfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW5jZS4gSXMgaXQgKnJlcXVpcmVkKiB0byBoYXZlIHRoZSBwaHlzaWNhbCBQQ0kgZGV2aWNlIGNvbm5lY3RlZCB0byBldmVuIGZ1bmN0aW9uIGluIHNvbWUgY2FwYWNpdHk/IERvZXMgaXQgbmVlZCB0byBkbyBzb21lIGRldmljZSBpbml0aWFsaXphdGlvbiB0aGF0IG5lY2Vzc2l0YXRlcyB0aGUgaGFyZHdhcmU/IFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3Igd2hhdGV2ZXIgdGVzdGluZyBvciBhbmFseXNpcyB3ZSdyZSBwbGFubmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuY3Rpb24ncyBkZXBlbmRlbmNpZXMgaW4gdGhhdCByZXNwZWN0LiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiByZWxpYWJseSBlbXVsYXRlIHRoaXMgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIHBsYWNlLiBJZiBpdCAqZG9lcyogcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGljaCBvbmVzLCBzbyBJIGNhbiB0cnkgdG8gc2ltdWxhdGUgdGhlbSBpbiBhIHRlc3QgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzQ4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6NDQuNTA2Njc3MTczWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MzgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTM4OlxcdHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4xNTM5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4xNTQwOlxcdHtcXG4xNTQxOlxcdFxcdGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkO1xcbjE1NDI6XFx0XFx0c3RydWN0IGF0aDEya19wY2kgKmFiX3BjaTtcXG4xNTQzOlxcdFxcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XFxuMTU0NDpcXHRcXHRpbnQgcmV0O1xcbjE1NDU6XFx0XFxuMTU0NjpcXHRcXHRhYiA9IGF0aDEya19jb3JlX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqYWJfcGNpKSwgQVRIMTJLX0JVU19QQ0kpO1xcbjE1NDc6XFx0XFx0aWYgKCFhYikge1xcbjE1NDg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDEyayBiYXNlXFxcXG5cXFwiKTtcXG4xNTQ5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjE1NTA6XFx0XFx0fVxcbjE1NTE6XFx0XFxuMTU1MjpcXHRcXHRhYi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xNTUzOlxcdFxcdGFiX3BjaSA9IGF0aDEya19wY2lfcHJpdihhYik7XFxuMTU1NDpcXHRcXHRhYl9wY2ktXFx1MDAzZWRldl9pZCA9IHBjaV9kZXYtXFx1MDAzZWRldmljZTtcXG4xNTU1OlxcdFxcdGFiX3BjaS1cXHUwMDNlYWIgPSBhYjtcXG4xNTU2OlxcdFxcdGFiX3BjaS1cXHUwMDNlcGRldiA9IHBkZXY7XFxuMTU1NzpcXHRcXHRhYi1cXHUwMDNlaGlmLm9wcyA9IFxcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XFxuMTU1ODpcXHRcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG4xNTU5OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhYik7XFxuMTU2MDpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWJfcGNpLVxcdTAwM2V3aW5kb3dfbG9jayk7XFxuMTU2MTpcXHRcXG4xNTYyOlxcdFxcdHJldCA9IGF0aDEya19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcXG4xNTYzOlxcdFxcdGlmIChyZXQpIHtcXG4xNTY0OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY2xhaW0gZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNTY1OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfY29yZTtcXG4xNTY2OlxcdFxcdH1cXG4xNTY3OlxcdFxcbjE1Njg6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwicGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXFxcblxcXCIsXFxuMTU2OTpcXHRcXHRcXHQgICBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSxcXG4xNTcwOlxcdFxcdFxcdCAgIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xcbjE1NzE6XFx0XFxuMTU3MjpcXHRcXHRhYi1cXHUwMDNlaWQudmVuZG9yID0gcGRldi1cXHUwMDNldmVuZG9yO1xcbjE1NzM6XFx0XFx0YWItXFx1MDAzZWlkLmRldmljZSA9IHBkZXYtXFx1MDAzZWRldmljZTtcXG4xNTc0OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX3ZlbmRvcjtcXG4xNTc1OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcXG4xNTc2OlxcdFxcbjE1Nzc6XFx0XFx0ZGV2aWNlX2lkID0gYXRoMTJrX2dldF9kZXZpY2VfZmFtaWx5KHBjaV9kZXYpO1xcbjE1Nzg6XFx0XFx0aWYgKGRldmljZV9pZCBcXHUwMDNlPSBBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVgpIHtcXG4xNTc5OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IGRldmljZSBmYW1pbHkgaWRcXFxcblxcXCIpO1xcbjE1ODA6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4xNTgxOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9mcmVlX3JlZ2lvbjtcXG4xNTgyOlxcdFxcdH1cXG4xNTgzOlxcdFxcbjE1ODQ6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19QQ0ksIFxcXCJQQ0kgZGV2aWNlIGZhbWlseSBpZDogJWRcXFxcblxcXCIsIGRldmljZV9pZCk7XFxuMTU4NTpcXHRcXG4xNTg2OlxcdFxcdGFiX3BjaS1cXHUwMDNlZGV2aWNlX2ZhbWlseV9vcHMgPSBcXHUwMDI2YXRoMTJrX3BjaV9mYW1pbHlfZHJpdmVyc1tkZXZpY2VfaWRdLVxcdTAwM2VvcHM7XFxuMTU4NzpcXHRcXHRhYl9wY2ktXFx1MDAzZXJlZ19iYXNlID0gYXRoMTJrX3BjaV9mYW1pbHlfZHJpdmVyc1tkZXZpY2VfaWRdLVxcdTAwM2VyZWdfYmFzZTtcXG4xNTg4OlxcdFxcbjE1ODk6XFx0XFx0LyogQ2FsbCBkZXZpY2Ugc3BlY2lmaWMgcHJvYmUuIFRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgY2FuXFxuMTU5MDpcXHRcXHQgKiBiZSB1c2VkIHRvIG92ZXJyaWRlIGFueSBvcHMgaW4gZnV0dXJlXFxuMTU5MTpcXHRcXHQgKiBwcm9iZSBpcyB2YWxpZGF0ZWQgZm9yIE5VTEwgZHVyaW5nIHJlZ2lzdHJhdGlvbi5cXG4xNTkyOlxcdFxcdCAqL1xcbjE1OTM6XFx0XFx0cmV0ID0gYWJfcGNpLVxcdTAwM2VkZXZpY2VfZmFtaWx5X29wcy1cXHUwMDNlcHJvYmUocGRldiwgcGNpX2Rldik7XFxuMTU5NDpcXHRcXHRpZiAocmV0KSB7XFxuMTU5NTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHByb2JlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTU5NjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTU5NzpcXHRcXHR9XFxuMTU5ODpcXHRcXG4xNTk5OlxcdFxcdHJldCA9IGF0aDEya19wY2lfbXNpX2FsbG9jKGFiX3BjaSk7XFxuMTYwMDpcXHRcXHRpZiAocmV0KSB7XFxuMTYwMTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGFsbG9jIG1zaTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTYwMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTYwMzpcXHRcXHR9XFxuMTYwNDpcXHRcXG4xNjA1OlxcdFxcdHJldCA9IGF0aDEya19jb3JlX3ByZV9pbml0KGFiKTtcXG4xNjA2OlxcdFxcdGlmIChyZXQpXFxuMTYwNzpcXHRcXHRcXHRnb3RvIGVycl9wY2lfbXNpX2ZyZWU7XFxuMTYwODpcXHRcXG4xNjA5OlxcdFxcdHJldCA9IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KGFiX3BjaSwgY3B1bWFza19vZigwKSk7XFxuMTYxMDpcXHRcXHRpZiAocmV0KSB7XFxuMTYxMTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBpcnEgYWZmaW5pdHkgJWRcXFxcblxcXCIsIHJldCk7XFxuMTYxMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfbXNpX2ZyZWU7XFxuMTYxMzpcXHRcXHR9XFxuMTYxNDpcXHRcXG4xNjE1OlxcdFxcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcXG4xNjE2OlxcdFxcdGlmIChyZXQpIHtcXG4xNjE3OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgbWhpOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjE4OlxcdFxcdFxcdGdvdG8gZXJyX2lycV9hZmZpbml0eV9jbGVhbnVwO1xcbjE2MTk6XFx0XFx0fVxcbjE2MjA6XFx0XFxuMTYyMTpcXHRcXHRyZXQgPSBhdGgxMmtfaGFsX3NybmdfaW5pdChhYik7XFxuMTYyMjpcXHRcXHRpZiAocmV0KVxcbjE2MjM6XFx0XFx0XFx0Z290byBlcnJfbWhpX3VucmVnaXN0ZXI7XFxuMTYyNDpcXHRcXG4xNjI1OlxcdFxcdHJldCA9IGF0aDEya19jZV9hbGxvY19waXBlcyhhYik7XFxuMTYyNjpcXHRcXHRpZiAocmV0KSB7XFxuMTYyNzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGNlIHBpcGVzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjI4OlxcdFxcdFxcdGdvdG8gZXJyX2hhbF9zcm5nX2RlaW5pdDtcXG4xNjI5OlxcdFxcdH1cXG4xNjMwOlxcdFxcbjE2MzE6XFx0XFx0YXRoMTJrX3BjaV9pbml0X3FtaV9jZV9jb25maWcoYWIpO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHRcXHRyZXQgPSBhdGgxMmtfcGNpX2NvbmZpZ19pcnEoYWIpO1xcbjE2MzQ6XFx0XFx0aWYgKHJldCkge1xcbjE2MzU6XFx0XFx0XFx0YXRoMTJrX2VycihhYiwgXFxcImZhaWxlZCB0byBjb25maWcgaXJxOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjM2OlxcdFxcdFxcdGdvdG8gZXJyX2NlX2ZyZWU7XFxuMTYzNzpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjQ0LjUwNjg4NTEyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzYyNDI0NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogQXRoMTJrIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB3aGV0aGVyIHRoaXMgcGF0Y2gsIHRvdWNoaW5nIGBhdGgxMmtgIGNvZGUsIGlzIHdvcnRoIGZ1enppbmcsIGdpdmVuIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBhdGgxMmtgIGRyaXZlciB1dGlsaXplcyB0aGUgTW9kZW0gSG9zdCBJbnRlcmZhY2UgKE1ISSkgdG8gY29tbXVuaWNhdGUgd2l0aCBpdHMgZmlybXdhcmUsIGFuZCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggKmNvdWxkKiB0aGVvcmV0aWNhbGx5IHNpbXVsYXRlIHRoZSBNSEkgc3RhdGUgbWFjaGluZSwgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCBmb3IgdGhlIGZ1enplciB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB0aGUgTUhJIHN0YXRlIG1hY2hpbmUuXG5cbkhvd2V2ZXIsIHRoZSBrZXkgaXMgdGhlIHByb21wdCdzIGV4cGxpY2l0IGV4Y2x1c2lvbiBvZiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBDYW4gYGF0aDEya2AgYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGBhdGgxMmtgPyBOb3BlLlxuXG5UaGUgcGF0Y2ggbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXJgLCBgYXRoMTJrX21hY19wZWVyX2Fzc29jYCwgYW5kIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIE5vdywgSSByZWNvZ25pemUgdGhlc2UgYXMgbWFjODAyMTEgY2FsbGJhY2tzIGFuZCBIVFQgZXZlbnQgaGFuZGxlcnMuIEJ1dCBpZiB0aGUgZGV2aWNlIGl0c2VsZiBpc24ndCBzdWNjZXNzZnVsbHkgcHJvYmVkIGFuZCBpbnN0YW50aWF0ZWQsIHRoZXNlIGNhbGxiYWNrcyAqd29uJ3QqIGV2ZW4gYmUgcmVnaXN0ZXJlZCBiZWNhdXNlIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBoYXBwZW5zICphZnRlciogZmlybXdhcmUgbG9hZGluZyBhbmQgV01JIGluaXRpYWxpemF0aW9uLiBJdCdzIGEgZnVuZGFtZW50YWwgZGVwZW5kZW5jeS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXM6IGNhbiBgYXRoMTJrYCAqYmUqIGZ1enplZD8gV2VsbCwgc3l6a2FsbGVyIGhhcyBhIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmaW5lIGZvciB0aGUgbWFjODAyMTEgc3RhY2suIEJ1dCBpdCBkb2Vzbid0ICp0YXJnZXQqIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBgYXRoMTJrYCB1bmxlc3MgaXQgY2FuIGJlIGluc3RhbnRpYXRlZC4gU2luY2UgYGF0aDEya2AgZnVuZGFtZW50YWxseSByZXF1aXJlcyBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgQUhCIGRldmljZSwgYW5kIHRoZXJlJ3Mgbm8gc3VpdGFibGUgc29mdHdhcmUgZW11bGF0b3IgZm9yIGl0LCBpdCdzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBJdCdzIHNpbXBseSB1bnJlYWNoYWJsZS5cblxuVG8gYmUgdGhvcm91Z2gsIGxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlJ3MgKmFueSogdGVzdGluZyBtb2RlIG9yIHNpbXVsYXRpb24gZmxhZ3MgYnVpbHQgaW50byB0aGUgY29kZS4gTGV0J3MgbG9vayBmb3IgYW55dGhpbmcgd2l0aCBcInRlc3Rtb2RlXCIgb3IgXCJzaW1cIiBpbiBpdC4gSWYgdGhlcmUgaXMgbm90LCBteSBmaW5hbCBjb25jbHVzaW9uIHdpbGwgYmUgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgwMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjU4LjEzMTEzMTQ4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNDYwMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltfHNpbXxkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTU2Mz1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTc4OlxcdFxcdGlycV9ncnAtXFx1MDAzZW5hcGlfbmRldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTU3OS1cXHRcXHRpZiAoIWlycV9ncnAtXFx1MDAzZW5hcGlfbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEwMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX2NvbnRpbnVlX3N1c3BlbmRfcmVzdW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMDktXFx0Lyogc28gZmFyIHNpbmdsZV9wZGV2X29ubHkgY2hpcHMgaGF2ZSBzdXBwb3J0c19zdXNwZW5kIGFzIHRydWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTA6XFx0ICogc28gcGFzcyAwIGFzIGEgZHVtbXkgcGRldl9pZCBoZXJlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExMS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ5Mj1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTY6XFx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDk3LVxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIwLVxcdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjIxOlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX3JhZGFyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlxcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMzpcXHQub3BlbiA9IHNpbXBsZV9vcGVuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQwLVxcdGNvbnN0IGNoYXIgYnVmW10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlxcdFxcdFxcXCJUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXFxcblxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00Mi1cXHRcXHRcXFwiYGFzc2VydGAgLSBzZW5kIFdNSV9GT1JDRV9GV19IQU5HX0NNRElEIHRvIGZpcm13YXJlIHRvIGNhdXNlIGFzc2VydC5cXFxcblxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBzdHJsZW4oYnVmKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NDc9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlxcdHJjID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwiYXNzZXJ0XFxcIikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MjpcXHRcXHRhdGgxMmtfaW5mbyhhYiwgXFxcInNpbXVsYXRpbmcgZmlybXdhcmUgYXNzZXJ0IGNyYXNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX2ZvcmNlX2Z3X2hhbmdfY21kKGFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcXHQucmVhZCA9IGF0aDEya19yZWFkX3NpbXVsYXRlX2Z3X2NyYXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAxOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc190cGNfc3RhdHNfdHlwZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgxMDpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVidWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dGRfcnhfc3RhdHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2V4dGRfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMDI1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEzOlxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTktXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjIwOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIyMS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEyMjU9dm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMjYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjc6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjg6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI2MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjY0LVxcdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTI2NTpcXHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0J3NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjY2LVxcdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMxNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzI0OlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzI1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzkxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE0NDU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfcGRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ1MjpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ1My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDYzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ2NDphdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ2NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4NC1cXHR3aXBoeV9sb2NrKHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDg1OlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UoYXIsIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NzpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5ODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0OTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE1MjA9dm9pZCBhdGgxMmtfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NTQtXFx0aWYgKGFyLVxcdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF81R0haXS5jaGFubmVscykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE1NTU6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGZzX3NpbXVsYXRlX3JhZGFyXFxcIiwgMDIwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU2LVxcdFxcdFxcdFxcdCAgICBhci1cXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTU3OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zaW11bGF0ZV9yYWRhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU1OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTY4LVxcdFxcdCAgICAgYXItXFx1MDAzZWFiLVxcdTAwM2V3bWlfYWIuc3ZjX21hcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTY5OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlXFxcIiwgMDIwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTcwLVxcdFxcdFxcdFxcdCAgICBhci1cXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTcxOlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9ODg0PWF0aDEya19odHRfcHJpbnRfaHdfc3RhdHNfd2hhbF90eF90bHYoY29uc3Qgdm9pZCAqdGFnX2J1ZiwgdTE2IHRhZ19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA0LVxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2Vod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImh3c2NoX2R1bW15X3Rsdl9za2lwcGVkID0gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNjpcXHRcXHRcXHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cXHUwMDNlaHdzY2hfZHVtbXlfdGx2X3NraXBwZWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA3LVxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTE1MzU9YXRoMTJrX2h0dF9wcmludF90eF9kZV9jb21wbF9zdGF0c190bHYoY29uc3Qgdm9pZCAqdGFnX2J1ZiwgdTE2IHRhZ19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU0Ni1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcIkhUVF9UWF9ERV9DT01QTF9TVEFUU19UTFY6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0NzpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRjbF9kdW1teV9mcmFtZSA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ4OlxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2V0Y2xfZHVtbXlfZnJhbWUpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0OTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRxbV9kdW1teV9mcmFtZSA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTUwOlxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2V0cW1fZHVtbXlfZnJhbWUpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU1MS1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRxbV9ub3RpZnlfZnJhbWUgPSAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MTY1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0c190eXBlKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYxODA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MTgxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MjI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfaHR0X3N0YXRzX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyNy1cXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3R5cGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYyMjg6XFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyOS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MzUxPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYwLVxcdGxlbmd0aCA9IG1pbl90KHUzMiwgc3RhdHNfcmVxLVxcdTAwM2VidWZfbGVuLCBBVEgxMktfSFRUX1NUQVRTX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjM2MTpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYzNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTY0MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfcmVzZXQgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTY0MjctXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2h0dF9zdGF0c19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjQyODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTc1ND1zdHJ1Y3QgYXRoMTJrX2h0dF9od19zdGF0c193aGFsX3R4X3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtNzU3LVxcdF9fbGUzMiBod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDo3NTg6XFx0X19sZTMyIGh3c2NoX2R1bW15X3Rsdl9za2lwcGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC03NTktXFx0X19sZTMyIGh3c2NoX21pc2FsaWduZWRfb2Zmc2V0X3JlY2VpdmVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTk3OD1zdHJ1Y3QgYXRoMTJrX2h0dF90eF9kZV9jb21wbF9zdGF0c190bHYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDo5Nzk6XFx0X19sZTMyIHRjbF9kdW1teV9mcmFtZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6OTgwOlxcdF9fbGUzMiB0cW1fZHVtbXlfZnJhbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTk4MS1cXHRfX2xlMzIgdHFtX25vdGlmeV9mcmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0xMzk9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDEtXFx0aWYgKGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQyOlxcdFxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yNDY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yeF9zdGF0cyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQ3LVxcdC5yZWFkID0gYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQ4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0OS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZXNldF9yeF9zdGF0cyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk3LVxcdC53cml0ZSA9IGF0aDEya19kYmdfc3RhX3Jlc2V0X3J4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyOTg6XFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmM9NTM2PWludCBhdGgxMmtfZHBfbGlua19wZWVyX2Fzc2lnbihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy01OTktXFx0XFx0ICogSWYgb2xkIGVudHJ5IGFkZGl0aW9uIGFsc28gZmFpbHMsIHRoZW4gbm90aGluZ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jOjYwMDpcXHRcXHQgKiBjYW4gYmUgZG9uZSwgc2ltcGx5IHByb2NlZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy02MDEtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jPTU1OD1pbnQgYXRoMTJrX2h0Y19jb25uZWN0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19odGMgKmh0YyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTYzLVxcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjICpyZXFfbXNnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6NTY0OlxcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgcmVzcF9tc2dfZHVtbXk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo1NjU6XFx0c3RydWN0IGF0aDEya19odGNfY29ubl9zdmNfcmVzcCAqcmVzcF9tc2cgPSBcXHUwMDI2cmVzcF9tc2dfZHVtbXk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy01NjYtXFx0ZW51bSBhdGgxMmtfaHRjX2VwX2lkIGFzc2lnbmVkX2VpZCA9IEFUSDEyS19IVENfRVBfQ09VTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTU4MC1cXHRcXHRtYXhfbXNnX3NpemUgPSBBVEgxMktfSFRDX01BWF9DVFJMX01TR19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo1ODE6XFx0XFx0bWVtc2V0KFxcdTAwMjZyZXNwX21zZ19kdW1teSwgMCwgc2l6ZW9mKHJlc3BfbXNnX2R1bW15KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy01ODItXFx0XFx0Z290byBzZXR1cDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MjM4MD1zdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX3ZodChzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjI0MjI6XFx0LyogVE9ETzogc2ltaWxhciBmbGFncyByZXF1aXJlZD8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MjMtXFx0YXJnLVxcdTAwM2V2aHRfY2FwYWJsZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTEyNjI1PWludCBhdGgxMmtfbWFjX29wX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTI2MzMtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjEyNjM0OlxcdCAqIEhlbmNlIGltcGxlbWVudCBhIGR1bW15IGNhbGxiYWNrIGp1c3QgdG8gc2F5IGZyYWdtZW50YXRpb24gaXNuJ3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTEyNjM1LVxcdCAqIHN1cHBvcnRlZC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBtYWM4MDIxMSBmcm9tIGRvaW5nIGZyYW1lXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTUzOT1zdGF0aWMgaW50IGF0aDEya19wY2lfZXh0X2lycV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY1LVxcdFxcdGlycV9ncnAtXFx1MDAzZWdycF9pZCA9IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzo1NjY6XFx0XFx0aXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY3LVxcdFxcdGlmICghaXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1Mzg9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTYzOTpcXHQvKiBrZXJuZWwgbWF5IGFsbG9jYXRlIGEgZHVtbXkgdmVjdG9yIGJlZm9yZSByZXF1ZXN0X2lycSBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2NDAtXFx0ICogdGhlbiBhbGxvY2F0ZSBhIHJlYWwgdmVjdG9yIHdoZW4gcmVxdWVzdF9pcnEgaXMgY2FsbGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYz0yNjk9aW50IGF0aDEya19yZWdkX3VwZGF0ZShzdHJ1Y3QgYXRoMTJrICphciwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYzozMzg6XFx0LyogZmlybXdhcmUgcHJvdmlkZXMgcmVnIHJ1bGVzIHdoaWNoIGFyZSBzaW1pbGFyIGZvciAyIEdIeiBhbmQgNSBHSHpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzOS1cXHQgKiBwZGV2IGJ1dCA2IEdIeiBwZGV2IGhhcyBzdXBlcnNldCBvZiBhbGwgcnVsZXMgaW5jbHVkaW5nIHJ1bGVzIGZvclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ4Mz1hdGgxMmtfd21pX3NlbmRfdW5pdF90ZXN0X2NtZChzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDUzNjppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTUtXFx0ICogQ3VycmVudGx5IHdlIGNvdWxkIHBhc3Mgc2VnbWVudF9pZChiMCAtIGIxKSwgY2hpcnAoYjIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDU1NjpcXHQgKiBmcmVxIG9mZnNldCAoYjMgLSBiMTApIHRvIHVuaXQgdGVzdC4gRm9yIHNpbXVsYXRpb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTU3LVxcdCAqIHB1cnBvc2UgdGhpcyBjYW4gYmUgc2V0IHRvIDAgd2hpY2ggaXMgdmFsaWQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwNTcxPWludCBhdGgxMmtfd21pX3NlbmRfdHBjX3N0YXRzX3JlcXVlc3Qoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2Mzk6aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY0MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY2OC1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19XTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDY2OTpcXHRcXHQgICBcXFwiVHJpZ2dlcmluZyBpbmN1bWJlbnQgc2lnbmFsIGludGVyZmVyZW5jZSBzaW11bGF0aW9uLCBpbnRlcmZlcmVuY2UgYml0bWFwOiAweCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2NzAtXFx0XFx0ICAgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9MzY5Nz1lbnVtIHdtaV9zdGFfcHNfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM3MDktLyogdHlwZSwgMDp1bnVzZWQgMTogQVNTRVJUIDI6IG5vdCByZXNwb25kIGRldGVjdCBjb21tYW5kXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozNzEwOiAqIGRlbGF5X3RpbWVfbXMsIHRoZSBzaW11bGF0ZSB3aWxsIGRlbGF5IHRpbWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM3MTEtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTY2MDc9aW50IGF0aDEya193bWlfc2VuZF9wZGV2X3NldF9yZWdkb21haW4oc3RydWN0IGF0aDEyayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NjA4LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X3NldF9yZWdkb21haW5fYXJnICphcmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjYwOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NjEwLWludCBhdGgxMmtfd21pX3NlbmRfdHd0X2VuYWJsZV9jbWQoc3RydWN0IGF0aDEyayAqYXIsIHUzMiBwZGV2X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjcyMD1pbnQgYXRoMTJrX3dtaV9zZW5kX21sb19saW5rX3NldF9hY3RpdmVfY21kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NzIxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgd21pX21sb19saW5rX3NldF9hY3RpdmVfYXJnICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NzIyOmludCBhdGgxMmtfd21pX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjcyMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6NTguNTc0NTk3NzU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NTAyODUyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBhdGgxMmsgUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgYGF0aDEya2AuIFdhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggY2FtZSBmcm9tIGBzeXotY2x1c3RlcmAsIHdoaWNoIG1lYW5zIHN5emthbGxlciBmb3VuZCAqc29tZXRoaW5nKiEgRWl0aGVyIGEgYnVnIG9yIGEgdGVzdC4gIEkga25vdyBzeXprYWxsZXIgKmNhbiogZnV6eiBgYXRoMTJrYCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBgQ09ORklHX1BDSWAgYW5kIGBDT05GSUdfQVRIMTJLYCwgdXNpbmcgYHN5el9wY2lkZXZgIG9yIGBzeXpfdXNiZGV2YC4gQnV0IGhvbGQgb24sIGBhdGgxMmtgIHVzZXMgTUhJLi4uZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBNSEkgZW11bGF0b3I/IE5vLCBpdCBkb2Vzbid0LiBIb3dldmVyLCBpdCAqY291bGQqIGluamVjdCBtYWM4MDIxMSBmcmFtZXMgb3IgaW50ZXJhY3Qgd2l0aCBtYWM4MDIxMSB2aWEgYG1hYzgwMjExX2h3c2ltYC4gXG5cbkJ1dCBpZiBgYXRoMTJrYCBpcyB1bnJlYWNoYWJsZSwgd2h5IGRpZCBzeXprYWxsZXIgZXZlbiBhcHBseSB0aGlzIHBhdGNoPyBBaCwgcmlnaHQuIE15IGpvYiBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IG5lZWQgZnV6emluZywgc3BlY2lmaWNhbGx5IGlmIGl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiBpdCdzIGltcG9zc2libGUgdG8gcmVhY2gsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHJlYWNoYWJpbGl0eS4gSXMgdGhlcmUgYW55IHZpcnR1YWwgYGF0aDEya2AgaGFyZHdhcmUgaW4gUUVNVT8gTm9wZS4gQ2FuIEkgZ2V0IHRvIGl0IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBhIHNlcGFyYXRlIGRyaXZlci4gIE9rYXksIHdoYXQgYWJvdXQgYHN5el9wY2lkZXZgP1xuXG5TeXprYWxsZXIncyBgc3l6X3BjaWRldmAgKmNvdWxkKiB0cmlnZ2VyIGBhdGgxMmtfcGNpX3Byb2JlYC4gIEJ1dCwgYGF0aDEya19wY2lfcHJvYmVgIGNhbGxzIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCwgd2hpY2ggd2FpdHMgZm9yIHRoZSBNSEkgZGV2aWNlIHRvIGJvb3QuIFdpdGhvdXQgYSByZWFsIE1ISSBkZXZpY2Ugb3IgYW4gZW11bGF0b3IuLi4gaXQnbGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd29uJ3QgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMS4gIFNvIGV2ZW4gd2l0aCB0aGUgUENJIHByb2JlLCBpdCdzIG5vdCBnb2luZyB0byBnZXQgcGFzdCB0aGF0IE1ISSByZWdpc3RyYXRpb24gc3RlcC4gSSBzaG91bGQgY2hlY2sgYGF0aDEya19taGlfcmVnaXN0ZXJgIHRvIGNvbmZpcm0gdGhpcyBiZWhhdmlvci4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMsIGFuZCB0aGUgZmFjdCB0aGF0IHRoZSBNSEkgZGV2aWNlIGlzIHRoZSBjcml0aWNhbCBibG9ja2VyIHRvIHRoZSBjb2RlIHBhdGgsIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhdGNoIHNlcmllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MDcuMjI0ODg2MzA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTcyNDg3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21oaV9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTE4MD1zdGF0aWMgdm9pZCBhdGgxMmtfbWhpX29wX3dyaXRlX3JlZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MTg3OmludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0xODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaD0zNT12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmg6MzY6aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFyX3BjaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaC0zNy12b2lkIGF0aDEya19taGlfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUzOD1zdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNjE1OlxcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MTYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDowNy40ODIxNDAxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU5OTI4MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgYXRoMTJrIGRyaXZlciBhbmQgdGhlIE1ISSBpbnRlcmZhY2UuIElzIGl0IHJlZ2lzdGVyaW5nIHNvbWV0aGluZywgbGlrZWx5IGEgZGV2aWNlIG9yIHJlc291cmNlLCB3aXRoIHRoZSBNSEkgc3Vic3lzdGVtPyBQZXJoYXBzIGl0J3MgaW5pdGlhbGl6aW5nIE1ISS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9yIHNldHRpbmcgdXAgY29tbXVuaWNhdGlvbiBjaGFubmVscy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdy4gSSdtIGFzc3VtaW5nIGl0J3MgcmVsYXRlZCB0byB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGhvc3QgZHJpdmVyIChhdGgxMmspIGFuZCB0aGUgTUhJIGZpcm13YXJlIG9uIHRoZSBRdWFsY29tbSBjaGlwLiBLbm93aW5nIHRoZSBmbG93IGZyb20gcmVnaXN0ZXIgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBiZSBpbXBvcnRhbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0NTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxMi4xNDIxMjU1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODcsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTg3OlxcdGludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXFxuIDE4ODpcXHR7XFxuIDE4OTpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gYWJfcGNpLVxcdTAwM2VhYjtcXG4gMTkwOlxcdFxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2N0cmw7XFxuIDE5MTpcXHRcXHR1bnNpZ25lZCBpbnQgYm9hcmRfaWQ7XFxuIDE5MjpcXHRcXHRpbnQgcmV0O1xcbiAxOTM6XFx0XFx0Ym9vbCBkdWFsbWFjID0gZmFsc2U7XFxuIDE5NDpcXHRcXG4gMTk1OlxcdFxcdG1oaV9jdHJsID0gbWhpX2FsbG9jX2NvbnRyb2xsZXIoKTtcXG4gMTk2OlxcdFxcdGlmICghbWhpX2N0cmwpXFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTk4OlxcdFxcbiAxOTk6XFx0XFx0YWJfcGNpLVxcdTAwM2VtaGlfcHJlX2NiID0gTUhJX0NCX0lOVkFMSUQ7XFxuIDIwMDpcXHRcXHRhYl9wY2ktXFx1MDAzZW1oaV9jdHJsID0gbWhpX2N0cmw7XFxuIDIwMTpcXHRcXHRtaGlfY3RybC1cXHUwMDNlY250cmxfZGV2ID0gYWItXFx1MDAzZWRldjtcXG4gMjAyOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VyZWdzID0gYWItXFx1MDAzZW1lbTtcXG4gMjAzOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VyZWdfbGVuID0gYWItXFx1MDAzZW1lbV9sZW47XFxuIDIwNDpcXHRcXHRtaGlfY3RybC1cXHUwMDNlcmRkbV9zaXplID0gYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlcmRkbV9zaXplO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHRpZiAoYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKSB7XFxuIDIwNzpcXHRcXHRcXHRib2FyZF9pZCA9XFxuIDIwODpcXHRcXHRcXHRcXHRhdGgxMmtfcGNpX3JlYWQzMihhYiwgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKTtcXG4gMjA5OlxcdFxcdFxcdGJvYXJkX2lkID0gdTMyX2dldF9iaXRzKGJvYXJkX2lkLCBPVFBfQk9BUkRfSURfTUFTSyk7XFxuIDIxMDpcXHRcXG4gMjExOlxcdFxcdFxcdGlmICghYm9hcmRfaWQgfHwgKGJvYXJkX2lkID09IE9UUF9JTlZBTElEX0JPQVJEX0lEKSkge1xcbiAyMTI6XFx0XFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULFxcbiAyMTM6XFx0XFx0XFx0XFx0XFx0ICAgXFxcImZhaWxlZCB0byByZWFkIGJvYXJkIGlkXFxcXG5cXFwiKTtcXG4gMjE0OlxcdFxcdFxcdH0gZWxzZSBpZiAoYm9hcmRfaWQgXFx1MDAyNiBPVFBfVkFMSURfRFVBTE1BQ19CT0FSRF9JRF9NQVNLKSB7XFxuIDIxNTpcXHRcXHRcXHRcXHRkdWFsbWFjID0gdHJ1ZTtcXG4gMjE2OlxcdFxcdFxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG4gMjE3OlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJkdWFsbWFjIGZ3IHNlbGVjdGVkIGZvciBib2FyZCBpZDogJXhcXFxcblxcXCIsIGJvYXJkX2lkKTtcXG4gMjE4OlxcdFxcdFxcdH1cXG4gMjE5OlxcdFxcdH1cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0aWYgKGR1YWxtYWMpIHtcXG4gMjIyOlxcdFxcdFxcdGlmIChhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGEgXFx1MDAyNlxcdTAwMjYgYWItXFx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW4gXFx1MDAzZSAwKSB7XFxuIDIyMzpcXHRcXHRcXHRcXHQvKiB1c2UgTUhJIGZpcm13YXJlIGZpbGUgZnJvbSBmaXJtd2FyZS1OLmJpbiAqL1xcbiAyMjQ6XFx0XFx0XFx0XFx0bWhpX2N0cmwtXFx1MDAzZWZ3X2RhdGEgPSBhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGE7XFxuIDIyNTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfc3ogPSBhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2xlbjtcXG4gMjI2OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDIyNzpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImR1YWxtYWMgZmlybXdhcmUgSUUgbm90IHByZXNlbnQgaW4gZmlybXdhcmUtTi5iaW5cXFxcblxcXCIpO1xcbiAyMjg6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT0VOVDtcXG4gMjI5OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9jb250cm9sbGVyO1xcbiAyMzA6XFx0XFx0XFx0fVxcbiAyMzE6XFx0XFx0fSBlbHNlIHtcXG4gMjMyOlxcdFxcdFxcdGlmIChhYi1cXHUwMDNlZncuYW1zc19kYXRhIFxcdTAwMjZcXHUwMDI2IGFiLVxcdTAwM2Vmdy5hbXNzX2xlbiBcXHUwMDNlIDApIHtcXG4gMjMzOlxcdFxcdFxcdFxcdC8qIHVzZSBNSEkgZmlybXdhcmUgZmlsZSBmcm9tIGZpcm13YXJlLU4uYmluICovXFxuIDIzNDpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfZGF0YSA9IGFiLVxcdTAwM2Vmdy5hbXNzX2RhdGE7XFxuIDIzNTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfc3ogPSBhYi1cXHUwMDNlZncuYW1zc19sZW47XFxuIDIzNjpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyMzc6XFx0XFx0XFx0XFx0LyogdXNlIHRoZSBvbGQgc2VwYXJhdGUgbWhpLmJpbiBNSEkgZmlybXdhcmUgZmlsZSAqL1xcbiAyMzg6XFx0XFx0XFx0XFx0YXRoMTJrX2NvcmVfY3JlYXRlX2Zpcm13YXJlX3BhdGgoYWIsIEFUSDEyS19BTVNTX0ZJTEUsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgYWJfcGNpLVxcdTAwM2VhbXNzX3BhdGgsXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKGFiX3BjaS1cXHUwMDNlYW1zc19wYXRoKSk7XFxuIDI0MTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfaW1hZ2UgPSBhYl9wY2ktXFx1MDAzZWFtc3NfcGF0aDtcXG4gMjQyOlxcdFxcdFxcdH1cXG4gMjQzOlxcdFxcdH1cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0cmV0ID0gYXRoMTJrX21oaV9nZXRfbXNpKGFiX3BjaSk7XFxuIDI0NjpcXHRcXHRpZiAocmV0KSB7XFxuIDI0NzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBtc2kgZm9yIG1oaVxcXFxuXFxcIik7XFxuIDI0ODpcXHRcXHRcXHRnb3RvIGZyZWVfY29udHJvbGxlcjtcXG4gMjQ5OlxcdFxcdH1cXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0aWYgKCF0ZXN0X2JpdChBVEgxMktfUENJX0ZMQUdfTVVMVElfTVNJX1ZFQ1RPUlMsIFxcdTAwMjZhYl9wY2ktXFx1MDAzZWZsYWdzKSlcXG4gMjUyOlxcdFxcdFxcdG1oaV9jdHJsLVxcdTAwM2VpcnFfZmxhZ3MgPSBJUlFGX1NIQVJFRCB8IElSUUZfTk9CQUxBTkNJTkc7XFxuIDI1MzpcXHRcXG4gMjU0OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2Vpb3ZhX3N0YXJ0ID0gMDtcXG4gMjU1OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2Vpb3ZhX3N0b3AgPSBhYl9wY2ktXFx1MDAzZWRtYV9tYXNrO1xcbiAyNTY6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXNibF9zaXplID0gU1pfNTEySztcXG4gMjU3OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VzZWdfbGVuID0gU1pfNTEySztcXG4gMjU4OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VmYmNfZG93bmxvYWQgPSB0cnVlO1xcbiAyNTk6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXJ1bnRpbWVfZ2V0ID0gYXRoMTJrX21oaV9vcF9ydW50aW1lX2dldDtcXG4gMjYwOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VydW50aW1lX3B1dCA9IGF0aDEya19taGlfb3BfcnVudGltZV9wdXQ7XFxuIDI2MTpcXHRcXHRtaGlfY3RybC1cXHUwMDNlc3RhdHVzX2NiID0gYXRoMTJrX21oaV9vcF9zdGF0dXNfY2I7XFxuIDI2MjpcXHRcXHRtaGlfY3RybC1cXHUwMDNlcmVhZF9yZWcgPSBhdGgxMmtfbWhpX29wX3JlYWRfcmVnO1xcbiAyNjM6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXdyaXRlX3JlZyA9IGF0aDEya19taGlfb3Bfd3JpdGVfcmVnO1xcbiAyNjQ6XFx0XFxuIDI2NTpcXHRcXHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWhpX2NvbmZpZyk7XFxuIDI2NjpcXHRcXHRpZiAocmV0KSB7XFxuIDI2NzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHRvIG1oaSBidXMsIGVyciA9ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAyNjg6XFx0XFx0XFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XFxuIDI2OTpcXHRcXHR9XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdHJldHVybiAwO1xcbiAyNzI6XFx0XFxuIDI3MzpcXHRmcmVlX2NvbnRyb2xsZXI6XFxuIDI3NDpcXHRcXHRtaGlfZnJlZV9jb250cm9sbGVyKG1oaV9jdHJsKTtcXG4gMjc1OlxcdFxcdGFiX3BjaS1cXHUwMDNlbWhpX2N0cmwgPSBOVUxMO1xcbiAyNzY6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjc3OlxcdH1cXG4gMjc4OlxcdFxcbiAyNzk6XFx0dm9pZCBhdGgxMmtfbWhpX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG4gMjgwOlxcdHtcXG4gMjgxOlxcdFxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2N0cmwgPSBhYl9wY2ktXFx1MDAzZW1oaV9jdHJsO1xcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHRtaGlfdW5yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsKTtcXG4gMjg0OlxcdFxcdGtmcmVlKG1oaV9jdHJsLVxcdTAwM2VpcnEpO1xcbiAyODU6XFx0XFx0bWhpX2ZyZWVfY29udHJvbGxlcihtaGlfY3RybCk7XFxuIDI4NjpcXHRcXHRhYl9wY2ktXFx1MDAzZW1oaV9jdHJsID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTIuMTQyMzk3MzI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODYyMzY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNvbnRyb2xsZXIgSW5pdGlhbGl6YXRpb24gQ29udW5kcnVtKipcblxuUmlnaHQsIHNvIGBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcmAgcmVnaXN0ZXJzIHRoZSBjb250cm9sbGVyLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIG9uIHRoZSBzdXJmYWNlLiBCdXQgaG9sZCBvbiwgdGhlIHJlZ2lzdHJhdGlvbiBpcyBqdXN0IHRoZSBmaXJzdCBzdGVwLiBEb2VzIHRoaXMgcmVnaXN0cmF0aW9uIGFjdHVhbGx5ICpraWNrIG9mZiogdGhlIGZpcm13YXJlIGRvd25sb2FkPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGlzbid0IGl0P1xuXG5HZW5lcmFsbHksIEknZCBleHBlY3QgdGhhdCB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHRyaWdnZXJlZCBieSBlaXRoZXIgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgb3IgYG1oaV9zeW5jX3Bvd2VyX3VwYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgaW4gbWFuYWdpbmcgdGhlIHBvd2VyLXVwIGFuZCBkb3dubG9hZCBwcm9jZXNzLiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBhY3R1YWxseSAqY2FsbGVkKiBpbiB0aGUgY29kZS4gVHJhY2luZyB0aGF0IGNhbGwgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgcG93ZXItdXAgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBoYW5kbGVkIGluIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbmZpcm0gd2hldGhlciB0aGUgZG93bmxvYWQgaXMga2lja2VkIG9mZiBleHBsaWNpdGx5LCBvciBpbXBsaWNpdGx5LiBUaGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTg3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxNi4xMjg2Mzc2MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MjgzMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9zeW5jX3Bvd2VyX3VwfG1oaV9hc3luY19wb3dlcl91cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQwNj1zdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcXHRcXHRyZXQgPSBtaGlfc3luY19wb3dlcl91cChhYl9wY2ktXFx1MDAzZW1oaV9jdHJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTYuMzM1OTI3MDg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjc5OTEzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXJzIG9mIGBhdGgxMmtfbWhpX3NldF9zdGF0ZWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYGF0aDEya19taGlfc2V0X3N0YXRlYC4gTXkgaW5pdGlhbCBtb3ZlIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIHRoaXMgb25lLiBUaGlzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGhvdyBpdOKAmXMgdXNlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIE1ISSAoTXVsdGktSG9zdCBJbnRlcmZhY2UpIGRyaXZlciBjb250ZXh0LiBJIHN1c3BlY3QgdGhpcyBmdW5jdGlvbiBsaWtlbHkgbWFuYWdlcyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMgb2Ygc29tZSBwYXJ0IG9mIHRoZSBNSEkgc3Vic3lzdGVtIOKAkyBwZXJoYXBzIHBvd2VyIG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBvciBlcnJvciByZWNvdmVyeS4gVW5jb3ZlcmluZyB0aGUgY2FsbCBncmFwaCBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGNvbmZpcm1pbmcgdGhhdCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlcnMuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTkuNjYzOTIyMTM2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAwMzA1NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21oaV9zZXRfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0yODk9c3RhdGljIGNoYXIgKmF0aDEya19taGlfc3RhdGVfdG9fc3RyKGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjMxNzpzdGF0aWMgdm9pZCBhdGgxMmtfbWhpX3NldF9zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTMxOC1cXHRcXHRcXHRcXHQgICAgIGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTM1Nj1zdGF0aWMgaW50IGF0aDEya19taGlfY2hlY2tfc3RhdGVfYml0KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQwNjpzdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MDctXFx0XFx0XFx0XFx0ZW51bSBhdGgxMmtfbWhpX3N0YXRlIG1oaV9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDcyOlxcdGF0aDEya19taGlfc2V0X3N0YXRlX2JpdChhYl9wY2ksIG1oaV9zdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQ4Mj1pbnQgYXRoMTJrX21oaV9zdGFydChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo0ODg6XFx0cmV0ID0gYXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX0lOSVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDg5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQ5MjpcXHRyZXQgPSBhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT04pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUwMj12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLCBib29sIGlzX3N1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUwOC1cXHRpZiAoaXNfc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUwOTpcXHRcXHRhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT0ZGX0tFRVBfREVWKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxMC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTE6XFx0XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1BPV0VSX09GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTM6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX0RFSU5JVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz01MTY9dm9pZCBhdGgxMmtfbWhpX3N1c3BlbmQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTg6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1NVU1BFTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTE5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NTIxPXZvaWQgYXRoMTJrX21oaV9yZXN1bWUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MjM6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1JFU1VNRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MjQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxOS45MjM5NTg1MDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NDcxMTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIHRoZSBhdGgxMmsgRHJpdmVyIFBvd2VyLVVwIFNlcXVlbmNlKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGVyZSwgc3BlY2lmaWNhbGx5IGl0cyBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHMuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBhdGgxMmtfbWhpX3N0YXJ0YCBmdW5jdGlvbiBpcyAqY3J1Y2lhbCogaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBhbmQgSSdtIG5vdGluZyBpdHMgY2FsbCBzdGFjay4gSXQncyBpbnZva2VkIGRpcmVjdGx5IGZyb20gYGF0aDEya19wY2lfcG93ZXJfdXBgLiBOb3csIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGludGltYXRlbHkgbGlua2VkIHRvIHRoZSBQQ0kgYnVzIGFuZCB0aGUgZGV2aWNlJ3MgcG93ZXIgc3RhdGUuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgYGF0aDEya19taGlfc3RhcnRgIG11c3QgYmUgZXN0YWJsaXNoaW5nIHRoZSBmdW5kYW1lbnRhbCBNSEkgKE11bHRpLUZ1bmN0aW9uIEhhcmR3YXJlIEludGVyZmFjZSkgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdpdGggdGhlIFF1YWxjb21tIGRldmljZS5cblxuVGhlcmVmb3JlLCB0aGlzIGNvbmZpcm1zIHRoYXQgdGhlIFBDSSBwb3dlci11cCBmbG93IGlzIGRpcmVjdGx5IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIGxpbmsgdG8gdGhlIFF1YWxjb21tIGNoaXBzZXQsIGFuZCBgYXRoMTJrX21oaV9zdGFydGAgaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0aGUgbG93LWxldmVsIGNvbW11bmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJJ2Qgc3VzcGVjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGluZ3MgbGlrZSB0aGUgTUhJIGVuZHBvaW50IGRpc2NvdmVyeSwgY2xvY2sgY29uZmlndXJhdGlvbiwgYW5kIHBvc3NpYmx5IGV2ZW4gdGhlIGluaXRpYWwgZmlybXdhcmUgZG93bmxvYWQgaWYgaXQncyBub3QgaGFuZGxlZCBlbHNld2hlcmUuIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGRyaXZlcidzIGNvbnRyb2wgaXMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgaGFyZHdhcmUgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgYXRoMTJrX21oaV9zdGFydGAgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBpdCBlc3RhYmxpc2hlcyB0aGlzIGNvbm5lY3Rpb24gYW5kIGVuc3VyZSB0aGF0IGl0J3MgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9yIHNjZW5hcmlvcyBncmFjZWZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY2MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjIzLjg3ODY3MTY5M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NDUwNjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19wY2lfcG93ZXJfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xMzI2PXN0YXRpYyB2b2lkIGF0aDEya19wY2lfY29yZWR1bXBfZG93bmxvYWQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0Mzg6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDk4LVxcdC5wb3dlcl9kb3duID0gYXRoMTJrX3BjaV9wb3dlcl9kb3duLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTQ5OTpcXHQucG93ZXJfdXAgPSBhdGgxMmtfcGNpX3Bvd2VyX3VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwMC1cXHQuc3VzcGVuZCA9IGF0aDEya19wY2lfaGlmX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3ND1pbnQgYXRoMTJrX3BjaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjE3NTppbnQgYXRoMTJrX3BjaV9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3Ni12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoyNC4xNDcxMjg1MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4MDMzNjcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipUcmFjaW5nIHRoZSBhdGgxMmsgUENJIFBvd2VyLVVwIFNlcXVlbmNlKipcblxuT2theSwgc28gYGF0aDEya19wY2lfcG93ZXJfdXBgIGlzIGRlZmluZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQgaXMsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKmNhbGwgY2hhaW4qKi4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHBvd2VyLCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgaGlmX29wcy1cdTAwM2Vwb3dlcl91cGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGUuIEknbGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgcmVmZXJlbmNlcywgdGhlIHBsYWNlcyB0aGF0IGFjdHVhbGx5ICp1c2UqIHRoYXQgcGFydGljdWxhciBtZW1iZXIgb2YgdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBncmVwLCBvciBteSBJREUncyBzZWFyY2ggZnVuY3Rpb24uIEknbGwgZm9jdXMgb24gdGhlIHBsYWNlcyB3aGVyZSBgaGlmX29wc2AgaXMgdXNlZCwgYW5kIGxvb2sgZm9yIGEgZGlyZWN0IGNhbGwgb3IgaW5kaXJlY3QgY2FsbCB0byB0aGUgYHBvd2VyX3VwYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBjb250YWluZWQgcGllY2Ugb2YgdGhlIGRyaXZlciwgc28gZmluZGluZyBpdCBzaG91bGRuJ3QgYmUgdG9vIGNvbXBsZXguIExldCdzIHNlZS4uLiB0aGUgYGhpZl9vcHNgIHN0cnVjdCBpdHNlbGYgaXMgbGlrZWx5IGRlZmluZWQgaW4gdGhlIGRyaXZlcidzIGhlYWRlciBmaWxlcywgc28gSSBuZWVkIHRvIG5hdmlnYXRlIHRvIHRoYXQgbG9jYXRpb24gYW5kIGZpbmQgdGhlIHJlZmVyZW5jZSB0byB0aGUgYHBvd2VyX3VwYCBmdW5jdGlvbiBwb2ludGVyLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU3MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjMwLjUyNzQ2NzMzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTMxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvd2VyX3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzIzPXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMzM6c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfYWhiX2hpZl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTcxMi1cXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDEya19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjcxMzpcXHQucG93ZXJfdXAgPSBhdGgxMmtfYWhiX3Bvd2VyX3VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzE0LVxcdC5wb3dlcl9kb3duID0gYXRoMTJrX2FoYl9wb3dlcl9kb3duLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTgxPWludCBhdGgxMmtfY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE4OS1cXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YWItXFx1MDAzZXJlc3RhcnRfY29tcGxldGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxOTA6XFx0cmV0ID0gYXRoMTJrX2hpZl9wb3dlcl91cChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTkxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz04MTc9c3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODM0OlxcdHJldCA9IGF0aDEya19oaWZfcG93ZXJfdXAoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgzNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xNjgyPXN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTc2ODpcXHRcXHRhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNzY5LVxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcInJlc2V0IHN0YXJ0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzY5LVxcdHN0cnVjdCBhdGgxMmtfZndfc3RhdHMgZndfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NzcwOlxcdHVuc2lnbmVkIGxvbmcgbGFzdF90eF9wb3dlcl91cGRhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaD0xMj1zdHJ1Y3QgYXRoMTJrX2hpZl9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xOC1cXHR2b2lkICgqc3RvcCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxOTpcXHRpbnQgKCpwb3dlcl91cCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0yMC1cXHR2b2lkICgqcG93ZXJfZG93bikoc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfaGlmX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTEzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjEzNjpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xMzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg6MTM4OlxcdGlmICghYWItXFx1MDAzZWhpZi5vcHMtXFx1MDAzZXBvd2VyX3VwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTM5LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjE0MTpcXHRyZXR1cm4gYWItXFx1MDAzZWhpZi5vcHMtXFx1MDAzZXBvd2VyX3VwKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE0Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTU0Njc9aW50IGF0aDEya19tYWNfb3BfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTU1MDQtXFx0XFx0XFx0bXNlY3NfdG9famlmZmllcyhBVEgxMktfUERFVl9UWF9QT1dFUl9SRUZSRVNIX1RJTUVfTVNFQ1MpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjU1MDU6XFx0XFx0XFx0XFx0XFx0IGFyLVxcdTAwM2VsYXN0X3R4X3Bvd2VyX3VwZGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA2LVxcdFxcdGdvdG8gc2VuZF90eF9wb3dlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTUyNy1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1NTI4OlxcdGFyLVxcdTAwM2VsYXN0X3R4X3Bvd2VyX3VwZGF0ZSA9IGppZmZpZXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTI5LVxcdGF0aDEya19md19zdGF0c19yZXNldChhcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQwNj1zdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQyMC1cXHRjYXNlIEFUSDEyS19NSElfSU5JVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQyMTpcXHRcXHRyZXQgPSBtaGlfcHJlcGFyZV9mb3JfcG93ZXJfdXAoYWJfcGNpLVxcdTAwM2VtaGlfY3RybCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MjItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcXHRcXHRyZXQgPSBtaGlfc3luY19wb3dlcl91cChhYl9wY2ktXFx1MDAzZW1oaV9jdHJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTMyNj1zdGF0aWMgdm9pZCBhdGgxMmtfcGNpX2NvcmVkdW1wX2Rvd25sb2FkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNDM4OmludCBhdGgxMmtfcGNpX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19oaWZfb3BzIGF0aDEya19wY2lfaGlmX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQ5OC1cXHQucG93ZXJfZG93biA9IGF0aDEya19wY2lfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0OTk6XFx0LnBvd2VyX3VwID0gYXRoMTJrX3BjaV9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDAtXFx0LnN1c3BlbmQgPSBhdGgxMmtfcGNpX2hpZl9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNzQ9aW50IGF0aDEya19wY2lfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzU6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzYtdm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MzAuNzI4NDA4MDI5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1NTQ4MzI3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBQcm9iZSBGYWlsdXJlKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBicmVha2Rvd24gYXMgSSBzZWUgaXQuIFRoZSBgYXRoMTJrX3BjaV9wb3dlcl91cGAgZnVuY3Rpb24gaXMgdGhlIGluaXRpYWwgY3VscHJpdC4gSXQgY2FsbHMgYGF0aDEya19taGlfc3RhcnRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtaGlfcHJlcGFyZV9mb3JfcG93ZXJfdXBgIGFuZCB0aGVuIGBtaGlfc3luY19wb3dlcl91cGAuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIGlzIGBtaGlfc3luY19wb3dlcl91cGAuIEl0J3Mgd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byBzaWduYWwgdGhhdCBpdCBoYXMgZW50ZXJlZCB0aGUgQU1TUyBzdGF0ZSwgaW5kaWNhdGluZyB0aGUgZmlybXdhcmUgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIGlzIHJ1bm5pbmcuIElmIHRoYXQgc2lnbmFsIGRvZXNuJ3QgY29tZSwgYG1oaV9zeW5jX3Bvd2VyX3VwYCB0aW1lcyBvdXQgYW5kIGZhaWxzLlxuXG5UaGF0IHRpbWVvdXQgY2F1c2VzIGEgY2FzY2FkZSBvZiBmYWlsdXJlcy4gYGF0aDEya19wY2lfcG93ZXJfdXBgIGZhaWxzLCBgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZWAgZmFpbHMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgZHJpdmVyIHByb2JlIGZhaWxzLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHdpdGhvdXQgYSByZWFsIFF1YWxjb21tIFdpLUZpIGRldmljZSBvciBhbiBleHRyZW1lbHkgc29waGlzdGljYXRlZCBlbXVsYXRvciB0aGF0IGNhbiBwZXJmZWN0bHkgbWltaWMgdGhlIE1ISSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCB0aGVyZSdzIG5vIHdheSBgYXRoMTJrYCBjYW4gYmUgcHJvYmVkIHN1Y2Nlc3NmdWxseS5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyByYWNpbmcuIEkgcmVtZW1iZXIgc3l6a2FsbGVyJ3MgYHN5el9wY2lkZXZgIGZ1bmN0aW9uIHRoYXQgc2ltdWxhdGVzIFBDSSBkZXZpY2VzLiBCdXQgZG9lcyBpdCBzaW11bGF0ZSBNSEk/IE5vLCBpdCdzIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLiBJdCByZXR1cm5zIHJhbmRvbSBieXRlcyBmb3IgTU1JTyByZWFkcy4gU3VyZSwgaWYgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBqdXN0IHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMgYml0IHRvIGJlIHNldCBpbiBhIHJlZ2lzdGVyLCB0aGUgZnV6emVyIG1pZ2h0IGV2ZW50dWFsbHkgcmV0dXJuIHRoZSByaWdodCB2YWx1ZSBieSBjaGFuY2UuIEhvd2V2ZXIsIHRoZSBNSEkgcHJvdG9jb2wgaXMgZmFyIG1vcmUgY29tcGxleC4gVGhlIGhvc3Qgd3JpdGVzIHRvIEJISSByZWdpc3RlcnMsIHRoZSBkZXZpY2UgaXMgc3VwcG9zZWQgdG8gRE1BIHRoZSBmaXJtd2FyZSBmcm9tIGhvc3QgbWVtb3J5LCBhbmQgdGhlbiB0aGUgZGV2aWNlIHVwZGF0ZXMgYSBzdGF0ZSByZWdpc3Rlci4gQSBnZW5lcmljIGZ1enplciBoYXMgemVybyBjaGFuY2Ugb2YgZnVsZmlsbGluZyB0aGlzIHByb3RvY29sIGJ5IGx1Y2suXG5cblRoaXMgbWVhbnMgdGhhdCBgYXRoMTJrYCdzIHByb2JlIHdpbGwgKmFsd2F5cyogZmFpbCBpbiBhIHN5emthbGxlciBlbnZpcm9ubWVudCwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNyaXRpY2FsIGBtYWM4MDIxMWAgY2FsbGJhY2tzLCBsaWtlIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAsIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24uXG5cbkJ1dCB3YWl0LCBpZiB0aGUgcHJvYmUgaXMgZGVzdGluZWQgdG8gZmFpbCwgd2h5IGRpZCBzeXprYWxsZXIgYXBwbHkgKnRoYXQqIHBhdGNoIGluIHRoZSBmaXJzdCBwbGFjZT8gSSBrbm93IHN5emthbGxlciBhcHBsaWVzIHBhdGNoZXMgYXV0b21hdGljYWxseSBpZiB0aGV5IGFyZSBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3Qgd2l0aCB0aGUgc3l6Ym90IENDJ2QsIG9yIGlmIGl0J3MgZml4aW5nIGEgYnVnIHRoYXQgc3l6Ym90IGhhcyBhbHJlYWR5IGZvdW5kLlxuXG5UaGF0IGxlYWRzIG1lIHRvIGEgY3JpdGljYWwgcG9pbnQ6IHN5emJvdCAqZG9lcyogZmluZCBidWdzIGluIGBhdGgxMmtgISBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB0aG91Z2ggaXQgY2FuJ3QgZnVsbHkgcHJvYmUsIGl0J3Mgc3RpbGwgZXhlcmNpc2luZyAqc29tZSogY29kZSBwYXRocywgZW5vdWdoIHRvIHRyaWdnZXIgdGhvc2UgYnVncy4gU28sIGxldCBtZSBzZWFyY2ggZm9yIHN5emJvdCByZXBvcnRzIG9uIGJ1Z3MgaW4gYGF0aDEya2AuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ2V0dGluZyBoaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzA0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjQwLjI4MzI0NDgwNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyOTgwODA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSZXBvcnRlZC1ieTogc3l6Ym90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDo0MC40OTYyMzg4NTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3MTEyOTU2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlIGZvciB0aGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBgYXRoMTJrYCBwYXRjaCBhbmQgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgKm1heWJlKiBgc3l6Ym90YCBqdXN0IG1pc3NlZCBzb21lIGJ1Z3MsIGJ1dCB0aGUgcHJvbXB0J3MgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEFuZCBgYXRoMTJrYCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciDigJMgaXQncyBhbGwgYWJvdXQgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBObyBzb2Z0d2FyZSBlbXVsYXRpb24sIGFuZCBpdCByZWxpZXMgb24gdGhhdCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdGhyb3VnaCBNSEkuXG5cblNvLCBmaXJzdCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgaWYgdGhlcmUgd2FzIHNvbWUgaGlkZGVuIGBod3NpbWAgb3IgYGR1bW15YCBtb2RlIGJ1cmllZCBpbiB0aGUgY29kZS4gSSBzZWFyY2hlZCBmb3IgXCJod3NpbXxzaW18ZHVtbXlcIiBhbmQgZm91bmQgYSBmZXcgZGVidWdmcyBjb21tYW5kcyBsaWtlIGBzaW11bGF0ZV9md19jcmFzaGAgYW5kIG90aGVycyByZWxhdGVkIHRvIGVtdWxhdGluZyBpbnRlcmZlcmVuY2UgYW5kIHJhZGFyLCBidXQgdGhvc2UgKnN0aWxsKiBuZWVkIHRoZSBmaXJtd2FyZSBydW5uaW5nLiBUaGVuIEkgZm91bmQgYW4gYGFsbG9jX25ldGRldl9kdW1teSgwKWAgY2FsbCBpbiBgYXRoMTJrX2FoYl9jb25maWdfZXh0X2lycWAgYW5kIGBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnYCwgYnV0IHRoYXQncyBqdXN0IGZvciBOQVBJLiBOb3RoaW5nIHRoYXQgY291bGQgYWxsb3cgaXQgdG8gcnVuIHdpdGhvdXQgdGhlIGhhcmR3YXJlLiBCb3R0b20gbGluZSwgdGhlcmUncyBubyBgaHdzaW1gIGZvciBgYXRoMTJrYC5cblxuVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBgZHBfcGVlci5jYCwgYW5kIHNvIG9uLCB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmUgKmRlZmluaXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgd2FpdCBhIHNlYywgaXMgdGhlcmUgKmFueSogd2F5IHRvIGdldCBgYXRoMTJrYCBmdXp6ZWQgKnRocm91Z2gqIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IEJ1dCBubywgYG1hYzgwMjExX2h3c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLiBJdCdzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jYCBhbmQgc2ltdWxhdGVzIGEgV2ktRmkgZGV2aWNlIGF0IHRoZSBtYWM4MDIxMSBsYXllci4gSXQgZG9lc24ndCB1c2UgKmFueSogYGF0aDEya2AgY29kZS5cblxuV2hhdCBhYm91dCBgbmw4MDIxMWAgdGVzdG1vZGU/IE5vLCB0aG9zZSBjb21tYW5kcyBhcmUgaGFuZGxlZCBieSBgYXRoMTJrX3Rlc3Rtb2RlX2NtZGAsIGJ1dCB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIHByb2JlZCBhbmQgdGhlIGRldmljZSBwcmVzZW50LlxuXG5TbywgeWVhaCwgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5MZXQncyByZXZpZXcgdGhlIHByb21wdCB0byBtYWtlIHN1cmU6IFllcCwgdGhlIHByb21wdCBzYXlzIFwicmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3MgYGF0aDEya2AgdG8gYSBULlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNvbmZpcm0gaWYgdGhlcmUgaXMgYW55IGBDT05GSUdfQVRIMTJLX1NJTWAgb3Igc2ltaWxhciBpbiB0aGUgS2NvbmZpZy5cblxuSSBhbSBjb25maWRlbnQsIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgYW5kIHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIHRoZSBmaXJtd2FyZSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQ4NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDo1Ni4yMDc1Mzc2NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzIzMDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gYXRoMTJrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMtYXRoMTJrLXkgKz0gY29yZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgKz0gYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gd2lmaTcvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzAtYXRoMTJrLSQoQ09ORklHX0FDUEkpICs9IGFjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zMi1hdGgxMmstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNC1hdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzQxLVxcdHUzMiBjYWNoZWRfcHBkdV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo3NDI6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc0My1cXHRzdHJ1Y3QgYXRoMTJrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9OTU3PXN0cnVjdCBhdGgxMmtfYmFzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMDU1LVxcdGVudW0gYXRoMTJrX2Rmc19yZWdpb24gZGZzX3JlZ2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDoxMDU2OiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMDU3LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc29jO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlZHVtcC5oPTM3PXN0cnVjdCBhdGgxMmtfZHVtcF9maWxlX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlZHVtcC5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaDo2MDojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaC02MS1lbnVtIGF0aDEya19md19jcmFzaF9kdW1wX3R5cGUgYXRoMTJrX2NvcmVkdW1wX2dldF9kdW1wX3R5cGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYz01NT1FWFBPUlRfU1lNQk9MKF9fYXRoMTJrX3dhcm4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM6NTc6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM9MTA4PUVYUE9SVF9TWU1CT0woYXRoMTJrX2RiZ19kdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzoxMTA6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD00MT1leHRlcm4gYm9vbCBhdGgxMmtfZnRtX21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo0MzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaC00NC1fX3ByaW50ZigzLCA0KSB2b2lkIF9fYXRoMTJrX2RiZyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oPTQ3PXZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTAtXFx0XFx0ICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo1MTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTUyLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0aDEya19kYmcoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNjMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo2NDojZW5kaWYgLyogQ09ORklHX0FUSDEyS19ERUJVRyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaC02NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg6MTA6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTExLXZvaWQgYXRoMTJrX2RlYnVnZnNfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTE0NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg6MTQ1OiNlbmRpZiAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaC0xNDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MjY9dm9pZCBhdGgxMmtfZGVidWdmc19odHRfc3RhdHNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mjg6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0yOS12b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0zMC1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDozMTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzItc3RhdGljIGlubGluZSB2b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaDoxNTojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaD0xNz12b2lkIGF0aDEya19kZWJ1Z2ZzX2xpbmtfc3RhX29wX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmg6MjI6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTIxMj12b2lkIGF0aDEya19wY2lfd3JpdGUzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTEyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxMjU4OiNpZmRlZiBDT05GSUdfQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xMjU5LXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9jb3JlZHVtcF9jYWxjdWxhdGVfc2l6ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgKmR1bXBfc2VnX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTEwLVxcdC5wYW5pY19oYW5kbGVyID0gYXRoMTJrX3BjaV9wYW5pY19oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUxMTojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUxMi1cXHQuY29yZWR1bXBfZG93bmxvYWQgPSBhdGgxMmtfcGNpX2NvcmVkdW1wX2Rvd25sb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE0LS8qIGNyZWF0ZSBlbXB0eSBmdW5jdGlvbnMgd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oOjE1OiNpZiAhZGVmaW5lZChDT05GSUdfQVRIMTJLX1RSQUNJTkcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE2LSN1bmRlZiBUUkFDRV9FVkVOVFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oPTE4PXN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8gIyMgbmFtZShwcm90bykge31cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmg6MTk6I2VuZGlmIC8qICFDT05GSUdfQVRIMTJLX1RSQUNJTkcgfHwgX19DSEVDS0VSX18gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmgtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICs9IGF0aDEya193aWZpNy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9NYWtlZmlsZS0zLWF0aDEya193aWZpNy15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvTWFrZWZpbGU6MjA6YXRoMTJrX3dpZmk3LSQoQ09ORklHX0FUSDEyS19BSEIpICs9IGFoYi5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuaDo5OiNpZmRlZiBDT05GSUdfQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmgtMTAtaW50IGF0aDEya193aWZpN19haGJfaW5pdCh2b2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTUtI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExOTY6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTk3LVxcdC52aWZfYWRkX2RlYnVnZnMgICAgICAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19vcF92aWZfYWRkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTktXFx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEya190bV9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjEyMDA6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMjAxLVxcdC5saW5rX3N0YV9hZGRfZGVidWdmcyAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTk2NTQ9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9ldmVudF90ZWFyZG93bl9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05NjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6OTY3MzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05Njc0LXN0YXRpYyBpbnQgYXRoMTJrX3dtaV90cGNfc3RhdHNfY29weV9idWZmZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6NTYuMzcwNzczNzU3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyODgzMDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIGl0J3MgY2xlYXI6IHRoZXJlJ3Mgbm8gd2F5IHRvIHNpbXVsYXRlIHRoaXMsIG5vIGBDT05GSUdfQVRIMTJLX1NJTWAgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBUaGlzIGRyaXZlciwgdGhlIGBhdGgxMmtgIG9uZSwgaXMgKmRlZmluaXRlbHkqIGhhcmR3YXJlLWRlcGVuZGVudC4gSXQgbmVlZHMgdGhlIHJlYWwgZGVhbC4gU28sIHRoZSBgV29ydGhGdXp6aW5nPWZhbHNlYCB0YWcsIHJpZ2h0IG91dCBvZiB0aGUgZ2F0ZSwgc2VlbXMgc3BvdCBvbi5cblxuTGV0IG1lIGp1c3Qgc29saWRpZnkgdGhpcyBpbiBteSBtaW5kLiBSaWdodCwgaXQncyBtb2RpZnlpbmcgdGhlIGBhdGgxMmtgIGRyaXZlci4gVGhhdCdzIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSDigJMgcmVhbCBQQ0kgb3IgQUhCIGRldmljZXMsIGFuZCBpbXBvcnRhbnRseSwgbmVlZHMgdGhhdCBmaXJtd2FyZSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiAgVGhpcyBpc24ndCBnb2luZyB0byB3b3JrIGluIHNvbWUgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIFxuXG5TbywgeWVhaCwgbm90IHdvcnRoIHRoZSBlZmZvcnQgZm9yIFN5emthbGxlci5cblxuSG9sZCBvbiwgSSByZW1lbWJlciBTeXprYWxsZXIgaGFzIGBzeXpfcGNpZGV2YCwgd2hpY2ggYWxsb3dzIHlvdSB0byBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQnV0LCBoYW5nIG9uLiBUaGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCBgYXRoMTJrYCBkb2VzIHRoZSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISS4gU3l6X3BjaWRldiBkb2Vzbid0IGRvIHRoYXQuIERvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSBhbiBNSEkgZW11bGF0b3I/XG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBNSEkgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNTowMi42NTkwODczMjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODg1NTc3MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9lbXVsYXRvcnxtaGlfc2ltfGR1bW15X21oaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA1OjA2LjQ0NzY1NTUxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg1MzU2MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDEyayBEcml2ZXIncyBGdXp6YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gTUhJIGVtdWxhdG9yIGF2YWlsYWJsZS4gVGhhdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBXaXRob3V0IHRoYXQsIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGUgYGF0aDEya2AgZHJpdmVyIGlzIGVmZmVjdGl2ZWx5IGluYWNjZXNzaWJsZSBmb3IgZnV6emluZyB1c2luZyBzeXprYWxsZXIuICBUaGUgd2hvbGUgcHJvY2VzcyBoaW5nZXMgb24gdGhlIGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGxvYWQgaXRzIGZpcm13YXJlLCBhbmQgdGhlIE1ISSBpcyBjZW50cmFsIHRvIHRoYXQuXG5cblNpbmNlIHN5emthbGxlciByZWxpZXMgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHdoaWNoIGFyZSB2aXJ0dWFsaXplZCBhbmQgY2FuJ3QgaGFuZGxlIHRoZXNlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgd2UgY2FuJ3QgcmVsaWFibHkgZnV6eiB0aGlzIGRyaXZlci4gTXkgcmVjb21tZW5kYXRpb24gaXMgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYGF0aDEya2AgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gSXRzIGRlcGVuZGVuY2Ugb24gYSBwaHlzaWNhbCBkZXZpY2UsIGFuZCB0aGUgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgaXQgdXNlcyB0aHJvdWdoIE1ISSwgYXJlIGluc3VybW91bnRhYmxlIG9ic3RhY2xlcyBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBUaGVyZSdzIGp1c3Qgbm8gcHJhY3RpY2FsIHBhdGggdG8gZXhlY3V0ZSB0aGUgbmVjZXNzYXJ5IGNvZGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDI3LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA1OjExLjQzMzAxNDU3MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBvciBBSEIgZGV2aWNlIGFuZCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrrp5h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 07:44:11 +0000 UTC FinishedAt: 2026-07-13 08:05:12 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBvciBBSEIgZGV2aWNlIGFuZCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCAwZTdjNzMyZjgyMjI2NS4uY2Y5YzViMDY4ZmE2NzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0xNTQ3LDYgJiM0MzsxNTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcHJlX3JlY29uZmlndXJlX3JlY292ZXJ5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRcdH1cbiBcbiBcdFx0d2lwaHlfdW5sb2NrKGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiYjNDM7XG4mIzQzO1x0XHRjb21wbGV0ZShcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUpO1xuIFx0fVxuIFxuIFx0d2FrZV91cChcdTAwMjZhYi1cdTAwM2V3bWlfYWIudHhfY3JlZGl0c193cSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLjMwNzI2ZTU4MDgzM2UxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNzIsNiAmIzQzOzcyLDcgQEBcbiBcbiAjZGVmaW5lIEFUSDEyS19NQVhfTUxPX1BFRVJTICAgICAgICAgICAgMjU2XG4gI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRlxuJiM0MzsjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXG4gXG4gI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTFcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxuQEAgLTc5Myw2ICYjNDM7Nzk0LDggQEAgc3RydWN0IGF0aDEya19odyB7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbiBcdGJvb2wgcmVnZF91cGRhdGVkO1xuIFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xuJiM0MztcdGJvb2wgaG9zdF9hbGxvY19tbF9pZDtcbiYjNDM7XHRzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7XG4gXG4gXHR1OCBudW1fcmFkaW87XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbkBAIC02LDYgJiM0Mzs2LDcgQEBcbiBcbiAjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtwZWVyLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZHBfcGVlci5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aHRjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9odHQuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmhcJiMzNDtcbkBAIC01NzUsNiAmIzQzOzU3Niw1MSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBodHRfcmVzcF9tc2cgKnJlc3AgPSAoc3RydWN0IGh0dF9yZXNwX21zZyAqKXNrYi1cdTAwM2VkYXRhO1xuJiM0MztcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCAqZXYgPSBcdTAwMjZyZXNwLVx1MDAzZW1sb19wZWVyX21hcF9ldjtcbiYjNDM7XHR1MTYgcmF3X3BlZXJfaWQsIHBlZXJfaWQsIGFkZHJfaDE2O1xuJiM0MztcdHU4IHBlZXJfYWRkcltFVEhfQUxFTl07XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqZXYpKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmF3X3BlZXJfaWQgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8wLFxuJiM0MztcdFx0XHRcdCAgICBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMF9NTE9fUEVFUl9JRCk7XG4mIzQzO1x0cGVlcl9pZCA9IHJhd19wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7XG4mIzQzO1xuJiM0MztcdGFkZHJfaDE2ID0gbGUzMl9nZXRfYml0cyhldi1cdTAwM2VpbmZvMSxcbiYjNDM7XHRcdFx0XHQgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2KTtcbiYjNDM7XHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVx1MDAzZW1hY19hZGRyX2wzMiksIGFkZHJfaDE2LFxuJiM0MztcdFx0XHQgICAgICAgcGVlcl9hZGRyKTtcbiYjNDM7XG4mIzQzO1x0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFwmIzM0O2h0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBwZWVyX2FkZHIsIHBlZXJfaWQpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZpeCB1cCB0aGUgZHBfcGVlciBlbnRyeSBjcmVhdGVkIHdpdGggQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkdcbiYjNDM7XHQgKiBlYXJsaWVyOyBvbiBjaGlwcyB3aXRoIGhvc3RfYWxsb2NfbWxfaWQgPT0gZmFsc2UgdGhpcyBpcyB0aGUgb25seVxuJiM0MztcdCAqIHBvaW50IGF0IHdoaWNoIHRoZSBob3N0IGxlYXJucyB0aGUgZmlybXdhcmUtYXNzaWduZWQgSUQuIENoaXBzXG4mIzQzO1x0ICogdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3QgYWxzbyByZWNlaXZlIHRoaXMgZXZlbnQgYnV0IHRoZVxuJiM0MztcdCAqIGZpcm13YXJlLXJlcG9ydGVkIElEIG1hdGNoZXMgdGhlIGhvc3QtYWxsb2NhdGVkIG9uZSwgc28gdGhlcmUgaXNcbiYjNDM7XHQgKiBub3RoaW5nIHRvIGZpeCB1cC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vob3N0X2FsbG9jX21sX2lkKSB7XG4mIzQzO1x0XHRyZXQgPSBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKGFiLCBwZWVyX2FkZHIsXG4mIzQzO1x0XHRcdFx0XHRcdCAgIHBlZXJfaWQpO1xuJiM0MztcdFx0aWYgKHJldClcbiYjNDM7XHRcdFx0YXRoMTJrX3dhcm4oYWIsXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBmaXggdXAgcGVlciBpZCAldSBmb3IgZHAgcGVlciAlcE06ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICBwZWVyX2lkLCBwZWVyX2FkZHIsIHJldCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjU5LDYgJiM0Mzs3MDUsOSBAQCB2b2lkIGF0aDEya19kcF9odHRfaHRjX3QyaF9tc2dfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0Y2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDpcbiBcdFx0YXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7XG4gXHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVA6XG4mIzQzO1x0XHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xuJiM0MztcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RQX0hUVCwgXCYjMzQ7ZHBfaHR0IGV2ZW50ICVkIG5vdCBoYW5kbGVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHR5cGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5pbmRleCA5ODc2ODlmMTFjZGE0NS4uMmRiN2ZiMjdjMDM2MTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5AQCAtOTMwLDYgJiM0Mzs5MzAsNyBAQCBlbnVtIGh0dF90MmhfbXNnX3R5cGUge1xuIFx0SFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsXG4gXHRIVFRfVDJIX01TR19UWVBFX0JLUFJFU1NVUkVfRVZFTlRfSU5EID0gMHgyNCxcbiBcdEhUVF9UMkhfTVNHX1RZUEVfTUxPX1RJTUVTVEFNUF9PRkZTRVRfSU5EID0gMHgyOCxcbiYjNDM7XHRIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCA9IDB4MjksXG4gXHRIVFRfVDJIX01TR19UWVBFX1BFRVJfTUFQM1x0PSAweDJiLFxuIFx0SFRUX1QySF9NU0dfVFlQRV9WREVWX1RYUlhfU1RBVFNfUEVSSU9ESUNfSU5EID0gMHgyYyxcbiB9O1xuQEAgLTk3NCwxMSAmIzQzOzk3NSwyMiBAQCBzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHtcbiBcdF9fbGUzMiBpbmZvMTtcbiB9IF9fcGFja2VkO1xuIFxuJiM0MzsjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEXHRcdEdFTk1BU0soMjMsIDgpXG4mIzQzOyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2XHRcdEdFTk1BU0soMTUsIDApXG4mIzQzO1xuJiM0MztzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQge1xuJiM0MztcdF9fbGUzMiBpbmZvMDtcbiYjNDM7XHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xuJiM0MztcdF9fbGUzMiBpbmZvMTtcbiYjNDM7XHRfX2xlMzIgcmVzZXJ2ZWRbNV07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuIHN0cnVjdCBodHRfcmVzcF9tc2cge1xuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF92ZXJzaW9uX2NvbmZfbXNnIHZlcnNpb25fbXNnO1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX21hcF9ldmVudCBwZWVyX21hcF9ldjtcbiBcdFx0c3RydWN0IGh0dF90MmhfcGVlcl91bm1hcF9ldmVudCBwZWVyX3VubWFwX2V2O1xuJiM0MztcdFx0c3RydWN0IGh0dF90MmhfbWxvX3BlZXJfbWFwX2V2ZW50IG1sb19wZWVyX21hcF9ldjtcbiBcdH07XG4gfSBfX3BhY2tlZDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXG5pbmRleCA0N2QwMDlhMGQ2MWZlZi4uMDkxNDJkY2I3NGY5OGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcbkBAIC00NzIsNyAmIzQzOzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0ZHBfcGVlci1cdTAwM2Vpc19tbG8gPSBwYXJhbXMtXHUwMDNlaXNfbWxvO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXG4mIzQzO1x0ICogRm9yIE1MTyBjbGllbnQsIHRoZSBNTCBwZWVyIElELCBlaXRoZXIga25vd24gb3IgUEVORElORywgbmVlZHMgdG8gYmVcbiYjNDM7XHQgKiBpbml0aWFsaXplZCBoZXJlIHNpbmNlIHRoZSBmb2xsb3dpbmcgbG9naWMgZGVwZW5kcyBvbiBpdC5cbiYjNDM7XHQgKlxuIFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmVcbiBcdCAqIGFzc2lnbmVkIGF0IHRoZSB0aW1lIG9mIGxpbmsgcGVlciBjcmVhdGlvblxuIFx0ICovXG5AQCAtNDg4LDEzICYjNDM7NDkwLDE3IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0bGlzdF9hZGQoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZkcF9ody1cdTAwM2VkcF9wZWVyc19saXN0KTtcbiBcbiBcdC8qXG4tXHQgKiBGb3IgTUxPIGNsaWVudCwgdGhlIHBlZXJfaWQgZm9yIGF0aDEya19kcF9wZWVyIGlzIGFsbG9jYXRlZCBieSBob3N0XG4tXHQgKiBhbmQgdGhhdCBwZWVyX2lkIGlzIGtub3duIGF0IHRoaXMgcG9pbnQsIGFuZCBoZW5jZSB0aGlzIGF0aDEya19kcF9wZWVyXG4tXHQgKiBjYW4gYmUgYWRkZWQgdG8gdGhlIFJDVSB0YWJsZSB1c2luZyB0aGUgcGVlcl9pZC5cbi1cdCAqIEZvciBub24tTUxPIGNsaWVudCwgdGhpcyBhZGRpdGlvbiB0byBSQ1UgdGFibGUgc2hhbGwgYmUgZG9uZSBhdCB0aGVcbi1cdCAqIHRpbWUgb2YgYXNzaWdubWVudCBvZiBhdGgxMmtfZHBfbGlua19wZWVyIHRvIGF0aDEya19kcF9wZWVyLlxuJiM0MztcdCAqIEZvciBhbiBNTE8gY2xpZW50IHdob3NlIE1MIHBlZXIgSUQgaXMgYWxsb2NhdGVkIGJ5IHRoZSBob3N0LCB0aGVcbiYjNDM7XHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXG4mIzQzO1x0ICogdGFibGUgdXNpbmcgaXQuIEZvciBhbiBNTE8gY2xpZW50IG9uIGNoaXBzIHdoZXJlIHRoZSBmaXJtd2FyZVxuJiM0MztcdCAqIGFsbG9jYXRlcyB0aGUgSUQsIHBlZXJfaWQgaXMgQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcgYW5kIHRoZVxuJiM0MztcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxuJiM0MztcdCAqIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQIGhhbmRsZXIuIEZvciBhIG5vbi1NTE8gY2xpZW50XG4mIzQzO1x0ICogdGhlIHB1Ymxpc2ggaGFwcGVucyBsYXRlciwgYXQgdGhlIHRpbWUgb2YgYXNzaWdubWVudCBvZlxuJiM0MztcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4gXHQgKi9cbi1cdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbylcbiYjNDM7XHRpZiAoZHBfcGVlci1cdTAwM2Vpc19tbG8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXHUwMDNlcGVlcl9pZF0sIGRwX3BlZXIpO1xuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHBfaHctXHUwMDNlcGVlcl9sb2NrKTtcbkBAIC01MTUsNyAmIzQzOzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvKVxuJiM0MztcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgZHBfcGVlci1cdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSwgTlVMTCk7XG4gXG4gXHRsaXN0X2RlbChcdTAwMjZkcF9wZWVyLVx1MDAzZWxpc3QpO1xuQEAgLTY4OCwzICYjNDM7Njk1LDU1IEBAIHZvaWQgYXRoMTJrX2RwX2xpbmtfcGVlcl9yZXNldF9yeF9zdGF0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgY29uc3QgdTggKmFkZHIpXG4gXHRpZiAocnhfc3RhdHMpXG4gXHRcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xuIH1cbiYjNDM7XG4mIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4mIzQzO1x0XHRcdFx0IGNvbnN0IHU4ICpwZWVyX2FkZHIsIHUxNiBwZWVyX2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKmxpbmtfcGVlcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnID0gYWItXHUwMDNlYWc7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAocGVlcl9pZCBcdTAwM2U9IChBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCB8IEFUSDEyS19NQVhfTUxPX1BFRVJTKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1faHc7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRhaCA9IGFnLVx1MDAzZWFoW2ldO1xuJiM0MztcdFx0aWYgKCFhaClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4mIzQzO1x0XHRkcF9wZWVyID0gYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9hZGRyKFx1MDAyNmFoLVx1MDAzZWRwX2h3LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAodTggKilwZWVyX2FkZHIpO1xuJiM0MztcdFx0aWYgKGRwX3BlZXIpIHtcbiYjNDM7XHRcdFx0ZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFkcF9wZWVyKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9FTlQ7XG4mIzQzO1xuJiM0MztcdC8qIGRwX2h3LVx1MDAzZXBlZXJfbG9jayBpcyBoZWxkICovXG4mIzQzO1xuJiM0MztcdGRwX3BlZXItXHUwMDNlcGVlcl9pZCA9IHBlZXJfaWQ7XG4mIzQzO1x0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW3BlZXJfaWRdLCBkcF9wZWVyKTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX05VTV9NQVhfTElOS1M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRsaW5rX3BlZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRwX3BlZXItXHUwMDNlbGlua19wZWVyc1tpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jaykpO1xuJiM0MztcdFx0aWYgKGxpbmtfcGVlcilcbiYjNDM7XHRcdFx0bGlua19wZWVyLVx1MDAzZW1sX2lkID0gcGVlcl9pZDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpLVx1MDAzZW1sX3BlZXJfaWQgPSBwZWVyX2lkO1xuJiM0MztcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuJiM0MztcbiYjNDM7XHRjb21wbGV0ZShcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcbmluZGV4IGY1MDY3ZTY2ZjFlMTgyLi45ODQyNjcxYjU0NzU5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaFxuQEAgLTE4MCw0ICYjNDM7MTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BcbiBzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcbiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7XG4mIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGNvbnN0IHU4ICpwZWVyX2FkZHIsXG4mIzQzO1x0XHRcdFx0IHUxNiBwZWVyX2lkKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbmluZGV4IGQxMzViMjkzNjM3ODhiLi44MDkxNTAxY2Y3NDJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5AQCAtMjMyLDYgJiM0MzsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7XG4gXHRcdHUzMiBtYXhfY2xpZW50X2RicztcbiBcdFx0dTMyIG1heF9jbGllbnRfZGJzX3NicztcbiBcdH0gY2xpZW50O1xuJiM0MztcbiYjNDM7XHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XG4gfTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDQ5MGMxMzRjMWYyOTBiLi5hZTg3NDExNGRjNTE4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xMjc4LDEzICYjNDM7MTI3OCwxNyBAQCB2b2lkIGF0aDEya19tYWNfZHBfcGVlcl9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wO1xuIFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiBcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4mIzQzO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cGVlcnMpO1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHBfcGVlciwgdG1wLCBcdTAwMjZkcF9ody1cdTAwM2VkcF9wZWVyc19saXN0LCBsaXN0KSB7XG4gXHRcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbykge1xuLVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLCBOVUxMKTtcbi1cdFx0XHRjbGVhcl9iaXQoZHBfcGVlci1cdTAwM2VwZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbiYjNDM7XHRcdFx0aWYgKGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiYjNDM7XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgTlVMTCk7XG4mIzQzO1x0XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpKTtcbiBcdFx0fVxuIFxuIFx0XHRsaXN0X21vdmUoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZwZWVycyk7XG5AQCAtMzUyNywxMSAmIzQzOzM1MzEsMTYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3BlZXJfYXNzb2NfaF9tbG8oc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGEsXG4gXHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS1cdTAwM2VhaHN0YTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhX3A7XG4gXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGFyc3RhLVx1MDAzZWFydmlmLVx1MDAzZWFyLVx1MDAzZWFoO1xuIFx0dW5zaWduZWQgbG9uZyBsaW5rcztcbiBcdHU4IGxpbmtfaWQ7XG4gXHRpbnQgaTtcbiBcbi1cdGlmICghc3RhLVx1MDAzZW1sbyB8fCBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKVxuJiM0MztcdGlmICghc3RhLVx1MDAzZW1sbylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1sLVx1MDAzZWVuYWJsZWQgPSB0cnVlO1xuQEAgLTM1MzksMTIgJiM0MzszNTQ4LDI1IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLFxuIFxuIFx0LyogRm9yIG5vdyBjb25zaWRlcmluZyB0aGUgcHJpbWFyeSB1bWFjIGJhc2VkIG9uIGFzc29jIGxpbmsgKi9cbiBcdG1sLVx1MDAzZXByaW1hcnlfdW1hYyA9IGFyc3RhLVx1MDAzZWlzX2Fzc29jX2xpbms7XG4tXHRtbC1cdTAwM2VwZWVyX2lkX3ZhbGlkID0gdHJ1ZTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9ubHkgY2hpcHMgdGhhdCBhbGxvY2F0ZSB0aGUgTUxEIHBlZXIgSUQgb24gdGhlIGhvc3Qgc2VuZCBhIHZhbGlkXG4mIzQzO1x0ICogbWxfcGVlcl9pZCBpbiBXTUlfUEVFUl9BU1NPQ19DTURJRC4gRm9yIGNoaXBzIHdoZXJlIHRoZSBmaXJtd2FyZVxuJiM0MztcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtbC1cdTAwM2VwZWVyX2lkX3ZhbGlkID0gYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbiBcdG1sLVx1MDAzZWxvZ2ljYWxfbGlua19pZHhfdmFsaWQgPSB0cnVlO1xuIFxuIFx0ZXRoZXJfYWRkcl9jb3B5KG1sLVx1MDAzZW1sZF9hZGRyLCBzdGEtXHUwMDNlYWRkcik7XG4gXHRtbC1cdTAwM2Vsb2dpY2FsX2xpbmtfaWR4ID0gYXJzdGEtXHUwMDNlbGlua19pZHg7XG4tXHRtbC1cdTAwM2VtbF9wZWVyX2lkID0gYWhzdGEtXHUwMDNlbWxfcGVlcl9pZDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFdNSV9NTE9fUEVFUl9BU1NPQ19QQVJBTVMgZXhwZWN0cyB0aGUgcmF3IE1MIHBlZXIgSUQgd2l0aG91dFxuJiM0MztcdCAqIHRoZSBob3N0LXNpZGUgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQgYm9va2tlZXBpbmcgYml0LiBGb3IgY2hpcHNcbiYjNDM7XHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXG4mIzQzO1x0ICogZmlybXdhcmUgYWx3YXlzIGFsbG9jYXRlcyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBoZXJlKTsgc2VuZCAwXG4mIzQzO1x0ICogdG8gbWFrZSB0aGF0IGludGVudCBleHBsaWNpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtbC1cdTAwM2VtbF9wZWVyX2lkID0gYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA/XG4mIzQzO1x0XHRcdCAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCBcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElEKSA6IDA7XG4gXHRtbC1cdTAwM2VpZWVlX2xpbmtfaWQgPSBhcnN0YS1cdTAwM2VsaW5rX2lkO1xuIFx0bWwtXHUwMDNlbnVtX3BhcnRuZXJfbGlua3MgPSAwO1xuIFx0bWwtXHUwMDNlZW1sX2NhcCA9IHN0YS1cdTAwM2VlbWxfY2FwO1xuQEAgLTM1OTEsOCAmIzQzOzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTtcbiBcbi1cdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4tXG4gXHRhcmctXHUwMDNlcGVlcl9uZXdfYXNzb2MgPSAhcmVhc3NvYztcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7XG5AQCAtMzgzMiw2ICYjNDM7Mzg1Miw1MiBAQCBzdGF0aWMgdTMyIGF0aDEya19tYWNfaWVlZTgwMjExX3N0YV9id190b193bWkoc3RydWN0IGF0aDEyayAqYXIsXG4gXHRyZXR1cm4gYnc7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcgKnBlZXJfYXJnKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4mIzQzO1x0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQsIHJldCk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEZvciBkZXZpY2VzIHdoZXJlIHRoZSBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MRCBwZWVyIElELCB0aGUgaG9zdFxuJiM0MztcdCAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzXG4mIzQzO1x0ICogaGFuZGxlZCBpbiBhIHNvZnRpcnEgKEJIIHdvcmtxdWV1ZSkgY29udGV4dCB0aGF0IGNhbm5vdCB0YWtlIHRoZVxuJiM0MztcdCAqIHdpcGh5IGxvY2suIEJsb2NrIGhlcmUsIHdoaWxlIHN0aWxsIGhvbGRpbmcgdGhlIHdpcGh5IGxvY2ssIHVudGlsXG4mIzQzO1x0ICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3RcbiYjNDM7XHQgKiBhbGwgb3RoZXIgd2lwaHktbG9ja2VkIG1sX3BlZXJfaWQgYWNjZXNzZXMuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmtcbiYjNDM7XHQgKiBwZWVyIGFzc29jLCBzbyBibG9jayBvbmx5IGZvciB0aGF0IGxpbmsuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGVlcl9hcmctXHUwMDNlbWwuZW5hYmxlZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgcGVlcl9hcmctXHUwMDNlbWwuYXNzb2NfbGluayBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhaC1cdTAwM2VwZWVyX21sX2lkX2RvbmUsIDEgKiBIWikpIHtcbiYjNDM7XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBwZWVyX2FyZy1cdTAwM2VwZWVyX21hYywgcGVlcl9hcmctXHUwMDNldmRldl9pZCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxuQEAgLTM5MTIsMTggJiM0MzszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHR9XG4gXG4gXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG4tXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgICBic3NfY29uZi1cdTAwM2Vic3NpZCwgYXJ2aWYtXHUwMDNldmRldl9pZCwgcmV0KTtcbi1cdFx0cmV0dXJuO1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4tXHRcdFx0ICAgIGJzc19jb25mLVx1MDAzZWJzc2lkLCBhcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbiYjNDM7XHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiYjNDM7XHRpZiAocmV0KVxuIFx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsXG4gXHRcdFx0XHQgICAgIFx1MDAyNmxpbmtfc3RhLVx1MDAzZWh0X2NhcCwgXHUwMDI2bGlua19zdGEtXHUwMDNlaGVfNmdoel9jYXBhKTtcbkBAIC02NDc3LDE4ICYjNDM7NjUzNSwxMCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcbiBcdH1cbiBcbiBcdHBlZXJfYXJnLVx1MDAzZWlzX2Fzc29jID0gdHJ1ZTtcbi1cdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCByZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cJiMzNDssXG4tXHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuLVx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbi1cdH1cbiYjNDM7XHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiBcbiBcdG51bV92aHRfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1fdmh0X3JhdGVzKGFyLCBiYW5kLCBtYXNrKTtcbiBcdG51bV9oZV9yYXRlcyA9IGF0aDEya19tYWNfYml0cmF0ZV9tYXNrX251bV9oZV9yYXRlcyhhciwgYmFuZCwgbWFzayk7XG5AQCAtNjgzNywxNCAmIzQzOzY4ODcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd2spXG4gXHRcdFx0XHRcdFx0ICBwZWVyX2FyZywgdHJ1ZSk7XG4gXG4gXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbi1cdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgU1RBICVwTSB2ZGV2ICVpOiAlZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQsIGVycik7XG4gXG4tXHRcdFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgIGFyc3RhLVx1MDAzZWFkZHIsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuJiM0MztcdFx0XHRhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC03MjYyLDEwICYjNDM7NzMwNiw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfbWxfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLFxuIFx0XHRhdGgxMmtfbWFjX2ZyZWVfdW5hc3NpZ25fbGlua19zdGEoYWgsIGFoc3RhLCBsaW5rX2lkKTtcbiBcdH1cbiBcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuJiM0MztcdGlmIChzdGEtXHUwMDNlbWxvKVxuJiM0MztcdFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDEya19tYWNfaGFuZGxlX2xpbmtfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuQEAgLTc3MjksMTUgJiM0Mzs3NzcxLDIzIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0LyogTUwgc3RhICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvIFx1MDAyNlx1MDAyNiAhYWhzdGEtXHUwMDNlbGlua3NfbWFwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKGh3ZWlnaHQxNihzdGEtXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XG4tXHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbi1cdFx0XHRpZiAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCkge1xuLVx0XHRcdFx0YXRoMTJrX2h3X3dhcm4oYWgsIFwmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICAgc3RhLVx1MDAzZWFkZHIpO1xuLVx0XHRcdFx0Z290byBleGl0O1xuJiM0MztcdFx0XHRpZiAoYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xuJiM0MztcdFx0XHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBhdGgxMmtfcGVlcl9tbF9hbGxvYyhhaCk7XG4mIzQzO1x0XHRcdFx0aWYgKGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHtcbiYjNDM7XHRcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbiYjNDM7XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHRcdFx0XHR9XG4mIzQzO1x0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0LypcbiYjNDM7XHRcdFx0XHQgKiBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQgYW5kIG5vdGlmaWVzXG4mIzQzO1x0XHRcdFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HO1xuIFx0XHRcdH1cbiBcbiBcdFx0XHRkcF9wYXJhbXMuaXNfbWxvID0gdHJ1ZTtcbi1cdFx0XHRkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcbiYjNDM7XHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkO1xuIFx0XHR9XG4gXG4gXHRcdGRwX3BhcmFtcy5zdGEgPSBzdGE7XG5AQCAtNzg3NCwxMCAmIzQzOzc5MjQsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gcGVlcl9kZWxldGU6XG4gXHRhdGgxMmtfZHBfcGVlcl9kZWxldGUoXHUwMDI2YWgtXHUwMDNlZHBfaHcsIHN0YS1cdTAwM2VhZGRyLCBzdGEpO1xuIG1sX3BlZXJfaWRfY2xlYXI6XG4tXHRpZiAoc3RhLVx1MDAzZW1sbykge1xuLVx0XHRjbGVhcl9iaXQoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCwgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4tXHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbi1cdH1cbiYjNDM7XHRpZiAoc3RhLVx1MDAzZW1sbylcbiYjNDM7XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiBleGl0OlxuIFx0LyogdXBkYXRlIHRoZSBzdGF0ZSBpZiBldmVyeXRoaW5nIHdlbnQgd2VsbCAqL1xuIFx0aWYgKCFyZXQpXG5AQCAtMTUzMDcsNiAmIzQzOzE1MzU1LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXHRhaC1cdTAwM2VudW1fcmFkaW8gPSBudW1fcGRldl9tYXA7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiYjNDM7XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbiBcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFoLVx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhaC1cdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcbkBAIC0xNTM4MSw4ICYjNDM7MTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdGludCBtYWNfaWQsIGRldmljZV9pZCwgdG90YWxfcmFkaW8sIG51bV9odztcbiBcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XG4gXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbi1cdGludCByZXQsIGksIGo7XG4mIzQzO1x0Ym9vbCBjb25mID0gZmFsc2U7XG4gXHR1OCByYWRpb19wZXJfaHc7XG4mIzQzO1x0aW50IHJldCwgaSwgajtcbiBcbiBcdHRvdGFsX3JhZGlvID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFnLVx1MDAzZW51bV9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuQEAgLTE1NDIyLDYgJiM0MzsxNTQ3MiwxOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdFx0XHR9XG4gXG4gXHRcdFx0YWIgPSBhZy1cdTAwM2VhYltkZXZpY2VfaWRdO1xuJiM0MztcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogdGhlIGFzc3VtcHRpb24gaXMgYWxsIGRldmljZXMgd2l0aGluIGFuIGFoXG4mIzQzO1x0XHRcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGogPT0gMCkge1xuJiM0MztcdFx0XHRcdGNvbmYgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmIChjb25mICE9IGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vob3N0X2FsbG9jX21sX2lkKSB7XG4mIzQzO1x0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2luY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJiMzOTt0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgIGNvbmYgPyBcJiMzNDtob3N0XCYjMzQ7IDogXCYjMzQ7ZmlybXdhcmVcJiMzNDssIGRldmljZV9pZCk7XG4mIzQzO1x0XHRcdFx0Z290byBlcnI7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4gXHRcdFx0cGRldl9tYXBbal0uYWIgPSBhYjtcbiBcdFx0XHRwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDtcbiBcdFx0XHRtYWNfaWQmIzQzOyYjNDM7O1xuQEAgLTE1NDQ2LDYgJiM0MzsxNTUwOSw3IEBAIGludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuIFx0XHR9XG4gXG4gXHRcdGFoLVx1MDAzZWRldiA9IGFiLVx1MDAzZWRldjtcbiYjNDM7XHRcdGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgPSBjb25mO1xuIFxuIFx0XHRhZy1cdTAwM2VhaFtpXSA9IGFoO1xuIFx0XHRhZy1cdTAwM2VudW1faHcmIzQzOyYjNDM7O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbmluZGV4IGMyMjJiZGFhMzMzYzUyLi4yNWU0Yjc5ZjExZDYzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuQEAgLTIzMCw3ICYjNDM7MjMwLDE2IEBAIGludCBhdGgxMmtfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHQvKiBGaWxsIE1MIGluZm8gaW50byBjcmVhdGVkIHBlZXIgKi9cbiBcdFx0aWYgKHN0YS1cdTAwM2VtbG8pIHtcbiBcdFx0XHRtbF9wZWVyX2lkID0gYWhzdGEtXHUwMDNlbWxfcGVlcl9pZDtcbi1cdFx0XHRwZWVyLVx1MDAzZW1sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBGb3IgY2hpcHMgd2hlcmUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElELFxuJiM0MztcdFx0XHQgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZVxuJiM0MztcdFx0XHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcbiYjNDM7XHRcdFx0ICogcGVlci1cdTAwM2VtbF9pZCBvbmNlIHRoZSBJRCBpcyBrbm93bi5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuJiM0MztcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBtbF9wZWVyX2lkO1xuIFx0XHRcdGV0aGVyX2FkZHJfY29weShwZWVyLVx1MDAzZW1sX2FkZHIsIHN0YS1cdTAwM2VhZGRyKTtcbiBcbiBcdFx0XHQvKiB0aGUgYXNzb2MgbGluayBpcyBjb25zaWRlcmVkIHByaW1hcnkgZm9yIG5vdyAqL1xuQEAgLTI3Niw5ICYjNDM7Mjg1LDI1IEBAIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaClcbiBcdH1cbiBcbiBcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NQVhfTUxPX1BFRVJTKVxuLVx0XHRtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4mIzQzO1x0XHRyZXR1cm4gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4gXG4tXHRyZXR1cm4gbWxfcGVlcl9pZDtcbiYjNDM7XHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBPbmx5IGRldmljZXMgdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3Qgb3duIGEgc2xvdCBpblxuJiM0MztcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAzY1xuJiM0MztcdCAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSlcbiYjNDM7XHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAyNiB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQsXG4mIzQzO1x0XHRcdCAgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4mIzQzO1x0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuIH1cbiBcbiBpbnQgYXRoMTJrX3BlZXJfbWxvX2xpbmtfcGVlcnNfZGVsZXRlKHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmhcbmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxuQEAgLTI2LDQgJiM0MzsyNiw1IEBAIGludCBhdGgxMmtfbGlua19zdGFfcmhhc2hfYWRkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyXG4gc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXRoMTJrX2xpbmtfc3RhX2ZpbmRfYnlfYWRkcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0XHRcdCAgICAgY29uc3QgdTggKmFkZHIpO1xuIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaCk7XG4mIzQzO3ZvaWQgYXRoMTJrX3BlZXJfbWxfZnJlZShzdHJ1Y3QgYXRoMTJrX2h3ICphaCwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKTtcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGU1YmY5ZDIxODEwNDBkLi4wYzI3N2Y1MWQ5OWMxYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtNDM5LDYgJiM0Mzs0MzksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCYjMzQ7d2NuNzg1MCBodzIuMFwmIzM0OyxcbkBAIC01MzAsNiAmIzQzOzUzMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4mIzQzO1xuJiM0MztcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSBmYWxzZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCYjMzQ7cWNuOTI3NCBodzIuMFwmIzM0OyxcbkBAIC02MTcsNiAmIzQzOzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4mIzQzO1xuJiM0MztcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxuIFx0fSxcbiBcdHtcbiBcdFx0Lm5hbWUgPSBcJiMzNDtpcHE1MzMyIGh3MS4wXCYjMzQ7LFxuQEAgLTY5Nyw2ICYjNDM7NzAzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcbiBcdFx0XHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcbiBcdFx0fSxcbiYjNDM7XG4mIzQzO1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwmIzM0O3FjYzIwNzIgaHcxLjBcJiMzNDssXG5AQCAtNzg5LDYgJiM0Mzs3OTcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwmIzM0O2lwcTU0MjQgaHcxLjBcJiMzNDssXG5AQCAtODczLDYgJiM0Mzs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuJiM0MztcbiYjNDM7XHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gfTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkgdG8gZnVuY3Rpb24uIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggMGU3YzczMmY4MjIyNjUuLmNmOWM1YjA2OGZhNjcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMTU0Nyw2ICYjNDM7MTU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3ByZV9yZWNvbmZpZ3VyZV9yZWNvdmVyeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCQl9CiAKIAkJd2lwaHlfdW5sb2NrKGFoLSZndDtody0mZ3Q7d2lwaHkpOwomIzQzOwomIzQzOwkJY29tcGxldGUoJmFtcDthaC0mZ3Q7cGVlcl9tbF9pZF9kb25lKTsKIAl9CiAKIAl3YWtlX3VwKCZhbXA7YWItJmd0O3dtaV9hYi50eF9jcmVkaXRzX3dxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKaW5kZXggZmM1MTI3YjVjMWEzN2YuLjMwNzI2ZTU4MDgzM2UxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaApAQCAtNzIsNiAmIzQzOzcyLDcgQEAKIAogI2RlZmluZSBBVEgxMktfTUFYX01MT19QRUVSUyAgICAgICAgICAgIDI1NgogI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRgomIzQzOyNkZWZpbmUgQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcgICAgICAweEZGRkUKIAogI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTEKICNkZWZpbmUgQVRIMTJLX0lOVkFMSURfUlNTSV9FTVBUWSAtMTI4CkBAIC03OTMsNiAmIzQzOzc5NCw4IEBAIHN0cnVjdCBhdGgxMmtfaHcgewogCWVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlOwogCWJvb2wgcmVnZF91cGRhdGVkOwogCWJvb2wgdXNlXzZnaHpfcmVnZDsKJiM0MzsJYm9vbCBob3N0X2FsbG9jX21sX2lkOwomIzQzOwlzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7CiAKIAl1OCBudW1fcmFkaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jCmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKIAogI2luY2x1ZGUgJiMzNDtjb3JlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtwZWVyLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7ZHBfcGVlci5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHRjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9odHQuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RlYnVnZnNfaHR0X3N0YXRzLmgmIzM0OwpAQCAtNTc1LDYgJiM0Mzs1NzYsNTEgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYiwKJiM0MzsJCQkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLSZndDtkYXRhOwomIzQzOwlzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gJmFtcDtyZXNwLSZndDttbG9fcGVlcl9tYXBfZXY7CiYjNDM7CXUxNiByYXdfcGVlcl9pZCwgcGVlcl9pZCwgYWRkcl9oMTY7CiYjNDM7CXU4IHBlZXJfYWRkcltFVEhfQUxFTl07CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqZXYpKSB7CiYjNDM7CQlhdGgxMmtfd2FybihhYiwgJiMzNDt1bmV4cGVjdGVkIGh0dCBtbG8gcGVlciBtYXAgZXZlbnQgbGVuICV1XG4mIzM0OywKJiM0MzsJCQkgICAgc2tiLSZndDtsZW4pOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJhd19wZWVyX2lkID0gbGUzMl9nZXRfYml0cyhldi0mZ3Q7aW5mbzAsCiYjNDM7CQkJCSAgICBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMF9NTE9fUEVFUl9JRCk7CiYjNDM7CXBlZXJfaWQgPSByYXdfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzOwomIzQzOwlhZGRyX2gxNiA9IGxlMzJfZ2V0X2JpdHMoZXYtJmd0O2luZm8xLAomIzQzOwkJCQkgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2KTsKJiM0MzsJYXRoMTJrX2RwX2dldF9tYWNfYWRkcihsZTMyX3RvX2NwdShldi0mZ3Q7bWFjX2FkZHJfbDMyKSwgYWRkcl9oMTYsCiYjNDM7CQkJICAgICAgIHBlZXJfYWRkcik7CiYjNDM7CiYjNDM7CWF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCAmIzM0O2h0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcbiYjMzQ7LAomIzQzOwkJICAgcGVlcl9hZGRyLCBwZWVyX2lkKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRml4IHVwIHRoZSBkcF9wZWVyIGVudHJ5IGNyZWF0ZWQgd2l0aCBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORwomIzQzOwkgKiBlYXJsaWVyOyBvbiBjaGlwcyB3aXRoIGhvc3RfYWxsb2NfbWxfaWQgPT0gZmFsc2UgdGhpcyBpcyB0aGUgb25seQomIzQzOwkgKiBwb2ludCBhdCB3aGljaCB0aGUgaG9zdCBsZWFybnMgdGhlIGZpcm13YXJlLWFzc2lnbmVkIElELiBDaGlwcwomIzQzOwkgKiB0aGF0IGFsbG9jYXRlIHRoZSBJRCBvbiB0aGUgaG9zdCBhbHNvIHJlY2VpdmUgdGhpcyBldmVudCBidXQgdGhlCiYjNDM7CSAqIGZpcm13YXJlLXJlcG9ydGVkIElEIG1hdGNoZXMgdGhlIGhvc3QtYWxsb2NhdGVkIG9uZSwgc28gdGhlcmUgaXMKJiM0MzsJICogbm90aGluZyB0byBmaXggdXAuCiYjNDM7CSAqLwomIzQzOwlpZiAoIWFiLSZndDtod19wYXJhbXMtJmd0O2hvc3RfYWxsb2NfbWxfaWQpIHsKJiM0MzsJCXJldCA9IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoYWIsIHBlZXJfYWRkciwKJiM0MzsJCQkJCQkgICBwZWVyX2lkKTsKJiM0MzsJCWlmIChyZXQpCiYjNDM7CQkJYXRoMTJrX3dhcm4oYWIsCiYjNDM7CQkJCSAgICAmIzM0O2ZhaWxlZCB0byBmaXggdXAgcGVlciBpZCAldSBmb3IgZHAgcGVlciAlcE06ICVkXG4mIzM0OywKJiM0MzsJCQkJICAgIHBlZXJfaWQsIHBlZXJfYWRkciwgcmV0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02NTksNiAmIzQzOzcwNSw5IEBAIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJY2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDoKIAkJYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7CiAJCWJyZWFrOwomIzQzOwljYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOgomIzQzOwkJYXRoMTJrX2RwX2h0dF9tbG9fcGVlcl9tYXBfaGFuZGxlcihhYiwgc2tiKTsKJiM0MzsJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCAmIzM0O2RwX2h0dCBldmVudCAlZCBub3QgaGFuZGxlZFxuJiMzNDssCiAJCQkgICB0eXBlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oCmluZGV4IDk4NzY4OWYxMWNkYTQ1Li4yZGI3ZmIyN2MwMzYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oCkBAIC05MzAsNiAmIzQzOzkzMCw3IEBAIGVudW0gaHR0X3QyaF9tc2dfdHlwZSB7CiAJSFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsCiAJSFRUX1QySF9NU0dfVFlQRV9CS1BSRVNTVVJFX0VWRU5UX0lORCA9IDB4MjQsCiAJSFRUX1QySF9NU0dfVFlQRV9NTE9fVElNRVNUQU1QX09GRlNFVF9JTkQgPSAweDI4LAomIzQzOwlIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCA9IDB4MjksCiAJSFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDMJPSAweDJiLAogCUhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsCiB9OwpAQCAtOTc0LDExICYjNDM7OTc1LDIyIEBAIHN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQgewogCV9fbGUzMiBpbmZvMTsKIH0gX19wYWNrZWQ7CiAKJiM0MzsjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lECQlHRU5NQVNLKDIzLCA4KQomIzQzOyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzFfTUFDX0FERFJfSDE2CQlHRU5NQVNLKDE1LCAwKQomIzQzOwomIzQzO3N0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCB7CiYjNDM7CV9fbGUzMiBpbmZvMDsKJiM0MzsJX19sZTMyIG1hY19hZGRyX2wzMjsKJiM0MzsJX19sZTMyIGluZm8xOwomIzQzOwlfX2xlMzIgcmVzZXJ2ZWRbNV07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKIHN0cnVjdCBodHRfcmVzcF9tc2cgewogCXVuaW9uIHsKIAkJc3RydWN0IGh0dF90MmhfdmVyc2lvbl9jb25mX21zZyB2ZXJzaW9uX21zZzsKIAkJc3RydWN0IGh0dF90MmhfcGVlcl9tYXBfZXZlbnQgcGVlcl9tYXBfZXY7CiAJCXN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQgcGVlcl91bm1hcF9ldjsKJiM0MzsJCXN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7CiAJfTsKIH0gX19wYWNrZWQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMKaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYwpAQCAtNDcyLDcgJiM0Mzs0NzIsOSBAQCBpbnQgYXRoMTJrX2RwX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAlkcF9wZWVyLSZndDtpc19tbG8gPSBwYXJhbXMtJmd0O2lzX21sbzsKIAogCS8qCi0JICogRm9yIE1MTyBjbGllbnQsIHRoZSBob3N0IGFzc2lnbnMgdGhlIE1MIHBlZXIgSUQsIHNvIHNldCBwZWVyX2lkIGluIGRwX3BlZXIKJiM0MzsJICogRm9yIE1MTyBjbGllbnQsIHRoZSBNTCBwZWVyIElELCBlaXRoZXIga25vd24gb3IgUEVORElORywgbmVlZHMgdG8gYmUKJiM0MzsJICogaW5pdGlhbGl6ZWQgaGVyZSBzaW5jZSB0aGUgZm9sbG93aW5nIGxvZ2ljIGRlcGVuZHMgb24gaXQuCiYjNDM7CSAqCiAJICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmUKIAkgKiBhc3NpZ25lZCBhdCB0aGUgdGltZSBvZiBsaW5rIHBlZXIgY3JlYXRpb24KIAkgKi8KQEAgLTQ4OCwxMyAmIzQzOzQ5MCwxNyBAQCBpbnQgYXRoMTJrX2RwX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAlsaXN0X2FkZCgmYW1wO2RwX3BlZXItJmd0O2xpc3QsICZhbXA7ZHBfaHctJmd0O2RwX3BlZXJzX2xpc3QpOwogCiAJLyoKLQkgKiBGb3IgTUxPIGNsaWVudCwgdGhlIHBlZXJfaWQgZm9yIGF0aDEya19kcF9wZWVyIGlzIGFsbG9jYXRlZCBieSBob3N0Ci0JICogYW5kIHRoYXQgcGVlcl9pZCBpcyBrbm93biBhdCB0aGlzIHBvaW50LCBhbmQgaGVuY2UgdGhpcyBhdGgxMmtfZHBfcGVlcgotCSAqIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVIHRhYmxlIHVzaW5nIHRoZSBwZWVyX2lkLgotCSAqIEZvciBub24tTUxPIGNsaWVudCwgdGhpcyBhZGRpdGlvbiB0byBSQ1UgdGFibGUgc2hhbGwgYmUgZG9uZSBhdCB0aGUKLQkgKiB0aW1lIG9mIGFzc2lnbm1lbnQgb2YgYXRoMTJrX2RwX2xpbmtfcGVlciB0byBhdGgxMmtfZHBfcGVlci4KJiM0MzsJICogRm9yIGFuIE1MTyBjbGllbnQgd2hvc2UgTUwgcGVlciBJRCBpcyBhbGxvY2F0ZWQgYnkgdGhlIGhvc3QsIHRoZQomIzQzOwkgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVCiYjNDM7CSAqIHRhYmxlIHVzaW5nIGl0LiBGb3IgYW4gTUxPIGNsaWVudCBvbiBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmUKJiM0MzsJICogYWxsb2NhdGVzIHRoZSBJRCwgcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBhbmQgdGhlCiYjNDM7CSAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZQomIzQzOwkgKiBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCBoYW5kbGVyLiBGb3IgYSBub24tTUxPIGNsaWVudAomIzQzOwkgKiB0aGUgcHVibGlzaCBoYXBwZW5zIGxhdGVyLCBhdCB0aGUgdGltZSBvZiBhc3NpZ25tZW50IG9mCiYjNDM7CSAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuCiAJICovCi0JaWYgKGRwX3BlZXItJmd0O2lzX21sbykKJiM0MzsJaWYgKGRwX3BlZXItJmd0O2lzX21sbyAmYW1wOyZhbXA7CiYjNDM7CSAgICBkcF9wZWVyLSZndDtwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKQogCQlyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctJmd0O2RwX3BlZXJzW2RwX3BlZXItJmd0O3BlZXJfaWRdLCBkcF9wZWVyKTsKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7ZHBfaHctJmd0O3BlZXJfbG9jayk7CkBAIC01MTUsNyAmIzQzOzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkciwKIAkJcmV0dXJuOwogCX0KIAotCWlmIChkcF9wZWVyLSZndDtpc19tbG8pCiYjNDM7CWlmIChkcF9wZWVyLSZndDtpc19tbG8gJmFtcDsmYW1wOwomIzQzOwkgICAgZHBfcGVlci0mZ3Q7cGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORykKIAkJcmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LSZndDtkcF9wZWVyc1tkcF9wZWVyLSZndDtwZWVyX2lkXSwgTlVMTCk7CiAKIAlsaXN0X2RlbCgmYW1wO2RwX3BlZXItJmd0O2xpc3QpOwpAQCAtNjg4LDMgJiM0Mzs2OTUsNTUgQEAgdm9pZCBhdGgxMmtfZHBfbGlua19wZWVyX3Jlc2V0X3J4X3N0YXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBjb25zdCB1OCAqYWRkcikKIAlpZiAocnhfc3RhdHMpCiAJCW1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpOwogfQomIzQzOwomIzQzO2ludCBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiYjNDM7CQkJCSBjb25zdCB1OCAqcGVlcl9hZGRyLCB1MTYgcGVlcl9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpsaW5rX3BlZXI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlciA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnID0gYWItJmd0O2FnOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odyA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoOwomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJaWYgKHBlZXJfaWQgJmd0Oz0gKEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIHwgQVRIMTJLX01BWF9NTE9fUEVFUlMpKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBhZy0mZ3Q7bnVtX2h3OyBpJiM0MzsmIzQzOykgewomIzQzOwkJYWggPSBhZy0mZ3Q7YWhbaV07CiYjNDM7CQlpZiAoIWFoKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7YWgtJmd0O2RwX2h3LnBlZXJfbG9jayk7CiYjNDM7CQlkcF9wZWVyID0gYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9hZGRyKCZhbXA7YWgtJmd0O2RwX2h3LAomIzQzOwkJCQkJCSAgICAgICh1OCAqKXBlZXJfYWRkcik7CiYjNDM7CQlpZiAoZHBfcGVlcikgewomIzQzOwkJCWRwX2h3ID0gJmFtcDthaC0mZ3Q7ZHBfaHc7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FoLSZndDtkcF9ody5wZWVyX2xvY2spOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghZHBfcGVlcikKJiM0MzsJCXJldHVybiAtRU5PRU5UOwomIzQzOwomIzQzOwkvKiBkcF9ody0mZ3Q7cGVlcl9sb2NrIGlzIGhlbGQgKi8KJiM0MzsKJiM0MzsJZHBfcGVlci0mZ3Q7cGVlcl9pZCA9IHBlZXJfaWQ7CiYjNDM7CXJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody0mZ3Q7ZHBfcGVlcnNbcGVlcl9pZF0sIGRwX3BlZXIpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVRIMTJLX05VTV9NQVhfTElOS1M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlsaW5rX3BlZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGRwX3BlZXItJmd0O2xpbmtfcGVlcnNbaV0sCiYjNDM7CQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxkKCZhbXA7ZHBfaHctJmd0O3BlZXJfbG9jaykpOwomIzQzOwkJaWYgKGxpbmtfcGVlcikKJiM0MzsJCQlsaW5rX3BlZXItJmd0O21sX2lkID0gcGVlcl9pZDsKJiM0MzsJfQomIzQzOwomIzQzOwlhdGgxMmtfc3RhX3RvX2Foc3RhKGRwX3BlZXItJmd0O3N0YSktJmd0O21sX3BlZXJfaWQgPSBwZWVyX2lkOwomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2RwX2h3LSZndDtwZWVyX2xvY2spOwomIzQzOwomIzQzOwljb21wbGV0ZSgmYW1wO2FoLSZndDtwZWVyX21sX2lkX2RvbmUpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oCmluZGV4IGY1MDY3ZTY2ZjFlMTgyLi45ODQyNjcxYjU0NzU5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmgKQEAgLTE4MCw0ICYjNDM7MTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3AKIHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICoKIGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV9wZWVyaWQoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCB1MTYgcGVlcl9pZCk7CiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7CiYjNDM7aW50IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgY29uc3QgdTggKnBlZXJfYWRkciwKJiM0MzsJCQkJIHUxNiBwZWVyX2lkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IGQxMzViMjkzNjM3ODhiLi44MDkxNTAxY2Y3NDJhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaApAQCAtMjMyLDYgJiM0MzsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7CiAJCXUzMiBtYXhfY2xpZW50X2RiczsKIAkJdTMyIG1heF9jbGllbnRfZGJzX3NiczsKIAl9IGNsaWVudDsKJiM0MzsKJiM0MzsJYm9vbCBob3N0X2FsbG9jX21sX2lkOwogfTsKIAogc3RydWN0IGF0aDEya19od19vcHMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggNDkwYzEzNGMxZjI5MGIuLmFlODc0MTE0ZGM1MThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTEyNzgsMTMgJiM0MzsxMjc4LDE3IEBAIHZvaWQgYXRoMTJrX21hY19kcF9wZWVyX2NsZWFudXAoc3RydWN0IGF0aDEya19odyAqYWgpCiAJc3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wOwogCXN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gJmFtcDthaC0mZ3Q7ZHBfaHc7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtJmd0O2h3LSZndDt3aXBoeSk7CiYjNDM7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtwZWVycyk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkcF9ody0mZ3Q7cGVlcl9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZHBfcGVlciwgdG1wLCAmYW1wO2RwX2h3LSZndDtkcF9wZWVyc19saXN0LCBsaXN0KSB7CiAJCWlmIChkcF9wZWVyLSZndDtpc19tbG8pIHsKLQkJCXJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody0mZ3Q7ZHBfcGVlcnNbZHBfcGVlci0mZ3Q7cGVlcl9pZF0sIE5VTEwpOwotCQkJY2xlYXJfYml0KGRwX3BlZXItJmd0O3BlZXJfaWQsIGFoLSZndDtmcmVlX21sX3BlZXJfaWRfbWFwKTsKJiM0MzsJCQlpZiAoZHBfcGVlci0mZ3Q7cGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORykKJiM0MzsJCQkJcmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LSZndDtkcF9wZWVyc1tkcF9wZWVyLSZndDtwZWVyX2lkXSwKJiM0MzsJCQkJCQkgICBOVUxMKTsKJiM0MzsJCQlhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhdGgxMmtfc3RhX3RvX2Foc3RhKGRwX3BlZXItJmd0O3N0YSkpOwogCQl9CiAKIAkJbGlzdF9tb3ZlKCZhbXA7ZHBfcGVlci0mZ3Q7bGlzdCwgJmFtcDtwZWVycyk7CkBAIC0zNTI3LDExICYjNDM7MzUzMSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSwKIAlzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS0mZ3Q7YWhzdGE7CiAJc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGFfcDsKIAlzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWggPSBhcnN0YS0mZ3Q7YXJ2aWYtJmd0O2FyLSZndDthaDsKIAl1bnNpZ25lZCBsb25nIGxpbmtzOwogCXU4IGxpbmtfaWQ7CiAJaW50IGk7CiAKLQlpZiAoIXN0YS0mZ3Q7bWxvIHx8IGFoc3RhLSZndDttbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKQomIzQzOwlpZiAoIXN0YS0mZ3Q7bWxvKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQgJmFtcDsmYW1wOwomIzQzOwkgICAgYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpCiAJCXJldHVybjsKIAogCW1sLSZndDtlbmFibGVkID0gdHJ1ZTsKQEAgLTM1MzksMTIgJiM0MzszNTQ4LDI1IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLAogCiAJLyogRm9yIG5vdyBjb25zaWRlcmluZyB0aGUgcHJpbWFyeSB1bWFjIGJhc2VkIG9uIGFzc29jIGxpbmsgKi8KIAltbC0mZ3Q7cHJpbWFyeV91bWFjID0gYXJzdGEtJmd0O2lzX2Fzc29jX2xpbms7Ci0JbWwtJmd0O3BlZXJfaWRfdmFsaWQgPSB0cnVlOwomIzQzOwkvKgomIzQzOwkgKiBPbmx5IGNoaXBzIHRoYXQgYWxsb2NhdGUgdGhlIE1MRCBwZWVyIElEIG9uIHRoZSBob3N0IHNlbmQgYSB2YWxpZAomIzQzOwkgKiBtbF9wZWVyX2lkIGluIFdNSV9QRUVSX0FTU09DX0NNRElELiBGb3IgY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlCiYjNDM7CSAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy4KJiM0MzsJICovCiYjNDM7CW1sLSZndDtwZWVyX2lkX3ZhbGlkID0gYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQ7CiAJbWwtJmd0O2xvZ2ljYWxfbGlua19pZHhfdmFsaWQgPSB0cnVlOwogCiAJZXRoZXJfYWRkcl9jb3B5KG1sLSZndDttbGRfYWRkciwgc3RhLSZndDthZGRyKTsKIAltbC0mZ3Q7bG9naWNhbF9saW5rX2lkeCA9IGFyc3RhLSZndDtsaW5rX2lkeDsKLQltbC0mZ3Q7bWxfcGVlcl9pZCA9IGFoc3RhLSZndDttbF9wZWVyX2lkOwomIzQzOwkvKgomIzQzOwkgKiBXTUlfTUxPX1BFRVJfQVNTT0NfUEFSQU1TIGV4cGVjdHMgdGhlIHJhdyBNTCBwZWVyIElEIHdpdGhvdXQKJiM0MzsJICogdGhlIGhvc3Qtc2lkZSBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCBib29ra2VlcGluZyBiaXQuIEZvciBjaGlwcwomIzQzOwkgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlCiYjNDM7CSAqIGZpcm13YXJlIGFsd2F5cyBhbGxvY2F0ZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgaGVyZSk7IHNlbmQgMAomIzQzOwkgKiB0byBtYWtlIHRoYXQgaW50ZW50IGV4cGxpY2l0LgomIzQzOwkgKi8KJiM0MzsJbWwtJmd0O21sX3BlZXJfaWQgPSBhaC0mZ3Q7aG9zdF9hbGxvY19tbF9pZCA/CiYjNDM7CQkJIChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmYW1wOyB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpIDogMDsKIAltbC0mZ3Q7aWVlZV9saW5rX2lkID0gYXJzdGEtJmd0O2xpbmtfaWQ7CiAJbWwtJmd0O251bV9wYXJ0bmVyX2xpbmtzID0gMDsKIAltbC0mZ3Q7ZW1sX2NhcCA9IHN0YS0mZ3Q7ZW1sX2NhcDsKQEAgLTM1OTEsOCAmIzQzOzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLAogCiAJbWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTsKIAotCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSk7Ci0KIAlhcmctJmd0O3BlZXJfbmV3X2Fzc29jID0gIXJlYXNzb2M7CiAJYXRoMTJrX3BlZXJfYXNzb2NfaF9iYXNpYyhhciwgYXJ2aWYsIGFyc3RhLCBhcmcpOwogCWF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7CkBAIC0zODMyLDYgJiM0MzszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphciwKIAlyZXR1cm4gYnc7CiB9CiAKJiM0MztzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphciwKJiM0MzsJCQkJIHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnICpwZWVyX2FyZykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcmVpbml0X2NvbXBsZXRpb24oJmFtcDthci0mZ3Q7cGVlcl9hc3NvY19kb25lKTsKJiM0MzsJcmVpbml0X2NvbXBsZXRpb24oJmFtcDthaC0mZ3Q7cGVlcl9tbF9pZF9kb25lKTsKJiM0MzsKJiM0MzsJcmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxuJiMzNDssCiYjNDM7CQkJICAgIHBlZXJfYXJnLSZndDtwZWVyX21hYywgcGVlcl9hcmctJmd0O3ZkZXZfaWQsIHJldCk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkgewomIzQzOwkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCiYjNDM7CQkJICAgIHBlZXJfYXJnLSZndDtwZWVyX21hYywgcGVlcl9hcmctJmd0O3ZkZXZfaWQpOwomIzQzOwkJcmV0dXJuIC1FVElNRURPVVQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRm9yIGRldmljZXMgd2hlcmUgdGhlIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUxEIHBlZXIgSUQsIHRoZSBob3N0CiYjNDM7CSAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzCiYjNDM7CSAqIGhhbmRsZWQgaW4gYSBzb2Z0aXJxIChCSCB3b3JrcXVldWUpIGNvbnRleHQgdGhhdCBjYW5ub3QgdGFrZSB0aGUKJiM0MzsJICogd2lwaHkgbG9jay4gQmxvY2sgaGVyZSwgd2hpbGUgc3RpbGwgaG9sZGluZyB0aGUgd2lwaHkgbG9jaywgdW50aWwKJiM0MzsJICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3QKJiM0MzsJICogYWxsIG90aGVyIHdpcGh5LWxvY2tlZCBtbF9wZWVyX2lkIGFjY2Vzc2VzLgomIzQzOwkgKgomIzQzOwkgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmsKJiM0MzsJICogcGVlciBhc3NvYywgc28gYmxvY2sgb25seSBmb3IgdGhhdCBsaW5rLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFhaC0mZ3Q7aG9zdF9hbGxvY19tbF9pZCAmYW1wOyZhbXA7CiYjNDM7CSAgICBwZWVyX2FyZy0mZ3Q7aXNfYXNzb2MgJmFtcDsmYW1wOwomIzQzOwkgICAgcGVlcl9hcmctJmd0O21sLmVuYWJsZWQgJmFtcDsmYW1wOwomIzQzOwkgICAgcGVlcl9hcmctJmd0O21sLmFzc29jX2xpbmsgJmFtcDsmYW1wOwomIzQzOwkgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FoLSZndDtwZWVyX21sX2lkX2RvbmUsIDEgKiBIWikpIHsKJiM0MzsJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcbiYjMzQ7LAomIzQzOwkJCSAgICBwZWVyX2FyZy0mZ3Q7cGVlcl9tYWMsIHBlZXJfYXJnLSZndDt2ZGV2X2lkKTsKJiM0MzsJCXJldHVybiAtRVRJTUVET1VUOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJCQkgICAgIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLAogCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZikKQEAgLTM5MTIsMTggJiM0MzszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJfQogCiAJcGVlcl9hcmctJmd0O2lzX2Fzc29jID0gdHJ1ZTsKLQlyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTsKLQlpZiAocmV0KSB7Ci0JCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxuJiMzNDssCi0JCQkgICAgYnNzX2NvbmYtJmd0O2Jzc2lkLCBhcnZpZi0mZ3Q7dmRldl9pZCwgcmV0KTsKLQkJcmV0dXJuOwotCX0KIAotCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7YXItJmd0O3BlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkgewotCQlhdGgxMmtfd2Fybihhci0mZ3Q7YWIsICYjMzQ7ZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXG4mIzM0OywKLQkJCSAgICBic3NfY29uZi0mZ3Q7YnNzaWQsIGFydmlmLSZndDt2ZGV2X2lkKTsKJiM0MzsJcmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7CiYjNDM7CWlmIChyZXQpCiAJCXJldHVybjsKLQl9CiAKIAlyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtJmd0O2Jzc2lkLAogCQkJCSAgICAgJmFtcDtsaW5rX3N0YS0mZ3Q7aHRfY2FwLCAmYW1wO2xpbmtfc3RhLSZndDtoZV82Z2h6X2NhcGEpOwpAQCAtNjQ3NywxOCAmIzQzOzY1MzUsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX3N0YXRpb25fYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsCiAJfQogCiAJcGVlcl9hcmctJmd0O2lzX2Fzc29jID0gdHJ1ZTsKLQlyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTsKLQlpZiAocmV0KSB7Ci0JCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcbiYjMzQ7LAotCQkJICAgIGFyc3RhLSZndDthZGRyLCBhcnZpZi0mZ3Q7dmRldl9pZCwgcmV0KTsKLQkJcmV0dXJuIHJldDsKLQl9CiAKLQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FyLSZndDtwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpIHsKLQkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCi0JCQkgICAgYXJzdGEtJmd0O2FkZHIsIGFydmlmLSZndDt2ZGV2X2lkKTsKLQkJcmV0dXJuIC1FVElNRURPVVQ7Ci0JfQomIzQzOwlyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAludW1fdmh0X3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX3ZodF9yYXRlcyhhciwgYmFuZCwgbWFzayk7CiAJbnVtX2hlX3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX2hlX3JhdGVzKGFyLCBiYW5kLCBtYXNrKTsKQEAgLTY4MzcsMTQgJiM0Mzs2ODg3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3N0YV9yY191cGRhdGVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndrKQogCQkJCQkJICBwZWVyX2FyZywgdHJ1ZSk7CiAKIAkJCXBlZXJfYXJnLSZndDtpc19hc3NvYyA9IGZhbHNlOwotCQkJZXJyID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7Ci0JCQlpZiAoZXJyKQotCQkJCWF0aDEya193YXJuKGFyLSZndDthYiwgJiMzNDtmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcbiYjMzQ7LAotCQkJCQkgICAgYXJzdGEtJmd0O2FkZHIsIGFydmlmLSZndDt2ZGV2X2lkLCBlcnIpOwogCi0JCQlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FyLSZndDtwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpCi0JCQkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O2ZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxuJiMzNDssCi0JCQkJCSAgICBhcnN0YS0mZ3Q7YWRkciwgYXJ2aWYtJmd0O3ZkZXZfaWQpOwomIzQzOwkJCWF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpOwogCQl9CiAJfQogfQpAQCAtNzI2MiwxMCAmIzQzOzczMDYsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX21sX3N0YXRpb25fcmVtb3ZlKHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiwKIAkJYXRoMTJrX21hY19mcmVlX3VuYXNzaWduX2xpbmtfc3RhKGFoLCBhaHN0YSwgbGlua19pZCk7CiAJfQogCi0JaWYgKHN0YS0mZ3Q7bWxvKSB7Ci0JCWNsZWFyX2JpdChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCwgYWgtJmd0O2ZyZWVfbWxfcGVlcl9pZF9tYXApOwotCQlhaHN0YS0mZ3Q7bWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEOwotCX0KJiM0MzsJaWYgKHN0YS0mZ3Q7bWxvKQomIzQzOwkJYXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpOwogfQogCiBzdGF0aWMgaW50IGF0aDEya19tYWNfaGFuZGxlX2xpbmtfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LApAQCAtNzcyOSwxNSAmIzQzOzc3NzEsMjMgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkvKiBNTCBzdGEgKi8KIAkJaWYgKHN0YS0mZ3Q7bWxvICZhbXA7JmFtcDsgIWFoc3RhLSZndDtsaW5rc19tYXAgJmFtcDsmYW1wOwogCQkgICAgKGh3ZWlnaHQxNihzdGEtJmd0O3ZhbGlkX2xpbmtzKSA9PSAxKSkgewotCQkJYWhzdGEtJmd0O21sX3BlZXJfaWQgPSBhdGgxMmtfcGVlcl9tbF9hbGxvYyhhaCk7Ci0JCQlpZiAoYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHsKLQkJCQlhdGgxMmtfaHdfd2FybihhaCwgJiMzNDt1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTSYjMzQ7LAotCQkJCQkgICAgICAgc3RhLSZndDthZGRyKTsKLQkJCQlnb3RvIGV4aXQ7CiYjNDM7CQkJaWYgKGFoLSZndDtob3N0X2FsbG9jX21sX2lkKSB7CiYjNDM7CQkJCWFoc3RhLSZndDttbF9wZWVyX2lkID0gYXRoMTJrX3BlZXJfbWxfYWxsb2MoYWgpOwomIzQzOwkJCQlpZiAoYWhzdGEtJmd0O21sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHsKJiM0MzsJCQkJCWF0aDEya19od193YXJuKGFoLCAmIzM0O3VuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNJiMzNDssCiYjNDM7CQkJCQkJICAgICAgIHN0YS0mZ3Q7YWRkcik7CiYjNDM7CQkJCQlnb3RvIGV4aXQ7CiYjNDM7CQkJCX0KJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQgYW5kIG5vdGlmaWVzCiYjNDM7CQkJCSAqIHRoZSBob3N0IHZpYSBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUAomIzQzOwkJCQkgKi8KJiM0MzsJCQkJYWhzdGEtJmd0O21sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORzsKIAkJCX0KIAogCQkJZHBfcGFyYW1zLmlzX21sbyA9IHRydWU7Ci0JCQlkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLSZndDttbF9wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7CiYjNDM7CQkJZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS0mZ3Q7bWxfcGVlcl9pZDsKIAkJfQogCiAJCWRwX3BhcmFtcy5zdGEgPSBzdGE7CkBAIC03ODc0LDEwICYjNDM7NzkyNCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIHBlZXJfZGVsZXRlOgogCWF0aDEya19kcF9wZWVyX2RlbGV0ZSgmYW1wO2FoLSZndDtkcF9odywgc3RhLSZndDthZGRyLCBzdGEpOwogbWxfcGVlcl9pZF9jbGVhcjoKLQlpZiAoc3RhLSZndDttbG8pIHsKLQkJY2xlYXJfYml0KGFoc3RhLSZndDttbF9wZWVyX2lkLCBhaC0mZ3Q7ZnJlZV9tbF9wZWVyX2lkX21hcCk7Ci0JCWFoc3RhLSZndDttbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7Ci0JfQomIzQzOwlpZiAoc3RhLSZndDttbG8pCiYjNDM7CQlhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhaHN0YSk7CiBleGl0OgogCS8qIHVwZGF0ZSB0aGUgc3RhdGUgaWYgZXZlcnl0aGluZyB3ZW50IHdlbGwgKi8KIAlpZiAoIXJldCkKQEAgLTE1MzA3LDYgJiM0MzsxNTM1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLAogCWFoLSZndDtudW1fcmFkaW8gPSBudW1fcGRldl9tYXA7CiAKIAltdXRleF9pbml0KCZhbXA7YWgtJmd0O2h3X211dGV4KTsKJiM0MzsJaW5pdF9jb21wbGV0aW9uKCZhbXA7YWgtJmd0O3BlZXJfbWxfaWRfZG9uZSk7CiAKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2FoLSZndDtkcF9ody5wZWVyX2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7YWgtJmd0O2RwX2h3LmRwX3BlZXJzX2xpc3QpOwpAQCAtMTUzODEsOCAmIzQzOzE1NDMwLDkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpCiAJaW50IG1hY19pZCwgZGV2aWNlX2lkLCB0b3RhbF9yYWRpbywgbnVtX2h3OwogCXN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7CiAJc3RydWN0IGF0aDEya19odyAqYWg7Ci0JaW50IHJldCwgaSwgajsKJiM0MzsJYm9vbCBjb25mID0gZmFsc2U7CiAJdTggcmFkaW9fcGVyX2h3OwomIzQzOwlpbnQgcmV0LCBpLCBqOwogCiAJdG90YWxfcmFkaW8gPSAwOwogCWZvciAoaSA9IDA7IGkgJmx0OyBhZy0mZ3Q7bnVtX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CkBAIC0xNTQyMiw2ICYjNDM7MTU0NzIsMTkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpCiAJCQl9CiAKIAkJCWFiID0gYWctJmd0O2FiW2RldmljZV9pZF07CiYjNDM7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiB0aGUgYXNzdW1wdGlvbiBpcyBhbGwgZGV2aWNlcyB3aXRoaW4gYW4gYWgKJiM0MzsJCQkgKiBzaGFyZSB0aGUgc2FtZSBob3N0X2FsbG9jX21sX2lkIGNvbmZpZ3VyYXRpb24KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoaiA9PSAwKSB7CiYjNDM7CQkJCWNvbmYgPSBhYi0mZ3Q7aHdfcGFyYW1zLSZndDtob3N0X2FsbG9jX21sX2lkOwomIzQzOwkJCX0gZWxzZSBpZiAoY29uZiAhPSBhYi0mZ3Q7aHdfcGFyYW1zLSZndDtob3N0X2FsbG9jX21sX2lkKSB7CiYjNDM7CQkJCWF0aDEya193YXJuKGFiLCAmIzM0O2luY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJiMzOTt0XG4mIzM0OywKJiM0MzsJCQkJCSAgICBjb25mID8gJiMzNDtob3N0JiMzNDsgOiAmIzM0O2Zpcm13YXJlJiMzNDssIGRldmljZV9pZCk7CiYjNDM7CQkJCWdvdG8gZXJyOwomIzQzOwkJCX0KJiM0MzsKIAkJCXBkZXZfbWFwW2pdLmFiID0gYWI7CiAJCQlwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDsKIAkJCW1hY19pZCYjNDM7JiM0Mzs7CkBAIC0xNTQ0Niw2ICYjNDM7MTU1MDksNyBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZykKIAkJfQogCiAJCWFoLSZndDtkZXYgPSBhYi0mZ3Q7ZGV2OwomIzQzOwkJYWgtJmd0O2hvc3RfYWxsb2NfbWxfaWQgPSBjb25mOwogCiAJCWFnLSZndDthaFtpXSA9IGFoOwogCQlhZy0mZ3Q7bnVtX2h3JiM0MzsmIzQzOzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMKaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYwpAQCAtMjMwLDcgJiM0MzsyMzAsMTYgQEAgaW50IGF0aDEya19wZWVyX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAJCS8qIEZpbGwgTUwgaW5mbyBpbnRvIGNyZWF0ZWQgcGVlciAqLwogCQlpZiAoc3RhLSZndDttbG8pIHsKIAkJCW1sX3BlZXJfaWQgPSBhaHN0YS0mZ3Q7bWxfcGVlcl9pZDsKLQkJCXBlZXItJmd0O21sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzOwkJCS8qCiYjNDM7CQkJICogRm9yIGNoaXBzIHdoZXJlIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUwgcGVlciBJRCwKJiM0MzsJCQkgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZQomIzQzOwkJCSAqIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQgaGFuZGxlciBmaXhlcyB1cAomIzQzOwkJCSAqIHBlZXItJmd0O21sX2lkIG9uY2UgdGhlIElEIGlzIGtub3duLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKQomIzQzOwkJCQlwZWVyLSZndDttbF9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcGVlci0mZ3Q7bWxfaWQgPSBtbF9wZWVyX2lkOwogCQkJZXRoZXJfYWRkcl9jb3B5KHBlZXItJmd0O21sX2FkZHIsIHN0YS0mZ3Q7YWRkcik7CiAKIAkJCS8qIHRoZSBhc3NvYyBsaW5rIGlzIGNvbnNpZGVyZWQgcHJpbWFyeSBmb3Igbm93ICovCkBAIC0yNzYsOSAmIzQzOzI4NSwyNSBAQCB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpCiAJfQogCiAJaWYgKG1sX3BlZXJfaWQgPT0gQVRIMTJLX01BWF9NTE9fUEVFUlMpCi0JCW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDsKJiM0MzsJCXJldHVybiBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDsKIAotCXJldHVybiBtbF9wZWVyX2lkOwomIzQzOwlyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSkKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLSZndDtody0mZ3Q7d2lwaHkpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBPbmx5IGRldmljZXMgdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3Qgb3duIGEgc2xvdCBpbgomIzQzOwkgKiBmcmVlX21sX3BlZXJfaWRfbWFwLgomIzQzOwkgKi8KJiM0MzsJaWYgKGFoLSZndDtob3N0X2FsbG9jX21sX2lkICZhbXA7JmFtcDsKJiM0MzsJICAgIChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmbHQ7CiYjNDM7CSAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSkKJiM0MzsJCWNsZWFyX2JpdChhaHN0YS0mZ3Q7bWxfcGVlcl9pZCAmYW1wOyB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQsCiYjNDM7CQkJICBhaC0mZ3Q7ZnJlZV9tbF9wZWVyX2lkX21hcCk7CiYjNDM7CWFoc3RhLSZndDttbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7CiB9CiAKIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oCmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmgKQEAgLTI2LDQgJiM0MzsyNiw1IEBAIGludCBhdGgxMmtfbGlua19zdGFfcmhhc2hfYWRkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyCiBzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphdGgxMmtfbGlua19zdGFfZmluZF9ieV9hZGRyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJCQkgICAgIGNvbnN0IHU4ICphZGRyKTsKIHUxNiBhdGgxMmtfcGVlcl9tbF9hbGxvYyhzdHJ1Y3QgYXRoMTJrX2h3ICphaCk7CiYjNDM7dm9pZCBhdGgxMmtfcGVlcl9tbF9mcmVlKHN0cnVjdCBhdGgxMmtfaHcgKmFoLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpOwogI2VuZGlmIC8qIF9QRUVSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggZTViZjlkMjE4MTA0MGQuLjBjMjc3ZjUxZDk5YzFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCkBAIC00MzksNiAmIzQzOzQzOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7CiAJCQkubWF4X2NsaWVudF9kYnMgPSAxMjgsCiAJCQkubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LAogCQl9LAomIzQzOwomIzQzOwkJLmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7d2NuNzg1MCBodzIuMCYjMzQ7LApAQCAtNTMwLDYgJiM0Mzs1MzIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsCiAJfSwKIAl7CiAJCS5uYW1lID0gJiMzNDtxY245Mjc0IGh3Mi4wJiMzNDssCkBAIC02MTcsNiAmIzQzOzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7CiAJCQkubWF4X2NsaWVudF9kYnMgPSAxMjgsCiAJCQkubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LAogCQl9LAomIzQzOwomIzQzOwkJLmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7aXBxNTMzMiBodzEuMCYjMzQ7LApAQCAtNjk3LDYgJiM0Mzs3MDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSwKIAl9LAogCXsKIAkJLm5hbWUgPSAmIzM0O3FjYzIwNzIgaHcxLjAmIzM0OywKQEAgLTc4OSw2ICYjNDM7Nzk3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHsKIAkJCS5tYXhfY2xpZW50X2RicyA9IDEyOCwKIAkJCS5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsCiAJCX0sCiYjNDM7CiYjNDM7CQkuaG9zdF9hbGxvY19tbF9pZCA9IGZhbHNlLAogCX0sCiAJewogCQkubmFtZSA9ICYjMzQ7aXBxNTQyNCBodzEuMCYjMzQ7LApAQCAtODczLDYgJiM0Mzs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0gewogCQkJLm1heF9jbGllbnRfZGJzID0gMTI4LAogCQkJLm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCwKIAkJfSwKJiM0MzsKJiM0MzsJCS5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSwKIAl9LAogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc0NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGJpZyBkZWFsIGJlY2F1c2UgYGF0aDEya2AgaXMgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5LiBUaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0JiMzOTtzIGFkZGluZyBhIGZsYWcsIGEgbmV3IEhUVCBldmVudCBoYW5kbGVyIGZvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBwZWVyIG1hcHBpbmcsIGFuZCBtb2RpZnlpbmcgYSBidW5jaCBvZiBleGlzdGluZyBmdW5jdGlvbnMgcmVsYXRlZCB0byBwZWVyIGFzc29jaWF0aW9uIGFuZCBjcmVhdGlvbi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhZGRpbmcgTUxPIHN1cHBvcnQgdG8gdGhlIGRyaXZlci4gVGhpcyBpcyBpbnRlcmVzdGluZywgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRlc3RhYmlsaXR5LiBDYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8KCk15IGNvbmNlcm4gaXMgdGhhdCBXaS1GaSBkcml2ZXJzLCAqZXNwZWNpYWxseSogYXQgdGhpcyBsZXZlbCwgdXN1YWxseSBkZXBlbmQgb24gYWN0dWFsIGhhcmR3YXJlLiBZb3UgbmVlZCBhIFBDSWUgZGV2aWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgdGhhdCBtYWtlcyBmdXp6aW5nIGFuZCB0ZXN0aW5nIGluIFFFTVUgb3IgR0NFIHByZXR0eSB0cmlja3kuIEkgaW1tZWRpYXRlbHkgdGhpbmsgb2YgYG1hYzgwMjExX2h3c2ltYCwgdGhlIHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgbWFjODAyMTEsIGJ1dCB0aGF0JiMzOTtzIG1hYzgwMjExLiBJdCB3b3VsZG4mIzM5O3QgbW9kZWwgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgYGF0aDEya2AgaGFyZHdhcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gYGF0aDEya2AgYmUgZnV6emVkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBtYWM4MDIxMSBzdXBwb3J0LCBidXQgdGhhdOKAmXMgYnJvYWQgYW5kIHByb2JhYmx5IHdvdWxkbuKAmXQgaGl0IHRoaXMgcGFydGljdWxhciBkcml2ZXIgdW5sZXNzIHRoZXJlIHdhcyBhIHNwZWNpZmljIGVtdWxhdG9yLiBXZSBoYXZlIGVtdWxhdG9ycyBmb3Igb3RoZXIgaGFyZHdhcmUgdHlwZXMsIGxpa2UgYHZoY2lgIGZvciBCbHVldG9vdGggb3IgYGR1bW15X2hjZGAgZm9yIFVTQiwgYnV0IEnigJltIG5vdCBhd2FyZSBvZiBhbnl0aGluZyBsaWtlIHRoYXQgZm9yIGBhdGgxMmtgLiBObyBzcGVjaWZpYyB2aXJ0dWFsIGRldmljZSwgbm8uCgpUaGVuIEkgcmVjYWxsZWQgc3l6a2FsbGVyIGhhcyBQQ0kgZnV6emluZyB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbXVsYXRlZCBQQ0kgKGUuZy4gYHZmaW9gKS4gQnV0IHdhaXQsIHRoZSBvcmlnaW5hbCBwcm9tcHQgKnNwZWNpZmljYWxseSogc2FpZCBpdCYjMzk7cyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBoYXJkd2FyZSBlbXVsYXRpb24uIFNvLCBpcyB0aGlzIHBhdGNoIHJlYWNoYWJsZSBhdCBhbGw/CgpUaGlzIG1lYW5zIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogd2F5IHRvIGdldCB0byB0aGlzIGBhdGgxMmtgIGNvZGUgd2l0aCBmdXp6aW5nLiBJcyB0aGVyZSBhbnl0aGluZyBpbiBzeXprYWxsZXImIzM5O3MgZGVmaW5pdGlvbnMgZm9yIFBDSSBkZXZpY2VzLCBvciBhbnl0aGluZyBleHBsaWNpdGx5IHRhcmdldGluZyBgYXRoMTJrYD8gSSBzaG91bGQgY2hlY2sgYHN5cy9saW51eC9kZXZfd2lmaS50eHRgIGFuZCB0aGUga2VybmVsIHNvdXJjZSwgYW5kIG1heWJlIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBhbnkgc2lnbnMgb2YgZnV6emluZyBvciB2aXJ0dWFsIGRldmljZXMgcmVsYXRlZCB0byBgYXRoMTJrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHRlc3QgbW9kdWxlIG9yIGFueSB3YXkgb2YgdmlydHVhbGl6aW5nIG9yIGVtdWxhdGluZyBgYXRoMTJrYCwgYmVjYXVzZSBpZiB0aGVyZSBpc24mIzM5O3QsIHRoaXMgcGF0Y2ggaXMgcHJvYmFibHkgaW5hY2Nlc3NpYmxlIHdpdGhvdXQgcmVhbCBoYXJkd2FyZSwgd2hpY2ggbWFrZXMgaXQgbXVjaCBoYXJkZXIgdG8gdGVzdCBhbmQgZnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3RpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYGF0aDEya2AgRW11bGF0b3IgUHJlc2VuY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIGtlcm5lbCBhbmQgdGhlIGBhdGgxMmtgIGRyaXZlci4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgd2lyZWxlc3MgY2hpcHNldCBkZXZlbG9wbWVudCBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGVzZSBkcml2ZXJzLCBteSBmaXJzdCB0aG91Z2h0IGlzOiBIYXMgYW55b25lLCBzb21ld2hlcmUsIGNyZWF0ZWQgYW4gKmVtdWxhdG9yKiBmb3IgYGF0aDEya2Agd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmPyBJJiMzOTttIG5vdCB0YWxraW5nIGFib3V0IGZ1bGwgZW11bGF0aW9uIGxpa2UgUUVNVSBvciBzb21ldGhpbmc7IEkmIzM5O20gdGhpbmtpbmcgbW9yZSBhbG9uZyB0aGUgbGluZXMgb2YgYSBzb2Z0d2FyZS1iYXNlZCByZXByZXNlbnRhdGlvbiBmb3IgdGVzdGluZyBwdXJwb3NlcywgbWF5YmUgc2ltdWxhdGluZyBjZXJ0YWluIGhhcmR3YXJlIGJlaGF2aW9ycyBvciBmb3IgZHJpdmVyIGRldmVsb3BtZW50IGluIHRoZSBhYnNlbmNlIG9mIHRoZSByZWFsIGhhcmR3YXJlLiBTbywgbXkgaW5pdGlhbCBxdWVzdGlvbiBpczogRG9lcyBhIGtlcm5lbC1sZXZlbCBgYXRoMTJrYCBlbXVsYXRvciBleGlzdCwgYW5kLCBpZiBzbywgd2hhdCBhcmUgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgc3lzdGVtPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEyayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM1MDEyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZz02NT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Njpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0FUSDExSylcdFx0JiM0Mzs9IGF0aDExay9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQVRIMTJLKVx0XHQmIzQzOz0gYXRoMTJrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMktcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozOlx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxNTpcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MTc9Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxODpcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yNT1jb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRIMTJLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTM1PWNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5Olx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz00ND1jb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NTpcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz01Mz1jb25maWcgQVRIMTJLX0NPUkVEVU1QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTQ6XHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVx0ZGVwZW5kcyBvbiBBVEgxMktcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTg6XHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gYXRoMTJrLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzphdGgxMmsteSAmIzQzOz0gY29yZS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTQtXHQgICAgaGFsLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgJiM0Mzs9IGFoYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfQVRIMTJLKSAmIzQzOz0gd2lmaTcvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyOTphdGgxMmstJChDT05GSUdfQVRIMTJLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMwOmF0aDEyay0kKENPTkZJR19BQ1BJKSAmIzQzOz0gYWNwaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMxOmF0aDEyay0kKENPTkZJR19BVEgxMktfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzI6YXRoMTJrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzM6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM1OmF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoc3RydWN0IGF0aDEya19iYXNlICphYiwgaW50IGZ1bmMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgtXHRpZiAoIXJvb3RfaGFuZGxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtpbnZhbGlkIGFjcGkgaGFuZGxlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVx0aWYgKCFvYmopIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfZXZhbHVhdGVfZHNtKCkgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVx0XHRyZXR1cm4gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ni1cdFx0XHRcdCAgIEFUSDEyS19BQ1BJX0JERl9BTkNIT1JfU1RSSU5HX0xFTikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gQkRGIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDgtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlc3RyaW5nLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNjItXHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoIFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjYzOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTY0LVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc1LVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0NGR19TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NjpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBjb25maWcgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ny1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04Ny1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg4Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gVEFTIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy05OS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTAwOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTAxLVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0dFT19PRkZTRVRfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTI6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIEdFTyBPRkZTRVQgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMy1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjMtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjQ6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzUtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMzY6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEzNy1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDctXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTQ4Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7QUNQSSBEU00gbWV0aG9kIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG9iamVjdCB0eXBlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE0OS1cdFx0XHQgICAgb2JqLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2MTpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjctXHQgICAgdGFzX3Nhcl9wb3dlcl90YWJsZVsxXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2ODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2xhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzI6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0RBVEFfVFlQRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3My1cdFx0XHRcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTc2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTgzOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4OC1cdCAgICBhYi1cdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4OTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgbGF0ZXN0IEFDUEkgQklPUyBTQVIgZGF0YVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5MzpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5NC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5NTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjAyOnN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA0LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwNTpcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA3LVx0aWYgKGV2ZW50ID09IEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA4Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dW5rbm93biBhY3BpIG5vdGlmeSAldVxcblwmIzM0OywgZXZlbnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVx0aWYgKCFhYi1cdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O2FjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxOC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxOTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byB1cGRhdGUgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjM6XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjI0LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjI1Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIFRBUyBwb3dlciBsaW1pdCBkYXRhOiAlZFwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM0Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHVwZGF0ZSBCSU9TIFNBUjogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzg6XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcG93ZXIoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQwOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBCSU9TIFNBUiBwb3dlciBsaW1pdDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDU6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0OTpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTItXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU1Olx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19nZW9fY21kKGFiLCBhYi1cdTAwM2VhY3BpLmdlb19vZmZzZXRfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTc6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBHRU8gdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2NDpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2ODpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfQ09ORklHX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjktXHRcdFx0XHQgICAgICBhYi1cdTAwM2VhY3BpLnRhc19jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjcxLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjcyOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgY29uZmlnIHRhYmxlIHBhcmFtZXRlcjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzMtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc3Olx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzgtXHRcdFx0XHQgICAgICBhYi1cdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgwLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjgxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgyLVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4OTpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTQ6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDgtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMwOTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEwLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTE6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIHBhcmFtZXRlcnM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEyLVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTYtXHRpZiAoYWItXHUwMDNlYWNwaS5hY3BpX2Jpb3Nfc2FyX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzE3Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxOC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzE5Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBBQ1BJIEJJT1MgU0FSOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyMC1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI1LVx0XHRidWYgPSBhYi1cdTAwM2VhY3BpLmNjYV9kYXRhICYjNDM7IEFUSDEyS19BQ1BJX0NDQV9USFJfT0ZGU0VUX0RBVEFfT0ZGU0VUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI2Olx0XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNy1cdFx0XHRcdFx0ICAgICAgV01JX0JJT1NfUEFSQU1fQ0NBX1RIUkVTSE9MRF9UWVBFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzMxOlx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIENDQSB0aHJlc2hvbGQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMyLVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM3LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV9iYW5kX2VkZ2VfZW5hYmxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzg6XHRcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM5LVx0XHRcdFx0XHQgICAgICBXTUlfQklPU19QQVJBTV9UWVBFX0JBTkRFREdFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0Mi1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzQzOlx0XHRcdGF0aDEya193YXJuKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzQ0LVx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM1MTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzY5Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3NS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzY6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Ny1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc4Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgRElTQUJMRSBGTEFHOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3OS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CREZfRVhUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JERl9FWFQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVx0XHRpZiAocmV0IHx8IGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAmIzM5O1xcMCYjMzk7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTQ6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBCREYgRVhUOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDAyOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19DRkcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAzLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDQ6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBUQVMgY29uZmlnIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwNS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwOS1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfREFUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMjpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxMy1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMi1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyNTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIGJpb3Mgc2FyIGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI2LVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMwLVx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzE6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMzpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIGdlbyBvZmZzZXQgZGF0YTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzQtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDQtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQ0NBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0NDQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NzpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkIGNvbmZpZ3VyYXRpb246ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ4LVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDU5LVx0XHRcdFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MjpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBiYW5kIGVkZ2UgY2hhbm5lbCBwb3dlcjogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjMtXHRcdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzMtXHRcdFx0XHRcdCAgICAgQUNQSV9ERVZJQ0VfTk9USUZZLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc0Olx0XHRcdFx0XHQgICAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnksIGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3NS1cdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGluc3RhbGwgRFNNIG5vdGlmeSBjYWxsYmFjazogJWRcXG5cJiMzNDssIHN0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ4NTppbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTItXHRpZiAoc3Ryc2NweShhYi1cdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVx1MDAzZWFjcGkuYmRmX3N0cmluZyAmIzQzOyA0LCBtYXhfbGVuKSBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ5MzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk0LVx0XHRcdCAgIFwmIzM0O2FjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwMDp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA2LVx0XHRcdFx0ICAgQUNQSV9ERVZJQ0VfTk9USUZZLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NTA3Olx0XHRcdFx0ICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3NTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Njp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Nzpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc4OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc5OnZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODA6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjg0OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTM6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTg6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDM6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDc6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjpzdGF0aWMgc3RydWN0IGF0aDEya19haGJfZHJpdmVyICphdGgxMmtfYWhiX2ZhbWlseV9kcml2ZXJzW0FUSDEyS19ERVZJQ0VfRkFNSUxZX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBjb25zdCBjaGFyIGF0aDEya191c2VycGRfaXJxW11bOV0gPSB7XCYjMzQ7c3Bhd25cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0LVx0XHRcdFx0ICAgICBcJiMzNDtyZWFkeVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTgzPWVudW0gZXh0X2lycV9udW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMjM6c3RhdGljIHUzMiBhdGgxMmtfYWhiX3JlYWQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMS1cdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzk6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jYW5jZWxfd29ya3F1ZXVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE0NDpcdFx0c3RydWN0IGF0aDEya19jZV9waXBlICpjZV9waXBlID0gXHUwMDI2YWItXHUwMDNlY2UuY2VfcGlwZVtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDY6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDctXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE1MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjE6c3RhdGljIHZvaWQgX19hdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2NjpcdFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2ODpcdFx0YXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2OS1cdFx0aWYgKGlycV9ncnAtXHUwMDNlbmFwaV9lbmFibGVkKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE3NzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE4NTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg5Olx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5MDpcdGF0aDEya19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5NzpcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFx1MDAyNiB+QklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIwMTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjEyLVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTM6XHRcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNS1cdGlmIChjZV9hdHRyLVx1MDAzZWRlc3RfbmVudHJpZXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE2Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE3Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxOC1cdFx0XHRcdCAgICBpZTNfcmVnX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzMtXHRpZiAoY2VfYXR0ci1cdTAwM2VzcmNfbmVudHJpZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNDpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzYtXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNzpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM4Olx0XHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICYjNDM7IENFX0hPU1RfSUVfM19TSElGVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM5LVx0XHRcdFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0OTpcdFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1MC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjU3OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjYyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI2MzpcdFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycXNfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3NzpcdFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3OC1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjc5Olx0XHRhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycXNfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjg3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODg6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODktXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5MDpcdFx0YXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk0OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTY6XHRhdGgxMmtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3Olx0YXRoMTJrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDQ6XHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDUtXHRpbnQgaTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTg4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJldmlld2luZyB0aGUgYGF0aDEya2AgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoMTJrYCwgYW5kIGl0JiMzOTtzIGdvdCBib3RoIGBhdGgxMmtfYWhiYCBhbmQgYGF0aDEya19wY2lgIHZhcmlhbnRzLiAgVGhlbiB0aGVyZSYjMzk7cyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBzaW11bGF0ZXMgbWFjODAyMTEsIGJ1dCB0aGF0JiMzOTtzIGRpc3RpbmN0IGZyb20gdGhlIGBhdGgxMmtgIGhhcmR3YXJlIGRyaXZlciBpdHNlbGYuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBgYXRoMTJrYCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyJiMzOTtzIGdvdCBQQ0kgZnV6emluZywgd2hpY2ggc291bmRzIHByb21pc2luZyBzaW5jZSBgYXRoMTJrYCBoYXMgYSBQQ0kgaW50ZXJmYWNlLgoKVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCB3YXJyYW50IGZ1enppbmcuICBUaGUgcHJvbXB0JiMzOTtzIHdhcm5pbmcgaXMgcmVsZXZhbnQ6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBhcmUgbm90IHdvcnRoIGZ1enppbmcmIzM0Oy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYGF0aDEya2AgKmlzKiByZWFjaGFibGUuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gQnV0LCBob2xkIG9uLiAgYHN5el9wY2lkZXZgIGlzbiYjMzk7dCBnZW5lcmFsbHkgdXNlZCB0byBmdXp6IGNvbXBsZXggV2ktRmkgZHJpdmVycyBsaWtlIGBhdGgxMmtgIGJlY2F1c2UgdGhleSB0eXBpY2FsbHkgaW52b2x2ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBETUEsIHdoaWNoIHRoZSBQQ0kgZnV6emVyIHN0cnVnZ2xlcyB3aXRoLgoKSG93ZXZlciwgdGhlIHByZXNlbmNlIG9mICYjMzQ7c3l6LWNsdXN0ZXImIzM0OyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgaXMgaW50ZXJlc3RpbmcuIERvZXMgdGhpcyBtZWFuIHN5emthbGxlciBmb3VuZCBhIGJ1ZyBvciBpcyBhY3RpdmVseSBmdXp6aW5nIHRoaXMgZHJpdmVyPyBObywgSSBhbSByZXZpZXdpbmcgYSBwYXRjaC4gSSBhbSBsb29raW5nIGF0IGl0IHRvIGRldGVybWluZSBpZiBpdCBpcyB3b3J0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYGF0aDEya2AgcmVxdWlyZXMgaGFyZHdhcmUgb3IgYW4gZW11bGF0b3IuIERvZXMgaXQgaGF2ZSB0ZXN0bW9kZSBvciBhIHNvZnR3YXJlIHNpbXVsYXRvcj8gQ2FuIGl0IGJlIHJlYWNoZWQgaW4gUUVNVT8gVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGEgZGVkaWNhdGVkIGBhdGgxMmtgIGVtdWxhdG9yIGluIFFFTVUsIGFuZCBQQ0kgZnV6emluZyBvZnRlbiBmYWlscyBkdWUgdG8gdGhlIGRyaXZlciYjMzk7cyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVpcmVtZW50cyBhbmQgZGV2aWNlIGJvb3Qgc2VxdWVuY2UgKGBhdGgxMmtfY29yZV9mZXRjaF9iZGZgLCBldGMuKS4gV2l0aG91dCBhIHJlYWwgZGV2aWNlIG9yIGEgZ29vZCBlbXVsYXRvciwgdGhlIHByb2JlIHdpbGwgZmFpbCBhbmQgbW9zdCBvZiB0aGUgY29kZSBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBldGMuIHdpbGwgYmUgdW5yZWFjaGFibGUuCgpJJiMzOTtsbCBjaGVjayBmb3IgYSB0ZXN0IG1vZGUgb3Igc29mdHdhcmUgc2ltdWxhdG9yLiBMb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlYCwgSSBzZWUgYGF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub2AuIFRoaXMgdGVzdCBtb2RlIGlzIGZvciBubDgwMjExIHRlc3QgY29tbWFuZHMsIGJ1dCBpdCBzdGlsbCBzZWVtcyB0byByZXF1aXJlIGhhcmR3YXJlIHByZXNlbmNlLiBUaGVyZSBpcyBhbHNvIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBpdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHNwZWNpZmljIHRvIGBhdGgxMmtgLiBGaW5hbGx5LCBJIHNob3VsZCBsb29rIGF0IGBhdGgxMmtfcGNpX3Byb2JlYC4gSXQgc2VlbXMgZG91YnRmdWwgdGhlIGBhdGgxMmtgIGRyaXZlciBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUxNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTM4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUzOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODE4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzktXHRwY2lfZHJpdmVyLVx1MDAzZWlkX3RhYmxlID0gZHJpdmVyLVx1MDAzZWlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODQwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzQ4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOgoKKipEaXZpbmcgaW50byB0aGUgYGF0aDEya19wY2lfcHJvYmVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBhdGgxMmtfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW5jZS4gSXMgaXQgKnJlcXVpcmVkKiB0byBoYXZlIHRoZSBwaHlzaWNhbCBQQ0kgZGV2aWNlIGNvbm5lY3RlZCB0byBldmVuIGZ1bmN0aW9uIGluIHNvbWUgY2FwYWNpdHk/IERvZXMgaXQgbmVlZCB0byBkbyBzb21lIGRldmljZSBpbml0aWFsaXphdGlvbiB0aGF0IG5lY2Vzc2l0YXRlcyB0aGUgaGFyZHdhcmU/IFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3Igd2hhdGV2ZXIgdGVzdGluZyBvciBhbmFseXNpcyB3ZSYjMzk7cmUgcGxhbm5pbmcuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlcGVuZGVuY2llcyBpbiB0aGF0IHJlc3BlY3QuIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IGVtdWxhdGUgdGhpcyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgaW4gcGxhY2UuIElmIGl0ICpkb2VzKiByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgSSBuZWVkIHRvIGtub3cgcHJlY2lzZWx5IHdoaWNoIG9uZXMsIHNvIEkgY2FuIHRyeSB0byBzaW11bGF0ZSB0aGVtIGluIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTUzODpcdHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbjE1Mzk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4xNTQwOlx0e1xuMTU0MTpcdFx0ZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQ7XG4xNTQyOlx0XHRzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpO1xuMTU0MzpcdFx0c3RydWN0IGF0aDEya19iYXNlICphYjtcbjE1NDQ6XHRcdGludCByZXQ7XG4xNTQ1Olx0XG4xNTQ2Olx0XHRhYiA9IGF0aDEya19jb3JlX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKmFiX3BjaSksIEFUSDEyS19CVVNfUENJKTtcbjE1NDc6XHRcdGlmICghYWIpIHtcbjE1NDg6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDEyayBiYXNlXFxuXCYjMzQ7KTtcbjE1NDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xNTUwOlx0XHR9XG4xNTUxOlx0XG4xNTUyOlx0XHRhYi1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbjE1NTM6XHRcdGFiX3BjaSA9IGF0aDEya19wY2lfcHJpdihhYik7XG4xNTU0Olx0XHRhYl9wY2ktXHUwMDNlZGV2X2lkID0gcGNpX2Rldi1cdTAwM2VkZXZpY2U7XG4xNTU1Olx0XHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbjE1NTY6XHRcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbjE1NTc6XHRcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XG4xNTU4Olx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTJLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuMTU1OTpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbjE1NjA6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFiX3BjaS1cdTAwM2V3aW5kb3dfbG9jayk7XG4xNTYxOlx0XG4xNTYyOlx0XHRyZXQgPSBhdGgxMmtfcGNpX2NsYWltKGFiX3BjaSwgcGRldik7XG4xNTYzOlx0XHRpZiAocmV0KSB7XG4xNTY0Olx0XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBjbGFpbSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTU2NTpcdFx0XHRnb3RvIGVycl9mcmVlX2NvcmU7XG4xNTY2Olx0XHR9XG4xNTY3Olx0XG4xNTY4Olx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFwmIzM0O3BjaSBwcm9iZSAlMDR4OiUwNHggJTA0eDolMDR4XFxuXCYjMzQ7LFxuMTU2OTpcdFx0XHQgICBwZGV2LVx1MDAzZXZlbmRvciwgcGRldi1cdTAwM2VkZXZpY2UsXG4xNTcwOlx0XHRcdCAgIHBkZXYtXHUwMDNlc3Vic3lzdGVtX3ZlbmRvciwgcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlKTtcbjE1NzE6XHRcbjE1NzI6XHRcdGFiLVx1MDAzZWlkLnZlbmRvciA9IHBkZXYtXHUwMDNldmVuZG9yO1xuMTU3MzpcdFx0YWItXHUwMDNlaWQuZGV2aWNlID0gcGRldi1cdTAwM2VkZXZpY2U7XG4xNTc0Olx0XHRhYi1cdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yO1xuMTU3NTpcdFx0YWItXHUwMDNlaWQuc3Vic3lzdGVtX2RldmljZSA9IHBkZXYtXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcbjE1NzY6XHRcbjE1Nzc6XHRcdGRldmljZV9pZCA9IGF0aDEya19nZXRfZGV2aWNlX2ZhbWlseShwY2lfZGV2KTtcbjE1Nzg6XHRcdGlmIChkZXZpY2VfaWQgXHUwMDNlPSBBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVgpIHtcbjE1Nzk6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBkZXZpY2UgZmFtaWx5IGlkXFxuXCYjMzQ7KTtcbjE1ODA6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjE1ODE6XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTU4MjpcdFx0fVxuMTU4MzpcdFxuMTU4NDpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19QQ0ksIFwmIzM0O1BDSSBkZXZpY2UgZmFtaWx5IGlkOiAlZFxcblwmIzM0OywgZGV2aWNlX2lkKTtcbjE1ODU6XHRcbjE1ODY6XHRcdGFiX3BjaS1cdTAwM2VkZXZpY2VfZmFtaWx5X29wcyA9IFx1MDAyNmF0aDEya19wY2lfZmFtaWx5X2RyaXZlcnNbZGV2aWNlX2lkXS1cdTAwM2VvcHM7XG4xNTg3Olx0XHRhYl9wY2ktXHUwMDNlcmVnX2Jhc2UgPSBhdGgxMmtfcGNpX2ZhbWlseV9kcml2ZXJzW2RldmljZV9pZF0tXHUwMDNlcmVnX2Jhc2U7XG4xNTg4Olx0XG4xNTg5Olx0XHQvKiBDYWxsIGRldmljZSBzcGVjaWZpYyBwcm9iZS4gVGhpcyBpcyB0aGUgY2FsbGJhY2sgdGhhdCBjYW5cbjE1OTA6XHRcdCAqIGJlIHVzZWQgdG8gb3ZlcnJpZGUgYW55IG9wcyBpbiBmdXR1cmVcbjE1OTE6XHRcdCAqIHByb2JlIGlzIHZhbGlkYXRlZCBmb3IgTlVMTCBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuMTU5MjpcdFx0ICovXG4xNTkzOlx0XHRyZXQgPSBhYl9wY2ktXHUwMDNlZGV2aWNlX2ZhbWlseV9vcHMtXHUwMDNlcHJvYmUocGRldiwgcGNpX2Rldik7XG4xNTk0Olx0XHRpZiAocmV0KSB7XG4xNTk1Olx0XHRcdGF0aDEya19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBwcm9iZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTU5NjpcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xNTk3Olx0XHR9XG4xNTk4Olx0XG4xNTk5Olx0XHRyZXQgPSBhdGgxMmtfcGNpX21zaV9hbGxvYyhhYl9wY2kpO1xuMTYwMDpcdFx0aWYgKHJldCkge1xuMTYwMTpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2MgbXNpOiAlZFxcblwmIzM0OywgcmV0KTtcbjE2MDI6XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTYwMzpcdFx0fVxuMTYwNDpcdFxuMTYwNTpcdFx0cmV0ID0gYXRoMTJrX2NvcmVfcHJlX2luaXQoYWIpO1xuMTYwNjpcdFx0aWYgKHJldClcbjE2MDc6XHRcdFx0Z290byBlcnJfcGNpX21zaV9mcmVlO1xuMTYwODpcdFxuMTYwOTpcdFx0cmV0ID0gYXRoMTJrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoYWJfcGNpLCBjcHVtYXNrX29mKDApKTtcbjE2MTA6XHRcdGlmIChyZXQpIHtcbjE2MTE6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBpcnEgYWZmaW5pdHkgJWRcXG5cJiMzNDssIHJldCk7XG4xNjEyOlx0XHRcdGdvdG8gZXJyX3BjaV9tc2lfZnJlZTtcbjE2MTM6XHRcdH1cbjE2MTQ6XHRcbjE2MTU6XHRcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcbjE2MTY6XHRcdGlmIChyZXQpIHtcbjE2MTc6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIG1oaTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjE4Olx0XHRcdGdvdG8gZXJyX2lycV9hZmZpbml0eV9jbGVhbnVwO1xuMTYxOTpcdFx0fVxuMTYyMDpcdFxuMTYyMTpcdFx0cmV0ID0gYXRoMTJrX2hhbF9zcm5nX2luaXQoYWIpO1xuMTYyMjpcdFx0aWYgKHJldClcbjE2MjM6XHRcdFx0Z290byBlcnJfbWhpX3VucmVnaXN0ZXI7XG4xNjI0Olx0XG4xNjI1Olx0XHRyZXQgPSBhdGgxMmtfY2VfYWxsb2NfcGlwZXMoYWIpO1xuMTYyNjpcdFx0aWYgKHJldCkge1xuMTYyNzpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgY2UgcGlwZXM6ICVkXFxuXCYjMzQ7LCByZXQpO1xuMTYyODpcdFx0XHRnb3RvIGVycl9oYWxfc3JuZ19kZWluaXQ7XG4xNjI5Olx0XHR9XG4xNjMwOlx0XG4xNjMxOlx0XHRhdGgxMmtfcGNpX2luaXRfcW1pX2NlX2NvbmZpZyhhYik7XG4xNjMyOlx0XG4xNjMzOlx0XHRyZXQgPSBhdGgxMmtfcGNpX2NvbmZpZ19pcnEoYWIpO1xuMTYzNDpcdFx0aWYgKHJldCkge1xuMTYzNTpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gY29uZmlnIGlycTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjM2Olx0XHRcdGdvdG8gZXJyX2NlX2ZyZWU7XG4xNjM3Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyODAwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBBdGgxMmsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgd2hldGhlciB0aGlzIHBhdGNoLCB0b3VjaGluZyBgYXRoMTJrYCBjb2RlLCBpcyB3b3J0aCBmdXp6aW5nLCBnaXZlbiB0aGUgY29uc3RyYWludHMgb2Ygb3VyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgdXRpbGl6ZXMgdGhlIE1vZGVtIEhvc3QgSW50ZXJmYWNlIChNSEkpIHRvIGNvbW11bmljYXRlIHdpdGggaXRzIGZpcm13YXJlLCBhbmQgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggKmNvdWxkKiB0aGVvcmV0aWNhbGx5IHNpbXVsYXRlIHRoZSBNSEkgc3RhdGUgbWFjaGluZSwgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCBmb3IgdGhlIGZ1enplciB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB0aGUgTUhJIHN0YXRlIG1hY2hpbmUuCgpIb3dldmVyLCB0aGUga2V5IGlzIHRoZSBwcm9tcHQmIzM5O3MgZXhwbGljaXQgZXhjbHVzaW9uIG9mIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMuIENhbiBgYXRoMTJrYCBiZSByZWFjaGVkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGBhdGgxMmtgPyBOb3BlLgoKVGhlIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyYCwgYGF0aDEya19tYWNfcGVlcl9hc3NvY2AsIGFuZCBgYXRoMTJrX21hY19vcF9zdGFfc3RhdGVgLiBOb3csIEkgcmVjb2duaXplIHRoZXNlIGFzIG1hYzgwMjExIGNhbGxiYWNrcyBhbmQgSFRUIGV2ZW50IGhhbmRsZXJzLiBCdXQgaWYgdGhlIGRldmljZSBpdHNlbGYgaXNuJiMzOTt0IHN1Y2Nlc3NmdWxseSBwcm9iZWQgYW5kIGluc3RhbnRpYXRlZCwgdGhlc2UgY2FsbGJhY2tzICp3b24mIzM5O3QqIGV2ZW4gYmUgcmVnaXN0ZXJlZCBiZWNhdXNlIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBoYXBwZW5zICphZnRlciogZmlybXdhcmUgbG9hZGluZyBhbmQgV01JIGluaXRpYWxpemF0aW9uLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGRlcGVuZGVuY3kuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogY2FuIGBhdGgxMmtgICpiZSogZnV6emVkPyBXZWxsLCBzeXprYWxsZXIgaGFzIGEgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gIHdoaWNoIGlzIGZpbmUgZm9yIHRoZSBtYWM4MDIxMSBzdGFjay4gQnV0IGl0IGRvZXNuJiMzOTt0ICp0YXJnZXQqIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBgYXRoMTJrYCB1bmxlc3MgaXQgY2FuIGJlIGluc3RhbnRpYXRlZC4gU2luY2UgYGF0aDEya2AgZnVuZGFtZW50YWxseSByZXF1aXJlcyBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgQUhCIGRldmljZSwgYW5kIHRoZXJlJiMzOTtzIG5vIHN1aXRhYmxlIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBpdCwgaXQmIzM5O3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgdGhlcmUmIzM5O3MgKmFueSogdGVzdGluZyBtb2RlIG9yIHNpbXVsYXRpb24gZmxhZ3MgYnVpbHQgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIGxvb2sgZm9yIGFueXRoaW5nIHdpdGggJiMzNDt0ZXN0bW9kZSYjMzQ7IG9yICYjMzQ7c2ltJiMzNDsgaW4gaXQuIElmIHRoZXJlIGlzIG5vdCwgbXkgZmluYWwgY29uY2x1c2lvbiB3aWxsIGJlIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW18c2ltfGR1bW15JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz01NjM9c3RhdGljIGludCBhdGgxMmtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy01NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjU3ODpcdFx0aXJxX2dycC1cdTAwM2VuYXBpX25kZXYgPSBhbGxvY19uZXRkZXZfZHVtbXkoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTU3OS1cdFx0aWYgKCFpcnFfZ3JwLVx1MDAzZW5hcGlfbmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xMDI9c3RhdGljIGludCBhdGgxMmtfY29yZV9jb250aW51ZV9zdXNwZW5kX3Jlc3VtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTEwOS1cdC8qIHNvIGZhciBzaW5nbGVfcGRldl9vbmx5IGNoaXBzIGhhdmUgc3VwcG9ydHNfc3VzcGVuZCBhcyB0cnVlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTA6XHQgKiBzbyBwYXNzIDAgYXMgYSBkdW1teSBwZGV2X2lkIGhlcmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMTEtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaD00OTI9c3RydWN0IGF0aDEya19saW5rX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NDk2Olx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC00OTctXHR1OCBhZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEzOnN0YXRpYyBzc2l6ZV90IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVx0XHRcdFx0XHQgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMjAtXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MjE6XHRyZXQgPSBhdGgxMmtfd21pX3NpbXVsYXRlX3JhZGFyKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfcmFkYXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMjpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMzOlx0Lm9wZW4gPSBzaW1wbGVfb3BlblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MzY6c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cdFx0XHRcdFx0ICAgICBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDAtXHRjb25zdCBjaGFyIGJ1ZltdID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlx0XHRcJiMzNDtUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXG5cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQyLVx0XHRcJiMzNDtgYXNzZXJ0YCAtIHNlbmQgV01JX0ZPUkNFX0ZXX0hBTkdfQ01ESUQgdG8gZmlybXdhcmUgdG8gY2F1c2UgYXNzZXJ0LlxcblwmIzM0OztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIHN0cmxlbihidWYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQ1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz00Nz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDg6YXRoMTJrX3dyaXRlX3NpbXVsYXRlX2Z3X2NyYXNoKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlx0cmMgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNjQtXHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXHRpZiAoIXN0cmNtcChidWYsIFwmIzM0O2Fzc2VydFwmIzM0OykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgyOlx0XHRhdGgxMmtfaW5mbyhhYiwgXCYjMzQ7c2ltdWxhdGluZyBmaXJtd2FyZSBhc3NlcnQgY3Jhc2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODMtXHRcdHJldCA9IGF0aDEya193bWlfZm9yY2VfZndfaGFuZ19jbWQoYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjk4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfZndfY3Jhc2ggPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcdC5yZWFkID0gYXRoMTJrX3JlYWRfc2ltdWxhdGVfZndfY3Jhc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDA6XHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMDE6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy03ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy03OTEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3RwY19zdGF0c190eXBlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODA5LVx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6ODEwOlx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2Vlayxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodWJ1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9OTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZXh0ZF9yeF9zdGF0cyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfZXh0ZF9yeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkwMzpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDQtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEwMjU9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMTM6XHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTIxOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTktXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTIyMDpcdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjIxLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTIyNT12b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjI2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjc6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NpbXVsYXRlX2Z3X2NyYXNoXCYjMzQ7LCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjI4Olx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI2MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTI2NC1cdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjY1Olx0ICogd291bGQgYmUgZW1wdHkuIFRoaXMgc2ltcGxpZmllcyB0aGUgZGlyZWN0b3J5IGhhbmRsaW5nIGFuZCBpdCYjMzk7c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTI2Ni1cdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzMTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfdmRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTMyNDpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzMjUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEzOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzkxOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM5Mi19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTQ0NT1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9wZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDUyOlx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ1My19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTQ2Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ2NDphdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDY1LVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4NC1cdHdpcGh5X2xvY2sod2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ4NTpcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UoYXIsIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDg2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NzpcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE0OTg6XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ5OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE1MjA9dm9pZCBhdGgxMmtfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU0LVx0aWYgKGFyLVx1MDAzZW1hYy5zYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdLmNoYW5uZWxzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTU1Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Rmc19zaW11bGF0ZV9yYWRhclwmIzM0OywgMDIwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NTYtXHRcdFx0XHQgICAgYXItXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE1NTc6XHRcdFx0XHQgICAgXHUwMDI2Zm9wc19zaW11bGF0ZV9yYWRhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NjgtXHRcdCAgICAgYXItXHUwMDNlYWItXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTY5Olx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlXCYjMzQ7LCAwMjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU3MC1cdFx0XHRcdCAgICBhci1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BkZXYsIGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTU3MTpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NzItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTg4ND1hdGgxMmtfaHR0X3ByaW50X2h3X3N0YXRzX3doYWxfdHhfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsIHUxNiB0YWdfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy05MDQtXHRcdFx0IGxlMzJfdG9fY3B1KGh0dF9zdGF0c19idWYtXHUwMDNlaHdzY2hfdW5wYXVzZV93YWl0X3RxbV93cml0ZSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNTpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2h3c2NoX2R1bW15X3Rsdl9za2lwcGVkID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6OTA2Olx0XHRcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVx1MDAzZWh3c2NoX2R1bW15X3Rsdl9za2lwcGVkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA3LVx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9MTUzNT1hdGgxMmtfaHR0X3ByaW50X3R4X2RlX2NvbXBsX3N0YXRzX3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLCB1MTYgdGFnX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU0Ni1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O0hUVF9UWF9ERV9DT01QTF9TVEFUU19UTFY6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ3Olx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dGNsX2R1bW15X2ZyYW1lID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0ODpcdFx0XHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cdTAwM2V0Y2xfZHVtbXlfZnJhbWUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ5Olx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dHFtX2R1bW15X2ZyYW1lID0gJXVcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU1MDpcdFx0XHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cdTAwM2V0cW1fZHVtbXlfZnJhbWUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy0xNTUxLVx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7dHFtX25vdGlmeV9mcmFtZSA9ICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MTY1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0c190eXBlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYxODA6XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjE4MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYyMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyNy1cdC53cml0ZSA9IGF0aDEya193cml0ZV9odHRfc3RhdHNfdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2MjI4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MjI5LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTYzNTE9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfaHR0X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYwLVx0bGVuZ3RoID0gbWluX3QodTMyLCBzdGF0c19yZXEtXHUwMDNlYnVmX2xlbiwgQVRIMTJLX0hUVF9TVEFUU19CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjM2MTpcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NjQyNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2h0dF9zdGF0c19yZXNldCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI3LVx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2h0dF9zdGF0c19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzo2NDI4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI5LVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTc1ND1zdHJ1Y3QgYXRoMTJrX2h0dF9od19zdGF0c193aGFsX3R4X3RsdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTc1Ny1cdF9fbGUzMiBod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjc1ODpcdF9fbGUzMiBod3NjaF9kdW1teV90bHZfc2tpcHBlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC03NTktXHRfX2xlMzIgaHdzY2hfbWlzYWxpZ25lZF9vZmZzZXRfcmVjZWl2ZWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTk3OD1zdHJ1Y3QgYXRoMTJrX2h0dF90eF9kZV9jb21wbF9zdGF0c190bHYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjk3OTpcdF9fbGUzMiB0Y2xfZHVtbXlfZnJhbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6OTgwOlx0X19sZTMyIHRxbV9kdW1teV9mcmFtZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC05ODEtXHRfX2xlMzIgdHFtX25vdGlmeV9mcmFtZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9MTM5PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0MS1cdGlmIChsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQyOlx0XHRyZXQgPSBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDMtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yNDY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yeF9zdGF0cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDctXHQucmVhZCA9IGF0aDEya19kYmdfc3RhX2R1bXBfcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQ4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDktXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVzZXRfcnhfc3RhdHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk3LVx0LndyaXRlID0gYXRoMTJrX2RiZ19zdGFfcmVzZXRfcnhfc3RhdHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6Mjk4Olx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yOTktXHQub3duZXIgPSBUSElTX01PRFVMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYz01MzY9aW50IGF0aDEya19kcF9saW5rX3BlZXJfYXNzaWduKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy01OTktXHRcdCAqIElmIG9sZCBlbnRyeSBhZGRpdGlvbiBhbHNvIGZhaWxzLCB0aGVuIG5vdGhpbmdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jOjYwMDpcdFx0ICogY2FuIGJlIGRvbmUsIHNpbXBseSBwcm9jZWVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy02MDEtXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM9NTU4PWludCBhdGgxMmtfaHRjX2Nvbm5lY3Rfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2h0YyAqaHRjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTYzLVx0c3RydWN0IGF0aDEya19odGNfY29ubl9zdmMgKnJlcV9tc2c7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU2NDpcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgcmVzcF9tc2dfZHVtbXk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU2NTpcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgKnJlc3BfbXNnID0gXHUwMDI2cmVzcF9tc2dfZHVtbXk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTU2Ni1cdGVudW0gYXRoMTJrX2h0Y19lcF9pZCBhc3NpZ25lZF9laWQgPSBBVEgxMktfSFRDX0VQX0NPVU5UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTgwLVx0XHRtYXhfbXNnX3NpemUgPSBBVEgxMktfSFRDX01BWF9DVFJMX01TR19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jOjU4MTpcdFx0bWVtc2V0KFx1MDAyNnJlc3BfbXNnX2R1bW15LCAwLCBzaXplb2YocmVzcF9tc2dfZHVtbXkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTgyLVx0XHRnb3RvIHNldHVwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MjM4MD1zdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX3ZodChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjI0MjI6XHQvKiBUT0RPOiBzaW1pbGFyIGZsYWdzIHJlcXVpcmVkPyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0yNDIzLVx0YXJnLVx1MDAzZXZodF9jYXBhYmxlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTEyNjI1PWludCBhdGgxMmtfbWFjX29wX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTEyNjMzLVx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTI2MzQ6XHQgKiBIZW5jZSBpbXBsZW1lbnQgYSBkdW1teSBjYWxsYmFjayBqdXN0IHRvIHNheSBmcmFnbWVudGF0aW9uIGlzbiYjMzk7dFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xMjYzNS1cdCAqIHN1cHBvcnRlZC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBtYWM4MDIxMSBmcm9tIGRvaW5nIGZyYW1lXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz01Mzk9c3RhdGljIGludCBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy01NjUtXHRcdGlycV9ncnAtXHUwMDNlZ3JwX2lkID0gaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6NTY2Olx0XHRpcnFfZ3JwLVx1MDAzZW5hcGlfbmRldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY3LVx0XHRpZiAoIWlycV9ncnAtXHUwMDNlbmFwaV9uZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNTM4PXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE2Mzk6XHQvKiBrZXJuZWwgbWF5IGFsbG9jYXRlIGEgZHVtbXkgdmVjdG9yIGJlZm9yZSByZXF1ZXN0X2lycSBhbmRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTY0MC1cdCAqIHRoZW4gYWxsb2NhdGUgYSByZWFsIHZlY3RvciB3aGVuIHJlcXVlc3RfaXJxIGlzIGNhbGxlZC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jPTI2OT1pbnQgYXRoMTJrX3JlZ2RfdXBkYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBib29sIGluaXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jOjMzODpcdC8qIGZpcm13YXJlIHByb3ZpZGVzIHJlZyBydWxlcyB3aGljaCBhcmUgc2ltaWxhciBmb3IgMiBHSHogYW5kIDUgR0h6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzOS1cdCAqIHBkZXYgYnV0IDYgR0h6IHBkZXYgaGFzIHN1cGVyc2V0IG9mIGFsbCBydWxlcyBpbmNsdWRpbmcgcnVsZXMgZm9yXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ4Mz1hdGgxMmtfd21pX3NlbmRfdW5pdF90ZXN0X2NtZChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDUzNjppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTUtXHQgKiBDdXJyZW50bHkgd2UgY291bGQgcGFzcyBzZWdtZW50X2lkKGIwIC0gYjEpLCBjaGlycChiMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA1NTY6XHQgKiBmcmVxIG9mZnNldCAoYjMgLSBiMTApIHRvIHVuaXQgdGVzdC4gRm9yIHNpbXVsYXRpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTctXHQgKiBwdXJwb3NlIHRoaXMgY2FuIGJlIHNldCB0byAwIHdoaWNoIGlzIHZhbGlkLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9MTA1NzE9aW50IGF0aDEya193bWlfc2VuZF90cGNfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTJrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDYzOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZShzdHJ1Y3QgYXRoMTJrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2NDAtXHRcdFx0XHRcdFx0ICAgICAgdTMyIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjY4LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjEwNjY5Olx0XHQgICBcJiMzNDtUcmlnZ2VyaW5nIGluY3VtYmVudCBzaWduYWwgaW50ZXJmZXJlbmNlIHNpbXVsYXRpb24sIGludGVyZmVyZW5jZSBiaXRtYXA6IDB4JXhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjcwLVx0XHQgICBjaGFuX2J3X2ludGVyZmVyZW5jZV9iaXRtYXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9MzY5Nz1lbnVtIHdtaV9zdGFfcHNfbW9kZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zNzA5LS8qIHR5cGUsIDA6dW51c2VkIDE6IEFTU0VSVCAyOiBub3QgcmVzcG9uZCBkZXRlY3QgY29tbWFuZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozNzEwOiAqIGRlbGF5X3RpbWVfbXMsIHRoZSBzaW11bGF0ZSB3aWxsIGRlbGF5IHRpbWVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzcxMS0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTY2MDc9aW50IGF0aDEya193bWlfc2VuZF9wZGV2X3NldF9yZWdkb21haW4oc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY2MDgtXHRcdFx0XHQgICAgICAgc3RydWN0IGF0aDEya193bWlfcGRldl9zZXRfcmVnZG9tYWluX2FyZyAqYXJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjYwOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY2MTAtaW50IGF0aDEya193bWlfc2VuZF90d3RfZW5hYmxlX2NtZChzdHJ1Y3QgYXRoMTJrICphciwgdTMyIHBkZXZfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjcyMD1pbnQgYXRoMTJrX3dtaV9zZW5kX21sb19saW5rX3NldF9hY3RpdmVfY21kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY3MjEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qgd21pX21sb19saW5rX3NldF9hY3RpdmVfYXJnICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjY3MjI6aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTY3MjMtXHRcdFx0XHRcdFx0ICAgICAgdTMyIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogYXRoMTJrIFBhdGNoIFJldmlldyoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgYGF0aDEya2AuIFdhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggY2FtZSBmcm9tIGBzeXotY2x1c3RlcmAsIHdoaWNoIG1lYW5zIHN5emthbGxlciBmb3VuZCAqc29tZXRoaW5nKiEgRWl0aGVyIGEgYnVnIG9yIGEgdGVzdC4gIEkga25vdyBzeXprYWxsZXIgKmNhbiogZnV6eiBgYXRoMTJrYCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBgQ09ORklHX1BDSWAgYW5kIGBDT05GSUdfQVRIMTJLYCwgdXNpbmcgYHN5el9wY2lkZXZgIG9yIGBzeXpfdXNiZGV2YC4gQnV0IGhvbGQgb24sIGBhdGgxMmtgIHVzZXMgTUhJLi4uZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBNSEkgZW11bGF0b3I/IE5vLCBpdCBkb2VzbiYjMzk7dC4gSG93ZXZlciwgaXQgKmNvdWxkKiBpbmplY3QgbWFjODAyMTEgZnJhbWVzIG9yIGludGVyYWN0IHdpdGggbWFjODAyMTEgdmlhIGBtYWM4MDIxMV9od3NpbWAuIAoKQnV0IGlmIGBhdGgxMmtgIGlzIHVucmVhY2hhYmxlLCB3aHkgZGlkIHN5emthbGxlciBldmVuIGFwcGx5IHRoaXMgcGF0Y2g/IEFoLCByaWdodC4gTXkgam9iIGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRoYXQgbmVlZCBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgaWYgaXQgY2FuIGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAgVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2gsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5LiBJcyB0aGVyZSBhbnkgdmlydHVhbCBgYXRoMTJrYCBoYXJkd2FyZSBpbiBRRU1VPyBOb3BlLiBDYW4gSSBnZXQgdG8gaXQgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gPyBObywgdGhhdCYjMzk7cyBhIHNlcGFyYXRlIGRyaXZlci4gIE9rYXksIHdoYXQgYWJvdXQgYHN5el9wY2lkZXZgPwoKU3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpZGV2YCAqY291bGQqIHRyaWdnZXIgYGF0aDEya19wY2lfcHJvYmVgLiAgQnV0LCBgYXRoMTJrX3BjaV9wcm9iZWAgY2FsbHMgYGF0aDEya19taGlfcmVnaXN0ZXJgLCB3aGljaCB3YWl0cyBmb3IgdGhlIE1ISSBkZXZpY2UgdG8gYm9vdC4gV2l0aG91dCBhIHJlYWwgTUhJIGRldmljZSBvciBhbiBlbXVsYXRvci4uLiBpdCYjMzk7bGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd29uJiMzOTt0IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEuICBTbyBldmVuIHdpdGggdGhlIFBDSSBwcm9iZSwgaXQmIzM5O3Mgbm90IGdvaW5nIHRvIGdldCBwYXN0IHRoYXQgTUhJIHJlZ2lzdHJhdGlvbiBzdGVwLiBJIHNob3VsZCBjaGVjayBgYXRoMTJrX21oaV9yZWdpc3RlcmAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB2aXJ0dWFsaXphdGlvbiBsaW1pdGF0aW9ucywgYW5kIHRoZSBmYWN0IHRoYXQgdGhlIE1ISSBkZXZpY2UgaXMgdGhlIGNyaXRpY2FsIGJsb2NrZXIgdG8gdGhlIGNvZGUgcGF0aCwgSSYjMzk7bGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhdGNoIHNlcmllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX21oaV9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9MTgwPXN0YXRpYyB2b2lkIGF0aDEya19taGlfb3Bfd3JpdGVfcmVnKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzoxODc6aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5oPTM1PXZvaWQgYXRoMTJrX21oaV9zdG9wKHN0cnVjdCBhdGgxMmtfcGNpICphcl9wY2ksIGJvb2wgaXNfc3VzcGVuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5oOjM2OmludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphcl9wY2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaC0zNy12b2lkIGF0aDEya19taGlfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1Mzg9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTYxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTYxNTpcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTYxNi1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0NTAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgYXRoMTJrX21oaV9yZWdpc3RlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBkb2VzLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGF0aDEyayBkcml2ZXIgYW5kIHRoZSBNSEkgaW50ZXJmYWNlLiBJcyBpdCByZWdpc3RlcmluZyBzb21ldGhpbmcsIGxpa2VseSBhIGRldmljZSBvciByZXNvdXJjZSwgd2l0aCB0aGUgTUhJIHN1YnN5c3RlbT8gUGVyaGFwcyBpdCYjMzk7cyBpbml0aWFsaXppbmcgTUhJLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3Igc2V0dGluZyB1cCBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGZ1bmN0aW9uJiMzOTtzIGFyZ3VtZW50cywgcmV0dXJuIHZhbHVlcywgYW5kIHdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgcmVsYXRlZCB0byB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGhvc3QgZHJpdmVyIChhdGgxMmspIGFuZCB0aGUgTUhJIGZpcm13YXJlIG9uIHRoZSBRdWFsY29tbSBjaGlwLiBLbm93aW5nIHRoZSBmbG93IGZyb20gcmVnaXN0ZXIgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBiZSBpbXBvcnRhbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTg3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTg3Olx0aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbiAxODg6XHR7XG4gMTg5Olx0XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gYWJfcGNpLVx1MDAzZWFiO1xuIDE5MDpcdFx0c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY3RybDtcbiAxOTE6XHRcdHVuc2lnbmVkIGludCBib2FyZF9pZDtcbiAxOTI6XHRcdGludCByZXQ7XG4gMTkzOlx0XHRib29sIGR1YWxtYWMgPSBmYWxzZTtcbiAxOTQ6XHRcbiAxOTU6XHRcdG1oaV9jdHJsID0gbWhpX2FsbG9jX2NvbnRyb2xsZXIoKTtcbiAxOTY6XHRcdGlmICghbWhpX2N0cmwpXG4gMTk3Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE5ODpcdFxuIDE5OTpcdFx0YWJfcGNpLVx1MDAzZW1oaV9wcmVfY2IgPSBNSElfQ0JfSU5WQUxJRDtcbiAyMDA6XHRcdGFiX3BjaS1cdTAwM2VtaGlfY3RybCA9IG1oaV9jdHJsO1xuIDIwMTpcdFx0bWhpX2N0cmwtXHUwMDNlY250cmxfZGV2ID0gYWItXHUwMDNlZGV2O1xuIDIwMjpcdFx0bWhpX2N0cmwtXHUwMDNlcmVncyA9IGFiLVx1MDAzZW1lbTtcbiAyMDM6XHRcdG1oaV9jdHJsLVx1MDAzZXJlZ19sZW4gPSBhYi1cdTAwM2VtZW1fbGVuO1xuIDIwNDpcdFx0bWhpX2N0cmwtXHUwMDNlcmRkbV9zaXplID0gYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZXJkZG1fc2l6ZTtcbiAyMDU6XHRcbiAyMDY6XHRcdGlmIChhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKSB7XG4gMjA3Olx0XHRcdGJvYXJkX2lkID1cbiAyMDg6XHRcdFx0XHRhdGgxMmtfcGNpX3JlYWQzMihhYiwgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW90cF9ib2FyZF9pZF9yZWdpc3Rlcik7XG4gMjA5Olx0XHRcdGJvYXJkX2lkID0gdTMyX2dldF9iaXRzKGJvYXJkX2lkLCBPVFBfQk9BUkRfSURfTUFTSyk7XG4gMjEwOlx0XG4gMjExOlx0XHRcdGlmICghYm9hcmRfaWQgfHwgKGJvYXJkX2lkID09IE9UUF9JTlZBTElEX0JPQVJEX0lEKSkge1xuIDIxMjpcdFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbiAyMTM6XHRcdFx0XHRcdCAgIFwmIzM0O2ZhaWxlZCB0byByZWFkIGJvYXJkIGlkXFxuXCYjMzQ7KTtcbiAyMTQ6XHRcdFx0fSBlbHNlIGlmIChib2FyZF9pZCBcdTAwMjYgT1RQX1ZBTElEX0RVQUxNQUNfQk9BUkRfSURfTUFTSykge1xuIDIxNTpcdFx0XHRcdGR1YWxtYWMgPSB0cnVlO1xuIDIxNjpcdFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbiAyMTc6XHRcdFx0XHRcdCAgIFwmIzM0O2R1YWxtYWMgZncgc2VsZWN0ZWQgZm9yIGJvYXJkIGlkOiAleFxcblwmIzM0OywgYm9hcmRfaWQpO1xuIDIxODpcdFx0XHR9XG4gMjE5Olx0XHR9XG4gMjIwOlx0XG4gMjIxOlx0XHRpZiAoZHVhbG1hYykge1xuIDIyMjpcdFx0XHRpZiAoYWItXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGEgXHUwMDI2XHUwMDI2IGFiLVx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW4gXHUwMDNlIDApIHtcbiAyMjM6XHRcdFx0XHQvKiB1c2UgTUhJIGZpcm13YXJlIGZpbGUgZnJvbSBmaXJtd2FyZS1OLmJpbiAqL1xuIDIyNDpcdFx0XHRcdG1oaV9jdHJsLVx1MDAzZWZ3X2RhdGEgPSBhYi1cdTAwM2Vmdy5hbXNzX2R1YWxtYWNfZGF0YTtcbiAyMjU6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19zeiA9IGFiLVx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW47XG4gMjI2Olx0XHRcdH0gZWxzZSB7XG4gMjI3Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2R1YWxtYWMgZmlybXdhcmUgSUUgbm90IHByZXNlbnQgaW4gZmlybXdhcmUtTi5iaW5cXG5cJiMzNDspO1xuIDIyODpcdFx0XHRcdHJldCA9IC1FTk9FTlQ7XG4gMjI5Olx0XHRcdFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XG4gMjMwOlx0XHRcdH1cbiAyMzE6XHRcdH0gZWxzZSB7XG4gMjMyOlx0XHRcdGlmIChhYi1cdTAwM2Vmdy5hbXNzX2RhdGEgXHUwMDI2XHUwMDI2IGFiLVx1MDAzZWZ3LmFtc3NfbGVuIFx1MDAzZSAwKSB7XG4gMjMzOlx0XHRcdFx0LyogdXNlIE1ISSBmaXJtd2FyZSBmaWxlIGZyb20gZmlybXdhcmUtTi5iaW4gKi9cbiAyMzQ6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19kYXRhID0gYWItXHUwMDNlZncuYW1zc19kYXRhO1xuIDIzNTpcdFx0XHRcdG1oaV9jdHJsLVx1MDAzZWZ3X3N6ID0gYWItXHUwMDNlZncuYW1zc19sZW47XG4gMjM2Olx0XHRcdH0gZWxzZSB7XG4gMjM3Olx0XHRcdFx0LyogdXNlIHRoZSBvbGQgc2VwYXJhdGUgbWhpLmJpbiBNSEkgZmlybXdhcmUgZmlsZSAqL1xuIDIzODpcdFx0XHRcdGF0aDEya19jb3JlX2NyZWF0ZV9maXJtd2FyZV9wYXRoKGFiLCBBVEgxMktfQU1TU19GSUxFLFxuIDIzOTpcdFx0XHRcdFx0XHRcdFx0IGFiX3BjaS1cdTAwM2VhbXNzX3BhdGgsXG4gMjQwOlx0XHRcdFx0XHRcdFx0XHQgc2l6ZW9mKGFiX3BjaS1cdTAwM2VhbXNzX3BhdGgpKTtcbiAyNDE6XHRcdFx0XHRtaGlfY3RybC1cdTAwM2Vmd19pbWFnZSA9IGFiX3BjaS1cdTAwM2VhbXNzX3BhdGg7XG4gMjQyOlx0XHRcdH1cbiAyNDM6XHRcdH1cbiAyNDQ6XHRcbiAyNDU6XHRcdHJldCA9IGF0aDEya19taGlfZ2V0X21zaShhYl9wY2kpO1xuIDI0NjpcdFx0aWYgKHJldCkge1xuIDI0NzpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IG1zaSBmb3IgbWhpXFxuXCYjMzQ7KTtcbiAyNDg6XHRcdFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XG4gMjQ5Olx0XHR9XG4gMjUwOlx0XG4gMjUxOlx0XHRpZiAoIXRlc3RfYml0KEFUSDEyS19QQ0lfRkxBR19NVUxUSV9NU0lfVkVDVE9SUywgXHUwMDI2YWJfcGNpLVx1MDAzZWZsYWdzKSlcbiAyNTI6XHRcdFx0bWhpX2N0cmwtXHUwMDNlaXJxX2ZsYWdzID0gSVJRRl9TSEFSRUQgfCBJUlFGX05PQkFMQU5DSU5HO1xuIDI1MzpcdFxuIDI1NDpcdFx0bWhpX2N0cmwtXHUwMDNlaW92YV9zdGFydCA9IDA7XG4gMjU1Olx0XHRtaGlfY3RybC1cdTAwM2Vpb3ZhX3N0b3AgPSBhYl9wY2ktXHUwMDNlZG1hX21hc2s7XG4gMjU2Olx0XHRtaGlfY3RybC1cdTAwM2VzYmxfc2l6ZSA9IFNaXzUxMks7XG4gMjU3Olx0XHRtaGlfY3RybC1cdTAwM2VzZWdfbGVuID0gU1pfNTEySztcbiAyNTg6XHRcdG1oaV9jdHJsLVx1MDAzZWZiY19kb3dubG9hZCA9IHRydWU7XG4gMjU5Olx0XHRtaGlfY3RybC1cdTAwM2VydW50aW1lX2dldCA9IGF0aDEya19taGlfb3BfcnVudGltZV9nZXQ7XG4gMjYwOlx0XHRtaGlfY3RybC1cdTAwM2VydW50aW1lX3B1dCA9IGF0aDEya19taGlfb3BfcnVudGltZV9wdXQ7XG4gMjYxOlx0XHRtaGlfY3RybC1cdTAwM2VzdGF0dXNfY2IgPSBhdGgxMmtfbWhpX29wX3N0YXR1c19jYjtcbiAyNjI6XHRcdG1oaV9jdHJsLVx1MDAzZXJlYWRfcmVnID0gYXRoMTJrX21oaV9vcF9yZWFkX3JlZztcbiAyNjM6XHRcdG1oaV9jdHJsLVx1MDAzZXdyaXRlX3JlZyA9IGF0aDEya19taGlfb3Bfd3JpdGVfcmVnO1xuIDI2NDpcdFxuIDI2NTpcdFx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbiAyNjY6XHRcdGlmIChyZXQpIHtcbiAyNjc6XHRcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHJlZ2lzdGVyIHRvIG1oaSBidXMsIGVyciA9ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDI2ODpcdFx0XHRnb3RvIGZyZWVfY29udHJvbGxlcjtcbiAyNjk6XHRcdH1cbiAyNzA6XHRcbiAyNzE6XHRcdHJldHVybiAwO1xuIDI3MjpcdFxuIDI3MzpcdGZyZWVfY29udHJvbGxlcjpcbiAyNzQ6XHRcdG1oaV9mcmVlX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI3NTpcdFx0YWJfcGNpLVx1MDAzZW1oaV9jdHJsID0gTlVMTDtcbiAyNzY6XHRcdHJldHVybiByZXQ7XG4gMjc3Olx0fVxuIDI3ODpcdFxuIDI3OTpcdHZvaWQgYXRoMTJrX21oaV91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG4gMjgwOlx0e1xuIDI4MTpcdFx0c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY3RybCA9IGFiX3BjaS1cdTAwM2VtaGlfY3RybDtcbiAyODI6XHRcbiAyODM6XHRcdG1oaV91bnJlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI4NDpcdFx0a2ZyZWUobWhpX2N0cmwtXHUwMDNlaXJxKTtcbiAyODU6XHRcdG1oaV9mcmVlX2NvbnRyb2xsZXIobWhpX2N0cmwpO1xuIDI4NjpcdFx0YWJfcGNpLVx1MDAzZW1oaV9jdHJsID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1ODcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipDb250cm9sbGVyIEluaXRpYWxpemF0aW9uIENvbnVuZHJ1bSoqCgpSaWdodCwgc28gYG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyYCByZWdpc3RlcnMgdGhlIGNvbnRyb2xsZXIuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggb24gdGhlIHN1cmZhY2UuIEJ1dCBob2xkIG9uLCB0aGUgcmVnaXN0cmF0aW9uIGlzIGp1c3QgdGhlIGZpcnN0IHN0ZXAuIERvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgKmtpY2sgb2ZmKiB0aGUgZmlybXdhcmUgZG93bmxvYWQ/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGlzbiYjMzk7dCBpdD8KCkdlbmVyYWxseSwgSSYjMzk7ZCBleHBlY3QgdGhhdCB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHRyaWdnZXJlZCBieSBlaXRoZXIgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgb3IgYG1oaV9zeW5jX3Bvd2VyX3VwYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgaW4gbWFuYWdpbmcgdGhlIHBvd2VyLXVwIGFuZCBkb3dubG9hZCBwcm9jZXNzLiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBhY3R1YWxseSAqY2FsbGVkKiBpbiB0aGUgY29kZS4gVHJhY2luZyB0aGF0IGNhbGwgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgcG93ZXItdXAgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBoYW5kbGVkIGluIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbmZpcm0gd2hldGhlciB0aGUgZG93bmxvYWQgaXMga2lja2VkIG9mZiBleHBsaWNpdGx5LCBvciBpbXBsaWNpdGx5LiBUaGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9zeW5jX3Bvd2VyX3VwfG1oaV9hc3luY19wb3dlcl91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NDA2PXN0YXRpYyBpbnQgYXRoMTJrX21oaV9zZXRfc3RhdGUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcdFx0cmV0ID0gbWhpX3N5bmNfcG93ZXJfdXAoYWJfcGNpLVx1MDAzZW1oaV9jdHJsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDQwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcwOTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQ2FsbGVycyBvZiBgYXRoMTJrX21oaV9zZXRfc3RhdGVgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFyb3VuZCBgYXRoMTJrX21oaV9zZXRfc3RhdGVgLiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGRpcmVjdGx5IGNhbGwgdGhpcyBvbmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgaG93IGl04oCZcyB1c2VkIHdpdGhpbiB0aGUgYGF0aDEya2AgTUhJIChNdWx0aS1Ib3N0IEludGVyZmFjZSkgZHJpdmVyIGNvbnRleHQuIEkgc3VzcGVjdCB0aGlzIGZ1bmN0aW9uIGxpa2VseSBtYW5hZ2VzIHRoZSBzdGF0ZSB0cmFuc2l0aW9ucyBvZiBzb21lIHBhcnQgb2YgdGhlIE1ISSBzdWJzeXN0ZW0g4oCTIHBlcmhhcHMgcG93ZXIgbWFuYWdlbWVudCwgaW5pdGlhbGl6YXRpb24sIG9yIGVycm9yIHJlY292ZXJ5LiBVbmNvdmVyaW5nIHRoZSBjYWxsIGdyYXBoIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZHMgY29uZmlybWluZyB0aGF0IGFuZCB1bmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2Vycy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19taGlfc2V0X3N0YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0yODk9c3RhdGljIGNoYXIgKmF0aDEya19taGlfc3RhdGVfdG9fc3RyKGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0zMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjMxNzpzdGF0aWMgdm9pZCBhdGgxMmtfbWhpX3NldF9zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMzE4LVx0XHRcdFx0ICAgICBlbnVtIGF0aDEya19taGlfc3RhdGUgbWhpX3N0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9MzU2PXN0YXRpYyBpbnQgYXRoMTJrX21oaV9jaGVja19zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDA2OnN0YXRpYyBpbnQgYXRoMTJrX21oaV9zZXRfc3RhdGUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDA3LVx0XHRcdFx0ZW51bSBhdGgxMmtfbWhpX3N0YXRlIG1oaV9zdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDcyOlx0YXRoMTJrX21oaV9zZXRfc3RhdGVfYml0KGFiX3BjaSwgbWhpX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NDgyPWludCBhdGgxMmtfbWhpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQ4ODpcdHJldCA9IGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9JTklUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDg5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDkyOlx0cmV0ID0gYXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1BPV0VSX09OKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUwMj12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLCBib29sIGlzX3N1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MDgtXHRpZiAoaXNfc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NTA5Olx0XHRhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT0ZGX0tFRVBfREVWKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTEwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTE6XHRcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9QT1dFUl9PRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUxMzpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9ERUlOSVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NTE2PXZvaWQgYXRoMTJrX21oaV9zdXNwZW5kKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUxODpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9TVVNQRU5EKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTE5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUyMT12b2lkIGF0aDEya19taGlfcmVzdW1lKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUyMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUyMzpcdGF0aDEya19taGlfc2V0X3N0YXRlKGFiX3BjaSwgQVRIMTJLX01ISV9SRVNVTUUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MjQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBQZXJzcGVjdGl2ZSBvbiB0aGUgYXRoMTJrIERyaXZlciBQb3dlci1VcCBTZXF1ZW5jZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGVyZSwgc3BlY2lmaWNhbGx5IGl0cyBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHMuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBhdGgxMmtfbWhpX3N0YXJ0YCBmdW5jdGlvbiBpcyAqY3J1Y2lhbCogaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgYW5kIEkmIzM5O20gbm90aW5nIGl0cyBjYWxsIHN0YWNrLiBJdCYjMzk7cyBpbnZva2VkIGRpcmVjdGx5IGZyb20gYGF0aDEya19wY2lfcG93ZXJfdXBgLiBOb3csIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGludGltYXRlbHkgbGlua2VkIHRvIHRoZSBQQ0kgYnVzIGFuZCB0aGUgZGV2aWNlJiMzOTtzIHBvd2VyIHN0YXRlLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBhdGgxMmtfbWhpX3N0YXJ0YCBtdXN0IGJlIGVzdGFibGlzaGluZyB0aGUgZnVuZGFtZW50YWwgTUhJIChNdWx0aS1GdW5jdGlvbiBIYXJkd2FyZSBJbnRlcmZhY2UpIGNvbW11bmljYXRpb24gY2hhbm5lbCB3aXRoIHRoZSBRdWFsY29tbSBkZXZpY2UuCgpUaGVyZWZvcmUsIHRoaXMgY29uZmlybXMgdGhhdCB0aGUgUENJIHBvd2VyLXVwIGZsb3cgaXMgZGlyZWN0bHkgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGluaXRpYWwgbGluayB0byB0aGUgUXVhbGNvbW0gY2hpcHNldCwgYW5kIGBhdGgxMmtfbWhpX3N0YXJ0YCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuIEkmIzM5O2Qgc3VzcGVjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGluZ3MgbGlrZSB0aGUgTUhJIGVuZHBvaW50IGRpc2NvdmVyeSwgY2xvY2sgY29uZmlndXJhdGlvbiwgYW5kIHBvc3NpYmx5IGV2ZW4gdGhlIGluaXRpYWwgZmlybXdhcmUgZG93bmxvYWQgaWYgaXQmIzM5O3Mgbm90IGhhbmRsZWQgZWxzZXdoZXJlLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBwbGFjZSB3aGVyZSB0aGUgZHJpdmVyJiMzOTtzIGNvbnRyb2wgaXMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgaGFyZHdhcmUgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgb2YgYGF0aDEya19taGlfc3RhcnRgIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgaXQgZXN0YWJsaXNoZXMgdGhpcyBjb25uZWN0aW9uIGFuZCBlbnN1cmUgdGhhdCBpdCYjMzk7cyBoYW5kbGluZyBwb3RlbnRpYWwgZXJyb3Igc2NlbmFyaW9zIGdyYWNlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19wY2lfcG93ZXJfdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTEzMjY9c3RhdGljIHZvaWQgYXRoMTJrX3BjaV9jb3JlZHVtcF9kb3dubG9hZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTQzODppbnQgYXRoMTJrX3BjaV9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE0OTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfcGNpX2hpZl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDk4LVx0LnBvd2VyX2Rvd24gPSBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0OTk6XHQucG93ZXJfdXAgPSBhdGgxMmtfcGNpX3Bvd2VyX3VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTAwLVx0LnN1c3BlbmQgPSBhdGgxMmtfcGNpX2hpZl9zdXNwZW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg9MTc0PWludCBhdGgxMmtfcGNpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzU6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3Ni12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbToKCioqVHJhY2luZyB0aGUgYXRoMTJrIFBDSSBQb3dlci1VcCBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBgYXRoMTJrX3BjaV9wb3dlcl91cGAgaXMgZGVmaW5lZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGhpZl9vcHNgIHN0cnVjdHVyZSwgcmlnaHQ/IE5vdyB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqY2FsbCBjaGFpbioqLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHBvd2VyLCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgaGlmX29wcy0mZ3Q7cG93ZXJfdXBgIGlzIGFjdHVhbGx5IGludm9rZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgcmVmZXJlbmNlcywgdGhlIHBsYWNlcyB0aGF0IGFjdHVhbGx5ICp1c2UqIHRoYXQgcGFydGljdWxhciBtZW1iZXIgb2YgdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBncmVwLCBvciBteSBJREUmIzM5O3Mgc2VhcmNoIGZ1bmN0aW9uLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgcGxhY2VzIHdoZXJlIGBoaWZfb3BzYCBpcyB1c2VkLCBhbmQgbG9vayBmb3IgYSBkaXJlY3QgY2FsbCBvciBpbmRpcmVjdCBjYWxsIHRvIHRoZSBgcG93ZXJfdXBgIGZ1bmN0aW9uIHBvaW50ZXIuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IGNvbnRhaW5lZCBwaWVjZSBvZiB0aGUgZHJpdmVyLCBzbyBmaW5kaW5nIGl0IHNob3VsZG4mIzM5O3QgYmUgdG9vIGNvbXBsZXguIExldCYjMzk7cyBzZWUuLi4gdGhlIGBoaWZfb3BzYCBzdHJ1Y3QgaXRzZWxmIGlzIGxpa2VseSBkZWZpbmVkIGluIHRoZSBkcml2ZXImIzM5O3MgaGVhZGVyIGZpbGVzLCBzbyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gdGhhdCBsb2NhdGlvbiBhbmQgZmluZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBgcG93ZXJfdXBgIGZ1bmN0aW9uIHBvaW50ZXIuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3dlcl91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzIzPXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMzM6c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfYWhiX2hpZl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy03MTItXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDEya19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NzEzOlx0LnBvd2VyX3VwID0gYXRoMTJrX2FoYl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzE0LVx0LnBvd2VyX2Rvd24gPSBhdGgxMmtfYWhiX3Bvd2VyX2Rvd24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTgxPWludCBhdGgxMmtfY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xODktXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZhYi1cdTAwM2VyZXN0YXJ0X2NvbXBsZXRlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxOTA6XHRyZXQgPSBhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE5MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE3PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgzNDpcdHJldCA9IGF0aDEya19oaWZfcG93ZXJfdXAoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODM1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE2ODI9c3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxNzY4Olx0XHRhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjktXHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7cmVzZXQgc3RhcnRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc2OS1cdHN0cnVjdCBhdGgxMmtfZndfc3RhdHMgZndfc3RhdHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo3NzA6XHR1bnNpZ25lZCBsb25nIGxhc3RfdHhfcG93ZXJfdXBkYXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg9MTI9c3RydWN0IGF0aDEya19oaWZfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE4LVx0dm9pZCAoKnN0b3ApKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxOTpcdGludCAoKnBvd2VyX3VwKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMjAtXHR2b2lkICgqcG93ZXJfZG93bikoc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oPTEzMD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2hpZl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBhZGRyZXNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxMzY6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xMzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxMzg6XHRpZiAoIWFiLVx1MDAzZWhpZi5vcHMtXHUwMDNlcG93ZXJfdXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTEzOS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjE0MTpcdHJldHVybiBhYi1cdTAwM2VoaWYub3BzLVx1MDAzZXBvd2VyX3VwKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTQyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTU0Njc9aW50IGF0aDEya19tYWNfb3BfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA0LVx0XHRcdG1zZWNzX3RvX2ppZmZpZXMoQVRIMTJLX1BERVZfVFhfUE9XRVJfUkVGUkVTSF9USU1FX01TRUNTKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1NTA1Olx0XHRcdFx0XHQgYXItXHUwMDNlbGFzdF90eF9wb3dlcl91cGRhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA2LVx0XHRnb3RvIHNlbmRfdHhfcG93ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTI3LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6NTUyODpcdGFyLVx1MDAzZWxhc3RfdHhfcG93ZXJfdXBkYXRlID0gamlmZmllcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTUyOS1cdGF0aDEya19md19zdGF0c19yZXNldChhcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz00MDY9c3RhdGljIGludCBhdGgxMmtfbWhpX3NldF9zdGF0ZShzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDIwLVx0Y2FzZSBBVEgxMktfTUhJX0lOSVQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQyMTpcdFx0cmV0ID0gbWhpX3ByZXBhcmVfZm9yX3Bvd2VyX3VwKGFiX3BjaS1cdTAwM2VtaGlfY3RybCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQyMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MzgtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo0Mzk6XHRcdHJldCA9IG1oaV9zeW5jX3Bvd2VyX3VwKGFiX3BjaS1cdTAwM2VtaGlfY3RybCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xMzI2PXN0YXRpYyB2b2lkIGF0aDEya19wY2lfY29yZWR1bXBfZG93bmxvYWQoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0Mzg6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQ5OC1cdC5wb3dlcl9kb3duID0gYXRoMTJrX3BjaV9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNDk5Olx0LnBvd2VyX3VwID0gYXRoMTJrX3BjaV9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwMC1cdC5zdXNwZW5kID0gYXRoMTJrX3BjaV9oaWZfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3ND1pbnQgYXRoMTJrX3BjaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc1OmludCBhdGgxMmtfcGNpX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzYtdm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzMDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBQcm9iZSBGYWlsdXJlKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBhcyBJIHNlZSBpdC4gVGhlIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCBmdW5jdGlvbiBpcyB0aGUgaW5pdGlhbCBjdWxwcml0LiBJdCBjYWxscyBgYXRoMTJrX21oaV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgYW5kIHRoZW4gYG1oaV9zeW5jX3Bvd2VyX3VwYC4gVGhlIGtleSBwcm9ibGVtIGhlcmUgaXMgYG1oaV9zeW5jX3Bvd2VyX3VwYC4gSXQmIzM5O3Mgd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byBzaWduYWwgdGhhdCBpdCBoYXMgZW50ZXJlZCB0aGUgQU1TUyBzdGF0ZSwgaW5kaWNhdGluZyB0aGUgZmlybXdhcmUgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIGlzIHJ1bm5pbmcuIElmIHRoYXQgc2lnbmFsIGRvZXNuJiMzOTt0IGNvbWUsIGBtaGlfc3luY19wb3dlcl91cGAgdGltZXMgb3V0IGFuZCBmYWlscy4KClRoYXQgdGltZW91dCBjYXVzZXMgYSBjYXNjYWRlIG9mIGZhaWx1cmVzLiBgYXRoMTJrX3BjaV9wb3dlcl91cGAgZmFpbHMsIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBmYWlscywgYW5kIHVsdGltYXRlbHksIHRoZSBkcml2ZXIgcHJvYmUgZmFpbHMuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHdpdGhvdXQgYSByZWFsIFF1YWxjb21tIFdpLUZpIGRldmljZSBvciBhbiBleHRyZW1lbHkgc29waGlzdGljYXRlZCBlbXVsYXRvciB0aGF0IGNhbiBwZXJmZWN0bHkgbWltaWMgdGhlIE1ISSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCB0aGVyZSYjMzk7cyBubyB3YXkgYGF0aDEya2AgY2FuIGJlIHByb2JlZCBzdWNjZXNzZnVsbHkuCgpOb3csIG15IG1pbmQgc3RhcnRzIHJhY2luZy4gSSByZW1lbWJlciBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lkZXZgIGZ1bmN0aW9uIHRoYXQgc2ltdWxhdGVzIFBDSSBkZXZpY2VzLiBCdXQgZG9lcyBpdCBzaW11bGF0ZSBNSEk/IE5vLCBpdCYjMzk7cyBhIGdlbmVyaWMgUENJIGZ1enplci4gSXQgcmV0dXJucyByYW5kb20gYnl0ZXMgZm9yIE1NSU8gcmVhZHMuIFN1cmUsIGlmIGBtaGlfc3luY19wb3dlcl91cGAgaXMganVzdCB3YWl0aW5nIGZvciBhIHNwZWNpZmljIGJpdCB0byBiZSBzZXQgaW4gYSByZWdpc3RlciwgdGhlIGZ1enplciBtaWdodCBldmVudHVhbGx5IHJldHVybiB0aGUgcmlnaHQgdmFsdWUgYnkgY2hhbmNlLiBIb3dldmVyLCB0aGUgTUhJIHByb3RvY29sIGlzIGZhciBtb3JlIGNvbXBsZXguIFRoZSBob3N0IHdyaXRlcyB0byBCSEkgcmVnaXN0ZXJzLCB0aGUgZGV2aWNlIGlzIHN1cHBvc2VkIHRvIERNQSB0aGUgZmlybXdhcmUgZnJvbSBob3N0IG1lbW9yeSwgYW5kIHRoZW4gdGhlIGRldmljZSB1cGRhdGVzIGEgc3RhdGUgcmVnaXN0ZXIuIEEgZ2VuZXJpYyBmdXp6ZXIgaGFzIHplcm8gY2hhbmNlIG9mIGZ1bGZpbGxpbmcgdGhpcyBwcm90b2NvbCBieSBsdWNrLgoKVGhpcyBtZWFucyB0aGF0IGBhdGgxMmtgJiMzOTtzIHByb2JlIHdpbGwgKmFsd2F5cyogZmFpbCBpbiBhIHN5emthbGxlciBlbnZpcm9ubWVudCwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNyaXRpY2FsIGBtYWM4MDIxMWAgY2FsbGJhY2tzLCBsaWtlIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAsIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLgoKQnV0IHdhaXQsIGlmIHRoZSBwcm9iZSBpcyBkZXN0aW5lZCB0byBmYWlsLCB3aHkgZGlkIHN5emthbGxlciBhcHBseSAqdGhhdCogcGF0Y2ggaW4gdGhlIGZpcnN0IHBsYWNlPyBJIGtub3cgc3l6a2FsbGVyIGFwcGxpZXMgcGF0Y2hlcyBhdXRvbWF0aWNhbGx5IGlmIHRoZXkgYXJlIHNlbnQgdG8gdGhlIG1haWxpbmcgbGlzdCB3aXRoIHRoZSBzeXpib3QgQ0MmIzM5O2QsIG9yIGlmIGl0JiMzOTtzIGZpeGluZyBhIGJ1ZyB0aGF0IHN5emJvdCBoYXMgYWxyZWFkeSBmb3VuZC4KClRoYXQgbGVhZHMgbWUgdG8gYSBjcml0aWNhbCBwb2ludDogc3l6Ym90ICpkb2VzKiBmaW5kIGJ1Z3MgaW4gYGF0aDEya2AhIFRoaXMgc3VnZ2VzdHMgdGhhdCBldmVuIHRob3VnaCBpdCBjYW4mIzM5O3QgZnVsbHkgcHJvYmUsIGl0JiMzOTtzIHN0aWxsIGV4ZXJjaXNpbmcgKnNvbWUqIGNvZGUgcGF0aHMsIGVub3VnaCB0byB0cmlnZ2VyIHRob3NlIGJ1Z3MuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciBzeXpib3QgcmVwb3J0cyBvbiBidWdzIGluIGBhdGgxMmtgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ2V0dGluZyBoaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UmVwb3J0ZWQtYnk6IHN5emJvdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA3MTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlIGZvciB0aGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBhdGgxMmtgIHBhdGNoIGFuZCB3aGV0aGVyIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgKm1heWJlKiBgc3l6Ym90YCBqdXN0IG1pc3NlZCBzb21lIGJ1Z3MsIGJ1dCB0aGUgcHJvbXB0JiMzOTtzIHByZXR0eSBjbGVhcjogSSBuZWVkIHRvIGZsYWcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBBbmQgYGF0aDEya2AgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIg4oCTIGl0JiMzOTtzIGFsbCBhYm91dCBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIE5vIHNvZnR3YXJlIGVtdWxhdGlvbiwgYW5kIGl0IHJlbGllcyBvbiB0aGF0IGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB0aHJvdWdoIE1ISS4KClNvLCBmaXJzdCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgaWYgdGhlcmUgd2FzIHNvbWUgaGlkZGVuIGBod3NpbWAgb3IgYGR1bW15YCBtb2RlIGJ1cmllZCBpbiB0aGUgY29kZS4gSSBzZWFyY2hlZCBmb3IgJiMzNDtod3NpbXxzaW18ZHVtbXkmIzM0OyBhbmQgZm91bmQgYSBmZXcgZGVidWdmcyBjb21tYW5kcyBsaWtlIGBzaW11bGF0ZV9md19jcmFzaGAgYW5kIG90aGVycyByZWxhdGVkIHRvIGVtdWxhdGluZyBpbnRlcmZlcmVuY2UgYW5kIHJhZGFyLCBidXQgdGhvc2UgKnN0aWxsKiBuZWVkIHRoZSBmaXJtd2FyZSBydW5uaW5nLiBUaGVuIEkgZm91bmQgYW4gYGFsbG9jX25ldGRldl9kdW1teSgwKWAgY2FsbCBpbiBgYXRoMTJrX2FoYl9jb25maWdfZXh0X2lycWAgYW5kIGBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnYCwgYnV0IHRoYXQmIzM5O3MganVzdCBmb3IgTkFQSS4gTm90aGluZyB0aGF0IGNvdWxkIGFsbG93IGl0IHRvIHJ1biB3aXRob3V0IHRoZSBoYXJkd2FyZS4gQm90dG9tIGxpbmUsIHRoZXJlJiMzOTtzIG5vIGBod3NpbWAgZm9yIGBhdGgxMmtgLgoKVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBgZHBfcGVlci5jYCwgYW5kIHNvIG9uLCB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmUgKmRlZmluaXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpOb3csIHdhaXQgYSBzZWMsIGlzIHRoZXJlICphbnkqIHdheSB0byBnZXQgYGF0aDEya2AgZnV6emVkICp0aHJvdWdoKiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBCdXQgbm8sIGBtYWM4MDIxMV9od3NpbWAgaXMgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlci4gSXQmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgIGFuZCBzaW11bGF0ZXMgYSBXaS1GaSBkZXZpY2UgYXQgdGhlIG1hYzgwMjExIGxheWVyLiBJdCBkb2VzbiYjMzk7dCB1c2UgKmFueSogYGF0aDEya2AgY29kZS4KCldoYXQgYWJvdXQgYG5sODAyMTFgIHRlc3Rtb2RlPyBObywgdGhvc2UgY29tbWFuZHMgYXJlIGhhbmRsZWQgYnkgYGF0aDEya190ZXN0bW9kZV9jbWRgLCBidXQgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBwcm9iZWQgYW5kIHRoZSBkZXZpY2UgcHJlc2VudC4KClNvLCB5ZWFoLCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwcm9tcHQgdG8gbWFrZSBzdXJlOiBZZXAsIHRoZSBwcm9tcHQgc2F5cyAmIzM0O3JldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyBgYXRoMTJrYCB0byBhIFQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIGlmIHRoZXJlIGlzIGFueSBgQ09ORklHX0FUSDEyS19TSU1gIG9yIHNpbWlsYXIgaW4gdGhlIEtjb25maWcuCgpJIGFtIGNvbmZpZGVudCwgYGF0aDEya2AgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyBhbmQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgdGhlIGZpcm13YXJlIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19BVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEyay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMtYXRoMTJrLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI1OmF0aDEyay0kKENPTkZJR19BVEgxMktfQUhCKSAmIzQzOz0gYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19BVEgxMkspICYjNDM7PSB3aWZpNy9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzAtYXRoMTJrLSQoQ09ORklHX0FDUEkpICYjNDM7PSBhY3BpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zMi1hdGgxMmstJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNC1hdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaD02MjQ9c3RydWN0IGF0aDEyayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzQxLVx0dTMyIGNhY2hlZF9wcGR1X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NzQyOiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc0My1cdHN0cnVjdCBhdGgxMmtfZGVidWcgZGVidWc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9OTU3PXN0cnVjdCBhdGgxMmtfYmFzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTA1NS1cdGVudW0gYXRoMTJrX2Rmc19yZWdpb24gZGZzX3JlZ2lvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oOjEwNTY6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTA1Ny1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc29jO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaD0zNz1zdHJ1Y3QgYXRoMTJrX2R1bXBfZmlsZV9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmVkdW1wLmgtNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmVkdW1wLmg6NjA6I2lmZGVmIENPTkZJR19BVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaC02MS1lbnVtIGF0aDEya19md19jcmFzaF9kdW1wX3R5cGUgYXRoMTJrX2NvcmVkdW1wX2dldF9kdW1wX3R5cGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM9NTU9RVhQT1JUX1NZTUJPTChfX2F0aDEya193YXJuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzo1NzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5jLTU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYz0xMDg9RVhQT1JUX1NZTUJPTChhdGgxMmtfZGJnX2R1bXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzoxMTA6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUcgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmg9NDE9ZXh0ZXJuIGJvb2wgYXRoMTJrX2Z0bV9tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oOjQzOiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNDQtX19wcmludGYoMywgNCkgdm9pZCBfX2F0aDEya19kYmcoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmg9NDc9dm9pZCBhdGgxMmtfZGJnX2R1bXAoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTAtXHRcdCAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo1MTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTItc3RhdGljIGlubGluZSB2b2lkIF9fYXRoMTJrX2RiZyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTYzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo2NDojZW5kaWYgLyogQ09ORklHX0FUSDEyS19ERUJVRyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaDoxMDojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaC0xMS12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg9MTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTE0NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaDoxNDU6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmgtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaD0yNj12b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9zdGF0c19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mjg6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTI5LXZvaWQgYXRoMTJrX2RlYnVnZnNfaHR0X2V4dF9zdGF0c19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzAtXHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzE6I2Vsc2UgLyogQ09ORklHX0FUSDEyS19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzItc3RhdGljIGlubGluZSB2b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaDoxNTojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmgtMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmg9MTc9dm9pZCBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oOjIyOiNlbmRpZiAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTEyMTI9dm9pZCBhdGgxMmtfcGNpX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTI1ODojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xMjU5LXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9jb3JlZHVtcF9jYWxjdWxhdGVfc2l6ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgKmR1bXBfc2VnX3N6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19oaWZfb3BzIGF0aDEya19wY2lfaGlmX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MTAtXHQucGFuaWNfaGFuZGxlciA9IGF0aDEya19wY2lfcGFuaWNfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUxMTojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTEyLVx0LmNvcmVkdW1wX2Rvd25sb2FkID0gYXRoMTJrX3BjaV9jb3JlZHVtcF9kb3dubG9hZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmgtMTQtLyogY3JlYXRlIGVtcHR5IGZ1bmN0aW9ucyB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaDoxNTojaWYgIWRlZmluZWQoQ09ORklHX0FUSDEyS19UUkFDSU5HKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE2LSN1bmRlZiBUUkFDRV9FVkVOVFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaD0xOD1zdGF0aWMgaW5saW5lIHZvaWQgdHJhY2VfICMjIG5hbWUocHJvdG8pIHt9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmg6MTk6I2VuZGlmIC8qICFDT05GSUdfQVRIMTJLX1RSQUNJTkcgfHwgX19DSEVDS0VSX18gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdHJhY2UuaC0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEya193aWZpNy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTMtYXRoMTJrX3dpZmk3LXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlOjIwOmF0aDEya193aWZpNy0kKENPTkZJR19BVEgxMktfQUhCKSAmIzQzOz0gYWhiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oOjk6I2lmZGVmIENPTkZJR19BVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTEwLWludCBhdGgxMmtfd2lmaTdfYWhiX2luaXQodm9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTExNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTUtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTE5NjojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTE5Ny1cdC52aWZfYWRkX2RlYnVnZnMgICAgICAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19vcF92aWZfYWRkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTk5LVx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEya190bV9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTIwMDojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTIwMS1cdC5saW5rX3N0YV9hZGRfZGVidWdmcyAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz05NjU0PXN0YXRpYyB2b2lkIGF0aDEya193bWlfZXZlbnRfdGVhcmRvd25fY29tcGxldGUoc3RydWN0IGF0aDEya19iYXNlICphYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTk2NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjk2NzM6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05Njc0LXN0YXRpYyBpbnQgYXRoMTJrX3dtaV90cGNfc3RhdHNfY29weV9idWZmZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0NDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBhbmQgaXQmIzM5O3MgY2xlYXI6IHRoZXJlJiMzOTtzIG5vIHdheSB0byBzaW11bGF0ZSB0aGlzLCBubyBgQ09ORklHX0FUSDEyS19TSU1gIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gVGhpcyBkcml2ZXIsIHRoZSBgYXRoMTJrYCBvbmUsIGlzICpkZWZpbml0ZWx5KiBoYXJkd2FyZS1kZXBlbmRlbnQuIEl0IG5lZWRzIHRoZSByZWFsIGRlYWwuIFNvLCB0aGUgYFdvcnRoRnV6emluZz1mYWxzZWAgdGFnLCByaWdodCBvdXQgb2YgdGhlIGdhdGUsIHNlZW1zIHNwb3Qgb24uCgpMZXQgbWUganVzdCBzb2xpZGlmeSB0aGlzIGluIG15IG1pbmQuIFJpZ2h0LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBhdGgxMmtgIGRyaXZlci4gVGhhdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUg4oCTIHJlYWwgUENJIG9yIEFIQiBkZXZpY2VzLCBhbmQgaW1wb3J0YW50bHksIG5lZWRzIHRoYXQgZmlybXdhcmUgdG8gYWN0dWFsbHkgKmRvKiBhbnl0aGluZy4gIFRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIHdvcmsgaW4gc29tZSB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4gCgpTbywgeWVhaCwgbm90IHdvcnRoIHRoZSBlZmZvcnQgZm9yIFN5emthbGxlci4KCkhvbGQgb24sIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBgc3l6X3BjaWRldmAsIHdoaWNoIGFsbG93cyB5b3UgdG8gc2ltdWxhdGUgUENJIGRldmljZXMuIEJ1dCwgaGFuZyBvbi4gVGhlIG1vcmUgSSB0aGluayBhYm91dCBpdCwgYGF0aDEya2AgZG9lcyB0aGUgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkuIFN5el9wY2lkZXYgZG9lc24mIzM5O3QgZG8gdGhhdC4gRG9lcyBzeXprYWxsZXIgZXZlbiBoYXZlIGFuIE1ISSBlbXVsYXRvcj8KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBNSEkgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9lbXVsYXRvcnxtaGlfc2ltfGR1bW15X21oaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MDI3CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDEyayBEcml2ZXImIzM5O3MgRnV6emFiaWxpdHkqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gTUhJIGVtdWxhdG9yIGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiAgV2l0aG91dCB0aGF0LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZWZmZWN0aXZlbHkgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nIHVzaW5nIHN5emthbGxlci4gIFRoZSB3aG9sZSBwcm9jZXNzIGhpbmdlcyBvbiB0aGUgYWJpbGl0eSB0byBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgbG9hZCBpdHMgZmlybXdhcmUsIGFuZCB0aGUgTUhJIGlzIGNlbnRyYWwgdG8gdGhhdC4KClNpbmNlIHN5emthbGxlciByZWxpZXMgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHdoaWNoIGFyZSB2aXJ0dWFsaXplZCBhbmQgY2FuJiMzOTt0IGhhbmRsZSB0aGVzZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIEkgaGF2ZSB0byBjb25jbHVkZSB0aGF0IHdlIGNhbiYjMzk7dCByZWxpYWJseSBmdXp6IHRoaXMgZHJpdmVyLiBNeSByZWNvbW1lbmRhdGlvbiBpcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBgYXRoMTJrYCBpcyBhIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBJdHMgZGVwZW5kZW5jZSBvbiBhIHBoeXNpY2FsIGRldmljZSwgYW5kIHRoZSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpdCB1c2VzIHRocm91Z2ggTUhJLCBhcmUgaW5zdXJtb3VudGFibGUgb2JzdGFjbGVzIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIFRoZXJlJiMzOTtzIGp1c3Qgbm8gcHJhY3RpY2FsIHBhdGggdG8gZXhlY3V0ZSB0aGUgbmVjZXNzYXJ5IGNvZGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgb3IgQUhCIGRldmljZSBhbmQgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHZpYSBNSEkgdG8gZnVuY3Rpb24uIEl0IGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMi44Mjg5NDczN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODYwNDEyMjczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMi44Mjg5NTMxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1MjYwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2QzMWVkMThkNDE5OTg3MTY5NjQ3YzNiNzNiY2IwY2MwMDVhYTg0NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuaW5kZXggMGU3YzczMmY4MjIyNjUuLmNmOWM1YjA2OGZhNjcxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMTU0Nyw2ICsxNTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NvcmVfcHJlX3JlY29uZmlndXJlX3JlY292ZXJ5KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHdpcGh5X3VubG9jayhhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KTtcXG4rXFxuK1xcdFxcdGNvbXBsZXRlKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4gXFx0fVxcbiBcXG4gXFx0d2FrZV91cChcXHUwMDI2YWItXFx1MDAzZXdtaV9hYi50eF9jcmVkaXRzX3dxKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbmluZGV4IGZjNTEyN2I1YzFhMzdmLi4zMDcyNmU1ODA4MzNlMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuQEAgLTcyLDYgKzcyLDcgQEBcXG4gXFxuICNkZWZpbmUgQVRIMTJLX01BWF9NTE9fUEVFUlMgICAgICAgICAgICAyNTZcXG4gI2RlZmluZSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCAgICAgIDB4RkZGRlxcbisjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXFxuIFxcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRlVMTCAtMVxcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxcbkBAIC03OTMsNiArNzk0LDggQEAgc3RydWN0IGF0aDEya19odyB7XFxuIFxcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xcbiBcXHRib29sIHJlZ2RfdXBkYXRlZDtcXG4gXFx0Ym9vbCB1c2VfNmdoel9yZWdkO1xcbitcXHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XFxuK1xcdHN0cnVjdCBjb21wbGV0aW9uIHBlZXJfbWxfaWRfZG9uZTtcXG4gXFxuIFxcdHU4IG51bV9yYWRpbztcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jXFxuaW5kZXggNTJlMTAwNTljNmQ1YTguLjY4OTY4Zjk2YjRmMWIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5jXFxuQEAgLTYsNiArNiw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXFwiY29yZS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZHBfcGVlci5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHRjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9odHQuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRlYnVnZnNfaHR0X3N0YXRzLmhcXFwiXFxuQEAgLTU3NSw2ICs1NzYsNTEgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gXFx1MDAyNnJlc3AtXFx1MDAzZW1sb19wZWVyX21hcF9ldjtcXG4rXFx0dTE2IHJhd19wZWVyX2lkLCBwZWVyX2lkLCBhZGRyX2gxNjtcXG4rXFx0dTggcGVlcl9hZGRyW0VUSF9BTEVOXTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqZXYpKSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRyYXdfcGVlcl9pZCA9IGxlMzJfZ2V0X2JpdHMoZXYtXFx1MDAzZWluZm8wLFxcbitcXHRcXHRcXHRcXHQgICAgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzBfTUxPX1BFRVJfSUQpO1xcbitcXHRwZWVyX2lkID0gcmF3X3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcXG4rXFxuK1xcdGFkZHJfaDE2ID0gbGUzMl9nZXRfYml0cyhldi1cXHUwMDNlaW5mbzEsXFxuK1xcdFxcdFxcdFxcdCBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMV9NQUNfQUREUl9IMTYpO1xcbitcXHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVxcdTAwM2VtYWNfYWRkcl9sMzIpLCBhZGRyX2gxNixcXG4rXFx0XFx0XFx0ICAgICAgIHBlZXJfYWRkcik7XFxuK1xcbitcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RQX0hUVCwgXFxcImh0dCBtbG8gcGVlciBtYXAgcGVlciAlcE0gaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdCAgIHBlZXJfYWRkciwgcGVlcl9pZCk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGaXggdXAgdGhlIGRwX3BlZXIgZW50cnkgY3JlYXRlZCB3aXRoIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HXFxuK1xcdCAqIGVhcmxpZXI7IG9uIGNoaXBzIHdpdGggaG9zdF9hbGxvY19tbF9pZCA9PSBmYWxzZSB0aGlzIGlzIHRoZSBvbmx5XFxuK1xcdCAqIHBvaW50IGF0IHdoaWNoIHRoZSBob3N0IGxlYXJucyB0aGUgZmlybXdhcmUtYXNzaWduZWQgSUQuIENoaXBzXFxuK1xcdCAqIHRoYXQgYWxsb2NhdGUgdGhlIElEIG9uIHRoZSBob3N0IGFsc28gcmVjZWl2ZSB0aGlzIGV2ZW50IGJ1dCB0aGVcXG4rXFx0ICogZmlybXdhcmUtcmVwb3J0ZWQgSUQgbWF0Y2hlcyB0aGUgaG9zdC1hbGxvY2F0ZWQgb25lLCBzbyB0aGVyZSBpc1xcbitcXHQgKiBub3RoaW5nIHRvIGZpeCB1cC5cXG4rXFx0ICovXFxuK1xcdGlmICghYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xcbitcXHRcXHRyZXQgPSBhdGgxMmtfZHBfcGVlcl9maXh1cF9wZWVyX2lkKGFiLCBwZWVyX2FkZHIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHBlZXJfaWQpO1xcbitcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRhdGgxMmtfd2FybihhYixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZml4IHVwIHBlZXIgaWQgJXUgZm9yIGRwIHBlZXIgJXBNOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIHBlZXJfaWQsIHBlZXJfYWRkciwgcmV0KTtcXG4rXFx0fVxcbit9XFxuK1xcbiB2b2lkIGF0aDEya19kcF9odHRfaHRjX3QyaF9tc2dfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbkBAIC02NTksNiArNzA1LDkgQEAgdm9pZCBhdGgxMmtfZHBfaHR0X2h0Y190MmhfbXNnX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0Y2FzZSBIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORDpcXG4gXFx0XFx0YXRoMTJrX2h0dF9tbG9fb2Zmc2V0X2V2ZW50X2hhbmRsZXIoYWIsIHNrYik7XFxuIFxcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOlxcbitcXHRcXHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFxcXCJkcF9odHQgZXZlbnQgJWQgbm90IGhhbmRsZWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIHR5cGUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaFxcbmluZGV4IDk4NzY4OWYxMWNkYTQ1Li4yZGI3ZmIyN2MwMzYxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuaFxcbkBAIC05MzAsNiArOTMwLDcgQEAgZW51bSBodHRfdDJoX21zZ190eXBlIHtcXG4gXFx0SFRUX1QySF9NU0dfVFlQRV9FWFRfU1RBVFNfQ09ORiA9IDB4MWMsXFxuIFxcdEhUVF9UMkhfTVNHX1RZUEVfQktQUkVTU1VSRV9FVkVOVF9JTkQgPSAweDI0LFxcbiBcXHRIVFRfVDJIX01TR19UWVBFX01MT19USU1FU1RBTVBfT0ZGU0VUX0lORCA9IDB4MjgsXFxuK1xcdEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQID0gMHgyOSxcXG4gXFx0SFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDNcXHQ9IDB4MmIsXFxuIFxcdEhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsXFxuIH07XFxuQEAgLTk3NCwxMSArOTc1LDIyIEBAIHN0cnVjdCBodHRfdDJoX3BlZXJfdW5tYXBfZXZlbnQge1xcbiBcXHRfX2xlMzIgaW5mbzE7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbisjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEXFx0XFx0R0VOTUFTSygyMywgOClcXG4rI2RlZmluZSBIVFRfVDJIX01MT19QRUVSX01BUF9JTkZPMV9NQUNfQUREUl9IMTZcXHRcXHRHRU5NQVNLKDE1LCAwKVxcbitcXG4rc3RydWN0IGh0dF90MmhfbWxvX3BlZXJfbWFwX2V2ZW50IHtcXG4rXFx0X19sZTMyIGluZm8wO1xcbitcXHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xcbitcXHRfX2xlMzIgaW5mbzE7XFxuK1xcdF9fbGUzMiByZXNlcnZlZFs1XTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuIHN0cnVjdCBodHRfcmVzcF9tc2cge1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBodHRfdDJoX3ZlcnNpb25fY29uZl9tc2cgdmVyc2lvbl9tc2c7XFxuIFxcdFxcdHN0cnVjdCBodHRfdDJoX3BlZXJfbWFwX2V2ZW50IHBlZXJfbWFwX2V2O1xcbiBcXHRcXHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHBlZXJfdW5tYXBfZXY7XFxuK1xcdFxcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7XFxuIFxcdH07XFxuIH0gX19wYWNrZWQ7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXFxuaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcXG5AQCAtNDcyLDcgKzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxcbiBcXHRkcF9wZWVyLVxcdTAwM2Vpc19tbG8gPSBwYXJhbXMtXFx1MDAzZWlzX21sbztcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXFxuK1xcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgTUwgcGVlciBJRCwgZWl0aGVyIGtub3duIG9yIFBFTkRJTkcsIG5lZWRzIHRvIGJlXFxuK1xcdCAqIGluaXRpYWxpemVkIGhlcmUgc2luY2UgdGhlIGZvbGxvd2luZyBsb2dpYyBkZXBlbmRzIG9uIGl0LlxcbitcXHQgKlxcbiBcXHQgKiBGb3Igbm9uLU1MTyBjbGllbnQsIGhvc3QgZ2V0cyBsaW5rIHBlZXIgSUQgZnJvbSBmaXJtd2FyZSBhbmQgd2lsbCBiZVxcbiBcXHQgKiBhc3NpZ25lZCBhdCB0aGUgdGltZSBvZiBsaW5rIHBlZXIgY3JlYXRpb25cXG4gXFx0ICovXFxuQEAgLTQ4OCwxMyArNDkwLDE3IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxcbiBcXHRsaXN0X2FkZChcXHUwMDI2ZHBfcGVlci1cXHUwMDNlbGlzdCwgXFx1MDAyNmRwX2h3LVxcdTAwM2VkcF9wZWVyc19saXN0KTtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgcGVlcl9pZCBmb3IgYXRoMTJrX2RwX3BlZXIgaXMgYWxsb2NhdGVkIGJ5IGhvc3RcXG4tXFx0ICogYW5kIHRoYXQgcGVlcl9pZCBpcyBrbm93biBhdCB0aGlzIHBvaW50LCBhbmQgaGVuY2UgdGhpcyBhdGgxMmtfZHBfcGVlclxcbi1cXHQgKiBjYW4gYmUgYWRkZWQgdG8gdGhlIFJDVSB0YWJsZSB1c2luZyB0aGUgcGVlcl9pZC5cXG4tXFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCB0aGlzIGFkZGl0aW9uIHRvIFJDVSB0YWJsZSBzaGFsbCBiZSBkb25lIGF0IHRoZVxcbi1cXHQgKiB0aW1lIG9mIGFzc2lnbm1lbnQgb2YgYXRoMTJrX2RwX2xpbmtfcGVlciB0byBhdGgxMmtfZHBfcGVlci5cXG4rXFx0ICogRm9yIGFuIE1MTyBjbGllbnQgd2hvc2UgTUwgcGVlciBJRCBpcyBhbGxvY2F0ZWQgYnkgdGhlIGhvc3QsIHRoZVxcbitcXHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXFxuK1xcdCAqIHRhYmxlIHVzaW5nIGl0LiBGb3IgYW4gTUxPIGNsaWVudCBvbiBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmVcXG4rXFx0ICogYWxsb2NhdGVzIHRoZSBJRCwgcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBhbmQgdGhlXFxuK1xcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxcbitcXHQgKiBIVFRfVDJIX01TR19UWVBFX01MT19SWF9QRUVSX01BUCBoYW5kbGVyLiBGb3IgYSBub24tTUxPIGNsaWVudFxcbitcXHQgKiB0aGUgcHVibGlzaCBoYXBwZW5zIGxhdGVyLCBhdCB0aGUgdGltZSBvZiBhc3NpZ25tZW50IG9mXFxuK1xcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXFxuIFxcdCAqL1xcbi1cXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvKVxcbitcXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLCBkcF9wZWVyKTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcF9ody1cXHUwMDNlcGVlcl9sb2NrKTtcXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvKVxcbitcXHRpZiAoZHBfcGVlci1cXHUwMDNlaXNfbWxvIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLCBOVUxMKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZkcF9wZWVyLVxcdTAwM2VsaXN0KTtcXG5AQCAtNjg4LDMgKzY5NSw1NSBAQCB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfcmVzZXRfcnhfc3RhdHMoc3RydWN0IGF0aDEya19kcCAqZHAsIGNvbnN0IHU4ICphZGRyKVxcbiBcXHRpZiAocnhfc3RhdHMpXFxuIFxcdFxcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xcbiB9XFxuK1xcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbitcXHRcXHRcXHRcXHQgY29uc3QgdTggKnBlZXJfYWRkciwgdTE2IHBlZXJfaWQpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKmxpbmtfcGVlcjtcXG4rXFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyID0gTlVMTDtcXG4rXFx0c3RydWN0IGF0aDEya19od19ncm91cCAqYWcgPSBhYi1cXHUwMDNlYWc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gTlVMTDtcXG4rXFx0c3RydWN0IGF0aDEya19odyAqYWg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWYgKHBlZXJfaWQgXFx1MDAzZT0gKEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIHwgQVRIMTJLX01BWF9NTE9fUEVFUlMpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZy1cXHUwMDNlbnVtX2h3OyBpKyspIHtcXG4rXFx0XFx0YWggPSBhZy1cXHUwMDNlYWhbaV07XFxuK1xcdFxcdGlmICghYWgpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4rXFx0XFx0ZHBfcGVlciA9IGF0aDEya19kcF9wZWVyX2ZpbmRfYnlfYWRkcihcXHUwMDI2YWgtXFx1MDAzZWRwX2h3LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAodTggKilwZWVyX2FkZHIpO1xcbitcXHRcXHRpZiAoZHBfcGVlcikge1xcbitcXHRcXHRcXHRkcF9odyA9IFxcdTAwMjZhaC1cXHUwMDNlZHBfaHc7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFkcF9wZWVyKVxcbitcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4rXFxuK1xcdC8qIGRwX2h3LVxcdTAwM2VwZWVyX2xvY2sgaXMgaGVsZCAqL1xcbitcXG4rXFx0ZHBfcGVlci1cXHUwMDNlcGVlcl9pZCA9IHBlZXJfaWQ7XFxuK1xcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cXHUwMDNlZHBfcGVlcnNbcGVlcl9pZF0sIGRwX3BlZXIpO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19OVU1fTUFYX0xJTktTOyBpKyspIHtcXG4rXFx0XFx0bGlua19wZWVyID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChkcF9wZWVyLVxcdTAwM2VsaW5rX3BlZXJzW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNmRwX2h3LVxcdTAwM2VwZWVyX2xvY2spKTtcXG4rXFx0XFx0aWYgKGxpbmtfcGVlcilcXG4rXFx0XFx0XFx0bGlua19wZWVyLVxcdTAwM2VtbF9pZCA9IHBlZXJfaWQ7XFxuK1xcdH1cXG4rXFxuK1xcdGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cXHUwMDNlc3RhKS1cXHUwMDNlbWxfcGVlcl9pZCA9IHBlZXJfaWQ7XFxuK1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2ZHBfaHctXFx1MDAzZXBlZXJfbG9jayk7XFxuK1xcbitcXHRjb21wbGV0ZShcXHUwMDI2YWgtXFx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXFxuaW5kZXggZjUwNjdlNjZmMWUxODIuLjk4NDI2NzFiNTQ3NTkwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcXG5AQCAtMTgwLDQgKzE4MCw2IEBAIHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqYXRoMTJrX2RwX3BlZXJfZmluZF9ieV9wZWVyaWQoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wXFxuIHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpcXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcXG4gdm9pZCBhdGgxMmtfZHBfbGlua19wZWVyX2ZyZWUoc3RydWN0IGF0aDEya19kcF9saW5rX3BlZXIgKnBlZXIpO1xcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBjb25zdCB1OCAqcGVlcl9hZGRyLFxcbitcXHRcXHRcXHRcXHQgdTE2IHBlZXJfaWQpO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuaW5kZXggZDEzNWIyOTM2Mzc4OGIuLjgwOTE1MDFjZjc0MmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxcbkBAIC0yMzIsNiArMjMyLDggQEAgc3RydWN0IGF0aDEya19od19wYXJhbXMge1xcbiBcXHRcXHR1MzIgbWF4X2NsaWVudF9kYnM7XFxuIFxcdFxcdHUzMiBtYXhfY2xpZW50X2Ric19zYnM7XFxuIFxcdH0gY2xpZW50O1xcbitcXG4rXFx0Ym9vbCBob3N0X2FsbG9jX21sX2lkO1xcbiB9O1xcbiBcXG4gc3RydWN0IGF0aDEya19od19vcHMge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDQ5MGMxMzRjMWYyOTBiLi5hZTg3NDExNGRjNTE4ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMjc4LDEzICsxMjc4LDE3IEBAIHZvaWQgYXRoMTJrX21hY19kcF9wZWVyX2NsZWFudXAoc3RydWN0IGF0aDEya19odyAqYWgpXFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlciwgKnRtcDtcXG4gXFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcXHUwMDI2YWgtXFx1MDAzZWRwX2h3O1xcbiBcXG4rXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSk7XFxuK1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cGVlcnMpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkcF9ody1cXHUwMDNlcGVlcl9sb2NrKTtcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRwX3BlZXIsIHRtcCwgXFx1MDAyNmRwX2h3LVxcdTAwM2VkcF9wZWVyc19saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGlmIChkcF9wZWVyLVxcdTAwM2Vpc19tbG8pIHtcXG4tXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVxcdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVxcdTAwM2VwZWVyX2lkXSwgTlVMTCk7XFxuLVxcdFxcdFxcdGNsZWFyX2JpdChkcF9wZWVyLVxcdTAwM2VwZWVyX2lkLCBhaC1cXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XFxuK1xcdFxcdFxcdGlmIChkcF9wZWVyLVxcdTAwM2VwZWVyX2lkICE9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxcbitcXHRcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXFx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXFx1MDAzZXBlZXJfaWRdLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBOVUxMKTtcXG4rXFx0XFx0XFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYXRoMTJrX3N0YV90b19haHN0YShkcF9wZWVyLVxcdTAwM2VzdGEpKTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0bGlzdF9tb3ZlKFxcdTAwMjZkcF9wZWVyLVxcdTAwM2VsaXN0LCBcXHUwMDI2cGVlcnMpO1xcbkBAIC0zNTI3LDExICszNTMxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19wZWVyX2Fzc29jX2hfbWxvKHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhLFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEgPSBhcnN0YS1cXHUwMDNlYWhzdGE7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmFyc3RhX3A7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGFyc3RhLVxcdTAwM2VhcnZpZi1cXHUwMDNlYXItXFx1MDAzZWFoO1xcbiBcXHR1bnNpZ25lZCBsb25nIGxpbmtzO1xcbiBcXHR1OCBsaW5rX2lkO1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGlmICghc3RhLVxcdTAwM2VtbG8gfHwgYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXFxuK1xcdGlmICghc3RhLVxcdTAwM2VtbG8pXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdG1sLVxcdTAwM2VlbmFibGVkID0gdHJ1ZTtcXG5AQCAtMzUzOSwxMiArMzU0OCwyNSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcXG4gXFxuIFxcdC8qIEZvciBub3cgY29uc2lkZXJpbmcgdGhlIHByaW1hcnkgdW1hYyBiYXNlZCBvbiBhc3NvYyBsaW5rICovXFxuIFxcdG1sLVxcdTAwM2VwcmltYXJ5X3VtYWMgPSBhcnN0YS1cXHUwMDNlaXNfYXNzb2NfbGluaztcXG4tXFx0bWwtXFx1MDAzZXBlZXJfaWRfdmFsaWQgPSB0cnVlO1xcbitcXHQvKlxcbitcXHQgKiBPbmx5IGNoaXBzIHRoYXQgYWxsb2NhdGUgdGhlIE1MRCBwZWVyIElEIG9uIHRoZSBob3N0IHNlbmQgYSB2YWxpZFxcbitcXHQgKiBtbF9wZWVyX2lkIGluIFdNSV9QRUVSX0FTU09DX0NNRElELiBGb3IgY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlXFxuK1xcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cXG4rXFx0ICovXFxuK1xcdG1sLVxcdTAwM2VwZWVyX2lkX3ZhbGlkID0gYWgtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQ7XFxuIFxcdG1sLVxcdTAwM2Vsb2dpY2FsX2xpbmtfaWR4X3ZhbGlkID0gdHJ1ZTtcXG4gXFxuIFxcdGV0aGVyX2FkZHJfY29weShtbC1cXHUwMDNlbWxkX2FkZHIsIHN0YS1cXHUwMDNlYWRkcik7XFxuIFxcdG1sLVxcdTAwM2Vsb2dpY2FsX2xpbmtfaWR4ID0gYXJzdGEtXFx1MDAzZWxpbmtfaWR4O1xcbi1cXHRtbC1cXHUwMDNlbWxfcGVlcl9pZCA9IGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkO1xcbitcXHQvKlxcbitcXHQgKiBXTUlfTUxPX1BFRVJfQVNTT0NfUEFSQU1TIGV4cGVjdHMgdGhlIHJhdyBNTCBwZWVyIElEIHdpdGhvdXRcXG4rXFx0ICogdGhlIGhvc3Qtc2lkZSBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCBib29ra2VlcGluZyBiaXQuIEZvciBjaGlwc1xcbitcXHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXFxuK1xcdCAqIGZpcm13YXJlIGFsd2F5cyBhbGxvY2F0ZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgaGVyZSk7IHNlbmQgMFxcbitcXHQgKiB0byBtYWtlIHRoYXQgaW50ZW50IGV4cGxpY2l0LlxcbitcXHQgKi9cXG4rXFx0bWwtXFx1MDAzZW1sX3BlZXJfaWQgPSBhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA/XFxuK1xcdFxcdFxcdCAoYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgXFx1MDAyNiB+QVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpIDogMDtcXG4gXFx0bWwtXFx1MDAzZWllZWVfbGlua19pZCA9IGFyc3RhLVxcdTAwM2VsaW5rX2lkO1xcbiBcXHRtbC1cXHUwMDNlbnVtX3BhcnRuZXJfbGlua3MgPSAwO1xcbiBcXHRtbC1cXHUwMDNlZW1sX2NhcCA9IHN0YS1cXHUwMDNlZW1sX2NhcDtcXG5AQCAtMzU5MSw4ICszNjEzLDYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3BlZXJfYXNzb2NfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFxuIFxcdG1lbXNldChhcmcsIDAsIHNpemVvZigqYXJnKSk7XFxuIFxcbi1cXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XFxuLVxcbiBcXHRhcmctXFx1MDAzZXBlZXJfbmV3X2Fzc29jID0gIXJlYXNzb2M7XFxuIFxcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcXG4gXFx0YXRoMTJrX3BlZXJfYXNzb2NfaF9jcnlwdG8oYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcXG5AQCAtMzgzMiw2ICszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFx0cmV0dXJuIGJ3O1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGF0aDEya19tYWNfcGVlcl9hc3NvYyhzdHJ1Y3QgYXRoMTJrICphcixcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBhdGgxMmtfd21pX3BlZXJfYXNzb2NfYXJnICpwZWVyX2FyZylcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19hcl90b19haChhcik7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XFxuK1xcdHJlaW5pdF9jb21wbGV0aW9uKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4rXFxuK1xcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgcGVlcl9hcmctXFx1MDAzZXBlZXJfbWFjLCBwZWVyX2FyZy1cXHUwMDNldmRldl9pZCwgcmV0KTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFyLVxcdTAwM2VwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpIHtcXG4rXFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIGdldCBwZWVyIGFzc29jIGNvbmYgZXZlbnQgZm9yICVwTSB2ZGV2ICVpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgcGVlcl9hcmctXFx1MDAzZXBlZXJfbWFjLCBwZWVyX2FyZy1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGb3IgZGV2aWNlcyB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTEQgcGVlciBJRCwgdGhlIGhvc3RcXG4rXFx0ICogbGVhcm5zIHRoZSByZWFsIElEIG9ubHkgZnJvbSB0aGUgTUxPX1JYX1BFRVJfTUFQIEhUVCBldmVudCwgd2hpY2ggaXNcXG4rXFx0ICogaGFuZGxlZCBpbiBhIHNvZnRpcnEgKEJIIHdvcmtxdWV1ZSkgY29udGV4dCB0aGF0IGNhbm5vdCB0YWtlIHRoZVxcbitcXHQgKiB3aXBoeSBsb2NrLiBCbG9jayBoZXJlLCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSB3aXBoeSBsb2NrLCB1bnRpbFxcbitcXHQgKiB0aGF0IGV2ZW50IGhhcyBmaXhlZCB1cCB0aGUgSUQuIFRoaXMgc2VyaWFsaXNlcyB0aGUgZml4dXAgYWdhaW5zdFxcbitcXHQgKiBhbGwgb3RoZXIgd2lwaHktbG9ja2VkIG1sX3BlZXJfaWQgYWNjZXNzZXMuXFxuK1xcdCAqXFxuK1xcdCAqIFRoZSBmaXJtd2FyZSBzZW5kcyB0aGUgZXZlbnQgb25seSBvbmNlLCBpbiByZXNwb25zZSB0byB0aGUgYXNzb2MtbGlua1xcbitcXHQgKiBwZWVyIGFzc29jLCBzbyBibG9jayBvbmx5IGZvciB0aGF0IGxpbmsuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWFoLVxcdTAwM2Vob3N0X2FsbG9jX21sX2lkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBlZXJfYXJnLVxcdTAwM2VtbC5lbmFibGVkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwZWVyX2FyZy1cXHUwMDNlbWwuYXNzb2NfbGluayBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YWgtXFx1MDAzZXBlZXJfbWxfaWRfZG9uZSwgMSAqIEhaKSkge1xcbitcXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBwZWVyX2FyZy1cXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVxcdTAwM2V2ZGV2X2lkKTtcXG4rXFx0XFx0cmV0dXJuIC1FVElNRURPVVQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBhdGgxMmtfYnNzX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmJzc19jb25mKVxcbkBAIC0zOTEyLDE4ICszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdH1cXG4gXFxuIFxcdHBlZXJfYXJnLVxcdTAwM2Vpc19hc3NvYyA9IHRydWU7XFxuLVxcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xcbi1cXHRpZiAocmV0KSB7XFxuLVxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHQgICAgYnNzX2NvbmYtXFx1MDAzZWJzc2lkLCBhcnZpZi1cXHUwMDNldmRldl9pZCwgcmV0KTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHR9XFxuIFxcbi1cXHRpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcXHUwMDI2YXItXFx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xcbi1cXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgICBic3NfY29uZi1cXHUwMDNlYnNzaWQsIGFydmlmLVxcdTAwM2V2ZGV2X2lkKTtcXG4rXFx0cmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XFxuK1xcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybjtcXG4tXFx0fVxcbiBcXG4gXFx0cmV0ID0gYXRoMTJrX3NldHVwX3BlZXJfc21wcyhhciwgYXJ2aWYsIGJzc19jb25mLVxcdTAwM2Vic3NpZCxcXG4gXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2bGlua19zdGEtXFx1MDAzZWh0X2NhcCwgXFx1MDAyNmxpbmtfc3RhLVxcdTAwM2VoZV82Z2h6X2NhcGEpO1xcbkBAIC02NDc3LDE4ICs2NTM1LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBcXHR9XFxuIFxcbiBcXHRwZWVyX2FyZy1cXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xcbi1cXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG4tXFx0aWYgKHJldCkge1xcbi1cXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yIFNUQSAlcE0gdmRldiAlaTogJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgICBhcnN0YS1cXHUwMDNlYWRkciwgYXJ2aWYtXFx1MDAzZXZkZXZfaWQsIHJldCk7XFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcdH1cXG4gXFxuLVxcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFxcdTAwMjZhci1cXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XFxuLVxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAgIGFyc3RhLVxcdTAwM2VhZGRyLCBhcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuLVxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbi1cXHR9XFxuK1xcdHJldCA9IGF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0bnVtX3ZodF9yYXRlcyA9IGF0aDEya19tYWNfYml0cmF0ZV9tYXNrX251bV92aHRfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xcbiBcXHRudW1faGVfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1faGVfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xcbkBAIC02ODM3LDE0ICs2ODg3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3N0YV9yY191cGRhdGVfd2soc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndrKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHBlZXJfYXJnLCB0cnVlKTtcXG4gXFxuIFxcdFxcdFxcdHBlZXJfYXJnLVxcdTAwM2Vpc19hc3NvYyA9IGZhbHNlO1xcbi1cXHRcXHRcXHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcXG4tXFx0XFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgYXJzdGEtXFx1MDAzZWFkZHIsIGFydmlmLVxcdTAwM2V2ZGV2X2lkLCBlcnIpO1xcbiBcXG4tXFx0XFx0XFx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFyLVxcdTAwM2VwZWVyX2Fzc29jX2RvbmUsIDEgKiBIWikpXFxuLVxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGFyc3RhLVxcdTAwM2VhZGRyLCBhcnZpZi1cXHUwMDNldmRldl9pZCk7XFxuK1xcdFxcdFxcdGF0aDEya19tYWNfcGVlcl9hc3NvYyhhciwgcGVlcl9hcmcpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC03MjYyLDEwICs3MzA2LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19tbF9zdGF0aW9uX3JlbW92ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsXFxuIFxcdFxcdGF0aDEya19tYWNfZnJlZV91bmFzc2lnbl9saW5rX3N0YShhaCwgYWhzdGEsIGxpbmtfaWQpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoc3RhLVxcdTAwM2VtbG8pIHtcXG4tXFx0XFx0Y2xlYXJfYml0KGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkLCBhaC1cXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XFxuLVxcdFxcdGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XFxuLVxcdH1cXG4rXFx0aWYgKHN0YS1cXHUwMDNlbWxvKVxcbitcXHRcXHRhdGgxMmtfcGVlcl9tbF9mcmVlKGFoLCBhaHN0YSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoMTJrX21hY19oYW5kbGVfbGlua19zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuQEAgLTc3MjksMTUgKzc3NzEsMjMgQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHQvKiBNTCBzdGEgKi9cXG4gXFx0XFx0aWYgKHN0YS1cXHUwMDNlbWxvIFxcdTAwMjZcXHUwMDI2ICFhaHN0YS1cXHUwMDNlbGlua3NfbWFwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAoaHdlaWdodDE2KHN0YS1cXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XFxuLVxcdFxcdFxcdGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID0gYXRoMTJrX3BlZXJfbWxfYWxsb2MoYWgpO1xcbi1cXHRcXHRcXHRpZiAoYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPT0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQpIHtcXG4tXFx0XFx0XFx0XFx0YXRoMTJrX2h3X3dhcm4oYWgsIFxcXCJ1bmFibGUgdG8gYWxsb2NhdGUgTUwgcGVlciBpZCBmb3Igc3RhICVwTVxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdGEtXFx1MDAzZWFkZHIpO1xcbi1cXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcdFxcdFxcdGlmIChhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xcbitcXHRcXHRcXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcXG4rXFx0XFx0XFx0XFx0aWYgKGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKSB7XFxuK1xcdFxcdFxcdFxcdFxcdGF0aDEya19od193YXJuKGFoLCBcXFwidW5hYmxlIHRvIGFsbG9jYXRlIE1MIHBlZXIgaWQgZm9yIHN0YSAlcE1cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc3RhLVxcdTAwM2VhZGRyKTtcXG4rXFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbitcXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGZpcm13YXJlIGFsbG9jYXRlcyB0aGUgTUwgcGVlciBJRCBhbmQgbm90aWZpZXNcXG4rXFx0XFx0XFx0XFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HO1xcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRkcF9wYXJhbXMuaXNfbWxvID0gdHJ1ZTtcXG4tXFx0XFx0XFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbitcXHRcXHRcXHRkcF9wYXJhbXMucGVlcl9pZCA9IGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkcF9wYXJhbXMuc3RhID0gc3RhO1xcbkBAIC03ODc0LDEwICs3OTI0LDggQEAgaW50IGF0aDEya19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBwZWVyX2RlbGV0ZTpcXG4gXFx0YXRoMTJrX2RwX3BlZXJfZGVsZXRlKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcsIHN0YS1cXHUwMDNlYWRkciwgc3RhKTtcXG4gbWxfcGVlcl9pZF9jbGVhcjpcXG4tXFx0aWYgKHN0YS1cXHUwMDNlbWxvKSB7XFxuLVxcdFxcdGNsZWFyX2JpdChhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCwgYWgtXFx1MDAzZWZyZWVfbWxfcGVlcl9pZF9tYXApO1xcbi1cXHRcXHRhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xcbi1cXHR9XFxuK1xcdGlmIChzdGEtXFx1MDAzZW1sbylcXG4rXFx0XFx0YXRoMTJrX3BlZXJfbWxfZnJlZShhaCwgYWhzdGEpO1xcbiBleGl0OlxcbiBcXHQvKiB1cGRhdGUgdGhlIHN0YXRlIGlmIGV2ZXJ5dGhpbmcgd2VudCB3ZWxsICovXFxuIFxcdGlmICghcmV0KVxcbkBAIC0xNTMwNyw2ICsxNTM1NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxcbiBcXHRhaC1cXHUwMDNlbnVtX3JhZGlvID0gbnVtX3BkZXZfbWFwO1xcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWh3X211dGV4KTtcXG4rXFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZhaC1cXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcXG4gXFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFoLVxcdTAwM2VkcF9ody5kcF9wZWVyc19saXN0KTtcXG5AQCAtMTUzODEsOCArMTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4gXFx0aW50IG1hY19pZCwgZGV2aWNlX2lkLCB0b3RhbF9yYWRpbywgbnVtX2h3O1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4tXFx0aW50IHJldCwgaSwgajtcXG4rXFx0Ym9vbCBjb25mID0gZmFsc2U7XFxuIFxcdHU4IHJhZGlvX3Blcl9odztcXG4rXFx0aW50IHJldCwgaSwgajtcXG4gXFxuIFxcdHRvdGFsX3JhZGlvID0gMDtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFnLVxcdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XFxuQEAgLTE1NDIyLDYgKzE1NDcyLDE5IEBAIGludCBhdGgxMmtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRhYiA9IGFnLVxcdTAwM2VhYltkZXZpY2VfaWRdO1xcbitcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogdGhlIGFzc3VtcHRpb24gaXMgYWxsIGRldmljZXMgd2l0aGluIGFuIGFoXFxuK1xcdFxcdFxcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGogPT0gMCkge1xcbitcXHRcXHRcXHRcXHRjb25mID0gYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcXG4rXFx0XFx0XFx0fSBlbHNlIGlmIChjb25mICE9IGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcXG4rXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbmNvbnNpc3RlbnQgTUwgSUQgY29uZmlnIHdpdGhpbiBhaCwgZGV2aWNlIDAgdXNlcyAlcyBhbGxvY2F0ZWQgSUQsIHdoaWxlIGRldmljZSAldSBkb2Vzbid0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgY29uZiA/IFxcXCJob3N0XFxcIiA6IFxcXCJmaXJtd2FyZVxcXCIsIGRldmljZV9pZCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRwZGV2X21hcFtqXS5hYiA9IGFiO1xcbiBcXHRcXHRcXHRwZGV2X21hcFtqXS5wZGV2X2lkeCA9IG1hY19pZDtcXG4gXFx0XFx0XFx0bWFjX2lkKys7XFxuQEAgLTE1NDQ2LDYgKzE1NTA5LDcgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGFoLVxcdTAwM2VkZXYgPSBhYi1cXHUwMDNlZGV2O1xcbitcXHRcXHRhaC1cXHUwMDNlaG9zdF9hbGxvY19tbF9pZCA9IGNvbmY7XFxuIFxcbiBcXHRcXHRhZy1cXHUwMDNlYWhbaV0gPSBhaDtcXG4gXFx0XFx0YWctXFx1MDAzZW51bV9odysrO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcXG5AQCAtMjMwLDcgKzIzMCwxNiBAQCBpbnQgYXRoMTJrX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG4gXFx0XFx0LyogRmlsbCBNTCBpbmZvIGludG8gY3JlYXRlZCBwZWVyICovXFxuIFxcdFxcdGlmIChzdGEtXFx1MDAzZW1sbykge1xcbiBcXHRcXHRcXHRtbF9wZWVyX2lkID0gYWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQ7XFxuLVxcdFxcdFxcdHBlZXItXFx1MDAzZW1sX2lkID0gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBGb3IgY2hpcHMgd2hlcmUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElELFxcbitcXHRcXHRcXHQgKiBtbF9wZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGhlcmUuIFRoZVxcbitcXHRcXHRcXHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcXG4rXFx0XFx0XFx0ICogcGVlci1cXHUwMDNlbWxfaWQgb25jZSB0aGUgSUQgaXMga25vd24uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZiAobWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcXG4rXFx0XFx0XFx0XFx0cGVlci1cXHUwMDNlbWxfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4rXFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRwZWVyLVxcdTAwM2VtbF9pZCA9IG1sX3BlZXJfaWQ7XFxuIFxcdFxcdFxcdGV0aGVyX2FkZHJfY29weShwZWVyLVxcdTAwM2VtbF9hZGRyLCBzdGEtXFx1MDAzZWFkZHIpO1xcbiBcXG4gXFx0XFx0XFx0LyogdGhlIGFzc29jIGxpbmsgaXMgY29uc2lkZXJlZCBwcmltYXJ5IGZvciBub3cgKi9cXG5AQCAtMjc2LDkgKzI4NSwyNSBAQCB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpXFxuIFxcdH1cXG4gXFxuIFxcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NQVhfTUxPX1BFRVJTKVxcbi1cXHRcXHRtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XFxuK1xcdFxcdHJldHVybiBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4gXFxuLVxcdHJldHVybiBtbF9wZWVyX2lkO1xcbitcXHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xcbit9XFxuK1xcbit2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcXG4re1xcbitcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9ubHkgZGV2aWNlcyB0aGF0IGFsbG9jYXRlIHRoZSBJRCBvbiB0aGUgaG9zdCBvd24gYSBzbG90IGluXFxuK1xcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXFxuK1xcdCAqL1xcbitcXHRpZiAoYWgtXFx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIChhaHN0YS1cXHUwMDNlbWxfcGVlcl9pZCBcXHUwMDNjXFxuK1xcdCAgICAgKEFUSDEyS19NQVhfTUxPX1BFRVJTIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQpKSlcXG4rXFx0XFx0Y2xlYXJfYml0KGFoc3RhLVxcdTAwM2VtbF9wZWVyX2lkIFxcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElELFxcbitcXHRcXHRcXHQgIGFoLVxcdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcXG4rXFx0YWhzdGEtXFx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcXG4gfVxcbiBcXG4gaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxcbmluZGV4IDQ5ZDg5Nzk2YmM0NmUyLi4wZjdmMjViOGU4OWMwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXFxuQEAgLTI2LDQgKzI2LDUgQEAgaW50IGF0aDEya19saW5rX3N0YV9yaGFzaF9hZGQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJcXG4gc3RydWN0IGF0aDEya19saW5rX3N0YSAqYXRoMTJrX2xpbmtfc3RhX2ZpbmRfYnlfYWRkcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICphZGRyKTtcXG4gdTE2IGF0aDEya19wZWVyX21sX2FsbG9jKHN0cnVjdCBhdGgxMmtfaHcgKmFoKTtcXG4rdm9pZCBhdGgxMmtfcGVlcl9tbF9mcmVlKHN0cnVjdCBhdGgxMmtfaHcgKmFoLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpO1xcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZTViZjlkMjE4MTA0MGQuLjBjMjc3ZjUxZDk5YzFhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbkBAIC00MzksNiArNDM5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxcbiBcXHRcXHR9LFxcbitcXG4rXFx0XFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxcbiBcXHR9LFxcbiBcXHR7XFxuIFxcdFxcdC5uYW1lID0gXFxcIndjbjc4NTAgaHcyLjBcXFwiLFxcbkBAIC01MzAsNiArNTMyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxcbiBcXHRcXHR9LFxcbitcXG4rXFx0XFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSBmYWxzZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJxY245Mjc0IGh3Mi4wXFxcIixcXG5AQCAtNjE3LDYgKzYyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJpcHE1MzMyIGh3MS4wXFxcIixcXG5AQCAtNjk3LDYgKzcwMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFx0e1xcbiBcXHRcXHQubmFtZSA9IFxcXCJxY2MyMDcyIGh3MS4wXFxcIixcXG5AQCAtNzg5LDYgKzc5Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcXG4gXFx0XFx0XFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcXG4gXFx0XFx0fSxcXG4rXFxuK1xcdFxcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXFxuIFxcdH0sXFxuIFxcdHtcXG4gXFx0XFx0Lm5hbWUgPSBcXFwiaXBxNTQyNCBodzEuMFxcXCIsXFxuQEAgLTg3Myw2ICs4ODMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xcbiBcXHRcXHRcXHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXFxuIFxcdFxcdFxcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXFxuIFxcdFxcdH0sXFxuK1xcbitcXHRcXHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXFxuIFxcdH0sXFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoxMy41MzUxNTgxMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzg5NzkwMzg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNkMzFlZDE4ZDQxOTk4NzE2OTY0N2MzYjczYmNiMGNjMDA1YWE4NDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAwODowMzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbmluZGV4IDBlN2M3MzJmODIyMjY1Li5jZjljNWIwNjhmYTY3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuQEAgLTE1NDcsNiArMTU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3ByZV9yZWNvbmZpZ3VyZV9yZWNvdmVyeShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0XHR9XG4gXG4gXHRcdHdpcGh5X3VubG9jayhhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4rXG4rXHRcdGNvbXBsZXRlKFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XG4gXHR9XG4gXG4gXHR3YWtlX3VwKFx1MDAyNmFiLVx1MDAzZXdtaV9hYi50eF9jcmVkaXRzX3dxKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uMzA3MjZlNTgwODMzZTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03Miw2ICs3Miw3IEBAXG4gXG4gI2RlZmluZSBBVEgxMktfTUFYX01MT19QRUVSUyAgICAgICAgICAgIDI1NlxuICNkZWZpbmUgQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQgICAgICAweEZGRkZcbisjZGVmaW5lIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HICAgICAgMHhGRkZFXG4gXG4gI2RlZmluZSBBVEgxMktfSU5WQUxJRF9SU1NJX0ZVTEwgLTFcbiAjZGVmaW5lIEFUSDEyS19JTlZBTElEX1JTU0lfRU1QVFkgLTEyOFxuQEAgLTc5Myw2ICs3OTQsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xuIFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XG4gXHRib29sIHVzZV82Z2h6X3JlZ2Q7XG4rXHRib29sIGhvc3RfYWxsb2NfbWxfaWQ7XG4rXHRzdHJ1Y3QgY29tcGxldGlvbiBwZWVyX21sX2lkX2RvbmU7XG4gXG4gXHR1OCBudW1fcmFkaW87XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9odHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbmluZGV4IDUyZTEwMDU5YzZkNWE4Li42ODk2OGY5NmI0ZjFiMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmNcbkBAIC02LDYgKzYsNyBAQFxuIFxuICNpbmNsdWRlIFwiY29yZS5oXCJcbiAjaW5jbHVkZSBcInBlZXIuaFwiXG4rI2luY2x1ZGUgXCJkcF9wZWVyLmhcIlxuICNpbmNsdWRlIFwiaHRjLmhcIlxuICNpbmNsdWRlIFwiZHBfaHR0LmhcIlxuICNpbmNsdWRlIFwiZGVidWdmc19odHRfc3RhdHMuaFwiXG5AQCAtNTc1LDYgKzU3Niw1MSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcbitcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c3RydWN0IGh0dF9yZXNwX21zZyAqcmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3BfbXNnICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzdHJ1Y3QgaHR0X3QyaF9tbG9fcGVlcl9tYXBfZXZlbnQgKmV2ID0gXHUwMDI2cmVzcC1cdTAwM2VtbG9fcGVlcl9tYXBfZXY7XG4rXHR1MTYgcmF3X3BlZXJfaWQsIHBlZXJfaWQsIGFkZHJfaDE2O1xuK1x0dTggcGVlcl9hZGRyW0VUSF9BTEVOXTtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpldikpIHtcbitcdFx0YXRoMTJrX3dhcm4oYWIsIFwidW5leHBlY3RlZCBodHQgbWxvIHBlZXIgbWFwIGV2ZW50IGxlbiAldVxcblwiLFxuK1x0XHRcdCAgICBza2ItXHUwMDNlbGVuKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0cmF3X3BlZXJfaWQgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8wLFxuK1x0XHRcdFx0ICAgIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8wX01MT19QRUVSX0lEKTtcbitcdHBlZXJfaWQgPSByYXdfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuK1xuK1x0YWRkcl9oMTYgPSBsZTMyX2dldF9iaXRzKGV2LVx1MDAzZWluZm8xLFxuK1x0XHRcdFx0IEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8xX01BQ19BRERSX0gxNik7XG4rXHRhdGgxMmtfZHBfZ2V0X21hY19hZGRyKGxlMzJfdG9fY3B1KGV2LVx1MDAzZW1hY19hZGRyX2wzMiksIGFkZHJfaDE2LFxuK1x0XHRcdCAgICAgICBwZWVyX2FkZHIpO1xuK1xuK1x0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EUF9IVFQsIFwiaHR0IG1sbyBwZWVyIG1hcCBwZWVyICVwTSBpZCAldVxcblwiLFxuK1x0XHQgICBwZWVyX2FkZHIsIHBlZXJfaWQpO1xuK1xuK1x0LypcbitcdCAqIEZpeCB1cCB0aGUgZHBfcGVlciBlbnRyeSBjcmVhdGVkIHdpdGggQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkdcbitcdCAqIGVhcmxpZXI7IG9uIGNoaXBzIHdpdGggaG9zdF9hbGxvY19tbF9pZCA9PSBmYWxzZSB0aGlzIGlzIHRoZSBvbmx5XG4rXHQgKiBwb2ludCBhdCB3aGljaCB0aGUgaG9zdCBsZWFybnMgdGhlIGZpcm13YXJlLWFzc2lnbmVkIElELiBDaGlwc1xuK1x0ICogdGhhdCBhbGxvY2F0ZSB0aGUgSUQgb24gdGhlIGhvc3QgYWxzbyByZWNlaXZlIHRoaXMgZXZlbnQgYnV0IHRoZVxuK1x0ICogZmlybXdhcmUtcmVwb3J0ZWQgSUQgbWF0Y2hlcyB0aGUgaG9zdC1hbGxvY2F0ZWQgb25lLCBzbyB0aGVyZSBpc1xuK1x0ICogbm90aGluZyB0byBmaXggdXAuXG4rXHQgKi9cbitcdGlmICghYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcbitcdFx0cmV0ID0gYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChhYiwgcGVlcl9hZGRyLFxuK1x0XHRcdFx0XHRcdCAgIHBlZXJfaWQpO1xuK1x0XHRpZiAocmV0KVxuK1x0XHRcdGF0aDEya193YXJuKGFiLFxuK1x0XHRcdFx0ICAgIFwiZmFpbGVkIHRvIGZpeCB1cCBwZWVyIGlkICV1IGZvciBkcCBwZWVyICVwTTogJWRcXG5cIixcbitcdFx0XHRcdCAgICBwZWVyX2lkLCBwZWVyX2FkZHIsIHJldCk7XG4rXHR9XG4rfVxuK1xuIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtNjU5LDYgKzcwNSw5IEBAIHZvaWQgYXRoMTJrX2RwX2h0dF9odGNfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1RJTUVTVEFNUF9PRkZTRVRfSU5EOlxuIFx0XHRhdGgxMmtfaHR0X21sb19vZmZzZXRfZXZlbnRfaGFuZGxlcihhYiwgc2tiKTtcbiBcdFx0YnJlYWs7XG4rXHRjYXNlIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQOlxuK1x0XHRhdGgxMmtfZHBfaHR0X21sb19wZWVyX21hcF9oYW5kbGVyKGFiLCBza2IpO1xuK1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfRFBfSFRULCBcImRwX2h0dCBldmVudCAlZCBub3QgaGFuZGxlZFxcblwiLFxuIFx0XHRcdCAgIHR5cGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfaHR0LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5pbmRleCA5ODc2ODlmMTFjZGE0NS4uMmRiN2ZiMjdjMDM2MTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX2h0dC5oXG5AQCAtOTMwLDYgKzkzMCw3IEBAIGVudW0gaHR0X3QyaF9tc2dfdHlwZSB7XG4gXHRIVFRfVDJIX01TR19UWVBFX0VYVF9TVEFUU19DT05GID0gMHgxYyxcbiBcdEhUVF9UMkhfTVNHX1RZUEVfQktQUkVTU1VSRV9FVkVOVF9JTkQgPSAweDI0LFxuIFx0SFRUX1QySF9NU0dfVFlQRV9NTE9fVElNRVNUQU1QX09GRlNFVF9JTkQgPSAweDI4LFxuK1x0SFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVAgPSAweDI5LFxuIFx0SFRUX1QySF9NU0dfVFlQRV9QRUVSX01BUDNcdD0gMHgyYixcbiBcdEhUVF9UMkhfTVNHX1RZUEVfVkRFVl9UWFJYX1NUQVRTX1BFUklPRElDX0lORCA9IDB4MmMsXG4gfTtcbkBAIC05NzQsMTEgKzk3NSwyMiBAQCBzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHtcbiBcdF9fbGUzMiBpbmZvMTtcbiB9IF9fcGFja2VkO1xuIFxuKyNkZWZpbmUgSFRUX1QySF9NTE9fUEVFUl9NQVBfSU5GTzBfTUxPX1BFRVJfSURcdFx0R0VOTUFTSygyMywgOClcbisjZGVmaW5lIEhUVF9UMkhfTUxPX1BFRVJfTUFQX0lORk8xX01BQ19BRERSX0gxNlx0XHRHRU5NQVNLKDE1LCAwKVxuK1xuK3N0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCB7XG4rXHRfX2xlMzIgaW5mbzA7XG4rXHRfX2xlMzIgbWFjX2FkZHJfbDMyO1xuK1x0X19sZTMyIGluZm8xO1xuK1x0X19sZTMyIHJlc2VydmVkWzVdO1xuK30gX19wYWNrZWQ7XG4rXG4gc3RydWN0IGh0dF9yZXNwX21zZyB7XG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBodHRfdDJoX3ZlcnNpb25fY29uZl9tc2cgdmVyc2lvbl9tc2c7XG4gXHRcdHN0cnVjdCBodHRfdDJoX3BlZXJfbWFwX2V2ZW50IHBlZXJfbWFwX2V2O1xuIFx0XHRzdHJ1Y3QgaHR0X3QyaF9wZWVyX3VubWFwX2V2ZW50IHBlZXJfdW5tYXBfZXY7XG4rXHRcdHN0cnVjdCBodHRfdDJoX21sb19wZWVyX21hcF9ldmVudCBtbG9fcGVlcl9tYXBfZXY7XG4gXHR9O1xuIH0gX19wYWNrZWQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuY1xuaW5kZXggNDdkMDA5YTBkNjFmZWYuLjA5MTQyZGNiNzRmOThmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jXG5AQCAtNDcyLDcgKzQ3Miw5IEBAIGludCBhdGgxMmtfZHBfcGVlcl9jcmVhdGUoc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsIHU4ICphZGRyLFxuIFx0ZHBfcGVlci1cdTAwM2Vpc19tbG8gPSBwYXJhbXMtXHUwMDNlaXNfbWxvO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgaG9zdCBhc3NpZ25zIHRoZSBNTCBwZWVyIElELCBzbyBzZXQgcGVlcl9pZCBpbiBkcF9wZWVyXG4rXHQgKiBGb3IgTUxPIGNsaWVudCwgdGhlIE1MIHBlZXIgSUQsIGVpdGhlciBrbm93biBvciBQRU5ESU5HLCBuZWVkcyB0byBiZVxuK1x0ICogaW5pdGlhbGl6ZWQgaGVyZSBzaW5jZSB0aGUgZm9sbG93aW5nIGxvZ2ljIGRlcGVuZHMgb24gaXQuXG4rXHQgKlxuIFx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCBob3N0IGdldHMgbGluayBwZWVyIElEIGZyb20gZmlybXdhcmUgYW5kIHdpbGwgYmVcbiBcdCAqIGFzc2lnbmVkIGF0IHRoZSB0aW1lIG9mIGxpbmsgcGVlciBjcmVhdGlvblxuIFx0ICovXG5AQCAtNDg4LDEzICs0OTAsMTcgQEAgaW50IGF0aDEya19kcF9wZWVyX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2RwX2h3ICpkcF9odywgdTggKmFkZHIsXG4gXHRsaXN0X2FkZChcdTAwMjZkcF9wZWVyLVx1MDAzZWxpc3QsIFx1MDAyNmRwX2h3LVx1MDAzZWRwX3BlZXJzX2xpc3QpO1xuIFxuIFx0Lypcbi1cdCAqIEZvciBNTE8gY2xpZW50LCB0aGUgcGVlcl9pZCBmb3IgYXRoMTJrX2RwX3BlZXIgaXMgYWxsb2NhdGVkIGJ5IGhvc3Rcbi1cdCAqIGFuZCB0aGF0IHBlZXJfaWQgaXMga25vd24gYXQgdGhpcyBwb2ludCwgYW5kIGhlbmNlIHRoaXMgYXRoMTJrX2RwX3BlZXJcbi1cdCAqIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVIHRhYmxlIHVzaW5nIHRoZSBwZWVyX2lkLlxuLVx0ICogRm9yIG5vbi1NTE8gY2xpZW50LCB0aGlzIGFkZGl0aW9uIHRvIFJDVSB0YWJsZSBzaGFsbCBiZSBkb25lIGF0IHRoZVxuLVx0ICogdGltZSBvZiBhc3NpZ25tZW50IG9mIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4rXHQgKiBGb3IgYW4gTUxPIGNsaWVudCB3aG9zZSBNTCBwZWVyIElEIGlzIGFsbG9jYXRlZCBieSB0aGUgaG9zdCwgdGhlXG4rXHQgKiBwZWVyX2lkIGlzIGtub3duIGhlcmUgYW5kIHRoZSBkcF9wZWVyIGNhbiBiZSBhZGRlZCB0byB0aGUgUkNVXG4rXHQgKiB0YWJsZSB1c2luZyBpdC4gRm9yIGFuIE1MTyBjbGllbnQgb24gY2hpcHMgd2hlcmUgdGhlIGZpcm13YXJlXG4rXHQgKiBhbGxvY2F0ZXMgdGhlIElELCBwZWVyX2lkIGlzIEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HIGFuZCB0aGVcbitcdCAqIFJDVSB0YWJsZSBwdWJsaXNoIGlzIGRlZmVycmVkIHRvIHRoZVxuK1x0ICogSFRUX1QySF9NU0dfVFlQRV9NTE9fUlhfUEVFUl9NQVAgaGFuZGxlci4gRm9yIGEgbm9uLU1MTyBjbGllbnRcbitcdCAqIHRoZSBwdWJsaXNoIGhhcHBlbnMgbGF0ZXIsIGF0IHRoZSB0aW1lIG9mIGFzc2lnbm1lbnQgb2ZcbitcdCAqIGF0aDEya19kcF9saW5rX3BlZXIgdG8gYXRoMTJrX2RwX3BlZXIuXG4gXHQgKi9cbi1cdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbylcbitcdGlmIChkcF9wZWVyLVx1MDAzZWlzX21sbyBcdTAwMjZcdTAwMjZcbitcdCAgICBkcF9wZWVyLVx1MDAzZXBlZXJfaWQgIT0gQVRIMTJLX01MT19QRUVSX0lEX1BFTkRJTkcpXG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLCBkcF9wZWVyKTtcbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmRwX2h3LVx1MDAzZXBlZXJfbG9jayk7XG5AQCAtNTE1LDcgKzUyMSw4IEBAIHZvaWQgYXRoMTJrX2RwX3BlZXJfZGVsZXRlKHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3LCB1OCAqYWRkcixcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvKVxuK1x0aWYgKGRwX3BlZXItXHUwMDNlaXNfbWxvIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbiBcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRwX2h3LVx1MDAzZWRwX3BlZXJzW2RwX3BlZXItXHUwMDNlcGVlcl9pZF0sIE5VTEwpO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0KTtcbkBAIC02ODgsMyArNjk1LDU1IEBAIHZvaWQgYXRoMTJrX2RwX2xpbmtfcGVlcl9yZXNldF9yeF9zdGF0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgY29uc3QgdTggKmFkZHIpXG4gXHRpZiAocnhfc3RhdHMpXG4gXHRcdG1lbXNldChyeF9zdGF0cywgMCwgc2l6ZW9mKCpyeF9zdGF0cykpO1xuIH1cbitcbitpbnQgYXRoMTJrX2RwX3BlZXJfZml4dXBfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuK1x0XHRcdFx0IGNvbnN0IHU4ICpwZWVyX2FkZHIsIHUxNiBwZWVyX2lkKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfZHBfbGlua19wZWVyICpsaW5rX3BlZXI7XG4rXHRzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIgPSBOVUxMO1xuK1x0c3RydWN0IGF0aDEya19od19ncm91cCAqYWcgPSBhYi1cdTAwM2VhZztcbitcdHN0cnVjdCBhdGgxMmtfZHBfaHcgKmRwX2h3ID0gTlVMTDtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuK1x0aW50IGk7XG4rXG4rXHRpZiAocGVlcl9pZCBcdTAwM2U9IChBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCB8IEFUSDEyS19NQVhfTUxPX1BFRVJTKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1faHc7IGkrKykge1xuK1x0XHRhaCA9IGFnLVx1MDAzZWFoW2ldO1xuK1x0XHRpZiAoIWFoKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbitcdFx0ZHBfcGVlciA9IGF0aDEya19kcF9wZWVyX2ZpbmRfYnlfYWRkcihcdTAwMjZhaC1cdTAwM2VkcF9odyxcbitcdFx0XHRcdFx0XHQgICAgICAodTggKilwZWVyX2FkZHIpO1xuK1x0XHRpZiAoZHBfcGVlcikge1xuK1x0XHRcdGRwX2h3ID0gXHUwMDI2YWgtXHUwMDNlZHBfaHc7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWgtXHUwMDNlZHBfaHcucGVlcl9sb2NrKTtcbitcdH1cbitcbitcdGlmICghZHBfcGVlcilcbitcdFx0cmV0dXJuIC1FTk9FTlQ7XG4rXG4rXHQvKiBkcF9ody1cdTAwM2VwZWVyX2xvY2sgaXMgaGVsZCAqL1xuK1xuK1x0ZHBfcGVlci1cdTAwM2VwZWVyX2lkID0gcGVlcl9pZDtcbitcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1twZWVyX2lkXSwgZHBfcGVlcik7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfTlVNX01BWF9MSU5LUzsgaSsrKSB7XG4rXHRcdGxpbmtfcGVlciA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZHBfcGVlci1cdTAwM2VsaW5rX3BlZXJzW2ldLFxuK1x0XHRcdFx0XHRcdCAgICAgIGxvY2tkZXBfaXNfaGVsZChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spKTtcbitcdFx0aWYgKGxpbmtfcGVlcilcbitcdFx0XHRsaW5rX3BlZXItXHUwMDNlbWxfaWQgPSBwZWVyX2lkO1xuK1x0fVxuK1xuK1x0YXRoMTJrX3N0YV90b19haHN0YShkcF9wZWVyLVx1MDAzZXN0YSktXHUwMDNlbWxfcGVlcl9pZCA9IHBlZXJfaWQ7XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuK1xuK1x0Y29tcGxldGUoXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbitcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5oXG5pbmRleCBmNTA2N2U2NmYxZTE4Mi4uOTg0MjY3MWI1NDc1OTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmhcbkBAIC0xODAsNCArMTgwLDYgQEAgc3RydWN0IGF0aDEya19kcF9wZWVyICphdGgxMmtfZHBfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BcbiBzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqXG4gYXRoMTJrX2RwX2xpbmtfcGVlcl9maW5kX2J5X3BlZXJpZChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHUxNiBwZWVyX2lkKTtcbiB2b2lkIGF0aDEya19kcF9saW5rX3BlZXJfZnJlZShzdHJ1Y3QgYXRoMTJrX2RwX2xpbmtfcGVlciAqcGVlcik7XG4raW50IGF0aDEya19kcF9wZWVyX2ZpeHVwX3BlZXJfaWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgY29uc3QgdTggKnBlZXJfYWRkcixcbitcdFx0XHRcdCB1MTYgcGVlcl9pZCk7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCBkMTM1YjI5MzYzNzg4Yi4uODA5MTUwMWNmNzQyYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTIzMiw2ICsyMzIsOCBAQCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyB7XG4gXHRcdHUzMiBtYXhfY2xpZW50X2RicztcbiBcdFx0dTMyIG1heF9jbGllbnRfZGJzX3NicztcbiBcdH0gY2xpZW50O1xuK1xuK1x0Ym9vbCBob3N0X2FsbG9jX21sX2lkO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19od19vcHMge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCA0OTBjMTM0YzFmMjkwYi4uYWU4NzQxMTRkYzUxOGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTI3OCwxMyArMTI3OCwxNyBAQCB2b2lkIGF0aDEya19tYWNfZHBfcGVlcl9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0c3RydWN0IGF0aDEya19kcF9wZWVyICpkcF9wZWVyLCAqdG1wO1xuIFx0c3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcgPSBcdTAwMjZhaC1cdTAwM2VkcF9odztcbiBcbitcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5KTtcbitcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBlZXJzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkcF9ody1cdTAwM2VwZWVyX2xvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRwX3BlZXIsIHRtcCwgXHUwMDI2ZHBfaHctXHUwMDNlZHBfcGVlcnNfbGlzdCwgbGlzdCkge1xuIFx0XHRpZiAoZHBfcGVlci1cdTAwM2Vpc19tbG8pIHtcbi1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZHBfaHctXHUwMDNlZHBfcGVlcnNbZHBfcGVlci1cdTAwM2VwZWVyX2lkXSwgTlVMTCk7XG4tXHRcdFx0Y2xlYXJfYml0KGRwX3BlZXItXHUwMDNlcGVlcl9pZCwgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4rXHRcdFx0aWYgKGRwX3BlZXItXHUwMDNlcGVlcl9pZCAhPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORylcbitcdFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihkcF9ody1cdTAwM2VkcF9wZWVyc1tkcF9wZWVyLVx1MDAzZXBlZXJfaWRdLFxuK1x0XHRcdFx0XHRcdCAgIE5VTEwpO1xuK1x0XHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGF0aDEya19zdGFfdG9fYWhzdGEoZHBfcGVlci1cdTAwM2VzdGEpKTtcbiBcdFx0fVxuIFxuIFx0XHRsaXN0X21vdmUoXHUwMDI2ZHBfcGVlci1cdTAwM2VsaXN0LCBcdTAwMjZwZWVycyk7XG5AQCAtMzUyNywxMSArMzUzMSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcbiBcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSA9IGFyc3RhLVx1MDAzZWFoc3RhO1xuIFx0c3RydWN0IGF0aDEya19saW5rX3N0YSAqYXJzdGFfcDtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuK1x0c3RydWN0IGF0aDEya19odyAqYWggPSBhcnN0YS1cdTAwM2VhcnZpZi1cdTAwM2Vhci1cdTAwM2VhaDtcbiBcdHVuc2lnbmVkIGxvbmcgbGlua3M7XG4gXHR1OCBsaW5rX2lkO1xuIFx0aW50IGk7XG4gXG4tXHRpZiAoIXN0YS1cdTAwM2VtbG8gfHwgYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRClcbitcdGlmICghc3RhLVx1MDAzZW1sbylcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bWwtXHUwMDNlZW5hYmxlZCA9IHRydWU7XG5AQCAtMzUzOSwxMiArMzU0OCwyNSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX21sbyhzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphcnN0YSxcbiBcbiBcdC8qIEZvciBub3cgY29uc2lkZXJpbmcgdGhlIHByaW1hcnkgdW1hYyBiYXNlZCBvbiBhc3NvYyBsaW5rICovXG4gXHRtbC1cdTAwM2VwcmltYXJ5X3VtYWMgPSBhcnN0YS1cdTAwM2Vpc19hc3NvY19saW5rO1xuLVx0bWwtXHUwMDNlcGVlcl9pZF92YWxpZCA9IHRydWU7XG4rXHQvKlxuK1x0ICogT25seSBjaGlwcyB0aGF0IGFsbG9jYXRlIHRoZSBNTEQgcGVlciBJRCBvbiB0aGUgaG9zdCBzZW5kIGEgdmFsaWRcbitcdCAqIG1sX3BlZXJfaWQgaW4gV01JX1BFRVJfQVNTT0NfQ01ESUQuIEZvciBjaGlwcyB3aGVyZSB0aGUgZmlybXdhcmVcbitcdCAqIHBpY2tzIHRoZSBJRCwgbGVhdmUgcGVlcl9pZF92YWxpZCBmYWxzZSB0byBhdm9pZCB1bmV4cGVjdGVkIGlzc3Vlcy5cbitcdCAqL1xuK1x0bWwtXHUwMDNlcGVlcl9pZF92YWxpZCA9IGFoLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQ7XG4gXHRtbC1cdTAwM2Vsb2dpY2FsX2xpbmtfaWR4X3ZhbGlkID0gdHJ1ZTtcbiBcbiBcdGV0aGVyX2FkZHJfY29weShtbC1cdTAwM2VtbGRfYWRkciwgc3RhLVx1MDAzZWFkZHIpO1xuIFx0bWwtXHUwMDNlbG9naWNhbF9saW5rX2lkeCA9IGFyc3RhLVx1MDAzZWxpbmtfaWR4O1xuLVx0bWwtXHUwMDNlbWxfcGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQ7XG4rXHQvKlxuK1x0ICogV01JX01MT19QRUVSX0FTU09DX1BBUkFNUyBleHBlY3RzIHRoZSByYXcgTUwgcGVlciBJRCB3aXRob3V0XG4rXHQgKiB0aGUgaG9zdC1zaWRlIEFUSDEyS19QRUVSX01MX0lEX1ZBTElEIGJvb2trZWVwaW5nIGJpdC4gRm9yIGNoaXBzXG4rXHQgKiB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBJRCwgdGhlIGZpZWxkIGlzIHVudXNlZCAodGhlXG4rXHQgKiBmaXJtd2FyZSBhbHdheXMgYWxsb2NhdGVzIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIGhlcmUpOyBzZW5kIDBcbitcdCAqIHRvIG1ha2UgdGhhdCBpbnRlbnQgZXhwbGljaXQuXG4rXHQgKi9cbitcdG1sLVx1MDAzZW1sX3BlZXJfaWQgPSBhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkID9cbitcdFx0XHQgKGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgXHUwMDI2IH5BVEgxMktfUEVFUl9NTF9JRF9WQUxJRCkgOiAwO1xuIFx0bWwtXHUwMDNlaWVlZV9saW5rX2lkID0gYXJzdGEtXHUwMDNlbGlua19pZDtcbiBcdG1sLVx1MDAzZW51bV9wYXJ0bmVyX2xpbmtzID0gMDtcbiBcdG1sLVx1MDAzZWVtbF9jYXAgPSBzdGEtXHUwMDNlZW1sX2NhcDtcbkBAIC0zNTkxLDggKzM2MTMsNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19wcmVwYXJlKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bWVtc2V0KGFyZywgMCwgc2l6ZW9mKCphcmcpKTtcbiBcbi1cdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSk7XG4tXG4gXHRhcmctXHUwMDNlcGVlcl9uZXdfYXNzb2MgPSAhcmVhc3NvYztcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfYmFzaWMoYXIsIGFydmlmLCBhcnN0YSwgYXJnKTtcbiBcdGF0aDEya19wZWVyX2Fzc29jX2hfY3J5cHRvKGFyLCBhcnZpZiwgYXJzdGEsIGFyZyk7XG5AQCAtMzgzMiw2ICszODUyLDUyIEBAIHN0YXRpYyB1MzIgYXRoMTJrX21hY19pZWVlODAyMTFfc3RhX2J3X3RvX3dtaShzdHJ1Y3QgYXRoMTJrICphcixcbiBcdHJldHVybiBidztcbiB9XG4gXG4rc3RhdGljIGludCBhdGgxMmtfbWFjX3BlZXJfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4rXHRcdFx0XHQgc3RydWN0IGF0aDEya193bWlfcGVlcl9hc3NvY19hcmcgKnBlZXJfYXJnKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbitcdGludCByZXQ7XG4rXG4rXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZhci1cdTAwM2VwZWVyX2Fzc29jX2RvbmUpO1xuK1x0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YWgtXHUwMDNlcGVlcl9tbF9pZF9kb25lKTtcbitcbitcdHJldCA9IGF0aDEya193bWlfc2VuZF9wZWVyX2Fzc29jX2NtZChhciwgcGVlcl9hcmcpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gcnVuIHBlZXIgYXNzb2MgZm9yICVwTSB2ZGV2ICVpOiAlZFxcblwiLFxuK1x0XHRcdCAgICBwZWVyX2FyZy1cdTAwM2VwZWVyX21hYywgcGVlcl9hcmctXHUwMDNldmRldl9pZCwgcmV0KTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbitcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBGb3IgZGV2aWNlcyB3aGVyZSB0aGUgZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTEQgcGVlciBJRCwgdGhlIGhvc3RcbitcdCAqIGxlYXJucyB0aGUgcmVhbCBJRCBvbmx5IGZyb20gdGhlIE1MT19SWF9QRUVSX01BUCBIVFQgZXZlbnQsIHdoaWNoIGlzXG4rXHQgKiBoYW5kbGVkIGluIGEgc29mdGlycSAoQkggd29ya3F1ZXVlKSBjb250ZXh0IHRoYXQgY2Fubm90IHRha2UgdGhlXG4rXHQgKiB3aXBoeSBsb2NrLiBCbG9jayBoZXJlLCB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSB3aXBoeSBsb2NrLCB1bnRpbFxuK1x0ICogdGhhdCBldmVudCBoYXMgZml4ZWQgdXAgdGhlIElELiBUaGlzIHNlcmlhbGlzZXMgdGhlIGZpeHVwIGFnYWluc3RcbitcdCAqIGFsbCBvdGhlciB3aXBoeS1sb2NrZWQgbWxfcGVlcl9pZCBhY2Nlc3Nlcy5cbitcdCAqXG4rXHQgKiBUaGUgZmlybXdhcmUgc2VuZHMgdGhlIGV2ZW50IG9ubHkgb25jZSwgaW4gcmVzcG9uc2UgdG8gdGhlIGFzc29jLWxpbmtcbitcdCAqIHBlZXIgYXNzb2MsIHNvIGJsb2NrIG9ubHkgZm9yIHRoYXQgbGluay5cbitcdCAqL1xuK1x0aWYgKCFhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBlZXJfYXJnLVx1MDAzZWlzX2Fzc29jIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBlZXJfYXJnLVx1MDAzZW1sLmVuYWJsZWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGVlcl9hcmctXHUwMDNlbWwuYXNzb2NfbGluayBcdTAwMjZcdTAwMjZcbitcdCAgICAhd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSwgMSAqIEhaKSkge1xuK1x0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IE1MTyBwZWVyIG1hcCBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbitcdFx0XHQgICAgcGVlcl9hcmctXHUwMDNlcGVlcl9tYWMsIHBlZXJfYXJnLVx1MDAzZXZkZXZfaWQpO1xuK1x0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBhdGgxMmtfYnNzX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0XHRcdCAgICAgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpic3NfY29uZilcbkBAIC0zOTEyLDE4ICszOTc4LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEya19ic3NfYXNzb2Moc3RydWN0IGF0aDEyayAqYXIsXG4gXHR9XG4gXG4gXHRwZWVyX2FyZy1cdTAwM2Vpc19hc3NvYyA9IHRydWU7XG4tXHRyZXQgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciAlcE0gdmRldiAlaTogJWRcXG5cIixcbi1cdFx0XHQgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGFydmlmLVx1MDAzZXZkZXZfaWQsIHJldCk7XG4tXHRcdHJldHVybjtcbi1cdH1cbiBcbi1cdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSkge1xuLVx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCJmYWlsZWQgdG8gZ2V0IHBlZXIgYXNzb2MgY29uZiBldmVudCBmb3IgJXBNIHZkZXYgJWlcXG5cIixcbi1cdFx0XHQgICAgYnNzX2NvbmYtXHUwMDNlYnNzaWQsIGFydmlmLVx1MDAzZXZkZXZfaWQpO1xuK1x0cmV0ID0gYXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XG4rXHRpZiAocmV0KVxuIFx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRyZXQgPSBhdGgxMmtfc2V0dXBfcGVlcl9zbXBzKGFyLCBhcnZpZiwgYnNzX2NvbmYtXHUwMDNlYnNzaWQsXG4gXHRcdFx0XHQgICAgIFx1MDAyNmxpbmtfc3RhLVx1MDAzZWh0X2NhcCwgXHUwMDI2bGlua19zdGEtXHUwMDNlaGVfNmdoel9jYXBhKTtcbkBAIC02NDc3LDE4ICs2NTM1LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zdGF0aW9uX2Fzc29jKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0fVxuIFxuIFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSB0cnVlO1xuLVx0cmV0ID0gYXRoMTJrX3dtaV9zZW5kX3BlZXJfYXNzb2NfY21kKGFyLCBwZWVyX2FyZyk7XG4tXHRpZiAocmV0KSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBydW4gcGVlciBhc3NvYyBmb3IgU1RBICVwTSB2ZGV2ICVpOiAlZFxcblwiLFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCByZXQpO1xuLVx0XHRyZXR1cm4gcmV0O1xuLVx0fVxuIFxuLVx0aWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YXItXHUwMDNlcGVlcl9hc3NvY19kb25lLCAxICogSFopKSB7XG4tXHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwiLFxuLVx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkKTtcbi1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tXHR9XG4rXHRyZXQgPSBhdGgxMmtfbWFjX3BlZXJfYXNzb2MoYXIsIHBlZXJfYXJnKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRudW1fdmh0X3JhdGVzID0gYXRoMTJrX21hY19iaXRyYXRlX21hc2tfbnVtX3ZodF9yYXRlcyhhciwgYmFuZCwgbWFzayk7XG4gXHRudW1faGVfcmF0ZXMgPSBhdGgxMmtfbWFjX2JpdHJhdGVfbWFza19udW1faGVfcmF0ZXMoYXIsIGJhbmQsIG1hc2spO1xuQEAgLTY4MzcsMTQgKzY4ODcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc3RhX3JjX3VwZGF0ZV93ayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd2spXG4gXHRcdFx0XHRcdFx0ICBwZWVyX2FyZywgdHJ1ZSk7XG4gXG4gXHRcdFx0cGVlcl9hcmctXHUwMDNlaXNfYXNzb2MgPSBmYWxzZTtcbi1cdFx0XHRlcnIgPSBhdGgxMmtfd21pX3NlbmRfcGVlcl9hc3NvY19jbWQoYXIsIHBlZXJfYXJnKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHJ1biBwZWVyIGFzc29jIGZvciBTVEEgJXBNIHZkZXYgJWk6ICVkXFxuXCIsXG4tXHRcdFx0XHRcdCAgICBhcnN0YS1cdTAwM2VhZGRyLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBlcnIpO1xuIFxuLVx0XHRcdGlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNmFyLVx1MDAzZXBlZXJfYXNzb2NfZG9uZSwgMSAqIEhaKSlcbi1cdFx0XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcImZhaWxlZCB0byBnZXQgcGVlciBhc3NvYyBjb25mIGV2ZW50IGZvciAlcE0gdmRldiAlaVxcblwiLFxuLVx0XHRcdFx0XHQgICAgYXJzdGEtXHUwMDNlYWRkciwgYXJ2aWYtXHUwMDNldmRldl9pZCk7XG4rXHRcdFx0YXRoMTJrX21hY19wZWVyX2Fzc29jKGFyLCBwZWVyX2FyZyk7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtNzI2MiwxMCArNzMwNiw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfbWxfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLFxuIFx0XHRhdGgxMmtfbWFjX2ZyZWVfdW5hc3NpZ25fbGlua19zdGEoYWgsIGFoc3RhLCBsaW5rX2lkKTtcbiBcdH1cbiBcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuK1x0aWYgKHN0YS1cdTAwM2VtbG8pXG4rXHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiB9XG4gXG4gc3RhdGljIGludCBhdGgxMmtfbWFjX2hhbmRsZV9saW5rX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbkBAIC03NzI5LDE1ICs3NzcxLDIzIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0LyogTUwgc3RhICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvIFx1MDAyNlx1MDAyNiAhYWhzdGEtXHUwMDNlbGlua3NfbWFwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKGh3ZWlnaHQxNihzdGEtXHUwMDNldmFsaWRfbGlua3MpID09IDEpKSB7XG4tXHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbi1cdFx0XHRpZiAoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9PSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRCkge1xuLVx0XHRcdFx0YXRoMTJrX2h3X3dhcm4oYWgsIFwidW5hYmxlIHRvIGFsbG9jYXRlIE1MIHBlZXIgaWQgZm9yIHN0YSAlcE1cIixcbi1cdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbi1cdFx0XHRcdGdvdG8gZXhpdDtcbitcdFx0XHRpZiAoYWgtXHUwMDNlaG9zdF9hbGxvY19tbF9pZCkge1xuK1x0XHRcdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IGF0aDEya19wZWVyX21sX2FsbG9jKGFoKTtcbitcdFx0XHRcdGlmIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEKSB7XG4rXHRcdFx0XHRcdGF0aDEya19od193YXJuKGFoLCBcInVuYWJsZSB0byBhbGxvY2F0ZSBNTCBwZWVyIGlkIGZvciBzdGEgJXBNXCIsXG4rXHRcdFx0XHRcdFx0ICAgICAgIHN0YS1cdTAwM2VhZGRyKTtcbitcdFx0XHRcdFx0Z290byBleGl0O1xuK1x0XHRcdFx0fVxuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHQvKlxuK1x0XHRcdFx0ICogZmlybXdhcmUgYWxsb2NhdGVzIHRoZSBNTCBwZWVyIElEIGFuZCBub3RpZmllc1xuK1x0XHRcdFx0ICogdGhlIGhvc3QgdmlhIEhUVF9UMkhfTVNHX1RZUEVfTUxPX1JYX1BFRVJfTUFQXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORztcbiBcdFx0XHR9XG4gXG4gXHRcdFx0ZHBfcGFyYW1zLmlzX21sbyA9IHRydWU7XG4tXHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIHwgQVRIMTJLX1BFRVJfTUxfSURfVkFMSUQ7XG4rXHRcdFx0ZHBfcGFyYW1zLnBlZXJfaWQgPSBhaHN0YS1cdTAwM2VtbF9wZWVyX2lkO1xuIFx0XHR9XG4gXG4gXHRcdGRwX3BhcmFtcy5zdGEgPSBzdGE7XG5AQCAtNzg3NCwxMCArNzkyNCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBwZWVyX2RlbGV0ZTpcbiBcdGF0aDEya19kcF9wZWVyX2RlbGV0ZShcdTAwMjZhaC1cdTAwM2VkcF9odywgc3RhLVx1MDAzZWFkZHIsIHN0YSk7XG4gbWxfcGVlcl9pZF9jbGVhcjpcbi1cdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4tXHRcdGNsZWFyX2JpdChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkLCBhaC1cdTAwM2VmcmVlX21sX3BlZXJfaWRfbWFwKTtcbi1cdFx0YWhzdGEtXHUwMDNlbWxfcGVlcl9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuLVx0fVxuK1x0aWYgKHN0YS1cdTAwM2VtbG8pXG4rXHRcdGF0aDEya19wZWVyX21sX2ZyZWUoYWgsIGFoc3RhKTtcbiBleGl0OlxuIFx0LyogdXBkYXRlIHRoZSBzdGF0ZSBpZiBldmVyeXRoaW5nIHdlbnQgd2VsbCAqL1xuIFx0aWYgKCFyZXQpXG5AQCAtMTUzMDcsNiArMTUzNTUsNyBAQCBzdGF0aWMgc3RydWN0IGF0aDEya19odyAqYXRoMTJrX21hY19od19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZyxcbiBcdGFoLVx1MDAzZW51bV9yYWRpbyA9IG51bV9wZGV2X21hcDtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2YWgtXHUwMDNlaHdfbXV0ZXgpO1xuK1x0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmFoLVx1MDAzZXBlZXJfbWxfaWRfZG9uZSk7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG5AQCAtMTUzODEsOCArMTU0MzAsOSBAQCBpbnQgYXRoMTJrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbiBcdGludCBtYWNfaWQsIGRldmljZV9pZCwgdG90YWxfcmFkaW8sIG51bV9odztcbiBcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XG4gXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbi1cdGludCByZXQsIGksIGo7XG4rXHRib29sIGNvbmYgPSBmYWxzZTtcbiBcdHU4IHJhZGlvX3Blcl9odztcbitcdGludCByZXQsIGksIGo7XG4gXG4gXHR0b3RhbF9yYWRpbyA9IDA7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZy1cdTAwM2VudW1fZGV2aWNlczsgaSsrKSB7XG5AQCAtMTU0MjIsNiArMTU0NzIsMTkgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gXHRcdFx0fVxuIFxuIFx0XHRcdGFiID0gYWctXHUwMDNlYWJbZGV2aWNlX2lkXTtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIHRoZSBhc3N1bXB0aW9uIGlzIGFsbCBkZXZpY2VzIHdpdGhpbiBhbiBhaFxuK1x0XHRcdCAqIHNoYXJlIHRoZSBzYW1lIGhvc3RfYWxsb2NfbWxfaWQgY29uZmlndXJhdGlvblxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChqID09IDApIHtcbitcdFx0XHRcdGNvbmYgPSBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaG9zdF9hbGxvY19tbF9pZDtcbitcdFx0XHR9IGVsc2UgaWYgKGNvbmYgIT0gYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWhvc3RfYWxsb2NfbWxfaWQpIHtcbitcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcImluY29uc2lzdGVudCBNTCBJRCBjb25maWcgd2l0aGluIGFoLCBkZXZpY2UgMCB1c2VzICVzIGFsbG9jYXRlZCBJRCwgd2hpbGUgZGV2aWNlICV1IGRvZXNuJ3RcXG5cIixcbitcdFx0XHRcdFx0ICAgIGNvbmYgPyBcImhvc3RcIiA6IFwiZmlybXdhcmVcIiwgZGV2aWNlX2lkKTtcbitcdFx0XHRcdGdvdG8gZXJyO1xuK1x0XHRcdH1cbitcbiBcdFx0XHRwZGV2X21hcFtqXS5hYiA9IGFiO1xuIFx0XHRcdHBkZXZfbWFwW2pdLnBkZXZfaWR4ID0gbWFjX2lkO1xuIFx0XHRcdG1hY19pZCsrO1xuQEAgLTE1NDQ2LDYgKzE1NTA5LDcgQEAgaW50IGF0aDEya19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4gXHRcdH1cbiBcbiBcdFx0YWgtXHUwMDNlZGV2ID0gYWItXHUwMDNlZGV2O1xuK1x0XHRhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkID0gY29uZjtcbiBcbiBcdFx0YWctXHUwMDNlYWhbaV0gPSBhaDtcbiBcdFx0YWctXHUwMDNlbnVtX2h3Kys7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuaW5kZXggYzIyMmJkYWEzMzNjNTIuLjI1ZTRiNzlmMTFkNjNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG5AQCAtMjMwLDcgKzIzMCwxNiBAQCBpbnQgYXRoMTJrX3BlZXJfY3JlYXRlKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0LyogRmlsbCBNTCBpbmZvIGludG8gY3JlYXRlZCBwZWVyICovXG4gXHRcdGlmIChzdGEtXHUwMDNlbWxvKSB7XG4gXHRcdFx0bWxfcGVlcl9pZCA9IGFoc3RhLVx1MDAzZW1sX3BlZXJfaWQ7XG4tXHRcdFx0cGVlci1cdTAwM2VtbF9pZCA9IG1sX3BlZXJfaWQgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRDtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIEZvciBjaGlwcyB3aGVyZSBmaXJtd2FyZSBhbGxvY2F0ZXMgdGhlIE1MIHBlZXIgSUQsXG4rXHRcdFx0ICogbWxfcGVlcl9pZCBpcyBBVEgxMktfTUxPX1BFRVJfSURfUEVORElORyBoZXJlLiBUaGVcbitcdFx0XHQgKiBNTE9fUlhfUEVFUl9NQVAgSFRUIGV2ZW50IGhhbmRsZXIgZml4ZXMgdXBcbitcdFx0XHQgKiBwZWVyLVx1MDAzZW1sX2lkIG9uY2UgdGhlIElEIGlzIGtub3duLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChtbF9wZWVyX2lkID09IEFUSDEyS19NTE9fUEVFUl9JRF9QRU5ESU5HKVxuK1x0XHRcdFx0cGVlci1cdTAwM2VtbF9pZCA9IEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHBlZXItXHUwMDNlbWxfaWQgPSBtbF9wZWVyX2lkO1xuIFx0XHRcdGV0aGVyX2FkZHJfY29weShwZWVyLVx1MDAzZW1sX2FkZHIsIHN0YS1cdTAwM2VhZGRyKTtcbiBcbiBcdFx0XHQvKiB0aGUgYXNzb2MgbGluayBpcyBjb25zaWRlcmVkIHByaW1hcnkgZm9yIG5vdyAqL1xuQEAgLTI3Niw5ICsyODUsMjUgQEAgdTE2IGF0aDEya19wZWVyX21sX2FsbG9jKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuIFx0fVxuIFxuIFx0aWYgKG1sX3BlZXJfaWQgPT0gQVRIMTJLX01BWF9NTE9fUEVFUlMpXG4tXHRcdG1sX3BlZXJfaWQgPSBBVEgxMktfTUxPX1BFRVJfSURfSU5WQUxJRDtcbitcdFx0cmV0dXJuIEFUSDEyS19NTE9fUEVFUl9JRF9JTlZBTElEO1xuIFxuLVx0cmV0dXJuIG1sX3BlZXJfaWQ7XG4rXHRyZXR1cm4gbWxfcGVlcl9pZCB8IEFUSDEyS19QRUVSX01MX0lEX1ZBTElEO1xuK31cbitcbit2b2lkIGF0aDEya19wZWVyX21sX2ZyZWUoc3RydWN0IGF0aDEya19odyAqYWgsIHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YSlcbit7XG4rXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4rXG4rXHQvKlxuK1x0ICogT25seSBkZXZpY2VzIHRoYXQgYWxsb2NhdGUgdGhlIElEIG9uIHRoZSBob3N0IG93biBhIHNsb3QgaW5cbitcdCAqIGZyZWVfbWxfcGVlcl9pZF9tYXAuXG4rXHQgKi9cbitcdGlmIChhaC1cdTAwM2Vob3N0X2FsbG9jX21sX2lkIFx1MDAyNlx1MDAyNlxuK1x0ICAgIChhaHN0YS1cdTAwM2VtbF9wZWVyX2lkIFx1MDAzY1xuK1x0ICAgICAoQVRIMTJLX01BWF9NTE9fUEVFUlMgfCBBVEgxMktfUEVFUl9NTF9JRF9WQUxJRCkpKVxuK1x0XHRjbGVhcl9iaXQoYWhzdGEtXHUwMDNlbWxfcGVlcl9pZCBcdTAwMjYgfkFUSDEyS19QRUVSX01MX0lEX1ZBTElELFxuK1x0XHRcdCAgYWgtXHUwMDNlZnJlZV9tbF9wZWVyX2lkX21hcCk7XG4rXHRhaHN0YS1cdTAwM2VtbF9wZWVyX2lkID0gQVRIMTJLX01MT19QRUVSX0lEX0lOVkFMSUQ7XG4gfVxuIFxuIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuaFxuaW5kZXggNDlkODk3OTZiYzQ2ZTIuLjBmN2YyNWI4ZTg5YzAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5oXG5AQCAtMjYsNCArMjYsNSBAQCBpbnQgYXRoMTJrX2xpbmtfc3RhX3JoYXNoX2FkZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhICphclxuIHN0cnVjdCBhdGgxMmtfbGlua19zdGEgKmF0aDEya19saW5rX3N0YV9maW5kX2J5X2FkZHIoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdFx0XHQgICAgIGNvbnN0IHU4ICphZGRyKTtcbiB1MTYgYXRoMTJrX3BlZXJfbWxfYWxsb2Moc3RydWN0IGF0aDEya19odyAqYWgpO1xuK3ZvaWQgYXRoMTJrX3BlZXJfbWxfZnJlZShzdHJ1Y3QgYXRoMTJrX2h3ICphaCwgc3RydWN0IGF0aDEya19zdGEgKmFoc3RhKTtcbiAjZW5kaWYgLyogX1BFRVJfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGU1YmY5ZDIxODEwNDBkLi4wYzI3N2Y1MWQ5OWMxYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtNDM5LDYgKzQzOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4rXG4rXHRcdC5ob3N0X2FsbG9jX21sX2lkID0gdHJ1ZSxcbiBcdH0sXG4gXHR7XG4gXHRcdC5uYW1lID0gXCJ3Y243ODUwIGh3Mi4wXCIsXG5AQCAtNTMwLDYgKzUzMiw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzID0gMTI4LFxuIFx0XHRcdC5tYXhfY2xpZW50X2Ric19zYnMgPSAxMjgsXG4gXHRcdH0sXG4rXG4rXHRcdC5ob3N0X2FsbG9jX21sX2lkID0gZmFsc2UsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwicWNuOTI3NCBodzIuMFwiLFxuQEAgLTYxNyw2ICs2MjEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwiaXBxNTMzMiBodzEuMFwiLFxuQEAgLTY5Nyw2ICs3MDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IHRydWUsXG4gXHR9LFxuIFx0e1xuIFx0XHQubmFtZSA9IFwicWNjMjA3MiBodzEuMFwiLFxuQEAgLTc4OSw2ICs3OTcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuIFx0XHRcdC5tYXhfY2xpZW50X2RicyA9IDEyOCxcbiBcdFx0XHQubWF4X2NsaWVudF9kYnNfc2JzID0gMTI4LFxuIFx0XHR9LFxuK1xuK1x0XHQuaG9zdF9hbGxvY19tbF9pZCA9IGZhbHNlLFxuIFx0fSxcbiBcdHtcbiBcdFx0Lm5hbWUgPSBcImlwcTU0MjQgaHcxLjBcIixcbkBAIC04NzMsNiArODgzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zIGF0aDEya193aWZpN19od19wYXJhbXNbXSA9IHtcbiBcdFx0XHQubWF4X2NsaWVudF9kYnMgPSAxMjgsXG4gXHRcdFx0Lm1heF9jbGllbnRfZGJzX3NicyA9IDEyOCxcbiBcdFx0fSxcbitcbitcdFx0Lmhvc3RfYWxsb2NfbWxfaWQgPSB0cnVlLFxuIFx0fSxcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MTMuNTM1MTYwNzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2NzAyNTg5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYW4gYXRoMTJrIFBhdGNoIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgYmlnIGRlYWwgYmVjYXVzZSBgYXRoMTJrYCBpcyBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkuIFRoZSBwYXRjaCBpdHNlbGYgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQncyBhZGRpbmcgYSBmbGFnLCBhIG5ldyBIVFQgZXZlbnQgaGFuZGxlciBmb3IgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgcGVlciBtYXBwaW5nLCBhbmQgbW9kaWZ5aW5nIGEgYnVuY2ggb2YgZXhpc3RpbmcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcGVlciBhc3NvY2lhdGlvbiBhbmQgY3JlYXRpb24uIEZ1bmN0aW9uYWxseSwgaXQncyBhZGRpbmcgTUxPIHN1cHBvcnQgdG8gdGhlIGRyaXZlci4gVGhpcyBpcyBpbnRlcmVzdGluZywgYnV0IG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGFib3V0IHRlc3RhYmlsaXR5LiBDYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD9cblxuTXkgY29uY2VybiBpcyB0aGF0IFdpLUZpIGRyaXZlcnMsICplc3BlY2lhbGx5KiBhdCB0aGlzIGxldmVsLCB1c3VhbGx5IGRlcGVuZCBvbiBhY3R1YWwgaGFyZHdhcmUuIFlvdSBuZWVkIGEgUENJZSBkZXZpY2Ugb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IG1ha2VzIGZ1enppbmcgYW5kIHRlc3RpbmcgaW4gUUVNVSBvciBHQ0UgcHJldHR5IHRyaWNreS4gSSBpbW1lZGlhdGVseSB0aGluayBvZiBgbWFjODAyMTFfaHdzaW1gLCB0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBtYWM4MDIxMSwgYnV0IHRoYXQncyBtYWM4MDIxMS4gSXQgd291bGRuJ3QgbW9kZWwgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgYGF0aDEya2AgaGFyZHdhcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiBgYXRoMTJrYCBiZSBmdXp6ZWQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIG1hYzgwMjExIHN1cHBvcnQsIGJ1dCB0aGF04oCZcyBicm9hZCBhbmQgcHJvYmFibHkgd291bGRu4oCZdCBoaXQgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciB1bmxlc3MgdGhlcmUgd2FzIGEgc3BlY2lmaWMgZW11bGF0b3IuIFdlIGhhdmUgZW11bGF0b3JzIGZvciBvdGhlciBoYXJkd2FyZSB0eXBlcywgbGlrZSBgdmhjaWAgZm9yIEJsdWV0b290aCBvciBgZHVtbXlfaGNkYCBmb3IgVVNCLCBidXQgSeKAmW0gbm90IGF3YXJlIG9mIGFueXRoaW5nIGxpa2UgdGhhdCBmb3IgYGF0aDEya2AuIE5vIHNwZWNpZmljIHZpcnR1YWwgZGV2aWNlLCBuby5cblxuVGhlbiBJIHJlY2FsbGVkIHN5emthbGxlciBoYXMgUENJIGZ1enppbmcgdmlhIGBzeXpfcGNpZGV2YCBvciBzaW11bGF0ZWQgUENJIChlLmcuIGB2ZmlvYCkuIEJ1dCB3YWl0LCB0aGUgb3JpZ2luYWwgcHJvbXB0ICpzcGVjaWZpY2FsbHkqIHNhaWQgaXQncyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBoYXJkd2FyZSBlbXVsYXRpb24uIFNvLCBpcyB0aGlzIHBhdGNoIHJlYWNoYWJsZSBhdCBhbGw/XG5cblRoaXMgbWVhbnMgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzICphbnkqIHdheSB0byBnZXQgdG8gdGhpcyBgYXRoMTJrYCBjb2RlIHdpdGggZnV6emluZy4gSXMgdGhlcmUgYW55dGhpbmcgaW4gc3l6a2FsbGVyJ3MgZGVmaW5pdGlvbnMgZm9yIFBDSSBkZXZpY2VzLCBvciBhbnl0aGluZyBleHBsaWNpdGx5IHRhcmdldGluZyBgYXRoMTJrYD8gSSBzaG91bGQgY2hlY2sgYHN5cy9saW51eC9kZXZfd2lmaS50eHRgIGFuZCB0aGUga2VybmVsIHNvdXJjZSwgYW5kIG1heWJlIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIGZvciBhbnkgc2lnbnMgb2YgZnV6emluZyBvciB2aXJ0dWFsIGRldmljZXMgcmVsYXRlZCB0byBgYXRoMTJrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgdGVzdCBtb2R1bGUgb3IgYW55IHdheSBvZiB2aXJ0dWFsaXppbmcgb3IgZW11bGF0aW5nIGBhdGgxMmtgLCBiZWNhdXNlIGlmIHRoZXJlIGlzbid0LCB0aGlzIHBhdGNoIGlzIHByb2JhYmx5IGluYWNjZXNzaWJsZSB3aXRob3V0IHJlYWwgaGFyZHdhcmUsIHdoaWNoIG1ha2VzIGl0IG11Y2ggaGFyZGVyIHRvIHRlc3QgYW5kIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MjQuMjA1NDIxODY1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NDA4MTA5NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInRvb2xzL3Rlc3RpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzoyNC41OTk1MTM3MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQyMzc4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGdlYXJlZCB0b3dhcmRzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBhdGgxMmtgIEVtdWxhdG9yIFByZXNlbmNlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZSBrZXJuZWwgYW5kIHRoZSBgYXRoMTJrYCBkcml2ZXIuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHdpcmVsZXNzIGNoaXBzZXQgZGV2ZWxvcG1lbnQgYW5kIHRoZSBldm9sdXRpb24gb2YgdGhlc2UgZHJpdmVycywgbXkgZmlyc3QgdGhvdWdodCBpczogSGFzIGFueW9uZSwgc29tZXdoZXJlLCBjcmVhdGVkIGFuICplbXVsYXRvciogZm9yIGBhdGgxMmtgIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZj8gSSdtIG5vdCB0YWxraW5nIGFib3V0IGZ1bGwgZW11bGF0aW9uIGxpa2UgUUVNVSBvciBzb21ldGhpbmc7IEknbSB0aGlua2luZyBtb3JlIGFsb25nIHRoZSBsaW5lcyBvZiBhIHNvZnR3YXJlLWJhc2VkIHJlcHJlc2VudGF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYXliZSBzaW11bGF0aW5nIGNlcnRhaW4gaGFyZHdhcmUgYmVoYXZpb3JzIG9yIGZvciBkcml2ZXIgZGV2ZWxvcG1lbnQgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIHJlYWwgaGFyZHdhcmUuIFNvLCBteSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBEb2VzIGEga2VybmVsLWxldmVsIGBhdGgxMmtgIGVtdWxhdG9yIGV4aXN0LCBhbmQsIGlmIHNvLCB3aGF0IGFyZSBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzeXN0ZW0/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDMzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6MjcuOTQxODk0NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4NDk5OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzUwMTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnPTY1PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY2OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19BVEgxMUspXFx0XFx0Kz0gYXRoMTFrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQVRIMTJLKVxcdFxcdCs9IGF0aDEyay9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM6XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE1OlxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEyay5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjE4OlxcdGJvb2wgXFxcIlF1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTktXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTI1PWNvbmZpZyBBVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjY6XFx0Ym9vbCBcXFwiYXRoMTJrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzY6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzctXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM5OlxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ1OlxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ2LVxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0ODpcXHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NDpcXHRib29sIFxcXCJhdGgxMmsgY29yZWR1bXBcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU1LVxcdGRlcGVuZHMgb24gQVRIMTJLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTctXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1ODpcXHQgIEVuYWJsZSBhdGgxMmsgY29yZWR1bXAgY29sbGVjdGlvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gYXRoMTJrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM6YXRoMTJrLXkgKz0gY29yZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTQtXFx0ICAgIGhhbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgKz0gYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0FUSDEySykgKz0gd2lmaTcvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzA6YXRoMTJrLSQoQ09ORklHX0FDUEkpICs9IGFjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMjphdGgxMmstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzU6YXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTpzdGF0aWMgaW50IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBpbnQgZnVuYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOC1cXHRpZiAoIXJvb3RfaGFuZGxlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTk6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiaW52YWxpZCBhY3BpIGhhbmRsZXJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2LVxcdGlmICghb2JqKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjc6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV9ldmFsdWF0ZV9kc20oKSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4LVxcdFxcdHJldHVybiAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYtXFx0XFx0XFx0XFx0ICAgQVRIMTJLX0FDUElfQkRGX0FOQ0hPUl9TVFJJTkdfTEVOKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBCREYgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDgtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlc3RyaW5nLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02Mi1cXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoIFxcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NjM6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNjQtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03NS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfQ0ZHX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo3NjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGNvbmZpZyBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03Ny1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTg3LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo4ODpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gVEFTIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy05OS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMDA6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgQklPUyBTQVIgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMDEtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTEtXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fR0VPX09GRlNFVF9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMTI6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgR0VPIE9GRlNFVCBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMy1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyMy1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9DQ0FfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTI0OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBDQ0EgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjUtXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzUtXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEzNjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM3LVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTQ3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTQ4OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiQUNQSSBEU00gbWV0aG9kIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG9iamVjdCB0eXBlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDktXFx0XFx0XFx0ICAgIG9iai1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTYxOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2Ny1cXHQgICAgdGFzX3Nhcl9wb3dlcl90YWJsZVsxXSAhPSBBVEgxMktfQUNQSV9UQVNfREFUQV9FTkFCTEUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjg6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjktXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTcyOlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfREFUQV9UWVBFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3My1cXHRcXHRcXHRcXHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzctXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODM6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcG93ZXIoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg4LVxcdCAgICBhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTg5OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBsYXRlc3QgQUNQSSBCSU9TIFNBUiBkYXRhXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTAtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTkzOlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTU6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Ni1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWNwaV9kc21fbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIGV2ZW50LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA0LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA1OlxcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDctXFx0aWYgKGV2ZW50ID09IEFUSDEyS19BQ1BJX05PVElGWV9FVkVOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwODpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInVua25vd24gYWNwaSBub3RpZnkgJXVcXFxcblxcXCIsIGV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjEyLVxcdGlmICghYWItXFx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjEzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImFjcGlfdGFzX2VuYWJsZSBpcyBmYWxzZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTc6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTk6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gdXBkYXRlIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjIzOlxcdHJldCA9IGF0aDEya19hY3BpX3NldF9wb3dlcl9saW1pdChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjI0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjU6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgVEFTIHBvd2VyIGxpbWl0IGRhdGE6ICVkXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjYtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzMjpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzNDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byB1cGRhdGUgQklPUyBTQVI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM4OlxcdHJldCA9IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEJJT1MgU0FSIHBvd2VyIGxpbWl0OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0NTpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wYXJhbXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0OTpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjUxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgU0FSIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTItXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTU6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19nZW9fY21kKGFiLCBhYi1cXHUwMDNlYWNwaS5nZW9fb2Zmc2V0X2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU3OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgR0VPIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjQ6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjY4OlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfQ09ORklHX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY5LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19jZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzEtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGNvbmZpZyB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3My1cXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzc6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVxcdFxcdFxcdFxcdCAgICAgIGFiLVxcdTAwM2VhY3BpLnRhc19zYXJfcG93ZXJfdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGUgcGFyYW1ldGVyOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODItXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjg5OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfcmZraWxsKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTQ6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzA4LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMDk6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Rhc19wYXJhbXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzExOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgcGFyYW1ldGVyczogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEyLVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxNi1cXHRpZiAoYWItXFx1MDAzZWFjcGkuYWNwaV9iaW9zX3Nhcl9lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTc6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTk6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIEJJT1MgU0FSOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjAtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI1LVxcdFxcdGJ1ZiA9IGFiLVxcdTAwM2VhY3BpLmNjYV9kYXRhICsgQVRIMTJLX0FDUElfQ0NBX1RIUl9PRkZTRVRfREFUQV9PRkZTRVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzI2OlxcdFxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBXTUlfQklPU19QQVJBTV9DQ0FfVEhSRVNIT0xEX1RZUEUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzMTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzMyLVxcdFxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM3LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX2JhbmRfZWRnZV9lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMzg6XFx0XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgIFdNSV9CSU9TX1BBUkFNX1RZUEVfQkFOREVER0UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDItXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM0MzpcXHRcXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDQtXFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNTE6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNjk6XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19TVVBQT1JUX0ZVTkNTKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3MTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGRhdGE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc1LVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3NjpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzc3LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzg6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRElTQUJMRSBGTEFHOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzktXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5MS1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JERl9FWFQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzkyOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQkRGX0VYVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkzLVxcdFxcdGlmIChyZXQgfHwgYWItXFx1MDAzZWFjcGkuYmRmX3N0cmluZ1swXSA9PSAnXFxcXDAnKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzk0OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIEJERiBFWFQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5NS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDAxLVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MDI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDMtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwNDpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBUQVMgY29uZmlnIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDUtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwOS1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX1RBU19EQVRBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQxMjpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDEzLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjItXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9CSU9TX1NBUikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjM6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CSU9TX1NBUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI0LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjU6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgYmlvcyBzYXIgZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI2LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzAtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9HRU9fT0ZGU0VUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQzMTpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMzOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIGdlbyBvZmZzZXQgZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDM0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDQtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9DQ0EpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ1OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQ0NBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDYtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NzpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZCBjb25maWd1cmF0aW9uOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NDgtXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NTktXFx0XFx0XFx0XFx0ICAgICAgIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JBTkRfRURHRV9DSEFOX1BPV0VSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0lOREVYX0JBTkRfRURHRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NjI6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjMtXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzMtXFx0XFx0XFx0XFx0XFx0ICAgICBBQ1BJX0RFVklDRV9OT1RJRlksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc0OlxcdFxcdFxcdFxcdFxcdCAgICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSwgYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3NS1cXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gaW5zdGFsbCBEU00gbm90aWZ5IGNhbGxiYWNrOiAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDg1OmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5Mi1cXHRpZiAoc3Ryc2NweShhYi1cXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cXHUwMDNlYWNwaS5iZGZfc3RyaW5nICsgNCwgbWF4X2xlbikgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ5MzpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk0LVxcdFxcdFxcdCAgIFxcXCJhY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDA6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwNi1cXHRcXHRcXHRcXHQgICBBQ1BJX0RFVklDRV9OT1RJRlksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NTA3OlxcdFxcdFxcdFxcdCAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc1OmludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Njp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzc6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzg6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc5OnZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjgwOmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODQ6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjkzOnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo5ODpzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDM6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC0xMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIyOnN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2FoYl9kcml2ZXIgKmF0aDEya19haGJfZmFtaWx5X2RyaXZlcnNbQVRIMTJLX0RFVklDRV9GQU1JTFlfTUFYXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOnN0YXRpYyBjb25zdCBjaGFyIGF0aDEya191c2VycGRfaXJxW11bOV0gPSB7XFxcInNwYXduXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0LVxcdFxcdFxcdFxcdCAgICAgXFxcInJlYWR5XFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9ODM9ZW51bSBleHRfaXJxX251bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEyMzpzdGF0aWMgdTMyIGF0aDEya19haGJfcmVhZDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMzA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzEtXFx0XFx0XFx0ICAgICAgIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTM5OnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2FuY2VsX3dvcmtxdWV1ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDQ6XFx0XFx0c3RydWN0IGF0aDEya19jZV9waXBlICpjZV9waXBlID0gXFx1MDAyNmFiLVxcdTAwM2VjZS5jZV9waXBlW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQ2OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0Ny1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTUzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2dycF9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjE6c3RhdGljIHZvaWQgX19hdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjY6XFx0XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjg6XFx0XFx0YXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjktXFx0XFx0aWYgKGlycV9ncnAtXFx1MDAzZW5hcGlfZW5hYmxlZCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNzc6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg1OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc2V0Yml0MzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTg5OlxcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkwOlxcdGF0aDEya19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTkzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTc6XFx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XFx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCBcXHUwMDI2IH5CSVQoYml0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjAxOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTItXFx0aWYgKGNlX2F0dHItXFx1MDAzZXNyY19uZW50cmllcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxMzpcXHRcXHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxNS1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlZGVzdF9uZW50cmllcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE2OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTJfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE3OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkICsgQ0VfSE9TVF9JRV8zX1NISUZULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE4LVxcdFxcdFxcdFxcdCAgICBpZTNfcmVnX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMjI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzMtXFx0aWYgKGNlX2F0dHItXFx1MDAzZXNyY19uZW50cmllcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzNDpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM2LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VkZXN0X25lbnRyaWVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzc6XFx0XFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzODpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICsgQ0VfSE9TVF9JRV8zX1NISUZULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM5LVxcdFxcdFxcdFxcdCAgICAgIGllM19yZWdfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNDk6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjUwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNTc6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNjItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI2MzpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjcyOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxc19lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjc3OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI3OC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI3OTpcXHRcXHRhdGgxMmtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjgzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxc19kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4ODpcXHRcXHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODktXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTA6XFx0XFx0YXRoMTJrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTQ6c3RhdGljIGludCBhdGgxMmtfYWhiX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk2OlxcdGF0aDEya19haGJfY2VfaXJxc19lbmFibGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3OlxcdGF0aDEya19jZV9yeF9wb3N0X2J1ZihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzA0OlxcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMDUtXFx0aW50IGk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjI4LjMxMDQwNDI0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDk5MDI4Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgYGF0aDEya2AgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF0aDEya2AsIGFuZCBpdCdzIGdvdCBib3RoIGBhdGgxMmtfYWhiYCBhbmQgYGF0aDEya19wY2lgIHZhcmlhbnRzLiAgVGhlbiB0aGVyZSdzIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHNpbXVsYXRlcyBtYWM4MDIxMSwgYnV0IHRoYXQncyBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYCBoYXJkd2FyZSBkcml2ZXIgaXRzZWxmLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogYGF0aDEya2Agd2l0aCBzeXprYWxsZXIuIFN5emthbGxlcidzIGdvdCBQQ0kgZnV6emluZywgd2hpY2ggc291bmRzIHByb21pc2luZyBzaW5jZSBgYXRoMTJrYCBoYXMgYSBQQ0kgaW50ZXJmYWNlLlxuXG5UaGUgdGFzayBpcyB0byBkZXRlcm1pbmUgaWYgYSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gIFRoZSBwcm9tcHQncyB3YXJuaW5nIGlzIHJlbGV2YW50OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gYXJlIG5vdCB3b3J0aCBmdXp6aW5nXCIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBhdGgxMmtgICppcyogcmVhY2hhYmxlLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgaXQncyBhIFBDSSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEgYHN5el9wY2lkZXZgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gQnV0LCBob2xkIG9uLiAgYHN5el9wY2lkZXZgIGlzbid0IGdlbmVyYWxseSB1c2VkIHRvIGZ1enogY29tcGxleCBXaS1GaSBkcml2ZXJzIGxpa2UgYGF0aDEya2AgYmVjYXVzZSB0aGV5IHR5cGljYWxseSBpbnZvbHZlIGZpcm13YXJlIGxvYWRpbmcgYW5kIERNQSwgd2hpY2ggdGhlIFBDSSBmdXp6ZXIgc3RydWdnbGVzIHdpdGguXG5cbkhvd2V2ZXIsIHRoZSBwcmVzZW5jZSBvZiBcInN5ei1jbHVzdGVyXCIgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGlzIGludGVyZXN0aW5nLiBEb2VzIHRoaXMgbWVhbiBzeXprYWxsZXIgZm91bmQgYSBidWcgb3IgaXMgYWN0aXZlbHkgZnV6emluZyB0aGlzIGRyaXZlcj8gTm8sIEkgYW0gcmV2aWV3aW5nIGEgcGF0Y2guIEkgYW0gbG9va2luZyBhdCBpdCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgd29ydGggZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYGF0aDEya2AgcmVxdWlyZXMgaGFyZHdhcmUgb3IgYW4gZW11bGF0b3IuIERvZXMgaXQgaGF2ZSB0ZXN0bW9kZSBvciBhIHNvZnR3YXJlIHNpbXVsYXRvcj8gQ2FuIGl0IGJlIHJlYWNoZWQgaW4gUUVNVT8gVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSBkZWRpY2F0ZWQgYGF0aDEya2AgZW11bGF0b3IgaW4gUUVNVSwgYW5kIFBDSSBmdXp6aW5nIG9mdGVuIGZhaWxzIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgbG9hZGluZyByZXF1aXJlbWVudHMgYW5kIGRldmljZSBib290IHNlcXVlbmNlIChgYXRoMTJrX2NvcmVfZmV0Y2hfYmRmYCwgZXRjLikuIFdpdGhvdXQgYSByZWFsIGRldmljZSBvciBhIGdvb2QgZW11bGF0b3IsIHRoZSBwcm9iZSB3aWxsIGZhaWwgYW5kIG1vc3Qgb2YgdGhlIGNvZGUgaW4gYG1hYy5jYCwgYGRwX2h0dC5jYCwgZXRjLiB3aWxsIGJlIHVucmVhY2hhYmxlLlxuXG5JJ2xsIGNoZWNrIGZvciBhIHRlc3QgbW9kZSBvciBzb2Z0d2FyZSBzaW11bGF0b3IuIExvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGVgLCBJIHNlZSBgYXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9gLiBUaGlzIHRlc3QgbW9kZSBpcyBmb3Igbmw4MDIxMSB0ZXN0IGNvbW1hbmRzLCBidXQgaXQgc3RpbGwgc2VlbXMgdG8gcmVxdWlyZSBoYXJkd2FyZSBwcmVzZW5jZS4gVGhlcmUgaXMgYWxzbyBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQncyBhIHNlcGFyYXRlIGRyaXZlciwgbm90IHNwZWNpZmljIHRvIGBhdGgxMmtgLiBGaW5hbGx5LCBJIHNob3VsZCBsb29rIGF0IGBhdGgxMmtfcGNpX3Byb2JlYC4gSXQgc2VlbXMgZG91YnRmdWwgdGhlIGBhdGgxMmtgIGRyaXZlciBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTg4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjQwLjgwOTQzNTkyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgyOTE5MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3BjaV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MTc9YXRoMTJrX2dldF9kZXZpY2VfZmFtaWx5KGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUzODpzdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTM5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxOD1pbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzktXFx0cGNpX2RyaXZlci1cXHUwMDNlaWRfdGFibGUgPSBkcml2ZXItXFx1MDAzZWlkX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0MDpcXHRwY2lfZHJpdmVyLVxcdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQxLVxcdHBjaV9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowMzo0MC45NTc3MzI3NTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ4OTQxNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgYXRoMTJrX3BjaV9wcm9iZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGBhdGgxMmtfcGNpX3Byb2JlYC4gTXkgcHJpbWFyeSBjb25jZXJuIHJpZ2h0IG5vdyBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gaXMgZnVuZGFtZW50YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW5jZS4gSXMgaXQgKnJlcXVpcmVkKiB0byBoYXZlIHRoZSBwaHlzaWNhbCBQQ0kgZGV2aWNlIGNvbm5lY3RlZCB0byBldmVuIGZ1bmN0aW9uIGluIHNvbWUgY2FwYWNpdHk/IERvZXMgaXQgbmVlZCB0byBkbyBzb21lIGRldmljZSBpbml0aWFsaXphdGlvbiB0aGF0IG5lY2Vzc2l0YXRlcyB0aGUgaGFyZHdhcmU/IFVuZGVyc3RhbmRpbmcgdGhpcyBpcyBjcml0aWNhbCBmb3Igd2hhdGV2ZXIgdGVzdGluZyBvciBhbmFseXNpcyB3ZSdyZSBwbGFubmluZy4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZnVuY3Rpb24ncyBkZXBlbmRlbmNpZXMgaW4gdGhhdCByZXNwZWN0LiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiByZWxpYWJseSBlbXVsYXRlIHRoaXMgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIGluIHBsYWNlLiBJZiBpdCAqZG9lcyogcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGljaCBvbmVzLCBzbyBJIGNhbiB0cnkgdG8gc2ltdWxhdGUgdGhlbSBpbiBhIHRlc3QgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzQ4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6NDQuNTA2Njc3MTczWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MzgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTM4OlxcdHN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4xNTM5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2RldilcXG4xNTQwOlxcdHtcXG4xNTQxOlxcdFxcdGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkO1xcbjE1NDI6XFx0XFx0c3RydWN0IGF0aDEya19wY2kgKmFiX3BjaTtcXG4xNTQzOlxcdFxcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWI7XFxuMTU0NDpcXHRcXHRpbnQgcmV0O1xcbjE1NDU6XFx0XFxuMTU0NjpcXHRcXHRhYiA9IGF0aDEya19jb3JlX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqYWJfcGNpKSwgQVRIMTJLX0JVU19QQ0kpO1xcbjE1NDc6XFx0XFx0aWYgKCFhYikge1xcbjE1NDg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDEyayBiYXNlXFxcXG5cXFwiKTtcXG4xNTQ5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjE1NTA6XFx0XFx0fVxcbjE1NTE6XFx0XFxuMTU1MjpcXHRcXHRhYi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4xNTUzOlxcdFxcdGFiX3BjaSA9IGF0aDEya19wY2lfcHJpdihhYik7XFxuMTU1NDpcXHRcXHRhYl9wY2ktXFx1MDAzZWRldl9pZCA9IHBjaV9kZXYtXFx1MDAzZWRldmljZTtcXG4xNTU1OlxcdFxcdGFiX3BjaS1cXHUwMDNlYWIgPSBhYjtcXG4xNTU2OlxcdFxcdGFiX3BjaS1cXHUwMDNlcGRldiA9IHBkZXY7XFxuMTU1NzpcXHRcXHRhYi1cXHUwMDNlaGlmLm9wcyA9IFxcdTAwMjZhdGgxMmtfcGNpX2hpZl9vcHM7XFxuMTU1ODpcXHRcXHRhYi1cXHUwMDNlZndfbW9kZSA9IEFUSDEyS19GSVJNV0FSRV9NT0RFX05PUk1BTDtcXG4xNTU5OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhYik7XFxuMTU2MDpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWJfcGNpLVxcdTAwM2V3aW5kb3dfbG9jayk7XFxuMTU2MTpcXHRcXG4xNTYyOlxcdFxcdHJldCA9IGF0aDEya19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcXG4xNTYzOlxcdFxcdGlmIChyZXQpIHtcXG4xNTY0OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY2xhaW0gZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNTY1OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfY29yZTtcXG4xNTY2OlxcdFxcdH1cXG4xNTY3OlxcdFxcbjE1Njg6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwicGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXFxcblxcXCIsXFxuMTU2OTpcXHRcXHRcXHQgICBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSxcXG4xNTcwOlxcdFxcdFxcdCAgIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xcbjE1NzE6XFx0XFxuMTU3MjpcXHRcXHRhYi1cXHUwMDNlaWQudmVuZG9yID0gcGRldi1cXHUwMDNldmVuZG9yO1xcbjE1NzM6XFx0XFx0YWItXFx1MDAzZWlkLmRldmljZSA9IHBkZXYtXFx1MDAzZWRldmljZTtcXG4xNTc0OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX3ZlbmRvcjtcXG4xNTc1OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcXG4xNTc2OlxcdFxcbjE1Nzc6XFx0XFx0ZGV2aWNlX2lkID0gYXRoMTJrX2dldF9kZXZpY2VfZmFtaWx5KHBjaV9kZXYpO1xcbjE1Nzg6XFx0XFx0aWYgKGRldmljZV9pZCBcXHUwMDNlPSBBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVgpIHtcXG4xNTc5OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IGRldmljZSBmYW1pbHkgaWRcXFxcblxcXCIpO1xcbjE1ODA6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4xNTgxOlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9mcmVlX3JlZ2lvbjtcXG4xNTgyOlxcdFxcdH1cXG4xNTgzOlxcdFxcbjE1ODQ6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19QQ0ksIFxcXCJQQ0kgZGV2aWNlIGZhbWlseSBpZDogJWRcXFxcblxcXCIsIGRldmljZV9pZCk7XFxuMTU4NTpcXHRcXG4xNTg2OlxcdFxcdGFiX3BjaS1cXHUwMDNlZGV2aWNlX2ZhbWlseV9vcHMgPSBcXHUwMDI2YXRoMTJrX3BjaV9mYW1pbHlfZHJpdmVyc1tkZXZpY2VfaWRdLVxcdTAwM2VvcHM7XFxuMTU4NzpcXHRcXHRhYl9wY2ktXFx1MDAzZXJlZ19iYXNlID0gYXRoMTJrX3BjaV9mYW1pbHlfZHJpdmVyc1tkZXZpY2VfaWRdLVxcdTAwM2VyZWdfYmFzZTtcXG4xNTg4OlxcdFxcbjE1ODk6XFx0XFx0LyogQ2FsbCBkZXZpY2Ugc3BlY2lmaWMgcHJvYmUuIFRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgY2FuXFxuMTU5MDpcXHRcXHQgKiBiZSB1c2VkIHRvIG92ZXJyaWRlIGFueSBvcHMgaW4gZnV0dXJlXFxuMTU5MTpcXHRcXHQgKiBwcm9iZSBpcyB2YWxpZGF0ZWQgZm9yIE5VTEwgZHVyaW5nIHJlZ2lzdHJhdGlvbi5cXG4xNTkyOlxcdFxcdCAqL1xcbjE1OTM6XFx0XFx0cmV0ID0gYWJfcGNpLVxcdTAwM2VkZXZpY2VfZmFtaWx5X29wcy1cXHUwMDNlcHJvYmUocGRldiwgcGNpX2Rldik7XFxuMTU5NDpcXHRcXHRpZiAocmV0KSB7XFxuMTU5NTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHByb2JlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTU5NjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTU5NzpcXHRcXHR9XFxuMTU5ODpcXHRcXG4xNTk5OlxcdFxcdHJldCA9IGF0aDEya19wY2lfbXNpX2FsbG9jKGFiX3BjaSk7XFxuMTYwMDpcXHRcXHRpZiAocmV0KSB7XFxuMTYwMTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGFsbG9jIG1zaTogJWRcXFxcblxcXCIsIHJldCk7XFxuMTYwMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTYwMzpcXHRcXHR9XFxuMTYwNDpcXHRcXG4xNjA1OlxcdFxcdHJldCA9IGF0aDEya19jb3JlX3ByZV9pbml0KGFiKTtcXG4xNjA2OlxcdFxcdGlmIChyZXQpXFxuMTYwNzpcXHRcXHRcXHRnb3RvIGVycl9wY2lfbXNpX2ZyZWU7XFxuMTYwODpcXHRcXG4xNjA5OlxcdFxcdHJldCA9IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KGFiX3BjaSwgY3B1bWFza19vZigwKSk7XFxuMTYxMDpcXHRcXHRpZiAocmV0KSB7XFxuMTYxMTpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBpcnEgYWZmaW5pdHkgJWRcXFxcblxcXCIsIHJldCk7XFxuMTYxMjpcXHRcXHRcXHRnb3RvIGVycl9wY2lfbXNpX2ZyZWU7XFxuMTYxMzpcXHRcXHR9XFxuMTYxNDpcXHRcXG4xNjE1OlxcdFxcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcXG4xNjE2OlxcdFxcdGlmIChyZXQpIHtcXG4xNjE3OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgbWhpOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjE4OlxcdFxcdFxcdGdvdG8gZXJyX2lycV9hZmZpbml0eV9jbGVhbnVwO1xcbjE2MTk6XFx0XFx0fVxcbjE2MjA6XFx0XFxuMTYyMTpcXHRcXHRyZXQgPSBhdGgxMmtfaGFsX3NybmdfaW5pdChhYik7XFxuMTYyMjpcXHRcXHRpZiAocmV0KVxcbjE2MjM6XFx0XFx0XFx0Z290byBlcnJfbWhpX3VucmVnaXN0ZXI7XFxuMTYyNDpcXHRcXG4xNjI1OlxcdFxcdHJldCA9IGF0aDEya19jZV9hbGxvY19waXBlcyhhYik7XFxuMTYyNjpcXHRcXHRpZiAocmV0KSB7XFxuMTYyNzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGNlIHBpcGVzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjI4OlxcdFxcdFxcdGdvdG8gZXJyX2hhbF9zcm5nX2RlaW5pdDtcXG4xNjI5OlxcdFxcdH1cXG4xNjMwOlxcdFxcbjE2MzE6XFx0XFx0YXRoMTJrX3BjaV9pbml0X3FtaV9jZV9jb25maWcoYWIpO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHRcXHRyZXQgPSBhdGgxMmtfcGNpX2NvbmZpZ19pcnEoYWIpO1xcbjE2MzQ6XFx0XFx0aWYgKHJldCkge1xcbjE2MzU6XFx0XFx0XFx0YXRoMTJrX2VycihhYiwgXFxcImZhaWxlZCB0byBjb25maWcgaXJxOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjM2OlxcdFxcdFxcdGdvdG8gZXJyX2NlX2ZyZWU7XFxuMTYzNzpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjQ0LjUwNjg4NTEyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzYyNDI0NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogQXRoMTJrIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgaXNzdWUgaGVyZSBpcyB3aGV0aGVyIHRoaXMgcGF0Y2gsIHRvdWNoaW5nIGBhdGgxMmtgIGNvZGUsIGlzIHdvcnRoIGZ1enppbmcsIGdpdmVuIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBhdGgxMmtgIGRyaXZlciB1dGlsaXplcyB0aGUgTW9kZW0gSG9zdCBJbnRlcmZhY2UgKE1ISSkgdG8gY29tbXVuaWNhdGUgd2l0aCBpdHMgZmlybXdhcmUsIGFuZCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggKmNvdWxkKiB0aGVvcmV0aWNhbGx5IHNpbXVsYXRlIHRoZSBNSEkgc3RhdGUgbWFjaGluZSwgaXQgaXMgcmVhbGx5IGRpZmZpY3VsdCBmb3IgdGhlIGZ1enplciB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB0aGUgTUhJIHN0YXRlIG1hY2hpbmUuXG5cbkhvd2V2ZXIsIHRoZSBrZXkgaXMgdGhlIHByb21wdCdzIGV4cGxpY2l0IGV4Y2x1c2lvbiBvZiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBDYW4gYGF0aDEya2AgYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcml2ZXIuIElzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIGBhdGgxMmtgPyBOb3BlLlxuXG5UaGUgcGF0Y2ggbW9kaWZpZXMgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19kcF9odHRfbWxvX3BlZXJfbWFwX2hhbmRsZXJgLCBgYXRoMTJrX21hY19wZWVyX2Fzc29jYCwgYW5kIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAuIE5vdywgSSByZWNvZ25pemUgdGhlc2UgYXMgbWFjODAyMTEgY2FsbGJhY2tzIGFuZCBIVFQgZXZlbnQgaGFuZGxlcnMuIEJ1dCBpZiB0aGUgZGV2aWNlIGl0c2VsZiBpc24ndCBzdWNjZXNzZnVsbHkgcHJvYmVkIGFuZCBpbnN0YW50aWF0ZWQsIHRoZXNlIGNhbGxiYWNrcyAqd29uJ3QqIGV2ZW4gYmUgcmVnaXN0ZXJlZCBiZWNhdXNlIGBhdGgxMmtfbWFjX3JlZ2lzdGVyYCBoYXBwZW5zICphZnRlciogZmlybXdhcmUgbG9hZGluZyBhbmQgV01JIGluaXRpYWxpemF0aW9uLiBJdCdzIGEgZnVuZGFtZW50YWwgZGVwZW5kZW5jeS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXM6IGNhbiBgYXRoMTJrYCAqYmUqIGZ1enplZD8gV2VsbCwgc3l6a2FsbGVyIGhhcyBhIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmaW5lIGZvciB0aGUgbWFjODAyMTEgc3RhY2suIEJ1dCBpdCBkb2Vzbid0ICp0YXJnZXQqIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMgbGlrZSBgYXRoMTJrYCB1bmxlc3MgaXQgY2FuIGJlIGluc3RhbnRpYXRlZC4gU2luY2UgYGF0aDEya2AgZnVuZGFtZW50YWxseSByZXF1aXJlcyBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgQUhCIGRldmljZSwgYW5kIHRoZXJlJ3Mgbm8gc3VpdGFibGUgc29mdHdhcmUgZW11bGF0b3IgZm9yIGl0LCBpdCdzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBJdCdzIHNpbXBseSB1bnJlYWNoYWJsZS5cblxuVG8gYmUgdGhvcm91Z2gsIGxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlJ3MgKmFueSogdGVzdGluZyBtb2RlIG9yIHNpbXVsYXRpb24gZmxhZ3MgYnVpbHQgaW50byB0aGUgY29kZS4gTGV0J3MgbG9vayBmb3IgYW55dGhpbmcgd2l0aCBcInRlc3Rtb2RlXCIgb3IgXCJzaW1cIiBpbiBpdC4gSWYgdGhlcmUgaXMgbm90LCBteSBmaW5hbCBjb25jbHVzaW9uIHdpbGwgYmUgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgwMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjAzOjU4LjEzMTEzMTQ4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNDYwMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltfHNpbXxkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTU2Mz1zdGF0aWMgaW50IGF0aDEya19haGJfY29uZmlnX2V4dF9pcnEoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NTc4OlxcdFxcdGlycV9ncnAtXFx1MDAzZW5hcGlfbmRldiA9IGFsbG9jX25ldGRldl9kdW1teSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTU3OS1cXHRcXHRpZiAoIWlycV9ncnAtXFx1MDAzZW5hcGlfbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTEwMj1zdGF0aWMgaW50IGF0aDEya19jb3JlX2NvbnRpbnVlX3N1c3BlbmRfcmVzdW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xMDktXFx0Lyogc28gZmFyIHNpbmdsZV9wZGV2X29ubHkgY2hpcHMgaGF2ZSBzdXBwb3J0c19zdXNwZW5kIGFzIHRydWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxMTA6XFx0ICogc28gcGFzcyAwIGFzIGEgZHVtbXkgcGRldl9pZCBoZXJlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTExMS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTQ5Mj1zdHJ1Y3QgYXRoMTJrX2xpbmtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo0OTY6XFx0LyogbGluayBhZGRyZXNzIHNpbWlsYXIgdG8gaWVlZTgwMjExX2xpbmtfc3RhICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNDk3LVxcdHU4IGFkZHJbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTM6c3RhdGljIHNzaXplX3QgYXRoMTJrX3dyaXRlX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBmaWxlICpmaWxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIwLVxcdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjIxOlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfcmFkYXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3NpbXVsYXRlX3JhZGFyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjMyOlxcdC53cml0ZSA9IGF0aDEya193cml0ZV9zaW11bGF0ZV9yYWRhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozMzpcXHQub3BlbiA9IHNpbXBsZV9vcGVuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzozNjpzdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF9zaW11bGF0ZV9md19jcmFzaChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0zNy1cXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTQwLVxcdGNvbnN0IGNoYXIgYnVmW10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjQxOlxcdFxcdFxcXCJUbyBzaW11bGF0ZSBmaXJtd2FyZSBjcmFzaCB3cml0ZSBvbmUgb2YgdGhlIGtleXdvcmRzIHRvIHRoaXMgZmlsZTpcXFxcblxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy00Mi1cXHRcXHRcXFwiYGFzc2VydGAgLSBzZW5kIFdNSV9GT1JDRV9GV19IQU5HX0NNRElEIHRvIGZpcm13YXJlIHRvIGNhdXNlIGFzc2VydC5cXFxcblxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6NDQ6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBzdHJsZW4oYnVmKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NDc9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo0ODphdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2goc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtNDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjYzOlxcdHJjID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy02NC1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODEtXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwiYXNzZXJ0XFxcIikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4MjpcXHRcXHRhdGgxMmtfaW5mbyhhYiwgXFxcInNpbXVsYXRpbmcgZmlybXdhcmUgYXNzZXJ0IGNyYXNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04My1cXHRcXHRyZXQgPSBhdGgxMmtfd21pX2ZvcmNlX2Z3X2hhbmdfY21kKGFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjkxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNpbXVsYXRlIGZpcm13YXJlIGNyYXNoOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zaW11bGF0ZV9md19jcmFzaCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo5OTpcXHQucmVhZCA9IGF0aDEya19yZWFkX3NpbXVsYXRlX2Z3X2NyYXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEwMDpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfZndfY3Jhc2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAxOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAyLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9NzgzPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX3RwY19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo3OTA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTc5MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc190cGNfc3RhdHNfdHlwZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy04MDktXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX3RwY19zdGF0c190eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjgxMDpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTgxMS1cXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz04ODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfZXh0ZF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzo4OTc6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVidWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtODk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2V4dGRfcnhfc3RhdHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy05MDItXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2V4dGRfcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6OTAzOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtOTA0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz05OTc9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfbGlua19zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTAwNDpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTAwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMDI1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjEzOlxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xMjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMTktXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMjIwOlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTIyMS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEyMjU9dm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTEyMjYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjc6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjEyMjg6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTI2MD12b2lkIGF0aDEya19kZWJ1Z2ZzX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjY0LVxcdC8qIFdlIGFyZSBub3QgcmVtb3ZpbmcgYXRoMTJrIGRpcmVjdG9yeSBvbiBwdXJwb3NlLCBldmVuIGlmIGl0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTI2NTpcXHQgKiB3b3VsZCBiZSBlbXB0eS4gVGhpcyBzaW1wbGlmaWVzIHRoZSBkaXJlY3RvcnkgaGFuZGxpbmcgYW5kIGl0J3NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMjY2LVxcdCAqIGEgbWlub3IgY29zbWV0aWMgaXNzdWUgdG8gbGVhdmUgYW4gZW1wdHkgYXRoMTJrIGRpcmVjdG9yeSB0b1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM9MTMxNz1zdGF0aWMgc3NpemVfdCBhdGgxMmtfcmVhZF92ZGV2X3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTMyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzI0OlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzI1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTEzODQ9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfYmNuX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTM5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxMzkxOlxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xMzkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE0NDU9c3RhdGljIHNzaXplX3QgYXRoMTJrX3JlYWRfcGRldl9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ1MjpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ1My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYz0xNDYzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ2NDphdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ2NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4NC1cXHR3aXBoeV9sb2NrKHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDg1OlxcdHJldCA9IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UoYXIsIGNoYW5fYndfaW50ZXJmZXJlbmNlX2JpdG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ4Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNDk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5NzpcXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmM6MTQ5ODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE0OTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jPTE1MjA9dm9pZCBhdGgxMmtfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jLTE1NTQtXFx0aWYgKGFyLVxcdTAwM2VtYWMuc2JhbmRzW05MODAyMTFfQkFORF81R0haXS5jaGFubmVscykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jOjE1NTU6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGZzX3NpbXVsYXRlX3JhZGFyXFxcIiwgMDIwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTU2LVxcdFxcdFxcdFxcdCAgICBhci1cXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTU3OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zaW11bGF0ZV9yYWRhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU1OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTY4LVxcdFxcdCAgICAgYXItXFx1MDAzZWFiLVxcdTAwM2V3bWlfYWIuc3ZjX21hcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTY5OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlXFxcIiwgMDIwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYy0xNTcwLVxcdFxcdFxcdFxcdCAgICBhci1cXHUwMDNlZGVidWcuZGVidWdmc19wZGV2LCBhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYzoxNTcxOlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zaW11bGF0ZV9pbmN1bWJlbnRfc2lnbmFsX2ludGVyZmVyZW5jZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMtMTU3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM9ODg0PWF0aDEya19odHRfcHJpbnRfaHdfc3RhdHNfd2hhbF90eF90bHYoY29uc3Qgdm9pZCAqdGFnX2J1ZiwgdTE2IHRhZ19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA0LVxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2Vod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImh3c2NoX2R1bW15X3Rsdl9za2lwcGVkID0gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjkwNjpcXHRcXHRcXHQgbGUzMl90b19jcHUoaHR0X3N0YXRzX2J1Zi1cXHUwMDNlaHdzY2hfZHVtbXlfdGx2X3NraXBwZWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtOTA3LVxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTE1MzU9YXRoMTJrX2h0dF9wcmludF90eF9kZV9jb21wbF9zdGF0c190bHYoY29uc3Qgdm9pZCAqdGFnX2J1ZiwgdTE2IHRhZ19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU0Ni1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcIkhUVF9UWF9ERV9DT01QTF9TVEFUU19UTFY6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0NzpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRjbF9kdW1teV9mcmFtZSA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTQ4OlxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2V0Y2xfZHVtbXlfZnJhbWUpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6MTU0OTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRxbV9kdW1teV9mcmFtZSA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYzoxNTUwOlxcdFxcdFxcdCBsZTMyX3RvX2NwdShodHRfc3RhdHNfYnVmLVxcdTAwM2V0cW1fZHVtbXlfZnJhbWUpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtMTU1MS1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInRxbV9ub3RpZnlfZnJhbWUgPSAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MTY1PXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0c190eXBlKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYxNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYxODA6XFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MTgxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MjI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfaHR0X3N0YXRzX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyNy1cXHQud3JpdGUgPSBhdGgxMmtfd3JpdGVfaHR0X3N0YXRzX3R5cGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYyMjg6XFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjIyOS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYz02MzUxPXN0YXRpYyBzc2l6ZV90IGF0aDEya19yZWFkX2h0dF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02MzYwLVxcdGxlbmd0aCA9IG1pbl90KHUzMiwgc3RhdHNfcmVxLVxcdTAwM2VidWZfbGVuLCBBVEgxMktfSFRUX1NUQVRTX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjM2MTpcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYzNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTY0MjY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19odHRfc3RhdHNfcmVzZXQgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTY0MjctXFx0LndyaXRlID0gYXRoMTJrX3dyaXRlX2h0dF9zdGF0c19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NjQyODpcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuYy02NDI5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTc1ND1zdHJ1Y3QgYXRoMTJrX2h0dF9od19zdGF0c193aGFsX3R4X3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtNzU3LVxcdF9fbGUzMiBod3NjaF91bnBhdXNlX3dhaXRfdHFtX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDo3NTg6XFx0X19sZTMyIGh3c2NoX2R1bW15X3Rsdl9za2lwcGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC03NTktXFx0X19sZTMyIGh3c2NoX21pc2FsaWduZWRfb2Zmc2V0X3JlY2VpdmVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTk3OD1zdHJ1Y3QgYXRoMTJrX2h0dF90eF9kZV9jb21wbF9zdGF0c190bHYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDo5Nzk6XFx0X19sZTMyIHRjbF9kdW1teV9mcmFtZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6OTgwOlxcdF9fbGUzMiB0cW1fZHVtbXlfZnJhbWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTk4MS1cXHRfX2xlMzIgdHFtX25vdGlmeV9mcmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0xMzk9c3RhdGljIHNzaXplX3QgYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDEtXFx0aWYgKGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQyOlxcdFxcdHJldCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYy0yNDMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yNDY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yeF9zdGF0cyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjQ3LVxcdC5yZWFkID0gYXRoMTJrX2RiZ19zdGFfZHVtcF9yeF9zdGF0cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmM6MjQ4OlxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5jLTI0OS1cXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYz0yOTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZXNldF9yeF9zdGF0cyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk3LVxcdC53cml0ZSA9IGF0aDEya19kYmdfc3RhX3Jlc2V0X3J4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuYzoyOTg6XFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmMtMjk5LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9wZWVyLmM9NTM2PWludCBhdGgxMmtfZHBfbGlua19wZWVyX2Fzc2lnbihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgc3RydWN0IGF0aDEya19kcF9odyAqZHBfaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy01OTktXFx0XFx0ICogSWYgb2xkIGVudHJ5IGFkZGl0aW9uIGFsc28gZmFpbHMsIHRoZW4gbm90aGluZ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcGVlci5jOjYwMDpcXHRcXHQgKiBjYW4gYmUgZG9uZSwgc2ltcGx5IHByb2NlZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3BlZXIuYy02MDEtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jPTU1OD1pbnQgYXRoMTJrX2h0Y19jb25uZWN0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19odGMgKmh0YyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmMtNTYzLVxcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjICpyZXFfbXNnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHRjLmM6NTY0OlxcdHN0cnVjdCBhdGgxMmtfaHRjX2Nvbm5fc3ZjX3Jlc3AgcmVzcF9tc2dfZHVtbXk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo1NjU6XFx0c3RydWN0IGF0aDEya19odGNfY29ubl9zdmNfcmVzcCAqcmVzcF9tc2cgPSBcXHUwMDI2cmVzcF9tc2dfZHVtbXk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy01NjYtXFx0ZW51bSBhdGgxMmtfaHRjX2VwX2lkIGFzc2lnbmVkX2VpZCA9IEFUSDEyS19IVENfRVBfQ09VTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h0Yy5jLTU4MC1cXHRcXHRtYXhfbXNnX3NpemUgPSBBVEgxMktfSFRDX01BWF9DVFJMX01TR19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYzo1ODE6XFx0XFx0bWVtc2V0KFxcdTAwMjZyZXNwX21zZ19kdW1teSwgMCwgc2l6ZW9mKHJlc3BfbXNnX2R1bW15KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9odGMuYy01ODItXFx0XFx0Z290byBzZXR1cDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MjM4MD1zdGF0aWMgdm9pZCBhdGgxMmtfcGVlcl9hc3NvY19oX3ZodChzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMjQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjI0MjI6XFx0LyogVE9ETzogc2ltaWxhciBmbGFncyByZXF1aXJlZD8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTI0MjMtXFx0YXJnLVxcdTAwM2V2aHRfY2FwYWJsZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTEyNjI1PWludCBhdGgxMmtfbWFjX29wX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTI2MzMtXFx0ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjEyNjM0OlxcdCAqIEhlbmNlIGltcGxlbWVudCBhIGR1bW15IGNhbGxiYWNrIGp1c3QgdG8gc2F5IGZyYWdtZW50YXRpb24gaXNuJ3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTEyNjM1LVxcdCAqIHN1cHBvcnRlZC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBtYWM4MDIxMSBmcm9tIGRvaW5nIGZyYW1lXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTUzOT1zdGF0aWMgaW50IGF0aDEya19wY2lfZXh0X2lycV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY1LVxcdFxcdGlycV9ncnAtXFx1MDAzZWdycF9pZCA9IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzo1NjY6XFx0XFx0aXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtNTY3LVxcdFxcdGlmICghaXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1Mzg9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTYzOTpcXHQvKiBrZXJuZWwgbWF5IGFsbG9jYXRlIGEgZHVtbXkgdmVjdG9yIGJlZm9yZSByZXF1ZXN0X2lycSBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2NDAtXFx0ICogdGhlbiBhbGxvY2F0ZSBhIHJlYWwgdmVjdG9yIHdoZW4gcmVxdWVzdF9pcnEgaXMgY2FsbGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYz0yNjk9aW50IGF0aDEya19yZWdkX3VwZGF0ZShzdHJ1Y3QgYXRoMTJrICphciwgYm9vbCBpbml0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYy0zMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9yZWcuYzozMzg6XFx0LyogZmlybXdhcmUgcHJvdmlkZXMgcmVnIHJ1bGVzIHdoaWNoIGFyZSBzaW1pbGFyIGZvciAyIEdIeiBhbmQgNSBHSHpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3JlZy5jLTMzOS1cXHQgKiBwZGV2IGJ1dCA2IEdIeiBwZGV2IGhhcyBzdXBlcnNldCBvZiBhbGwgcnVsZXMgaW5jbHVkaW5nIHJ1bGVzIGZvclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz0xMDQ4Mz1hdGgxMmtfd21pX3NlbmRfdW5pdF90ZXN0X2NtZChzdHJ1Y3QgYXRoMTJrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDUzNjppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA1NTUtXFx0ICogQ3VycmVudGx5IHdlIGNvdWxkIHBhc3Mgc2VnbWVudF9pZChiMCAtIGIxKSwgY2hpcnAoYjIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDU1NjpcXHQgKiBmcmVxIG9mZnNldCAoYjMgLSBiMTApIHRvIHVuaXQgdGVzdC4gRm9yIHNpbXVsYXRpb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNTU3LVxcdCAqIHB1cnBvc2UgdGhpcyBjYW4gYmUgc2V0IHRvIDAgd2hpY2ggaXMgdmFsaWQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTEwNTcxPWludCBhdGgxMmtfd21pX3NlbmRfdHBjX3N0YXRzX3JlcXVlc3Qoc3RydWN0IGF0aDEyayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTEwNjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6MTA2Mzk6aW50IGF0aDEya193bWlfc2ltdWxhdGVfaW5jdW1iZW50X3NpZ25hbF9pbnRlcmZlcmVuY2Uoc3RydWN0IGF0aDEyayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY0MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0xMDY2OC1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19XTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoxMDY2OTpcXHRcXHQgICBcXFwiVHJpZ2dlcmluZyBpbmN1bWJlbnQgc2lnbmFsIGludGVyZmVyZW5jZSBzaW11bGF0aW9uLCBpbnRlcmZlcmVuY2UgYml0bWFwOiAweCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMTA2NzAtXFx0XFx0ICAgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9MzY5Nz1lbnVtIHdtaV9zdGFfcHNfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM3MDktLyogdHlwZSwgMDp1bnVzZWQgMTogQVNTRVJUIDI6IG5vdCByZXNwb25kIGRldGVjdCBjb21tYW5kXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozNzEwOiAqIGRlbGF5X3RpbWVfbXMsIHRoZSBzaW11bGF0ZSB3aWxsIGRlbGF5IHRpbWVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTM3MTEtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTY2MDc9aW50IGF0aDEya193bWlfc2VuZF9wZGV2X3NldF9yZWdkb21haW4oc3RydWN0IGF0aDEyayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NjA4LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X3NldF9yZWdkb21haW5fYXJnICphcmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6NjYwOTppbnQgYXRoMTJrX3dtaV9zaW11bGF0ZV9yYWRhcihzdHJ1Y3QgYXRoMTJrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NjEwLWludCBhdGgxMmtfd21pX3NlbmRfdHd0X2VuYWJsZV9jbWQoc3RydWN0IGF0aDEyayAqYXIsIHUzMiBwZGV2X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg9NjcyMD1pbnQgYXRoMTJrX3dtaV9zZW5kX21sb19saW5rX3NldF9hY3RpdmVfY21kKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC02NzIxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgd21pX21sb19saW5rX3NldF9hY3RpdmVfYXJnICpwYXJhbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDo2NzIyOmludCBhdGgxMmtfd21pX3NpbXVsYXRlX2luY3VtYmVudF9zaWduYWxfaW50ZXJmZXJlbmNlKHN0cnVjdCBhdGgxMmsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtNjcyMy1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgY2hhbl9id19pbnRlcmZlcmVuY2VfYml0bWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDM6NTguNTc0NTk3NzU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NTAyODUyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBhdGgxMmsgUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgYGF0aDEya2AuIFdhaXQgYSBtaW51dGUsIHRoaXMgcGF0Y2ggY2FtZSBmcm9tIGBzeXotY2x1c3RlcmAsIHdoaWNoIG1lYW5zIHN5emthbGxlciBmb3VuZCAqc29tZXRoaW5nKiEgRWl0aGVyIGEgYnVnIG9yIGEgdGVzdC4gIEkga25vdyBzeXprYWxsZXIgKmNhbiogZnV6eiBgYXRoMTJrYCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBgQ09ORklHX1BDSWAgYW5kIGBDT05GSUdfQVRIMTJLYCwgdXNpbmcgYHN5el9wY2lkZXZgIG9yIGBzeXpfdXNiZGV2YC4gQnV0IGhvbGQgb24sIGBhdGgxMmtgIHVzZXMgTUhJLi4uZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBNSEkgZW11bGF0b3I/IE5vLCBpdCBkb2Vzbid0LiBIb3dldmVyLCBpdCAqY291bGQqIGluamVjdCBtYWM4MDIxMSBmcmFtZXMgb3IgaW50ZXJhY3Qgd2l0aCBtYWM4MDIxMSB2aWEgYG1hYzgwMjExX2h3c2ltYC4gXG5cbkJ1dCBpZiBgYXRoMTJrYCBpcyB1bnJlYWNoYWJsZSwgd2h5IGRpZCBzeXprYWxsZXIgZXZlbiBhcHBseSB0aGlzIHBhdGNoPyBBaCwgcmlnaHQuIE15IGpvYiBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IG5lZWQgZnV6emluZywgc3BlY2lmaWNhbGx5IGlmIGl0IGNhbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gIFRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBpZiBpdCdzIGltcG9zc2libGUgdG8gcmVhY2gsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHJlYWNoYWJpbGl0eS4gSXMgdGhlcmUgYW55IHZpcnR1YWwgYGF0aDEya2AgaGFyZHdhcmUgaW4gUUVNVT8gTm9wZS4gQ2FuIEkgZ2V0IHRvIGl0IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQncyBhIHNlcGFyYXRlIGRyaXZlci4gIE9rYXksIHdoYXQgYWJvdXQgYHN5el9wY2lkZXZgP1xuXG5TeXprYWxsZXIncyBgc3l6X3BjaWRldmAgKmNvdWxkKiB0cmlnZ2VyIGBhdGgxMmtfcGNpX3Byb2JlYC4gIEJ1dCwgYGF0aDEya19wY2lfcHJvYmVgIGNhbGxzIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCwgd2hpY2ggd2FpdHMgZm9yIHRoZSBNSEkgZGV2aWNlIHRvIGJvb3QuIFdpdGhvdXQgYSByZWFsIE1ISSBkZXZpY2Ugb3IgYW4gZW11bGF0b3IuLi4gaXQnbGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd29uJ3QgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMS4gIFNvIGV2ZW4gd2l0aCB0aGUgUENJIHByb2JlLCBpdCdzIG5vdCBnb2luZyB0byBnZXQgcGFzdCB0aGF0IE1ISSByZWdpc3RyYXRpb24gc3RlcC4gSSBzaG91bGQgY2hlY2sgYGF0aDEya19taGlfcmVnaXN0ZXJgIHRvIGNvbmZpcm0gdGhpcyBiZWhhdmlvci4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgdmlydHVhbGl6YXRpb24gbGltaXRhdGlvbnMsIGFuZCB0aGUgZmFjdCB0aGF0IHRoZSBNSEkgZGV2aWNlIGlzIHRoZSBjcml0aWNhbCBibG9ja2VyIHRvIHRoZSBjb2RlIHBhdGgsIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB0aGlzIHBhdGNoIHNlcmllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MjAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MDcuMjI0ODg2MzA1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTcyNDg3MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21oaV9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTE4MD1zdGF0aWMgdm9pZCBhdGgxMmtfbWhpX29wX3dyaXRlX3JlZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MTg3OmludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy0xODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaD0zNT12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmg6MzY6aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFyX3BjaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuaC0zNy12b2lkIGF0aDEya19taGlfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTJrX3BjaSAqYXJfcGNpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUzOD1zdGF0aWMgaW50IGF0aDEya19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNjE1OlxcdHJldCA9IGF0aDEya19taGlfcmVnaXN0ZXIoYWJfcGNpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2MTYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDowNy40ODIxNDAxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU5OTI4MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBhdGgxMmtfbWhpX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgYXRoMTJrIGRyaXZlciBhbmQgdGhlIE1ISSBpbnRlcmZhY2UuIElzIGl0IHJlZ2lzdGVyaW5nIHNvbWV0aGluZywgbGlrZWx5IGEgZGV2aWNlIG9yIHJlc291cmNlLCB3aXRoIHRoZSBNSEkgc3Vic3lzdGVtPyBQZXJoYXBzIGl0J3MgaW5pdGlhbGl6aW5nIE1ISS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9yIHNldHRpbmcgdXAgY29tbXVuaWNhdGlvbiBjaGFubmVscy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdy4gSSdtIGFzc3VtaW5nIGl0J3MgcmVsYXRlZCB0byB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGhvc3QgZHJpdmVyIChhdGgxMmspIGFuZCB0aGUgTUhJIGZpcm13YXJlIG9uIHRoZSBRdWFsY29tbSBjaGlwLiBLbm93aW5nIHRoZSBmbG93IGZyb20gcmVnaXN0ZXIgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgd2lsbCBiZSBpbXBvcnRhbnQuIEkgbmVlZCB0byBrbm93IGhvdyB0aGlzIGltcGFjdHMgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0NTAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxMi4xNDIxMjU1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODcsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTg3OlxcdGludCBhdGgxMmtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2kpXFxuIDE4ODpcXHR7XFxuIDE4OTpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gYWJfcGNpLVxcdTAwM2VhYjtcXG4gMTkwOlxcdFxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2N0cmw7XFxuIDE5MTpcXHRcXHR1bnNpZ25lZCBpbnQgYm9hcmRfaWQ7XFxuIDE5MjpcXHRcXHRpbnQgcmV0O1xcbiAxOTM6XFx0XFx0Ym9vbCBkdWFsbWFjID0gZmFsc2U7XFxuIDE5NDpcXHRcXG4gMTk1OlxcdFxcdG1oaV9jdHJsID0gbWhpX2FsbG9jX2NvbnRyb2xsZXIoKTtcXG4gMTk2OlxcdFxcdGlmICghbWhpX2N0cmwpXFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTk4OlxcdFxcbiAxOTk6XFx0XFx0YWJfcGNpLVxcdTAwM2VtaGlfcHJlX2NiID0gTUhJX0NCX0lOVkFMSUQ7XFxuIDIwMDpcXHRcXHRhYl9wY2ktXFx1MDAzZW1oaV9jdHJsID0gbWhpX2N0cmw7XFxuIDIwMTpcXHRcXHRtaGlfY3RybC1cXHUwMDNlY250cmxfZGV2ID0gYWItXFx1MDAzZWRldjtcXG4gMjAyOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VyZWdzID0gYWItXFx1MDAzZW1lbTtcXG4gMjAzOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VyZWdfbGVuID0gYWItXFx1MDAzZW1lbV9sZW47XFxuIDIwNDpcXHRcXHRtaGlfY3RybC1cXHUwMDNlcmRkbV9zaXplID0gYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlcmRkbV9zaXplO1xcbiAyMDU6XFx0XFxuIDIwNjpcXHRcXHRpZiAoYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKSB7XFxuIDIwNzpcXHRcXHRcXHRib2FyZF9pZCA9XFxuIDIwODpcXHRcXHRcXHRcXHRhdGgxMmtfcGNpX3JlYWQzMihhYiwgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlb3RwX2JvYXJkX2lkX3JlZ2lzdGVyKTtcXG4gMjA5OlxcdFxcdFxcdGJvYXJkX2lkID0gdTMyX2dldF9iaXRzKGJvYXJkX2lkLCBPVFBfQk9BUkRfSURfTUFTSyk7XFxuIDIxMDpcXHRcXG4gMjExOlxcdFxcdFxcdGlmICghYm9hcmRfaWQgfHwgKGJvYXJkX2lkID09IE9UUF9JTlZBTElEX0JPQVJEX0lEKSkge1xcbiAyMTI6XFx0XFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULFxcbiAyMTM6XFx0XFx0XFx0XFx0XFx0ICAgXFxcImZhaWxlZCB0byByZWFkIGJvYXJkIGlkXFxcXG5cXFwiKTtcXG4gMjE0OlxcdFxcdFxcdH0gZWxzZSBpZiAoYm9hcmRfaWQgXFx1MDAyNiBPVFBfVkFMSURfRFVBTE1BQ19CT0FSRF9JRF9NQVNLKSB7XFxuIDIxNTpcXHRcXHRcXHRcXHRkdWFsbWFjID0gdHJ1ZTtcXG4gMjE2OlxcdFxcdFxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG4gMjE3OlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJkdWFsbWFjIGZ3IHNlbGVjdGVkIGZvciBib2FyZCBpZDogJXhcXFxcblxcXCIsIGJvYXJkX2lkKTtcXG4gMjE4OlxcdFxcdFxcdH1cXG4gMjE5OlxcdFxcdH1cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0aWYgKGR1YWxtYWMpIHtcXG4gMjIyOlxcdFxcdFxcdGlmIChhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGEgXFx1MDAyNlxcdTAwMjYgYWItXFx1MDAzZWZ3LmFtc3NfZHVhbG1hY19sZW4gXFx1MDAzZSAwKSB7XFxuIDIyMzpcXHRcXHRcXHRcXHQvKiB1c2UgTUhJIGZpcm13YXJlIGZpbGUgZnJvbSBmaXJtd2FyZS1OLmJpbiAqL1xcbiAyMjQ6XFx0XFx0XFx0XFx0bWhpX2N0cmwtXFx1MDAzZWZ3X2RhdGEgPSBhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2RhdGE7XFxuIDIyNTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfc3ogPSBhYi1cXHUwMDNlZncuYW1zc19kdWFsbWFjX2xlbjtcXG4gMjI2OlxcdFxcdFxcdH0gZWxzZSB7XFxuIDIyNzpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImR1YWxtYWMgZmlybXdhcmUgSUUgbm90IHByZXNlbnQgaW4gZmlybXdhcmUtTi5iaW5cXFxcblxcXCIpO1xcbiAyMjg6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT0VOVDtcXG4gMjI5OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9jb250cm9sbGVyO1xcbiAyMzA6XFx0XFx0XFx0fVxcbiAyMzE6XFx0XFx0fSBlbHNlIHtcXG4gMjMyOlxcdFxcdFxcdGlmIChhYi1cXHUwMDNlZncuYW1zc19kYXRhIFxcdTAwMjZcXHUwMDI2IGFiLVxcdTAwM2Vmdy5hbXNzX2xlbiBcXHUwMDNlIDApIHtcXG4gMjMzOlxcdFxcdFxcdFxcdC8qIHVzZSBNSEkgZmlybXdhcmUgZmlsZSBmcm9tIGZpcm13YXJlLU4uYmluICovXFxuIDIzNDpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfZGF0YSA9IGFiLVxcdTAwM2Vmdy5hbXNzX2RhdGE7XFxuIDIzNTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfc3ogPSBhYi1cXHUwMDNlZncuYW1zc19sZW47XFxuIDIzNjpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyMzc6XFx0XFx0XFx0XFx0LyogdXNlIHRoZSBvbGQgc2VwYXJhdGUgbWhpLmJpbiBNSEkgZmlybXdhcmUgZmlsZSAqL1xcbiAyMzg6XFx0XFx0XFx0XFx0YXRoMTJrX2NvcmVfY3JlYXRlX2Zpcm13YXJlX3BhdGgoYWIsIEFUSDEyS19BTVNTX0ZJTEUsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgYWJfcGNpLVxcdTAwM2VhbXNzX3BhdGgsXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKGFiX3BjaS1cXHUwMDNlYW1zc19wYXRoKSk7XFxuIDI0MTpcXHRcXHRcXHRcXHRtaGlfY3RybC1cXHUwMDNlZndfaW1hZ2UgPSBhYl9wY2ktXFx1MDAzZWFtc3NfcGF0aDtcXG4gMjQyOlxcdFxcdFxcdH1cXG4gMjQzOlxcdFxcdH1cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0cmV0ID0gYXRoMTJrX21oaV9nZXRfbXNpKGFiX3BjaSk7XFxuIDI0NjpcXHRcXHRpZiAocmV0KSB7XFxuIDI0NzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBtc2kgZm9yIG1oaVxcXFxuXFxcIik7XFxuIDI0ODpcXHRcXHRcXHRnb3RvIGZyZWVfY29udHJvbGxlcjtcXG4gMjQ5OlxcdFxcdH1cXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0aWYgKCF0ZXN0X2JpdChBVEgxMktfUENJX0ZMQUdfTVVMVElfTVNJX1ZFQ1RPUlMsIFxcdTAwMjZhYl9wY2ktXFx1MDAzZWZsYWdzKSlcXG4gMjUyOlxcdFxcdFxcdG1oaV9jdHJsLVxcdTAwM2VpcnFfZmxhZ3MgPSBJUlFGX1NIQVJFRCB8IElSUUZfTk9CQUxBTkNJTkc7XFxuIDI1MzpcXHRcXG4gMjU0OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2Vpb3ZhX3N0YXJ0ID0gMDtcXG4gMjU1OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2Vpb3ZhX3N0b3AgPSBhYl9wY2ktXFx1MDAzZWRtYV9tYXNrO1xcbiAyNTY6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXNibF9zaXplID0gU1pfNTEySztcXG4gMjU3OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VzZWdfbGVuID0gU1pfNTEySztcXG4gMjU4OlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VmYmNfZG93bmxvYWQgPSB0cnVlO1xcbiAyNTk6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXJ1bnRpbWVfZ2V0ID0gYXRoMTJrX21oaV9vcF9ydW50aW1lX2dldDtcXG4gMjYwOlxcdFxcdG1oaV9jdHJsLVxcdTAwM2VydW50aW1lX3B1dCA9IGF0aDEya19taGlfb3BfcnVudGltZV9wdXQ7XFxuIDI2MTpcXHRcXHRtaGlfY3RybC1cXHUwMDNlc3RhdHVzX2NiID0gYXRoMTJrX21oaV9vcF9zdGF0dXNfY2I7XFxuIDI2MjpcXHRcXHRtaGlfY3RybC1cXHUwMDNlcmVhZF9yZWcgPSBhdGgxMmtfbWhpX29wX3JlYWRfcmVnO1xcbiAyNjM6XFx0XFx0bWhpX2N0cmwtXFx1MDAzZXdyaXRlX3JlZyA9IGF0aDEya19taGlfb3Bfd3JpdGVfcmVnO1xcbiAyNjQ6XFx0XFxuIDI2NTpcXHRcXHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWhpX2NvbmZpZyk7XFxuIDI2NjpcXHRcXHRpZiAocmV0KSB7XFxuIDI2NzpcXHRcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHRvIG1oaSBidXMsIGVyciA9ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAyNjg6XFx0XFx0XFx0Z290byBmcmVlX2NvbnRyb2xsZXI7XFxuIDI2OTpcXHRcXHR9XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdHJldHVybiAwO1xcbiAyNzI6XFx0XFxuIDI3MzpcXHRmcmVlX2NvbnRyb2xsZXI6XFxuIDI3NDpcXHRcXHRtaGlfZnJlZV9jb250cm9sbGVyKG1oaV9jdHJsKTtcXG4gMjc1OlxcdFxcdGFiX3BjaS1cXHUwMDNlbWhpX2N0cmwgPSBOVUxMO1xcbiAyNzY6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjc3OlxcdH1cXG4gMjc4OlxcdFxcbiAyNzk6XFx0dm9pZCBhdGgxMmtfbWhpX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG4gMjgwOlxcdHtcXG4gMjgxOlxcdFxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2N0cmwgPSBhYl9wY2ktXFx1MDAzZW1oaV9jdHJsO1xcbiAyODI6XFx0XFxuIDI4MzpcXHRcXHRtaGlfdW5yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsKTtcXG4gMjg0OlxcdFxcdGtmcmVlKG1oaV9jdHJsLVxcdTAwM2VpcnEpO1xcbiAyODU6XFx0XFx0bWhpX2ZyZWVfY29udHJvbGxlcihtaGlfY3RybCk7XFxuIDI4NjpcXHRcXHRhYl9wY2ktXFx1MDAzZW1oaV9jdHJsID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTIuMTQyMzk3MzI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODYyMzY1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNvbnRyb2xsZXIgSW5pdGlhbGl6YXRpb24gQ29udW5kcnVtKipcblxuUmlnaHQsIHNvIGBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcmAgcmVnaXN0ZXJzIHRoZSBjb250cm9sbGVyLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIG9uIHRoZSBzdXJmYWNlLiBCdXQgaG9sZCBvbiwgdGhlIHJlZ2lzdHJhdGlvbiBpcyBqdXN0IHRoZSBmaXJzdCBzdGVwLiBEb2VzIHRoaXMgcmVnaXN0cmF0aW9uIGFjdHVhbGx5ICpraWNrIG9mZiogdGhlIGZpcm13YXJlIGRvd25sb2FkPyBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGlzbid0IGl0P1xuXG5HZW5lcmFsbHksIEknZCBleHBlY3QgdGhhdCB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHRyaWdnZXJlZCBieSBlaXRoZXIgYG1oaV9wcmVwYXJlX2Zvcl9wb3dlcl91cGAgb3IgYG1oaV9zeW5jX3Bvd2VyX3VwYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFRoZXNlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgaW4gbWFuYWdpbmcgdGhlIHBvd2VyLXVwIGFuZCBkb3dubG9hZCBwcm9jZXNzLiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBhY3R1YWxseSAqY2FsbGVkKiBpbiB0aGUgY29kZS4gVHJhY2luZyB0aGF0IGNhbGwgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgcG93ZXItdXAgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBoYW5kbGVkIGluIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvbmZpcm0gd2hldGhlciB0aGUgZG93bmxvYWQgaXMga2lja2VkIG9mZiBleHBsaWNpdGx5LCBvciBpbXBsaWNpdGx5LiBUaGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTg3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxNi4xMjg2Mzc2MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MjgzMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9zeW5jX3Bvd2VyX3VwfG1oaV9hc3luY19wb3dlcl91cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQwNj1zdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcXHRcXHRyZXQgPSBtaGlfc3luY19wb3dlcl91cChhYl9wY2ktXFx1MDAzZW1oaV9jdHJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTYuMzM1OTI3MDg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjc5OTEzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXJzIG9mIGBhdGgxMmtfbWhpX3NldF9zdGF0ZWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYGF0aDEya19taGlfc2V0X3N0YXRlYC4gTXkgaW5pdGlhbCBtb3ZlIGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIHRoaXMgb25lLiBUaGlzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGhvdyBpdOKAmXMgdXNlZCB3aXRoaW4gdGhlIGBhdGgxMmtgIE1ISSAoTXVsdGktSG9zdCBJbnRlcmZhY2UpIGRyaXZlciBjb250ZXh0LiBJIHN1c3BlY3QgdGhpcyBmdW5jdGlvbiBsaWtlbHkgbWFuYWdlcyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMgb2Ygc29tZSBwYXJ0IG9mIHRoZSBNSEkgc3Vic3lzdGVtIOKAkyBwZXJoYXBzIHBvd2VyIG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBvciBlcnJvciByZWNvdmVyeS4gVW5jb3ZlcmluZyB0aGUgY2FsbCBncmFwaCBpcyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGNvbmZpcm1pbmcgdGhhdCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlcnMuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MDk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MTkuNjYzOTIyMTM2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAwMzA1NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX21oaV9zZXRfc3RhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0yODk9c3RhdGljIGNoYXIgKmF0aDEya19taGlfc3RhdGVfdG9fc3RyKGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjMxNzpzdGF0aWMgdm9pZCBhdGgxMmtfbWhpX3NldF9zdGF0ZV9iaXQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTMxOC1cXHRcXHRcXHRcXHQgICAgIGVudW0gYXRoMTJrX21oaV9zdGF0ZSBtaGlfc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTM1Nj1zdGF0aWMgaW50IGF0aDEya19taGlfY2hlY2tfc3RhdGVfYml0KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQwNjpzdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MDctXFx0XFx0XFx0XFx0ZW51bSBhdGgxMmtfbWhpX3N0YXRlIG1oaV9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6NDcyOlxcdGF0aDEya19taGlfc2V0X3N0YXRlX2JpdChhYl9wY2ksIG1oaV9zdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQ4Mj1pbnQgYXRoMTJrX21oaV9zdGFydChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo0ODg6XFx0cmV0ID0gYXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX0lOSVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDg5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQ5MjpcXHRyZXQgPSBhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT04pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNDkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTUwMj12b2lkIGF0aDEya19taGlfc3RvcChzdHJ1Y3QgYXRoMTJrX3BjaSAqYWJfcGNpLCBib29sIGlzX3N1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUwOC1cXHRpZiAoaXNfc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjUwOTpcXHRcXHRhdGgxMmtfbWhpX3NldF9zdGF0ZShhYl9wY2ksIEFUSDEyS19NSElfUE9XRVJfT0ZGX0tFRVBfREVWKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxMC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTE6XFx0XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1BPV0VSX09GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTM6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX0RFSU5JVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz01MTY9dm9pZCBhdGgxMmtfbWhpX3N1c3BlbmQoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUxNy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MTg6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1NVU1BFTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtNTE5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM9NTIxPXZvaWQgYXRoMTJrX21oaV9yZXN1bWUoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTUyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYzo1MjM6XFx0YXRoMTJrX21oaV9zZXRfc3RhdGUoYWJfcGNpLCBBVEgxMktfTUhJX1JFU1VNRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy01MjQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoxOS45MjM5NTg1MDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NDcxMTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIHRoZSBhdGgxMmsgRHJpdmVyIFBvd2VyLVVwIFNlcXVlbmNlKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGVyZSwgc3BlY2lmaWNhbGx5IGl0cyBwb3dlciBtYW5hZ2VtZW50IGFzcGVjdHMuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGBhdGgxMmtfbWhpX3N0YXJ0YCBmdW5jdGlvbiBpcyAqY3J1Y2lhbCogaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBhbmQgSSdtIG5vdGluZyBpdHMgY2FsbCBzdGFjay4gSXQncyBpbnZva2VkIGRpcmVjdGx5IGZyb20gYGF0aDEya19wY2lfcG93ZXJfdXBgLiBOb3csIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGlzIGludGltYXRlbHkgbGlua2VkIHRvIHRoZSBQQ0kgYnVzIGFuZCB0aGUgZGV2aWNlJ3MgcG93ZXIgc3RhdGUuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgYGF0aDEya19taGlfc3RhcnRgIG11c3QgYmUgZXN0YWJsaXNoaW5nIHRoZSBmdW5kYW1lbnRhbCBNSEkgKE11bHRpLUZ1bmN0aW9uIEhhcmR3YXJlIEludGVyZmFjZSkgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdpdGggdGhlIFF1YWxjb21tIGRldmljZS5cblxuVGhlcmVmb3JlLCB0aGlzIGNvbmZpcm1zIHRoYXQgdGhlIFBDSSBwb3dlci11cCBmbG93IGlzIGRpcmVjdGx5IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIGxpbmsgdG8gdGhlIFF1YWxjb21tIGNoaXBzZXQsIGFuZCBgYXRoMTJrX21oaV9zdGFydGAgaXMgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB0aGUgbG93LWxldmVsIGNvbW11bmljYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJJ2Qgc3VzcGVjdCB0aGF0IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGluZ3MgbGlrZSB0aGUgTUhJIGVuZHBvaW50IGRpc2NvdmVyeSwgY2xvY2sgY29uZmlndXJhdGlvbiwgYW5kIHBvc3NpYmx5IGV2ZW4gdGhlIGluaXRpYWwgZmlybXdhcmUgZG93bmxvYWQgaWYgaXQncyBub3QgaGFuZGxlZCBlbHNld2hlcmUuIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgcGxhY2Ugd2hlcmUgdGhlIGRyaXZlcidzIGNvbnRyb2wgaXMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgaGFyZHdhcmUgYWZ0ZXIgYSBwb3dlciBjeWNsZSBvciByZXNldC4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgYXRoMTJrX21oaV9zdGFydGAgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyBpdCBlc3RhYmxpc2hlcyB0aGlzIGNvbm5lY3Rpb24gYW5kIGVuc3VyZSB0aGF0IGl0J3MgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9yIHNjZW5hcmlvcyBncmFjZWZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY2MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjIzLjg3ODY3MTY5M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NDUwNjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19wY2lfcG93ZXJfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xMzI2PXN0YXRpYyB2b2lkIGF0aDEya19wY2lfY29yZWR1bXBfZG93bmxvYWQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0Mzg6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDk4LVxcdC5wb3dlcl9kb3duID0gYXRoMTJrX3BjaV9wb3dlcl9kb3duLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTQ5OTpcXHQucG93ZXJfdXAgPSBhdGgxMmtfcGNpX3Bvd2VyX3VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUwMC1cXHQuc3VzcGVuZCA9IGF0aDEya19wY2lfaGlmX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3ND1pbnQgYXRoMTJrX3BjaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oOjE3NTppbnQgYXRoMTJrX3BjaV9wb3dlcl91cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3Ni12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDoyNC4xNDcxMjg1MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4MDMzNjcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipUcmFjaW5nIHRoZSBhdGgxMmsgUENJIFBvd2VyLVVwIFNlcXVlbmNlKipcblxuT2theSwgc28gYGF0aDEya19wY2lfcG93ZXJfdXBgIGlzIGRlZmluZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBOb3cgdGhlIGludGVyZXN0aW5nIHBhcnQgaXMsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKmNhbGwgY2hhaW4qKi4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHBvd2VyLCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgaGlmX29wcy1cdTAwM2Vwb3dlcl91cGAgaXMgYWN0dWFsbHkgaW52b2tlZCB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGUuIEknbGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgcmVmZXJlbmNlcywgdGhlIHBsYWNlcyB0aGF0IGFjdHVhbGx5ICp1c2UqIHRoYXQgcGFydGljdWxhciBtZW1iZXIgb2YgdGhlIGBoaWZfb3BzYCBzdHJ1Y3R1cmUuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBncmVwLCBvciBteSBJREUncyBzZWFyY2ggZnVuY3Rpb24uIEknbGwgZm9jdXMgb24gdGhlIHBsYWNlcyB3aGVyZSBgaGlmX29wc2AgaXMgdXNlZCwgYW5kIGxvb2sgZm9yIGEgZGlyZWN0IGNhbGwgb3IgaW5kaXJlY3QgY2FsbCB0byB0aGUgYHBvd2VyX3VwYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBjb250YWluZWQgcGllY2Ugb2YgdGhlIGRyaXZlciwgc28gZmluZGluZyBpdCBzaG91bGRuJ3QgYmUgdG9vIGNvbXBsZXguIExldCdzIHNlZS4uLiB0aGUgYGhpZl9vcHNgIHN0cnVjdCBpdHNlbGYgaXMgbGlrZWx5IGRlZmluZWQgaW4gdGhlIGRyaXZlcidzIGhlYWRlciBmaWxlcywgc28gSSBuZWVkIHRvIG5hdmlnYXRlIHRvIHRoYXQgbG9jYXRpb24gYW5kIGZpbmQgdGhlIHJlZmVyZW5jZSB0byB0aGUgYHBvd2VyX3VwYCBmdW5jdGlvbiBwb2ludGVyLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU3MSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjMwLjUyNzQ2NzMzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTMxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvd2VyX3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MzIzPXN0YXRpYyB2b2lkIGF0aDEya19haGJfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMzM6c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz03MDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfaGlmX29wcyBhdGgxMmtfYWhiX2hpZl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTcxMi1cXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDEya19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjcxMzpcXHQucG93ZXJfdXAgPSBhdGgxMmtfYWhiX3Bvd2VyX3VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNzE0LVxcdC5wb3dlcl9kb3duID0gYXRoMTJrX2FoYl9wb3dlcl9kb3duLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MTgxPWludCBhdGgxMmtfY29yZV9yZXN1bWVfZWFybHkoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE4OS1cXHRyZWluaXRfY29tcGxldGlvbihcXHUwMDI2YWItXFx1MDAzZXJlc3RhcnRfY29tcGxldGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoxOTA6XFx0cmV0ID0gYXRoMTJrX2hpZl9wb3dlcl91cChhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTkxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz04MTc9c3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy04MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODM0OlxcdHJldCA9IGF0aDEya19oaWZfcG93ZXJfdXAoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgzNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0xNjgyPXN0YXRpYyB2b2lkIGF0aDEya19jb3JlX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE3NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTc2ODpcXHRcXHRhdGgxMmtfaGlmX3Bvd2VyX3VwKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0xNzY5LVxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcInJlc2V0IHN0YXJ0ZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzY5LVxcdHN0cnVjdCBhdGgxMmtfZndfc3RhdHMgZndfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6NzcwOlxcdHVuc2lnbmVkIGxvbmcgbGFzdF90eF9wb3dlcl91cGRhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzcxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaD0xMj1zdHJ1Y3QgYXRoMTJrX2hpZl9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xOC1cXHR2b2lkICgqc3RvcCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaDoxOTpcXHRpbnQgKCpwb3dlcl91cCkoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0yMC1cXHR2b2lkICgqcG93ZXJfZG93bikoc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg9MTMwPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfaGlmX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTEzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjEzNjpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oaWYuaC0xMzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmg6MTM4OlxcdGlmICghYWItXFx1MDAzZWhpZi5vcHMtXFx1MDAzZXBvd2VyX3VwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGlmLmgtMTM5LVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oOjE0MTpcXHRyZXR1cm4gYWItXFx1MDAzZWhpZi5vcHMtXFx1MDAzZXBvd2VyX3VwKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hpZi5oLTE0Mi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTU0Njc9aW50IGF0aDEya19tYWNfb3BfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTU1MDQtXFx0XFx0XFx0bXNlY3NfdG9famlmZmllcyhBVEgxMktfUERFVl9UWF9QT1dFUl9SRUZSRVNIX1RJTUVfTVNFQ1MpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjU1MDU6XFx0XFx0XFx0XFx0XFx0IGFyLVxcdTAwM2VsYXN0X3R4X3Bvd2VyX3VwZGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTA2LVxcdFxcdGdvdG8gc2VuZF90eF9wb3dlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTUyNy1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1NTI4OlxcdGFyLVxcdTAwM2VsYXN0X3R4X3Bvd2VyX3VwZGF0ZSA9IGppZmZpZXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01NTI5LVxcdGF0aDEya19md19zdGF0c19yZXNldChhcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jPTQwNj1zdGF0aWMgaW50IGF0aDEya19taGlfc2V0X3N0YXRlKHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQyMC1cXHRjYXNlIEFUSDEyS19NSElfSU5JVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQyMTpcXHRcXHRyZXQgPSBtaGlfcHJlcGFyZV9mb3JfcG93ZXJfdXAoYWJfcGNpLVxcdTAwM2VtaGlfY3RybCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYy00MjItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQzOC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jOjQzOTpcXHRcXHRyZXQgPSBtaGlfc3luY19wb3dlcl91cChhYl9wY2ktXFx1MDAzZW1oaV9jdHJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTQ0MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTMyNj1zdGF0aWMgdm9pZCBhdGgxMmtfcGNpX2NvcmVkdW1wX2Rvd25sb2FkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE0MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNDM4OmludCBhdGgxMmtfcGNpX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTQ5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19oaWZfb3BzIGF0aDEya19wY2lfaGlmX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTQ5OC1cXHQucG93ZXJfZG93biA9IGF0aDEya19wY2lfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE0OTk6XFx0LnBvd2VyX3VwID0gYXRoMTJrX3BjaV9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MDAtXFx0LnN1c3BlbmQgPSBhdGgxMmtfcGNpX2hpZl9zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNzQ9aW50IGF0aDEya19wY2lfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzU6aW50IGF0aDEya19wY2lfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzYtdm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6MzAuNzI4NDA4MDI5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1NTQ4MzI3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBQcm9iZSBGYWlsdXJlKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBicmVha2Rvd24gYXMgSSBzZWUgaXQuIFRoZSBgYXRoMTJrX3BjaV9wb3dlcl91cGAgZnVuY3Rpb24gaXMgdGhlIGluaXRpYWwgY3VscHJpdC4gSXQgY2FsbHMgYGF0aDEya19taGlfc3RhcnRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtaGlfcHJlcGFyZV9mb3JfcG93ZXJfdXBgIGFuZCB0aGVuIGBtaGlfc3luY19wb3dlcl91cGAuIFRoZSBrZXkgcHJvYmxlbSBoZXJlIGlzIGBtaGlfc3luY19wb3dlcl91cGAuIEl0J3Mgd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byBzaWduYWwgdGhhdCBpdCBoYXMgZW50ZXJlZCB0aGUgQU1TUyBzdGF0ZSwgaW5kaWNhdGluZyB0aGUgZmlybXdhcmUgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW5kIGlzIHJ1bm5pbmcuIElmIHRoYXQgc2lnbmFsIGRvZXNuJ3QgY29tZSwgYG1oaV9zeW5jX3Bvd2VyX3VwYCB0aW1lcyBvdXQgYW5kIGZhaWxzLlxuXG5UaGF0IHRpbWVvdXQgY2F1c2VzIGEgY2FzY2FkZSBvZiBmYWlsdXJlcy4gYGF0aDEya19wY2lfcG93ZXJfdXBgIGZhaWxzLCBgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZWAgZmFpbHMsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgZHJpdmVyIHByb2JlIGZhaWxzLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHdpdGhvdXQgYSByZWFsIFF1YWxjb21tIFdpLUZpIGRldmljZSBvciBhbiBleHRyZW1lbHkgc29waGlzdGljYXRlZCBlbXVsYXRvciB0aGF0IGNhbiBwZXJmZWN0bHkgbWltaWMgdGhlIE1ISSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLCB0aGVyZSdzIG5vIHdheSBgYXRoMTJrYCBjYW4gYmUgcHJvYmVkIHN1Y2Nlc3NmdWxseS5cblxuTm93LCBteSBtaW5kIHN0YXJ0cyByYWNpbmcuIEkgcmVtZW1iZXIgc3l6a2FsbGVyJ3MgYHN5el9wY2lkZXZgIGZ1bmN0aW9uIHRoYXQgc2ltdWxhdGVzIFBDSSBkZXZpY2VzLiBCdXQgZG9lcyBpdCBzaW11bGF0ZSBNSEk/IE5vLCBpdCdzIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLiBJdCByZXR1cm5zIHJhbmRvbSBieXRlcyBmb3IgTU1JTyByZWFkcy4gU3VyZSwgaWYgYG1oaV9zeW5jX3Bvd2VyX3VwYCBpcyBqdXN0IHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMgYml0IHRvIGJlIHNldCBpbiBhIHJlZ2lzdGVyLCB0aGUgZnV6emVyIG1pZ2h0IGV2ZW50dWFsbHkgcmV0dXJuIHRoZSByaWdodCB2YWx1ZSBieSBjaGFuY2UuIEhvd2V2ZXIsIHRoZSBNSEkgcHJvdG9jb2wgaXMgZmFyIG1vcmUgY29tcGxleC4gVGhlIGhvc3Qgd3JpdGVzIHRvIEJISSByZWdpc3RlcnMsIHRoZSBkZXZpY2UgaXMgc3VwcG9zZWQgdG8gRE1BIHRoZSBmaXJtd2FyZSBmcm9tIGhvc3QgbWVtb3J5LCBhbmQgdGhlbiB0aGUgZGV2aWNlIHVwZGF0ZXMgYSBzdGF0ZSByZWdpc3Rlci4gQSBnZW5lcmljIGZ1enplciBoYXMgemVybyBjaGFuY2Ugb2YgZnVsZmlsbGluZyB0aGlzIHByb3RvY29sIGJ5IGx1Y2suXG5cblRoaXMgbWVhbnMgdGhhdCBgYXRoMTJrYCdzIHByb2JlIHdpbGwgKmFsd2F5cyogZmFpbCBpbiBhIHN5emthbGxlciBlbnZpcm9ubWVudCwgYW5kIGNvbnNlcXVlbnRseSwgdGhlIGNyaXRpY2FsIGBtYWM4MDIxMWAgY2FsbGJhY2tzLCBsaWtlIGBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZWAsIHdpbGwgbmV2ZXIgYmUgcmVnaXN0ZXJlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24uXG5cbkJ1dCB3YWl0LCBpZiB0aGUgcHJvYmUgaXMgZGVzdGluZWQgdG8gZmFpbCwgd2h5IGRpZCBzeXprYWxsZXIgYXBwbHkgKnRoYXQqIHBhdGNoIGluIHRoZSBmaXJzdCBwbGFjZT8gSSBrbm93IHN5emthbGxlciBhcHBsaWVzIHBhdGNoZXMgYXV0b21hdGljYWxseSBpZiB0aGV5IGFyZSBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3Qgd2l0aCB0aGUgc3l6Ym90IENDJ2QsIG9yIGlmIGl0J3MgZml4aW5nIGEgYnVnIHRoYXQgc3l6Ym90IGhhcyBhbHJlYWR5IGZvdW5kLlxuXG5UaGF0IGxlYWRzIG1lIHRvIGEgY3JpdGljYWwgcG9pbnQ6IHN5emJvdCAqZG9lcyogZmluZCBidWdzIGluIGBhdGgxMmtgISBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB0aG91Z2ggaXQgY2FuJ3QgZnVsbHkgcHJvYmUsIGl0J3Mgc3RpbGwgZXhlcmNpc2luZyAqc29tZSogY29kZSBwYXRocywgZW5vdWdoIHRvIHRyaWdnZXIgdGhvc2UgYnVncy4gU28sIGxldCBtZSBzZWFyY2ggZm9yIHN5emJvdCByZXBvcnRzIG9uIGJ1Z3MgaW4gYGF0aDEya2AuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ2V0dGluZyBoaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzA0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA0OjQwLjI4MzI0NDgwNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyOTgwODA3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSZXBvcnRlZC1ieTogc3l6Ym90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDo0MC40OTYyMzg4NTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3MTEyOTU2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlIGZvciB0aGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBgYXRoMTJrYCBwYXRjaCBhbmQgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgKm1heWJlKiBgc3l6Ym90YCBqdXN0IG1pc3NlZCBzb21lIGJ1Z3MsIGJ1dCB0aGUgcHJvbXB0J3MgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEFuZCBgYXRoMTJrYCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciDigJMgaXQncyBhbGwgYWJvdXQgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBObyBzb2Z0d2FyZSBlbXVsYXRpb24sIGFuZCBpdCByZWxpZXMgb24gdGhhdCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdGhyb3VnaCBNSEkuXG5cblNvLCBmaXJzdCBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgaWYgdGhlcmUgd2FzIHNvbWUgaGlkZGVuIGBod3NpbWAgb3IgYGR1bW15YCBtb2RlIGJ1cmllZCBpbiB0aGUgY29kZS4gSSBzZWFyY2hlZCBmb3IgXCJod3NpbXxzaW18ZHVtbXlcIiBhbmQgZm91bmQgYSBmZXcgZGVidWdmcyBjb21tYW5kcyBsaWtlIGBzaW11bGF0ZV9md19jcmFzaGAgYW5kIG90aGVycyByZWxhdGVkIHRvIGVtdWxhdGluZyBpbnRlcmZlcmVuY2UgYW5kIHJhZGFyLCBidXQgdGhvc2UgKnN0aWxsKiBuZWVkIHRoZSBmaXJtd2FyZSBydW5uaW5nLiBUaGVuIEkgZm91bmQgYW4gYGFsbG9jX25ldGRldl9kdW1teSgwKWAgY2FsbCBpbiBgYXRoMTJrX2FoYl9jb25maWdfZXh0X2lycWAgYW5kIGBhdGgxMmtfcGNpX2V4dF9pcnFfY29uZmlnYCwgYnV0IHRoYXQncyBqdXN0IGZvciBOQVBJLiBOb3RoaW5nIHRoYXQgY291bGQgYWxsb3cgaXQgdG8gcnVuIHdpdGhvdXQgdGhlIGhhcmR3YXJlLiBCb3R0b20gbGluZSwgdGhlcmUncyBubyBgaHdzaW1gIGZvciBgYXRoMTJrYC5cblxuVGhlcmVmb3JlLCB0aGUgY29kZSBwYXRocyBpbiBgbWFjLmNgLCBgZHBfaHR0LmNgLCBgZHBfcGVlci5jYCwgYW5kIHNvIG9uLCB0aGF0IHRoaXMgcGF0Y2ggdG91Y2hlcyBhcmUgKmRlZmluaXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgd2FpdCBhIHNlYywgaXMgdGhlcmUgKmFueSogd2F5IHRvIGdldCBgYXRoMTJrYCBmdXp6ZWQgKnRocm91Z2gqIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IEJ1dCBubywgYG1hYzgwMjExX2h3c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLiBJdCdzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jYCBhbmQgc2ltdWxhdGVzIGEgV2ktRmkgZGV2aWNlIGF0IHRoZSBtYWM4MDIxMSBsYXllci4gSXQgZG9lc24ndCB1c2UgKmFueSogYGF0aDEya2AgY29kZS5cblxuV2hhdCBhYm91dCBgbmw4MDIxMWAgdGVzdG1vZGU/IE5vLCB0aG9zZSBjb21tYW5kcyBhcmUgaGFuZGxlZCBieSBgYXRoMTJrX3Rlc3Rtb2RlX2NtZGAsIGJ1dCB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIHByb2JlZCBhbmQgdGhlIGRldmljZSBwcmVzZW50LlxuXG5TbywgeWVhaCwgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5MZXQncyByZXZpZXcgdGhlIHByb21wdCB0byBtYWtlIHN1cmU6IFllcCwgdGhlIHByb21wdCBzYXlzIFwicmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3MgYGF0aDEya2AgdG8gYSBULlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNvbmZpcm0gaWYgdGhlcmUgaXMgYW55IGBDT05GSUdfQVRIMTJLX1NJTWAgb3Igc2ltaWxhciBpbiB0aGUgS2NvbmZpZy5cblxuSSBhbSBjb25maWRlbnQsIGBhdGgxMmtgIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgYW5kIHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIHRoZSBmaXJtd2FyZSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQ4NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNDo1Ni4yMDc1Mzc2NTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzIzMDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gYXRoMTJrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTMtYXRoMTJrLXkgKz0gY29yZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZToyNTphdGgxMmstJChDT05GSUdfQVRIMTJLX0FIQikgKz0gYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0FUSDEySykgKz0gd2lmaTcvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI5OmF0aDEyay0kKENPTkZJR19BVEgxMktfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzAtYXRoMTJrLSQoQ09ORklHX0FDUEkpICs9IGFjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzE6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zMi1hdGgxMmstJChDT05GSUdfUE0pICs9IHdvdy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMzphdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNC1hdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9NjI0PXN0cnVjdCBhdGgxMmsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtNzQxLVxcdHUzMiBjYWNoZWRfcHBkdV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDo3NDI6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oLTc0My1cXHRzdHJ1Y3QgYXRoMTJrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9OTU3PXN0cnVjdCBhdGgxMmtfYmFzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMDU1LVxcdGVudW0gYXRoMTJrX2Rmc19yZWdpb24gZGZzX3JlZ2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaDoxMDU2OiNpZmRlZiBDT05GSUdfQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMDU3LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfc29jO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlZHVtcC5oPTM3PXN0cnVjdCBhdGgxMmtfZHVtcF9maWxlX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlZHVtcC5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaDo2MDojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZWR1bXAuaC02MS1lbnVtIGF0aDEya19md19jcmFzaF9kdW1wX3R5cGUgYXRoMTJrX2NvcmVkdW1wX2dldF9kdW1wX3R5cGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYz01NT1FWFBPUlRfU1lNQk9MKF9fYXRoMTJrX3dhcm4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM6NTc6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmM9MTA4PUVYUE9SVF9TWU1CT0woYXRoMTJrX2RiZ19kdW1wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuYzoxMTA6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD00MT1leHRlcm4gYm9vbCBhdGgxMmtfZnRtX21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo0MzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaC00NC1fX3ByaW50ZigzLCA0KSB2b2lkIF9fYXRoMTJrX2RiZyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oPTQ3PXZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNTAtXFx0XFx0ICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo1MTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Zy5oLTUyLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2F0aDEya19kYmcoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RiZ19kdW1wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnLmgtNjMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaDo2NDojZW5kaWYgLyogQ09ORklHX0FUSDEyS19ERUJVRyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWcuaC02NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg6MTA6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTExLXZvaWQgYXRoMTJrX2RlYnVnZnNfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5oLTE0NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmg6MTQ1OiNlbmRpZiAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuaC0xNDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MjY9dm9pZCBhdGgxMmtfZGVidWdmc19odHRfc3RhdHNfcmVnaXN0ZXIoc3RydWN0IGF0aDEyayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mjg6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0yOS12b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaC0zMC1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19odHRfc3RhdHMuaDozMTojZWxzZSAvKiBDT05GSUdfQVRIMTJLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzItc3RhdGljIGlubGluZSB2b2lkIGF0aDEya19kZWJ1Z2ZzX2h0dF9leHRfc3RhdHNfaGFuZGxlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaDoxNTojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzX3N0YS5oLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaD0xNz12b2lkIGF0aDEya19kZWJ1Z2ZzX2xpbmtfc3RhX29wX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnNfc3RhLmg6MjI6I2VuZGlmIC8qIENPTkZJR19BVEgxMktfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmc19zdGEuaC0yMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTIxMj12b2lkIGF0aDEya19wY2lfd3JpdGUzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTEyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxMjU4OiNpZmRlZiBDT05GSUdfQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xMjU5LXN0YXRpYyBpbnQgYXRoMTJrX3BjaV9jb3JlZHVtcF9jYWxjdWxhdGVfc2l6ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgKmR1bXBfc2VnX3N6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xNDkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2hpZl9vcHMgYXRoMTJrX3BjaV9oaWZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTEwLVxcdC5wYW5pY19oYW5kbGVyID0gYXRoMTJrX3BjaV9wYW5pY19oYW5kbGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTUxMTojaWZkZWYgQ09ORklHX0FUSDEyS19DT1JFRFVNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUxMi1cXHQuY29yZWR1bXBfZG93bmxvYWQgPSBhdGgxMmtfcGNpX2NvcmVkdW1wX2Rvd25sb2FkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE0LS8qIGNyZWF0ZSBlbXB0eSBmdW5jdGlvbnMgd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oOjE1OiNpZiAhZGVmaW5lZChDT05GSUdfQVRIMTJLX1RSQUNJTkcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oLTE2LSN1bmRlZiBUUkFDRV9FVkVOVFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90cmFjZS5oPTE4PXN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8gIyMgbmFtZShwcm90bykge31cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmg6MTk6I2VuZGlmIC8qICFDT05GSUdfQVRIMTJLX1RSQUNJTkcgfHwgX19DSEVDS0VSX18gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3RyYWNlLmgtMjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMkspICs9IGF0aDEya193aWZpNy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9NYWtlZmlsZS0zLWF0aDEya193aWZpNy15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L01ha2VmaWxlLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvTWFrZWZpbGU6MjA6YXRoMTJrX3dpZmk3LSQoQ09ORklHX0FUSDEyS19BSEIpICs9IGFoYi5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2FoYi5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9haGIuaDo5OiNpZmRlZiBDT05GSUdfQVRIMTJLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvYWhiLmgtMTAtaW50IGF0aDEya193aWZpN19haGJfaW5pdCh2b2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTUtI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExOTY6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTk3LVxcdC52aWZfYWRkX2RlYnVnZnMgICAgICAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19vcF92aWZfYWRkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExOTktXFx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEya190bV9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjEyMDA6I2lmZGVmIENPTkZJR19BVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMjAxLVxcdC5saW5rX3N0YV9hZGRfZGVidWdmcyAgICAgICAgICAgPSBhdGgxMmtfZGVidWdmc19saW5rX3N0YV9vcF9hZGQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jPTk2NTQ9c3RhdGljIHZvaWQgYXRoMTJrX3dtaV9ldmVudF90ZWFyZG93bl9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05NjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6OTY3MzojaWZkZWYgQ09ORklHX0FUSDEyS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy05Njc0LXN0YXRpYyBpbnQgYXRoMTJrX3dtaV90cGNfc3RhdHNfY29weV9idWZmZXIoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6MDQ6NTYuMzcwNzczNzU3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyODgzMDkxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIGl0J3MgY2xlYXI6IHRoZXJlJ3Mgbm8gd2F5IHRvIHNpbXVsYXRlIHRoaXMsIG5vIGBDT05GSUdfQVRIMTJLX1NJTWAgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBUaGlzIGRyaXZlciwgdGhlIGBhdGgxMmtgIG9uZSwgaXMgKmRlZmluaXRlbHkqIGhhcmR3YXJlLWRlcGVuZGVudC4gSXQgbmVlZHMgdGhlIHJlYWwgZGVhbC4gU28sIHRoZSBgV29ydGhGdXp6aW5nPWZhbHNlYCB0YWcsIHJpZ2h0IG91dCBvZiB0aGUgZ2F0ZSwgc2VlbXMgc3BvdCBvbi5cblxuTGV0IG1lIGp1c3Qgc29saWRpZnkgdGhpcyBpbiBteSBtaW5kLiBSaWdodCwgaXQncyBtb2RpZnlpbmcgdGhlIGBhdGgxMmtgIGRyaXZlci4gVGhhdCdzIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSDigJMgcmVhbCBQQ0kgb3IgQUhCIGRldmljZXMsIGFuZCBpbXBvcnRhbnRseSwgbmVlZHMgdGhhdCBmaXJtd2FyZSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiAgVGhpcyBpc24ndCBnb2luZyB0byB3b3JrIGluIHNvbWUgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIFxuXG5TbywgeWVhaCwgbm90IHdvcnRoIHRoZSBlZmZvcnQgZm9yIFN5emthbGxlci5cblxuSG9sZCBvbiwgSSByZW1lbWJlciBTeXprYWxsZXIgaGFzIGBzeXpfcGNpZGV2YCwgd2hpY2ggYWxsb3dzIHlvdSB0byBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQnV0LCBoYW5nIG9uLiBUaGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCBgYXRoMTJrYCBkb2VzIHRoZSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISS4gU3l6X3BjaWRldiBkb2Vzbid0IGRvIHRoYXQuIERvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSBhbiBNSEkgZW11bGF0b3I/XG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBNSEkgZW11bGF0b3IgaW4gdGhlIGtlcm5lbCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODowNTowMi42NTkwODczMjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODg1NTc3MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9lbXVsYXRvcnxtaGlfc2ltfGR1bW15X21oaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA1OjA2LjQ0NzY1NTUxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg1MzU2MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGF0aDEyayBEcml2ZXIncyBGdXp6YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gTUhJIGVtdWxhdG9yIGF2YWlsYWJsZS4gVGhhdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBXaXRob3V0IHRoYXQsIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGUgYGF0aDEya2AgZHJpdmVyIGlzIGVmZmVjdGl2ZWx5IGluYWNjZXNzaWJsZSBmb3IgZnV6emluZyB1c2luZyBzeXprYWxsZXIuICBUaGUgd2hvbGUgcHJvY2VzcyBoaW5nZXMgb24gdGhlIGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGxvYWQgaXRzIGZpcm13YXJlLCBhbmQgdGhlIE1ISSBpcyBjZW50cmFsIHRvIHRoYXQuXG5cblNpbmNlIHN5emthbGxlciByZWxpZXMgb24gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHdoaWNoIGFyZSB2aXJ0dWFsaXplZCBhbmQgY2FuJ3QgaGFuZGxlIHRoZXNlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgd2UgY2FuJ3QgcmVsaWFibHkgZnV6eiB0aGlzIGRyaXZlci4gTXkgcmVjb21tZW5kYXRpb24gaXMgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYGF0aDEya2AgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gSXRzIGRlcGVuZGVuY2Ugb24gYSBwaHlzaWNhbCBkZXZpY2UsIGFuZCB0aGUgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgaXQgdXNlcyB0aHJvdWdoIE1ISSwgYXJlIGluc3VybW91bnRhYmxlIG9ic3RhY2xlcyBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBUaGVyZSdzIGp1c3Qgbm8gcHJhY3RpY2FsIHBhdGggdG8gZXhlY3V0ZSB0aGUgbmVjZXNzYXJ5IGNvZGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MDI3LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjA1OjExLjQzMzAxNDU3MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLiBJdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBvciBBSEIgZGV2aWNlIGFuZCBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgdmlhIE1ISSB0byBmdW5jdGlvbi4gSXQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMuIEl0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIG9yIEFIQiBkZXZpY2UgYW5kIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyB2aWEgTUhJIHRvIGZ1bmN0aW9uLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrrp5h[1] Phase: Running StartedAt: 2026-07-13 08:05:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrp5h[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 08:05:22 +0000 UTC FinishedAt: 2026-07-13 08:05:27 +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,}