Name: series-workflowsqc9v Phase: Failed StartedAt: 2026-07-06 23:31:55 +0000 UTC FinishedAt: 2026-07-06 23:54:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqc9v[0] Phase: Succeeded StartedAt: 2026-07-06 23:31:55 +0000 UTC FinishedAt: 2026-07-06 23:54:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqc9v[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 23:31:55 +0000 UTC FinishedAt: 2026-07-06 23:54:40 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuaW5kZXggNTkwMDFmZDRiNmY3NDAuLjJkMDMyY2M2ZGZjYWRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuQEAgLTQ5Myw2ICYjNDM7NDkzLDggQEAgc3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4gXG4gc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIHtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4gXHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xuIFxuIFx0LyogUFNFIElRIHJlc2VydmUgKi9cbkBAIC01ODYsNiAmIzQzOzU4OCwxNCBAQCBzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4gXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbiBcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcbiBcbiYjNDM7XHQvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy5cbiYjNDM7XHQgKiBUaGlzIHByZXZlbnRzIHNwdXJpb3VzIHN0YXRpc3RpY3MgZnJvbSBwcmUtZHJpdmVyIGFjdGl2aXR5IChlLmcuLFxuJiM0MztcdCAqIGtleGVjLCBkcml2ZXIgcmViaW5kLCB3YXJtIHJlYm9vdCkgb24gZmlyc3QgcG9sbC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3IgKGkgPSBBSVJPSEFfR0RNMV9JRFg7IGkgXHUwMDNjPSBBSVJPSEFfR0RNNF9JRFg7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKGkpLFxuJiM0MztcdFx0XHQgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spO1xuJiM0MztcbiBcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuIH1cbiBcbkBAIC0xNjg2LDExICYjNDM7MTY5NiwxNCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zdG9wX25hcGkoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBhaXJvaGFfZGV2X2dldF9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVx1MDAzZXBvcnQ7XG4gXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVx1MDAzZWV0aDtcbiBcdHUzMiB2YWwsIGkgPSAwO1xuJiM0MztcdHU2NCB0bXAsIHByZXY7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZwb3J0LVx1MDAzZXN0YXRzX2xvY2spO1xuIFxuIFx0LyogUmVhZCByZWxldmFudCBNSUIgZm9yIEdETSB3aXRoIG11bHRpcGxlIHBvcnQgYXR0YWNoZWQgKi9cbiBcdGlmIChwb3J0LVx1MDAzZWlkID09IEFJUk9IQV9HRE0zX0lEWCB8fCBwb3J0LVx1MDAzZWlkID09IEFJUk9IQV9HRE00X0lEWClcbkBAIC0xNzAxLDE1MiAmIzQzOzE3MTQsMTkwIEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuIFxuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFxuLVx0LyogVFggKi9cbiYjNDM7XHQvKiBUWCAtIDY0LWJpdCBIJiM0MztMIHJlZ2lzdGVyczogaHcgYWNjdW11bGF0ZXMgdGhlIHRvdGFsLCByZWFkIGRpcmVjdGx5LlxuJiM0MztcdCAqIFVzZSBsb2NhbCB2YXJpYWJsZSB0byBwcmV2ZW50IHJlYWRlcnMgZnJvbSBzZWVpbmcgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiYjNDM7XHQgKiBDbGFtcCB0byBwcmV2ZW50IHJlZ3Jlc3Npb24gZnJvbSB0b3JuIHJlYWRzIGJldHdlZW4gSCBhbmQgTC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHQvKiBUWCAtIDMyLWJpdCByZWdpc3RlcnM6IGFjY3VtdWxhdGUgZGVsdGEgdG8gaGFuZGxlIHdyYXAtYXJvdW5kLiAqL1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Jyb2FkY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX01DX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0ICYjNDM7PVxuJiM0MztcdFx0KHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9ydW50ID0gdmFsO1xuIFxuJiM0MztcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgJiM0MzsgRTY0ICg2NC1iaXQsIGFic29sdXRlKS4gKi9cbiYjNDM7XHR0bXAgPSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0O1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IHRtcDtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2xvbmcgPSB2YWw7XG4gXG4gXHQvKiBSWCAqL1xuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cztcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cyA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfQllURV9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9va19ieXRlcyA9IG1heCh0bXAsIHByZXYpO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZHJvcHMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Jyb2FkY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX01DX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbXVsdGljYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X211bHRpY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVJST1JfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2NyY19lcnJvciAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvciA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT1ZFUkZMT1dfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0ZSQUdfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2ZyYWdtZW50KTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfamFiYmVyICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyKTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyID0gdmFsO1xuIFxuIFx0aSA9IDA7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9SVU5UX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NCAmIzQzOz1cbiYjNDM7XHRcdCh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50KTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCA9IHZhbDtcbiBcbiYjNDM7XHQvKiByeF9sZW5bMF06IFJVTlQgKDMyLWJpdCwgZGVsdGEpICYjNDM7IEU2NCAoNjQtYml0LCBhYnNvbHV0ZSkuICovXG4mIzQzO1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSB0bXA7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2xvbmcgPSB2YWw7XG4gXG4gXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuLXtcbi1cdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbi1cdGludCBpO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXHUwMDNlZGV2cyk7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWRldnNbaV0pXG4tXHRcdFx0YWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC1cdTAwM2VkZXZzW2ldKTtcbi1cdH1cbi1cbi1cdC8qIFJlc2V0IE1JQiBjb3VudGVycyAqL1xuLVx0YWlyb2hhX2ZlX3NldChkZXYtXHUwMDNlZXRoLCBSRUdfRkVfR0RNX01JQl9DTEVBUihwb3J0LVx1MDAzZWlkKSxcbi1cdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmNmQwMWE4ZThkYTEzOS4uZmU5MzRmOWZmZThhMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtMjQ1LDYgJiM0MzsyNDUsMzMgQEAgc3RydWN0IGFpcm9oYV9od19zdGF0cyB7XG4gXHR1NjQgcnhfZnJhZ21lbnQ7XG4gXHR1NjQgcnhfamFiYmVyO1xuIFx0dTY0IHJ4X2xlbls3XTtcbiYjNDM7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdC8qIFByZXZpb3VzIEhXIHJlZ2lzdGVyIHZhbHVlcyBmb3IgMzItYml0IGNvdW50ZXIgZGVsdGFcbiYjNDM7XHRcdCAqIHRyYWNraW5nLiBTdG9yaW5nIHRoZSBsYXN0IHNlZW4gdmFsdWUgYW5kIGFjY3VtdWxhdGluZ1xuJiM0MztcdFx0ICogKHUzMikoY3VyciAtIHByZXYpIGludG8gdGhlIDY0LWJpdCBzb2Z0d2FyZSBjb3VudGVyXG4mIzQzO1x0XHQgKiBoYW5kbGVzIHdyYXAtYXJvdW5kIHRyYW5zcGFyZW50bHkgdmlhIHVuc2lnbmVkIGFyaXRobWV0aWMuXG4mIzQzO1x0XHQgKiB0eF9ydW50NjQvcnhfcnVudDY0IGhvbGQgdGhlIHJ1bm5pbmcgc3VtIG9mIHJ1bnQgZGVsdGFzLlxuJiM0MztcdFx0ICogVGhlc2UgZmllbGRzIGFyZSBuZXZlciByZXBvcnRlZCB0byB1c2Vyc3BhY2UuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHUzMiB0eF9kcm9wcztcbiYjNDM7XHRcdHUzMiB0eF9icm9hZGNhc3Q7XG4mIzQzO1x0XHR1MzIgdHhfbXVsdGljYXN0O1xuJiM0MztcdFx0dTMyIHR4X3J1bnQ7XG4mIzQzO1x0XHR1MzIgdHhfbG9uZztcbiYjNDM7XHRcdHU2NCB0eF9ydW50NjQ7XG4mIzQzO1x0XHR1MzIgcnhfZHJvcHM7XG4mIzQzO1x0XHR1MzIgcnhfYnJvYWRjYXN0O1xuJiM0MztcdFx0dTMyIHJ4X211bHRpY2FzdDtcbiYjNDM7XHRcdHUzMiByeF9lcnJvcnM7XG4mIzQzO1x0XHR1MzIgcnhfY3JjX2Vycm9yO1xuJiM0MztcdFx0dTMyIHJ4X292ZXJfZXJyb3JzO1xuJiM0MztcdFx0dTMyIHJ4X2ZyYWdtZW50O1xuJiM0MztcdFx0dTMyIHJ4X2phYmJlcjtcbiYjNDM7XHRcdHUzMiByeF9ydW50O1xuJiM0MztcdFx0dTMyIHJ4X2xvbmc7XG4mIzQzO1x0XHR1NjQgcnhfcnVudDY0O1xuJiM0MztcdH0gbWliX3ByZXY7XG4gfTtcbiBcbiBlbnVtIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMzo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCmluZGV4IDU5MDAxZmQ0YjZmNzQwLi4yZDAzMmNjNmRmY2FkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCkBAIC00OTMsNiAmIzQzOzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKQogCiBzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpCiB7CiYjNDM7CWludCBpOwomIzQzOwogCWFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7CiAKIAkvKiBQU0UgSVEgcmVzZXJ2ZSAqLwpAQCAtNTg2LDYgJiM0Mzs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKQogCS8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqLwogCWFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTsKIAomIzQzOwkvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy4KJiM0MzsJICogVGhpcyBwcmV2ZW50cyBzcHVyaW91cyBzdGF0aXN0aWNzIGZyb20gcHJlLWRyaXZlciBhY3Rpdml0eSAoZS5nLiwKJiM0MzsJICoga2V4ZWMsIGRyaXZlciByZWJpbmQsIHdhcm0gcmVib290KSBvbiBmaXJzdCBwb2xsLgomIzQzOwkgKi8KJiM0MzsJZm9yIChpID0gQUlST0hBX0dETTFfSURYOyBpICZsdDs9IEFJUk9IQV9HRE00X0lEWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIoaSksCiYjNDM7CQkJICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTsKJiM0MzsKIAlyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTsKIH0KIApAQCAtMTY4NiwxMSAmIzQzOzE2OTYsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSkKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KQomIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCiB7CiAJc3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi0mZ3Q7cG9ydDsKIAlzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LSZndDtldGg7CiAJdTMyIHZhbCwgaSA9IDA7CiYjNDM7CXU2NCB0bXAsIHByZXY7CiYjNDM7CiYjNDM7CXNwaW5fbG9jaygmYW1wO3BvcnQtJmd0O3N0YXRzX2xvY2spOwogCiAJLyogUmVhZCByZWxldmFudCBNSUIgZm9yIEdETSB3aXRoIG11bHRpcGxlIHBvcnQgYXR0YWNoZWQgKi8KIAlpZiAocG9ydC0mZ3Q7aWQgPT0gQUlST0hBX0dETTNfSURYIHx8IHBvcnQtJmd0O2lkID09IEFJUk9IQV9HRE00X0lEWCkKQEAgLTE3MDEsMTUyICYjNDM7MTcxNCwxOTAgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCiAKIAl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7ZGV2LSZndDtzdGF0cy5zeW5jcCk7CiAKLQkvKiBUWCAqLwomIzQzOwkvKiBUWCAtIDY0LWJpdCBIJiM0MztMIHJlZ2lzdGVyczogaHcgYWNjdW11bGF0ZXMgdGhlIHRvdGFsLCByZWFkIGRpcmVjdGx5LgomIzQzOwkgKiBVc2UgbG9jYWwgdmFyaWFibGUgdG8gcHJldmVudCByZWFkZXJzIGZyb20gc2VlaW5nIGludGVybWVkaWF0ZSB2YWx1ZXMuCiYjNDM7CSAqIENsYW1wIHRvIHByZXZlbnQgcmVncmVzc2lvbiBmcm9tIHRvcm4gcmVhZHMgYmV0d2VlbiBIIGFuZCBMLgomIzQzOwkgKi8KJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0czsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy50eF9va19ieXRlczsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X29rX2J5dGVzICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfT0tfQllURV9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfYnl0ZXMgJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9va19ieXRlcyA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CS8qIFRYIC0gMzItYml0IHJlZ2lzdGVyczogYWNjdW11bGF0ZSBkZWx0YSB0byBoYW5kbGUgd3JhcC1hcm91bmQuICovCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2Ryb3BzICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMudHhfZHJvcHMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfZHJvcHMpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9icm9hZGNhc3QgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9icm9hZGNhc3QgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfYnJvYWRjYXN0KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9NQ19DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9ydW50NjQgJiM0Mzs9CiYjNDM7CQkodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQgPSB2YWw7CiAKJiM0MzsJLyogdHhfbGVuWzBdOiBSVU5UICgzMi1iaXQsIGRlbHRhKSAmIzQzOyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqLwomIzQzOwl0bXAgPSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0U2NF9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gdG1wOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnR4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnR4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMjU1X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy50eF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w1MTFfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfbG9uZyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfbG9uZyA9IHZhbDsKIAogCS8qIFJYICovCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHM7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19QS1RfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHMgJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19QS1RfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHMgJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9va19wa3RzID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMucnhfb2tfYnl0ZXM7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19CWVRFX0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9va19ieXRlcyAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX2J5dGVzICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9kcm9wcyAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfYnJvYWRjYXN0ID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTUNfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9tdWx0aWNhc3QgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9tdWx0aWNhc3QgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfZXJyb3JzKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfY3JjX2Vycm9yID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PVkVSRkxPV19EUk9QX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfb3Zlcl9lcnJvcnMgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9vdmVyX2Vycm9ycyAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfZnJhZ21lbnQgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfamFiYmVyKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9qYWJiZXIgPSB2YWw7CiAKIAlpID0gMDsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9SVU5UX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfcnVudDY0ICYjNDM7PQomIzQzOwkJKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50ID0gdmFsOwogCiYjNDM7CS8qIHJ4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgJiM0MzsgRTY0ICg2NC1iaXQsIGFic29sdXRlKS4gKi8KJiM0MzsJdG1wID0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50NjQ7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9FNjRfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IHRtcDsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy5yeF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy5yeF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDI1NV9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNTExX0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbG9uZyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDsKIAogCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7ZGV2LSZndDtzdGF0cy5zeW5jcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCi17Ci0Jc3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi0mZ3Q7cG9ydDsKLQlpbnQgaTsKLQotCXNwaW5fbG9jaygmYW1wO3BvcnQtJmd0O3N0YXRzX2xvY2spOwotCi0JZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUocG9ydC0mZ3Q7ZGV2cyk7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChwb3J0LSZndDtkZXZzW2ldKQotCQkJYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC0mZ3Q7ZGV2c1tpXSk7Ci0JfQotCi0JLyogUmVzZXQgTUlCIGNvdW50ZXJzICovCi0JYWlyb2hhX2ZlX3NldChkZXYtJmd0O2V0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIocG9ydC0mZ3Q7aWQpLAotCQkgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spOwogCiAJc3Bpbl91bmxvY2soJmFtcDtwb3J0LSZndDtzdGF0c19sb2NrKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCmluZGV4IGY2ZDAxYThlOGRhMTM5Li5mZTkzNGY5ZmZlOGExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCkBAIC0yNDUsNiAmIzQzOzI0NSwzMyBAQCBzdHJ1Y3QgYWlyb2hhX2h3X3N0YXRzIHsKIAl1NjQgcnhfZnJhZ21lbnQ7CiAJdTY0IHJ4X2phYmJlcjsKIAl1NjQgcnhfbGVuWzddOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJLyogUHJldmlvdXMgSFcgcmVnaXN0ZXIgdmFsdWVzIGZvciAzMi1iaXQgY291bnRlciBkZWx0YQomIzQzOwkJICogdHJhY2tpbmcuIFN0b3JpbmcgdGhlIGxhc3Qgc2VlbiB2YWx1ZSBhbmQgYWNjdW11bGF0aW5nCiYjNDM7CQkgKiAodTMyKShjdXJyIC0gcHJldikgaW50byB0aGUgNjQtYml0IHNvZnR3YXJlIGNvdW50ZXIKJiM0MzsJCSAqIGhhbmRsZXMgd3JhcC1hcm91bmQgdHJhbnNwYXJlbnRseSB2aWEgdW5zaWduZWQgYXJpdGhtZXRpYy4KJiM0MzsJCSAqIHR4X3J1bnQ2NC9yeF9ydW50NjQgaG9sZCB0aGUgcnVubmluZyBzdW0gb2YgcnVudCBkZWx0YXMuCiYjNDM7CQkgKiBUaGVzZSBmaWVsZHMgYXJlIG5ldmVyIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS4KJiM0MzsJCSAqLwomIzQzOwkJdTMyIHR4X2Ryb3BzOwomIzQzOwkJdTMyIHR4X2Jyb2FkY2FzdDsKJiM0MzsJCXUzMiB0eF9tdWx0aWNhc3Q7CiYjNDM7CQl1MzIgdHhfcnVudDsKJiM0MzsJCXUzMiB0eF9sb25nOwomIzQzOwkJdTY0IHR4X3J1bnQ2NDsKJiM0MzsJCXUzMiByeF9kcm9wczsKJiM0MzsJCXUzMiByeF9icm9hZGNhc3Q7CiYjNDM7CQl1MzIgcnhfbXVsdGljYXN0OwomIzQzOwkJdTMyIHJ4X2Vycm9yczsKJiM0MzsJCXUzMiByeF9jcmNfZXJyb3I7CiYjNDM7CQl1MzIgcnhfb3Zlcl9lcnJvcnM7CiYjNDM7CQl1MzIgcnhfZnJhZ21lbnQ7CiYjNDM7CQl1MzIgcnhfamFiYmVyOwomIzQzOwkJdTMyIHJ4X3J1bnQ7CiYjNDM7CQl1MzIgcnhfbG9uZzsKJiM0MzsJCXU2NCByeF9ydW50NjQ7CiYjNDM7CX0gbWliX3ByZXY7CiB9OwogCiBlbnVtIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGFpcm9oYV9ldGguY2AgYW5kIGBhaXJvaGFfZXRoLmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGhvdyBoYXJkd2FyZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkLiBUaGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIGBtaWJfcHJldmAgc3RydWN0LiBSaWdodCwgdGhhdCYjMzk7cyB0byB0cmFjayBwcmV2aW91cyAzMi1iaXQgY291bnRlciB2YWx1ZXMgYW5kIGNhbGN1bGF0ZSBkZWx0YXMgdG8gaGFuZGxlIGNvdW50ZXIgd3JhcC1hcm91bmQsIHN0YW5kYXJkIHByYWN0aWNlIGZvciB0aGVzZSBzb3J0cyBvZiB0aGluZ3MuIFRoZSBgYWlyb2hhX2ZlX2luaXRgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgbW9kaWZpZWQuIFRoZXkmIzM5O3JlIGNsZWFyaW5nIHRoZSBNSUIgY291bnRlcnMgb24gaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLgoKV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoZXkgKnJlbW92ZWQqIHRoZSBNSUIgY291bnRlciBjbGVhcmluZyBmcm9tIGBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzYC4gVGhlIG9sZCBjb2RlIHdhcyBjYWxsaW5nIGBhaXJvaGFfZGV2X2dldF9od19zdGF0c2AgYW5kIHJlc2V0dGluZyBjb3VudGVycy4gTm93LCBgYWlyb2hhX3VwZGF0ZV9od19zdGF0c2AgaXMganVzdCB1cGRhdGluZyBzdGF0cyBmb3IgYSAqc2luZ2xlKiBkZXZpY2UuIFRoZXkgYXJlIGFjY3VtdWxhdGluZyBkZWx0YXMgZm9yIDMyLWJpdCBjb3VudGVycywgYW5kIHJlYWRpbmcgdGhlIDY0LWJpdCBjb3VudGVycyBkaXJlY3RseS4gU28sIHdlIGFyZSBhY2N1bXVsYXRpbmcgdGhlIHZhbHVlcywgYW5kIG5vdCByZXNldHRpbmcgdGhlIGNvdW50ZXJzIGF0IGFsbC4gR290IGl0IQoKTm93LCBBaXJvaGEuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZXRoZXJuZXQgZHJpdmVyLCByaWdodD8gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGVzZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIGFyZW4mIzM5O3QgdW5sZXNzIHdlIGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uIGZvciB0aGUgQWlyb2hhIFNvQywgd2hpY2ggaXMgdXN1YWxseSBhIGxvbmcgc2hvdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlci4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgcHJvYmVkLCBzZWUgaWYgaXQgaXMgaW5zdGFudGlhdGVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX2V0aF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLgoKKipFeGFtaW5pbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlciBpbml0aWFsaXplcy4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIGFzIGFsd2F5cywgaXMgd2l0aCB0aGUgcHJvYmUgZnVuY3Rpb24uIExldCYjMzk7cyBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBUaGF0IHdvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYC4gTXkgaW5zdGluY3QgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIHdpbGwgaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCwgcmVzb3VyY2UgYWxsb2NhdGlvbiB0YWtlcyBwbGFjZSwgYW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBicm91Z2h0IG9ubGluZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSBBaXJvaGEtc3BlY2lmaWMgcXVpcmtzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCBgYWlyb2hhX2V0aC5jYCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTE1NDI9c3RhdGljIGludCBhaXJvaGFfcWRtYV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTU1LVx0aWYgKElTX0VSUihxZG1hLVx1MDAzZXJlZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU2Olx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXHUwMDNlZGV2LCBQVFJfRVJSKHFkbWEtXHUwMDNlcmVncyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1NTctXHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBpb21hcCBxZG1hJWQgcmVnc1xcblwmIzM0OywgaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzM3Nj1zdGF0aWMgaW50IGFpcm9oYV9yZWdpc3Rlcl9nZG1fZGV2aWNlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQwNTpzdGF0aWMgaW50IGFpcm9oYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MjktXHRpZiAoSVNfRVJSKGV0aC1cdTAwM2VmZV9yZWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzMDpcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZXRoLVx1MDAzZWRldiwgUFRSX0VSUihldGgtXHUwMDNlZmVfcmVncyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MzEtXHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBpb21hcCBmZSByZWdzXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NzA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3MTpcdC5wcm9iZSA9IGFpcm9oYV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc3Mi1cdC5yZW1vdmUgPSBhaXJvaGFfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0JiMzOTtzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIHdoaWNoIGlzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGhlYXZpbHkgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBtb3JlIGFjY3VyYXRlbHksIHRoZSBkZXZpY2UgdHJlZSBub2RlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBoYXJkd2FyZS4gVGhlIGRyaXZlciYjMzk7cyBpbnRlbmRlZCBmb3IgYW4gQWlyb2hhIFNvQywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgaXQmIzM5O3MgaGlnaGx5IHVubGlrZWx5IHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgdG91Y2hlZCB1bmxlc3MgdGhlcmUmIzM5O3MgYSAqdmVyeSogc3BlY2lmaWMgbWFjaGluZSB0eXBlIGVtdWxhdGluZyB0aGF0IHBhcnRpY3VsYXIgQWlyb2hhIFNvQy4KCk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIGV4aXN0aW5nIFFFTVUgbWFjaGluZSB0eXBlcy4gQWlyb2hhLCBhcyBJIHJlY2FsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IHRoYXQgbWFrZXMgbmV0d29ya2luZyBTb0NzLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIHRoZSBFTjc1MjMgb3IgRU43NTgxLiBJIGltbWVkaWF0ZWx5IHdvbmRlciBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgdGhlc2UgY2hpcHMuIE5vcGUsIG5vdCB0aGF0IEkgY2FuIGZpbmQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGFuZCB0aGVyZSYjMzk7cyBubyBzdWl0YWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24sIEkgY2FuIGFsbW9zdCBndWFyYW50ZWUgdGhpcyBjb2RlIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aG91Z2guCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgbXkgbG9naWMuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYC4gUmlnaHQsIGl0JiMzOTtzIGFuIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGFuZCBpdHMgb3BlcmF0aW9uIHJlbGllcyBvbiBNTUlPIHJlZ2lzdGVycyBsaWtlIGBldGgtJmd0O2ZlX3JlZ3NgIGFuZCBgcWRtYS0mZ3Q7cmVnc2AuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGVjZW50IGVtdWxhdG9yLCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3b24mIzM5O3QgYmUgY2FsbGVkLCBvciBpdCYjMzk7bGwgZmFpbCBlYXJseSBvbiBpbiB0aGUgcHJvY2Vzcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGxpa2UgYGFpcm9oYV91cGRhdGVfaHdfc3RhdHNgIGFuZCBgYWlyb2hhX2ZlX2luaXRgIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gVGhpcyBtZWFucyB0aGVyZSBpcyBubyB3YXkgdG8gcmVhY2ggdGhpcyBpbiBHQ0Ugb3IgUUVNVSBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBmYWxzZSwgYW5kIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBkb2N1bWVudCB0aGlzIHJhdGlvbmFsZSB0aG9yb3VnaGx5IHNvIHRoYXQgb3RoZXIgZW5naW5lZXJzIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMzo1NDoxMS4zODA2MzAxOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgyNzQyMzMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhcmR3YXJlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBsb2dpYyBpbiB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0MgaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgTU1JTyByZWdpc3RlcnMuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuMzgwNjM3MTc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUxNzIzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMjM6NTQ6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uMmQwMzJjYzZkZmNhZGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5AQCAtNDkzLDYgKzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiBcXG4gc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiB7XFxuK1xcdGludCBpO1xcbitcXG4gXFx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcXG4gXFxuIFxcdC8qIFBTRSBJUSByZXNlcnZlICovXFxuQEAgLTU4Niw2ICs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiBcXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cXG4gXFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbiBcXG4rXFx0LyogQ2xlYXIgTUlCIGNvdW50ZXJzIHRvIGVzdGFibGlzaCBjbGVhbiBiYXNlbGluZSBmb3IgZGVsdGEgdHJhY2tpbmcuXFxuK1xcdCAqIFRoaXMgcHJldmVudHMgc3B1cmlvdXMgc3RhdGlzdGljcyBmcm9tIHByZS1kcml2ZXIgYWN0aXZpdHkgKGUuZy4sXFxuK1xcdCAqIGtleGVjLCBkcml2ZXIgcmViaW5kLCB3YXJtIHJlYm9vdCkgb24gZmlyc3QgcG9sbC5cXG4rXFx0ICovXFxuK1xcdGZvciAoaSA9IEFJUk9IQV9HRE0xX0lEWDsgaSBcXHUwMDNjPSBBSVJPSEFfR0RNNF9JRFg7IGkrKylcXG4rXFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKGkpLFxcbitcXHRcXHRcXHQgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spO1xcbitcXG4gXFx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XFxuIH1cXG4gXFxuQEAgLTE2ODYsMTEgKzE2OTYsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSlcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhaXJvaGFfZGV2X2dldF9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4rc3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbiBcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuIFxcdHUzMiB2YWwsIGkgPSAwO1xcbitcXHR1NjQgdG1wLCBwcmV2O1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2VzdGF0c19sb2NrKTtcXG4gXFxuIFxcdC8qIFJlYWQgcmVsZXZhbnQgTUlCIGZvciBHRE0gd2l0aCBtdWx0aXBsZSBwb3J0IGF0dGFjaGVkICovXFxuIFxcdGlmIChwb3J0LVxcdTAwM2VpZCA9PSBBSVJPSEFfR0RNM19JRFggfHwgcG9ydC1cXHUwMDNlaWQgPT0gQUlST0hBX0dETTRfSURYKVxcbkBAIC0xNzAxLDE1MiArMTcxNCwxOTAgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXFxuIFxcbiBcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZkZXYtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4gXFxuLVxcdC8qIFRYICovXFxuK1xcdC8qIFRYIC0gNjQtYml0IEgrTCByZWdpc3RlcnM6IGh3IGFjY3VtdWxhdGVzIHRoZSB0b3RhbCwgcmVhZCBkaXJlY3RseS5cXG4rXFx0ICogVXNlIGxvY2FsIHZhcmlhYmxlIHRvIHByZXZlbnQgcmVhZGVycyBmcm9tIHNlZWluZyBpbnRlcm1lZGlhdGUgdmFsdWVzLlxcbitcXHQgKiBDbGFtcCB0byBwcmV2ZW50IHJlZ3Jlc3Npb24gZnJvbSB0b3JuIHJlYWRzIGJldHdlZW4gSCBhbmQgTC5cXG4rXFx0ICovXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfT0tfUEtUX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHMgKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdC8qIFRYIC0gMzItYml0IHJlZ2lzdGVyczogYWNjdW11bGF0ZSBkZWx0YSB0byBoYW5kbGUgd3JhcC1hcm91bmQuICovXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHMgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2Ryb3BzICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfYnJvYWRjYXN0ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX01DX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbXVsdGljYXN0KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9SVU5UX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0ICs9XFxuK1xcdFxcdCh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCA9IHZhbDtcXG4gXFxuK1xcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xcbitcXHR0bXAgPSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSB0bXA7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEyN19DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w1MTFfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0xPTkdfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyA9IHZhbDtcXG4gXFxuIFxcdC8qIFJYICovXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHM7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX1BLVF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9va19ieXRlcyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9va19ieXRlcyArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHMgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BzICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZHJvcHMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzID0gdmFsO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfQkNfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9icm9hZGNhc3QpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX01DX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9lcnJvcnMgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Vycm9ycyA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0NSQ19FUlJfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9jcmNfZXJyb3IgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9jcmNfZXJyb3IpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvciA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT1ZFUkZMT1dfRFJPUF9DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9vdmVyX2Vycm9ycyArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfb3Zlcl9lcnJvcnMgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2ZyYWdtZW50ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9mcmFnbWVudCArPSAodTMyKSh2YWwgLSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2ZyYWdtZW50KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0pBQkJFUl9DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9qYWJiZXIgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2phYmJlciArPSAodTMyKSh2YWwgLSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2phYmJlcik7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyID0gdmFsO1xcbiBcXG4gXFx0aSA9IDA7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX1JVTlRfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50NjQgKz1cXG4rXFx0XFx0KHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50ID0gdmFsO1xcbiBcXG4rXFx0LyogcnhfbGVuWzBdOiBSVU5UICgzMi1iaXQsIGRlbHRhKSArIEU2NCAoNjQtYml0LCBhYnNvbHV0ZSkuICovXFxuK1xcdHRtcCA9IGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudDY0O1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9FNjRfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IHRtcDtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w2NF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMjdfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDI1NV9DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9MKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDtcXG4gXFxuIFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZkZXYtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbi1cXHRpbnQgaTtcXG4tXFxuLVxcdHNwaW5fbG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlc3RhdHNfbG9jayk7XFxuLVxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShwb3J0LVxcdTAwM2VkZXZzKTsgaSsrKSB7XFxuLVxcdFxcdGlmIChwb3J0LVxcdTAwM2VkZXZzW2ldKVxcbi1cXHRcXHRcXHRhaXJvaGFfZGV2X2dldF9od19zdGF0cyhwb3J0LVxcdTAwM2VkZXZzW2ldKTtcXG4tXFx0fVxcbi1cXG4tXFx0LyogUmVzZXQgTUlCIGNvdW50ZXJzICovXFxuLVxcdGFpcm9oYV9mZV9zZXQoZGV2LVxcdTAwM2VldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKHBvcnQtXFx1MDAzZWlkKSxcXG4tXFx0XFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2VzdGF0c19sb2NrKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbmluZGV4IGY2ZDAxYThlOGRhMTM5Li5mZTkzNGY5ZmZlOGExMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbkBAIC0yNDUsNiArMjQ1LDMzIEBAIHN0cnVjdCBhaXJvaGFfaHdfc3RhdHMge1xcbiBcXHR1NjQgcnhfZnJhZ21lbnQ7XFxuIFxcdHU2NCByeF9qYWJiZXI7XFxuIFxcdHU2NCByeF9sZW5bN107XFxuK1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHQvKiBQcmV2aW91cyBIVyByZWdpc3RlciB2YWx1ZXMgZm9yIDMyLWJpdCBjb3VudGVyIGRlbHRhXFxuK1xcdFxcdCAqIHRyYWNraW5nLiBTdG9yaW5nIHRoZSBsYXN0IHNlZW4gdmFsdWUgYW5kIGFjY3VtdWxhdGluZ1xcbitcXHRcXHQgKiAodTMyKShjdXJyIC0gcHJldikgaW50byB0aGUgNjQtYml0IHNvZnR3YXJlIGNvdW50ZXJcXG4rXFx0XFx0ICogaGFuZGxlcyB3cmFwLWFyb3VuZCB0cmFuc3BhcmVudGx5IHZpYSB1bnNpZ25lZCBhcml0aG1ldGljLlxcbitcXHRcXHQgKiB0eF9ydW50NjQvcnhfcnVudDY0IGhvbGQgdGhlIHJ1bm5pbmcgc3VtIG9mIHJ1bnQgZGVsdGFzLlxcbitcXHRcXHQgKiBUaGVzZSBmaWVsZHMgYXJlIG5ldmVyIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHUzMiB0eF9kcm9wcztcXG4rXFx0XFx0dTMyIHR4X2Jyb2FkY2FzdDtcXG4rXFx0XFx0dTMyIHR4X211bHRpY2FzdDtcXG4rXFx0XFx0dTMyIHR4X3J1bnQ7XFxuK1xcdFxcdHUzMiB0eF9sb25nO1xcbitcXHRcXHR1NjQgdHhfcnVudDY0O1xcbitcXHRcXHR1MzIgcnhfZHJvcHM7XFxuK1xcdFxcdHUzMiByeF9icm9hZGNhc3Q7XFxuK1xcdFxcdHUzMiByeF9tdWx0aWNhc3Q7XFxuK1xcdFxcdHUzMiByeF9lcnJvcnM7XFxuK1xcdFxcdHUzMiByeF9jcmNfZXJyb3I7XFxuK1xcdFxcdHUzMiByeF9vdmVyX2Vycm9ycztcXG4rXFx0XFx0dTMyIHJ4X2ZyYWdtZW50O1xcbitcXHRcXHR1MzIgcnhfamFiYmVyO1xcbitcXHRcXHR1MzIgcnhfcnVudDtcXG4rXFx0XFx0dTMyIHJ4X2xvbmc7XFxuK1xcdFxcdHU2NCByeF9ydW50NjQ7XFxuK1xcdH0gbWliX3ByZXY7XFxuIH07XFxuIFxcbiBlbnVtIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuOTA2NjEzMzY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzMwMTQzMDg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhcmR3YXJlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBsb2dpYyBpbiB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0MgaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgTU1JTyByZWdpc3RlcnMuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uMmQwMzJjYzZkZmNhZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtNDkzLDYgKzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIFxuIHN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbiB7XG4rXHRpbnQgaTtcbitcbiBcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XG4gXG4gXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuQEAgLTU4Niw2ICs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXG4gXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XG4gXG4rXHQvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy5cbitcdCAqIFRoaXMgcHJldmVudHMgc3B1cmlvdXMgc3RhdGlzdGljcyBmcm9tIHByZS1kcml2ZXIgYWN0aXZpdHkgKGUuZy4sXG4rXHQgKiBrZXhlYywgZHJpdmVyIHJlYmluZCwgd2FybSByZWJvb3QpIG9uIGZpcnN0IHBvbGwuXG4rXHQgKi9cbitcdGZvciAoaSA9IEFJUk9IQV9HRE0xX0lEWDsgaSBcdTAwM2M9IEFJUk9IQV9HRE00X0lEWDsgaSsrKVxuK1x0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIoaSksXG4rXHRcdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbitcbiBcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuIH1cbiBcbkBAIC0xNjg2LDExICsxNjk2LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuK3N0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXG4ge1xuIFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuIFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG4gXHR1MzIgdmFsLCBpID0gMDtcbitcdHU2NCB0bXAsIHByZXY7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2cG9ydC1cdTAwM2VzdGF0c19sb2NrKTtcbiBcbiBcdC8qIFJlYWQgcmVsZXZhbnQgTUlCIGZvciBHRE0gd2l0aCBtdWx0aXBsZSBwb3J0IGF0dGFjaGVkICovXG4gXHRpZiAocG9ydC1cdTAwM2VpZCA9PSBBSVJPSEFfR0RNM19JRFggfHwgcG9ydC1cdTAwM2VpZCA9PSBBSVJPSEFfR0RNNF9JRFgpXG5AQCAtMTcwMSwxNTIgKzE3MTQsMTkwIEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuIFxuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFxuLVx0LyogVFggKi9cbitcdC8qIFRYIC0gNjQtYml0IEgrTCByZWdpc3RlcnM6IGh3IGFjY3VtdWxhdGVzIHRoZSB0b3RhbCwgcmVhZCBkaXJlY3RseS5cbitcdCAqIFVzZSBsb2NhbCB2YXJpYWJsZSB0byBwcmV2ZW50IHJlYWRlcnMgZnJvbSBzZWVpbmcgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbitcdCAqIENsYW1wIHRvIHByZXZlbnQgcmVncmVzc2lvbiBmcm9tIHRvcm4gcmVhZHMgYmV0d2VlbiBIIGFuZCBMLlxuK1x0ICovXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19QS1RfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHMgKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9va19wa3RzID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHQvKiBUWCAtIDMyLWJpdCByZWdpc3RlcnM6IGFjY3VtdWxhdGUgZGVsdGEgdG8gaGFuZGxlIHdyYXAtYXJvdW5kLiAqL1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcyArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9icm9hZGNhc3QgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Jyb2FkY2FzdCArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfYnJvYWRjYXN0KTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9NQ19DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCArPSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QpO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NCArPVxuK1x0XHQodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCA9IHZhbDtcbiBcbitcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xuK1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gdG1wO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMjU1X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9sb25nKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9sb25nID0gdmFsO1xuIFxuIFx0LyogUlggKi9cbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cztcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX1BLVF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cyArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcyArPSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfZHJvcHMgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfYnJvYWRjYXN0ID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTUNfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9tdWx0aWNhc3QgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZXJyb3JzKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9jcmNfZXJyb3IgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfY3JjX2Vycm9yID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PVkVSRkxPV19EUk9QX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb3Zlcl9lcnJvcnMgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfZnJhZ21lbnQgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2ZyYWdtZW50ICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9qYWJiZXIgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2phYmJlciArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9qYWJiZXIgPSB2YWw7XG4gXG4gXHRpID0gMDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NCArPVxuK1x0XHQodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCA9IHZhbDtcbiBcbitcdC8qIHJ4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xuK1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gdG1wO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNTExX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDtcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNmRldi1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXG4te1xuLVx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuLVx0aW50IGk7XG4tXG4tXHRzcGluX2xvY2soXHUwMDI2cG9ydC1cdTAwM2VzdGF0c19sb2NrKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaSsrKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWRldnNbaV0pXG4tXHRcdFx0YWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC1cdTAwM2VkZXZzW2ldKTtcbi1cdH1cbi1cbi1cdC8qIFJlc2V0IE1JQiBjb3VudGVycyAqL1xuLVx0YWlyb2hhX2ZlX3NldChkZXYtXHUwMDNlZXRoLCBSRUdfRkVfR0RNX01JQl9DTEVBUihwb3J0LVx1MDAzZWlkKSxcbi1cdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmNmQwMWE4ZThkYTEzOS4uZmU5MzRmOWZmZThhMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtMjQ1LDYgKzI0NSwzMyBAQCBzdHJ1Y3QgYWlyb2hhX2h3X3N0YXRzIHtcbiBcdHU2NCByeF9mcmFnbWVudDtcbiBcdHU2NCByeF9qYWJiZXI7XG4gXHR1NjQgcnhfbGVuWzddO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0LyogUHJldmlvdXMgSFcgcmVnaXN0ZXIgdmFsdWVzIGZvciAzMi1iaXQgY291bnRlciBkZWx0YVxuK1x0XHQgKiB0cmFja2luZy4gU3RvcmluZyB0aGUgbGFzdCBzZWVuIHZhbHVlIGFuZCBhY2N1bXVsYXRpbmdcbitcdFx0ICogKHUzMikoY3VyciAtIHByZXYpIGludG8gdGhlIDY0LWJpdCBzb2Z0d2FyZSBjb3VudGVyXG4rXHRcdCAqIGhhbmRsZXMgd3JhcC1hcm91bmQgdHJhbnNwYXJlbnRseSB2aWEgdW5zaWduZWQgYXJpdGhtZXRpYy5cbitcdFx0ICogdHhfcnVudDY0L3J4X3J1bnQ2NCBob2xkIHRoZSBydW5uaW5nIHN1bSBvZiBydW50IGRlbHRhcy5cbitcdFx0ICogVGhlc2UgZmllbGRzIGFyZSBuZXZlciByZXBvcnRlZCB0byB1c2Vyc3BhY2UuXG4rXHRcdCAqL1xuK1x0XHR1MzIgdHhfZHJvcHM7XG4rXHRcdHUzMiB0eF9icm9hZGNhc3Q7XG4rXHRcdHUzMiB0eF9tdWx0aWNhc3Q7XG4rXHRcdHUzMiB0eF9ydW50O1xuK1x0XHR1MzIgdHhfbG9uZztcbitcdFx0dTY0IHR4X3J1bnQ2NDtcbitcdFx0dTMyIHJ4X2Ryb3BzO1xuK1x0XHR1MzIgcnhfYnJvYWRjYXN0O1xuK1x0XHR1MzIgcnhfbXVsdGljYXN0O1xuK1x0XHR1MzIgcnhfZXJyb3JzO1xuK1x0XHR1MzIgcnhfY3JjX2Vycm9yO1xuK1x0XHR1MzIgcnhfb3Zlcl9lcnJvcnM7XG4rXHRcdHUzMiByeF9mcmFnbWVudDtcbitcdFx0dTMyIHJ4X2phYmJlcjtcbitcdFx0dTMyIHJ4X3J1bnQ7XG4rXHRcdHUzMiByeF9sb25nO1xuK1x0XHR1NjQgcnhfcnVudDY0O1xuK1x0fSBtaWJfcHJldjtcbiB9O1xuIFxuIGVudW0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuOTA2NjE1MTg4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MTgwMjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX2V0aC5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBob3cgaGFyZHdhcmUgc3RhdGlzdGljcyBhcmUgaGFuZGxlZC4gVGhleSdyZSBpbnRyb2R1Y2luZyBhIGBtaWJfcHJldmAgc3RydWN0LiBSaWdodCwgdGhhdCdzIHRvIHRyYWNrIHByZXZpb3VzIDMyLWJpdCBjb3VudGVyIHZhbHVlcyBhbmQgY2FsY3VsYXRlIGRlbHRhcyB0byBoYW5kbGUgY291bnRlciB3cmFwLWFyb3VuZCwgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5ncy4gVGhlIGBhaXJvaGFfZmVfaW5pdGAgZnVuY3Rpb24gaXMgYWxzbyBiZWluZyBtb2RpZmllZC4gVGhleSdyZSBjbGVhcmluZyB0aGUgTUlCIGNvdW50ZXJzIG9uIGluaXRpYWxpemF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoZXkgKnJlbW92ZWQqIHRoZSBNSUIgY291bnRlciBjbGVhcmluZyBmcm9tIGBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzYC4gVGhlIG9sZCBjb2RlIHdhcyBjYWxsaW5nIGBhaXJvaGFfZGV2X2dldF9od19zdGF0c2AgYW5kIHJlc2V0dGluZyBjb3VudGVycy4gTm93LCBgYWlyb2hhX3VwZGF0ZV9od19zdGF0c2AgaXMganVzdCB1cGRhdGluZyBzdGF0cyBmb3IgYSAqc2luZ2xlKiBkZXZpY2UuIFRoZXkgYXJlIGFjY3VtdWxhdGluZyBkZWx0YXMgZm9yIDMyLWJpdCBjb3VudGVycywgYW5kIHJlYWRpbmcgdGhlIDY0LWJpdCBjb3VudGVycyBkaXJlY3RseS4gU28sIHdlIGFyZSBhY2N1bXVsYXRpbmcgdGhlIHZhbHVlcywgYW5kIG5vdCByZXNldHRpbmcgdGhlIGNvdW50ZXJzIGF0IGFsbC4gR290IGl0IVxuXG5Ob3csIEFpcm9oYS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBldGhlcm5ldCBkcml2ZXIsIHJpZ2h0PyBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgb2Z0ZW4gYXJlbid0IHVubGVzcyB3ZSBoYXZlIHNvbWUgc29ydCBvZiBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIEFpcm9oYSBTb0MsIHdoaWNoIGlzIHVzdWFsbHkgYSBsb25nIHNob3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgcHJvYmVkLCBzZWUgaWYgaXQgaXMgaW5zdGFudGlhdGVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTguNDc4NDE5Njg2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDYxNjYzNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhX2V0aF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMzo1NDoxOC44OTkwNDQxMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4NzI5ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipFeGFtaW5pbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKlxuXG5SaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyIGluaXRpYWxpemVzLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB3aXRoIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0J3MgbmF2aWdhdGUgdG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlci4gVGhhdCB3b3VsZCBiZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY2AuIE15IGluc3RpbmN0IGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aWxsIGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgaXMgZGV0ZWN0ZWQsIHJlc291cmNlIGFsbG9jYXRpb24gdGFrZXMgcGxhY2UsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgQWlyb2hhLXNwZWNpZmljIHF1aXJrcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCBuZXR3b3JraW5nIHN0YWNrLiBMZXQncyBzZWUgd2hhdCBgYWlyb2hhX2V0aC5jYCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDYwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjEuOTI3Nzc2MDM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTgyOTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0xNTQyPXN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTU1LVxcdGlmIChJU19FUlIocWRtYS1cXHUwMDNlcmVncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU2OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGV0aC1cXHUwMDNlZGV2LCBQVFJfRVJSKHFkbWEtXFx1MDAzZXJlZ3MpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU1Ny1cXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gaW9tYXAgcWRtYSVkIHJlZ3NcXFxcblxcXCIsIGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzM3Nj1zdGF0aWMgaW50IGFpcm9oYV9yZWdpc3Rlcl9nZG1fZGV2aWNlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQwNTpzdGF0aWMgaW50IGFpcm9oYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MjktXFx0aWYgKElTX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzMDpcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXFx1MDAzZWRldiwgUFRSX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQzMS1cXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gaW9tYXAgZmUgcmVnc1xcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NzA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NzE6XFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc3Mi1cXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjEuOTgzOTYzODA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyNDAzNjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQncyBhIGBwbGF0Zm9ybV9kcml2ZXJgLCB3aGljaCBpcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhhdCBtZWFucyBpdCdzIGhlYXZpbHkgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBtb3JlIGFjY3VyYXRlbHksIHRoZSBkZXZpY2UgdHJlZSBub2RlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBoYXJkd2FyZS4gVGhlIGRyaXZlcidzIGludGVuZGVkIGZvciBhbiBBaXJvaGEgU29DLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBpdCdzIGhpZ2hseSB1bmxpa2VseSB0aGlzIGNvZGUgd2lsbCBldmVuIGJlIHRvdWNoZWQgdW5sZXNzIHRoZXJlJ3MgYSAqdmVyeSogc3BlY2lmaWMgbWFjaGluZSB0eXBlIGVtdWxhdGluZyB0aGF0IHBhcnRpY3VsYXIgQWlyb2hhIFNvQy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgZXhpc3RpbmcgUUVNVSBtYWNoaW5lIHR5cGVzLiBBaXJvaGEsIGFzIEkgcmVjYWxsLCBpcyBhIE1lZGlhVGVrIHN1YnNpZGlhcnkgdGhhdCBtYWtlcyBuZXR3b3JraW5nIFNvQ3MsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgdGhlIEVONzUyMyBvciBFTjc1ODEuIEkgaW1tZWRpYXRlbHkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZXNlIGNoaXBzLiBOb3BlLCBub3QgdGhhdCBJIGNhbiBmaW5kLlxuXG5HaXZlbiB0aGF0IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgYW5kIHRoZXJlJ3Mgbm8gc3VpdGFibGUgc29mdHdhcmUgZW11bGF0aW9uLCBJIGNhbiBhbG1vc3QgZ3VhcmFudGVlIHRoaXMgY29kZSB3b24ndCBiZSByZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aG91Z2guXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBteSBsb2dpYy4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgLiBSaWdodCwgaXQncyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgaXRzIG9wZXJhdGlvbiByZWxpZXMgb24gTU1JTyByZWdpc3RlcnMgbGlrZSBgZXRoLVx1MDAzZWZlX3JlZ3NgIGFuZCBgcWRtYS1cdTAwM2VyZWdzYC4gV2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZWNlbnQgZW11bGF0b3IsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgb3IgaXQnbGwgZmFpbCBlYXJseSBvbiBpbiB0aGUgcHJvY2Vzcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGxpa2UgYGFpcm9oYV91cGRhdGVfaHdfc3RhdHNgIGFuZCBgYWlyb2hhX2ZlX2luaXRgIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gVGhpcyBtZWFucyB0aGVyZSBpcyBubyB3YXkgdG8gcmVhY2ggdGhpcyBpbiBHQ0Ugb3IgUUVNVSBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gaXMgY2xlYXIuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gZmFsc2UsIGFuZCBJJ2xsIG1ha2Ugc3VyZSB0byBkb2N1bWVudCB0aGlzIHJhdGlvbmFsZSB0aG9yb3VnaGx5IHNvIHRoYXQgb3RoZXIgZW5naW5lZXJzIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjkuMjA4MDAyNDU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsqc9v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 23:31:55 +0000 UTC FinishedAt: 2026-07-06 23:54:30 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuaW5kZXggNTkwMDFmZDRiNmY3NDAuLjJkMDMyY2M2ZGZjYWRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xuQEAgLTQ5Myw2ICYjNDM7NDkzLDggQEAgc3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4gXG4gc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIHtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4gXHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xuIFxuIFx0LyogUFNFIElRIHJlc2VydmUgKi9cbkBAIC01ODYsNiAmIzQzOzU4OCwxNCBAQCBzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4gXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbiBcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTtcbiBcbiYjNDM7XHQvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy5cbiYjNDM7XHQgKiBUaGlzIHByZXZlbnRzIHNwdXJpb3VzIHN0YXRpc3RpY3MgZnJvbSBwcmUtZHJpdmVyIGFjdGl2aXR5IChlLmcuLFxuJiM0MztcdCAqIGtleGVjLCBkcml2ZXIgcmViaW5kLCB3YXJtIHJlYm9vdCkgb24gZmlyc3QgcG9sbC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmb3IgKGkgPSBBSVJPSEFfR0RNMV9JRFg7IGkgXHUwMDNjPSBBSVJPSEFfR0RNNF9JRFg7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKGkpLFxuJiM0MztcdFx0XHQgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spO1xuJiM0MztcbiBcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuIH1cbiBcbkBAIC0xNjg2LDExICYjNDM7MTY5NiwxNCBAQCBzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zdG9wX25hcGkoc3RydWN0IGFpcm9oYV9xZG1hICpxZG1hKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBhaXJvaGFfZGV2X2dldF9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcbiYjNDM7c3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVx1MDAzZXBvcnQ7XG4gXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVx1MDAzZWV0aDtcbiBcdHUzMiB2YWwsIGkgPSAwO1xuJiM0MztcdHU2NCB0bXAsIHByZXY7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZwb3J0LVx1MDAzZXN0YXRzX2xvY2spO1xuIFxuIFx0LyogUmVhZCByZWxldmFudCBNSUIgZm9yIEdETSB3aXRoIG11bHRpcGxlIHBvcnQgYXR0YWNoZWQgKi9cbiBcdGlmIChwb3J0LVx1MDAzZWlkID09IEFJUk9IQV9HRE0zX0lEWCB8fCBwb3J0LVx1MDAzZWlkID09IEFJUk9IQV9HRE00X0lEWClcbkBAIC0xNzAxLDE1MiAmIzQzOzE3MTQsMTkwIEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuIFxuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFxuLVx0LyogVFggKi9cbiYjNDM7XHQvKiBUWCAtIDY0LWJpdCBIJiM0MztMIHJlZ2lzdGVyczogaHcgYWNjdW11bGF0ZXMgdGhlIHRvdGFsLCByZWFkIGRpcmVjdGx5LlxuJiM0MztcdCAqIFVzZSBsb2NhbCB2YXJpYWJsZSB0byBwcmV2ZW50IHJlYWRlcnMgZnJvbSBzZWVpbmcgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiYjNDM7XHQgKiBDbGFtcCB0byBwcmV2ZW50IHJlZ3Jlc3Npb24gZnJvbSB0b3JuIHJlYWRzIGJldHdlZW4gSCBhbmQgTC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHQvKiBUWCAtIDMyLWJpdCByZWdpc3RlcnM6IGFjY3VtdWxhdGUgZGVsdGEgdG8gaGFuZGxlIHdyYXAtYXJvdW5kLiAqL1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Jyb2FkY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX01DX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0ICYjNDM7PVxuJiM0MztcdFx0KHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9ydW50ID0gdmFsO1xuIFxuJiM0MztcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgJiM0MzsgRTY0ICg2NC1iaXQsIGFic29sdXRlKS4gKi9cbiYjNDM7XHR0bXAgPSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0O1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IHRtcDtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2xvbmcgPSB2YWw7XG4gXG4gXHQvKiBSWCAqL1xuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cztcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cyA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfQllURV9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9va19ieXRlcyA9IG1heCh0bXAsIHByZXYpO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZHJvcHMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Jyb2FkY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX01DX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbXVsdGljYXN0ICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X211bHRpY2FzdCk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVJST1JfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2NyY19lcnJvciAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvciA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT1ZFUkZMT1dfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMpO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0ZSQUdfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2ZyYWdtZW50KTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfamFiYmVyICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyKTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyID0gdmFsO1xuIFxuIFx0aSA9IDA7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9SVU5UX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NCAmIzQzOz1cbiYjNDM7XHRcdCh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50KTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCA9IHZhbDtcbiBcbiYjNDM7XHQvKiByeF9sZW5bMF06IFJVTlQgKDMyLWJpdCwgZGVsdGEpICYjNDM7IEU2NCAoNjQtYml0LCBhYnNvbHV0ZSkuICovXG4mIzQzO1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wICYjNDM7PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSB0bXA7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuJiM0MztcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsO1xuJiM0MztcdHRtcCB8PSB2YWw7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbiYjNDM7XHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4mIzQzO1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuJiM0MztcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHR0bXAgfD0gdmFsO1xuJiM0MztcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7XG4gXG4mIzQzO1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiYjNDM7XHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7XG4mIzQzO1x0dG1wIHw9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2xvbmcgPSB2YWw7XG4gXG4gXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuLXtcbi1cdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbi1cdGludCBpO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXHUwMDNlZGV2cyk7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWRldnNbaV0pXG4tXHRcdFx0YWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC1cdTAwM2VkZXZzW2ldKTtcbi1cdH1cbi1cbi1cdC8qIFJlc2V0IE1JQiBjb3VudGVycyAqL1xuLVx0YWlyb2hhX2ZlX3NldChkZXYtXHUwMDNlZXRoLCBSRUdfRkVfR0RNX01JQl9DTEVBUihwb3J0LVx1MDAzZWlkKSxcbi1cdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmNmQwMWE4ZThkYTEzOS4uZmU5MzRmOWZmZThhMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtMjQ1LDYgJiM0MzsyNDUsMzMgQEAgc3RydWN0IGFpcm9oYV9od19zdGF0cyB7XG4gXHR1NjQgcnhfZnJhZ21lbnQ7XG4gXHR1NjQgcnhfamFiYmVyO1xuIFx0dTY0IHJ4X2xlbls3XTtcbiYjNDM7XG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdC8qIFByZXZpb3VzIEhXIHJlZ2lzdGVyIHZhbHVlcyBmb3IgMzItYml0IGNvdW50ZXIgZGVsdGFcbiYjNDM7XHRcdCAqIHRyYWNraW5nLiBTdG9yaW5nIHRoZSBsYXN0IHNlZW4gdmFsdWUgYW5kIGFjY3VtdWxhdGluZ1xuJiM0MztcdFx0ICogKHUzMikoY3VyciAtIHByZXYpIGludG8gdGhlIDY0LWJpdCBzb2Z0d2FyZSBjb3VudGVyXG4mIzQzO1x0XHQgKiBoYW5kbGVzIHdyYXAtYXJvdW5kIHRyYW5zcGFyZW50bHkgdmlhIHVuc2lnbmVkIGFyaXRobWV0aWMuXG4mIzQzO1x0XHQgKiB0eF9ydW50NjQvcnhfcnVudDY0IGhvbGQgdGhlIHJ1bm5pbmcgc3VtIG9mIHJ1bnQgZGVsdGFzLlxuJiM0MztcdFx0ICogVGhlc2UgZmllbGRzIGFyZSBuZXZlciByZXBvcnRlZCB0byB1c2Vyc3BhY2UuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHUzMiB0eF9kcm9wcztcbiYjNDM7XHRcdHUzMiB0eF9icm9hZGNhc3Q7XG4mIzQzO1x0XHR1MzIgdHhfbXVsdGljYXN0O1xuJiM0MztcdFx0dTMyIHR4X3J1bnQ7XG4mIzQzO1x0XHR1MzIgdHhfbG9uZztcbiYjNDM7XHRcdHU2NCB0eF9ydW50NjQ7XG4mIzQzO1x0XHR1MzIgcnhfZHJvcHM7XG4mIzQzO1x0XHR1MzIgcnhfYnJvYWRjYXN0O1xuJiM0MztcdFx0dTMyIHJ4X211bHRpY2FzdDtcbiYjNDM7XHRcdHUzMiByeF9lcnJvcnM7XG4mIzQzO1x0XHR1MzIgcnhfY3JjX2Vycm9yO1xuJiM0MztcdFx0dTMyIHJ4X292ZXJfZXJyb3JzO1xuJiM0MztcdFx0dTMyIHJ4X2ZyYWdtZW50O1xuJiM0MztcdFx0dTMyIHJ4X2phYmJlcjtcbiYjNDM7XHRcdHUzMiByeF9ydW50O1xuJiM0MztcdFx0dTMyIHJ4X2xvbmc7XG4mIzQzO1x0XHR1NjQgcnhfcnVudDY0O1xuJiM0MztcdH0gbWliX3ByZXY7XG4gfTtcbiBcbiBlbnVtIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMzo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCmluZGV4IDU5MDAxZmQ0YjZmNzQwLi4yZDAzMmNjNmRmY2FkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jCkBAIC00OTMsNiAmIzQzOzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKQogCiBzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpCiB7CiYjNDM7CWludCBpOwomIzQzOwogCWFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7CiAKIAkvKiBQU0UgSVEgcmVzZXJ2ZSAqLwpAQCAtNTg2LDYgJiM0Mzs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKQogCS8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqLwogCWFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfTUNfVkxBTl9FTiwgTUNfVkxBTl9FTl9NQVNLKTsKIAomIzQzOwkvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy4KJiM0MzsJICogVGhpcyBwcmV2ZW50cyBzcHVyaW91cyBzdGF0aXN0aWNzIGZyb20gcHJlLWRyaXZlciBhY3Rpdml0eSAoZS5nLiwKJiM0MzsJICoga2V4ZWMsIGRyaXZlciByZWJpbmQsIHdhcm0gcmVib290KSBvbiBmaXJzdCBwb2xsLgomIzQzOwkgKi8KJiM0MzsJZm9yIChpID0gQUlST0hBX0dETTFfSURYOyBpICZsdDs9IEFJUk9IQV9HRE00X0lEWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIoaSksCiYjNDM7CQkJICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTsKJiM0MzsKIAlyZXR1cm4gYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoZXRoKTsKIH0KIApAQCAtMTY4NiwxMSAmIzQzOzE2OTYsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSkKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KQomIzQzO3N0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCiB7CiAJc3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi0mZ3Q7cG9ydDsKIAlzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LSZndDtldGg7CiAJdTMyIHZhbCwgaSA9IDA7CiYjNDM7CXU2NCB0bXAsIHByZXY7CiYjNDM7CiYjNDM7CXNwaW5fbG9jaygmYW1wO3BvcnQtJmd0O3N0YXRzX2xvY2spOwogCiAJLyogUmVhZCByZWxldmFudCBNSUIgZm9yIEdETSB3aXRoIG11bHRpcGxlIHBvcnQgYXR0YWNoZWQgKi8KIAlpZiAocG9ydC0mZ3Q7aWQgPT0gQUlST0hBX0dETTNfSURYIHx8IHBvcnQtJmd0O2lkID09IEFJUk9IQV9HRE00X0lEWCkKQEAgLTE3MDEsMTUyICYjNDM7MTcxNCwxOTAgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCiAKIAl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7ZGV2LSZndDtzdGF0cy5zeW5jcCk7CiAKLQkvKiBUWCAqLwomIzQzOwkvKiBUWCAtIDY0LWJpdCBIJiM0MztMIHJlZ2lzdGVyczogaHcgYWNjdW11bGF0ZXMgdGhlIHRvdGFsLCByZWFkIGRpcmVjdGx5LgomIzQzOwkgKiBVc2UgbG9jYWwgdmFyaWFibGUgdG8gcHJldmVudCByZWFkZXJzIGZyb20gc2VlaW5nIGludGVybWVkaWF0ZSB2YWx1ZXMuCiYjNDM7CSAqIENsYW1wIHRvIHByZXZlbnQgcmVncmVzc2lvbiBmcm9tIHRvcm4gcmVhZHMgYmV0d2VlbiBIIGFuZCBMLgomIzQzOwkgKi8KJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0czsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfcGt0cyAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy50eF9va19ieXRlczsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X29rX2J5dGVzICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfT0tfQllURV9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfb2tfYnl0ZXMgJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9va19ieXRlcyA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CS8qIFRYIC0gMzItYml0IHJlZ2lzdGVyczogYWNjdW11bGF0ZSBkZWx0YSB0byBoYW5kbGUgd3JhcC1hcm91bmQuICovCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2Ryb3BzICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMudHhfZHJvcHMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfZHJvcHMpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9icm9hZGNhc3QgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9icm9hZGNhc3QgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfYnJvYWRjYXN0KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9NQ19DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X211bHRpY2FzdCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi50eF9ydW50NjQgJiM0Mzs9CiYjNDM7CQkodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQpOwomIzQzOwlkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQgPSB2YWw7CiAKJiM0MzsJLyogdHhfbGVuWzBdOiBSVU5UICgzMi1iaXQsIGRlbHRhKSAmIzQzOyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqLwomIzQzOwl0bXAgPSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0U2NF9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gdG1wOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnR4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnR4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMjU1X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy50eF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w1MTFfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMudHhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy50eF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy50eF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMudHhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnR4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfbG9uZyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYudHhfbG9uZyA9IHZhbDsKIAogCS8qIFJYICovCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHM7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19QS1RfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHMgJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19QS1RfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX3BrdHMgJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9va19wa3RzID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMucnhfb2tfYnl0ZXM7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PS19CWVRFX0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9va19ieXRlcyAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X29rX2J5dGVzICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9kcm9wcyAmIzQzOz0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnJ4X2Ryb3BzICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDsKIAogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfYnJvYWRjYXN0ICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfYnJvYWRjYXN0ID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTUNfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9tdWx0aWNhc3QgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9tdWx0aWNhc3QgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9lcnJvcnMgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfZXJyb3JzKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfY3JjX2Vycm9yICYjNDM7PSAodTMyKSh2YWwgLSBkZXYtJmd0O3N0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfY3JjX2Vycm9yID0gdmFsOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PVkVSRkxPV19EUk9QX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfb3Zlcl9lcnJvcnMgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9vdmVyX2Vycm9ycyAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfZnJhZ21lbnQgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9mcmFnbWVudCAmIzQzOz0gKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7CiAKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9qYWJiZXIgJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfamFiYmVyKTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9qYWJiZXIgPSB2YWw7CiAKIAlpID0gMDsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9SVU5UX0NOVChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfcnVudDY0ICYjNDM7PQomIzQzOwkJKHUzMikodmFsIC0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50KTsKJiM0MzsJZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50ID0gdmFsOwogCiYjNDM7CS8qIHJ4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgJiM0MzsgRTY0ICg2NC1iaXQsIGFic29sdXRlKS4gKi8KJiM0MzsJdG1wID0gZGV2LSZndDtzdGF0cy5taWJfcHJldi5yeF9ydW50NjQ7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9FNjRfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wICYjNDM7PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IHRtcDsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy5yeF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiYjNDM7CXRtcCA9ICgodTY0KXZhbCAmbHQ7Jmx0OyAzMik7CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSAmIzQzOz0gdmFsOwomIzQzOwl0bXAgfD0gdmFsOwomIzQzOwlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gPSBtYXgodG1wLCBwcmV2KTsKIAomIzQzOwlwcmV2ID0gZGV2LSZndDtzdGF0cy5yeF9sZW5baV07CiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDI1NV9DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0wocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJdG1wIHw9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdID0gbWF4KHRtcCwgcHJldik7CiAKJiM0MzsJcHJldiA9IGRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0gocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXSAmIzQzOz0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKJiM0MzsJdG1wID0gKCh1NjQpdmFsICZsdDsmbHQ7IDMyKTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNTExX0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiYjNDM7CXByZXYgPSBkZXYtJmd0O3N0YXRzLnJ4X2xlbltpXTsKIAl2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LSZndDtpZCkpOwotCWRldi0mZ3Q7c3RhdHMucnhfbGVuW2ldICYjNDM7PSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwomIzQzOwl0bXAgPSAoKHU2NCl2YWwgJmx0OyZsdDsgMzIpOwogCXZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtJmd0O2lkKSk7Ci0JZGV2LSZndDtzdGF0cy5yeF9sZW5baSYjNDM7JiM0MztdICYjNDM7PSB2YWw7CiYjNDM7CXRtcCB8PSB2YWw7CiYjNDM7CWRldi0mZ3Q7c3RhdHMucnhfbGVuW2kmIzQzOyYjNDM7XSA9IG1heCh0bXAsIHByZXYpOwogCiAJdmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC0mZ3Q7aWQpKTsKLQlkZXYtJmd0O3N0YXRzLnJ4X2xlbltpJiM0MzsmIzQzO10gJiM0Mzs9IHZhbDsKJiM0MzsJZGV2LSZndDtzdGF0cy5yeF9sZW5baV0gJiM0Mzs9ICh1MzIpKHZhbCAtIGRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbG9uZyk7CiYjNDM7CWRldi0mZ3Q7c3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDsKIAogCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7ZGV2LSZndDtzdGF0cy5zeW5jcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpCi17Ci0Jc3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi0mZ3Q7cG9ydDsKLQlpbnQgaTsKLQotCXNwaW5fbG9jaygmYW1wO3BvcnQtJmd0O3N0YXRzX2xvY2spOwotCi0JZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUocG9ydC0mZ3Q7ZGV2cyk7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChwb3J0LSZndDtkZXZzW2ldKQotCQkJYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC0mZ3Q7ZGV2c1tpXSk7Ci0JfQotCi0JLyogUmVzZXQgTUlCIGNvdW50ZXJzICovCi0JYWlyb2hhX2ZlX3NldChkZXYtJmd0O2V0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIocG9ydC0mZ3Q7aWQpLAotCQkgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spOwogCiAJc3Bpbl91bmxvY2soJmFtcDtwb3J0LSZndDtzdGF0c19sb2NrKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCmluZGV4IGY2ZDAxYThlOGRhMTM5Li5mZTkzNGY5ZmZlOGExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oCkBAIC0yNDUsNiAmIzQzOzI0NSwzMyBAQCBzdHJ1Y3QgYWlyb2hhX2h3X3N0YXRzIHsKIAl1NjQgcnhfZnJhZ21lbnQ7CiAJdTY0IHJ4X2phYmJlcjsKIAl1NjQgcnhfbGVuWzddOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJLyogUHJldmlvdXMgSFcgcmVnaXN0ZXIgdmFsdWVzIGZvciAzMi1iaXQgY291bnRlciBkZWx0YQomIzQzOwkJICogdHJhY2tpbmcuIFN0b3JpbmcgdGhlIGxhc3Qgc2VlbiB2YWx1ZSBhbmQgYWNjdW11bGF0aW5nCiYjNDM7CQkgKiAodTMyKShjdXJyIC0gcHJldikgaW50byB0aGUgNjQtYml0IHNvZnR3YXJlIGNvdW50ZXIKJiM0MzsJCSAqIGhhbmRsZXMgd3JhcC1hcm91bmQgdHJhbnNwYXJlbnRseSB2aWEgdW5zaWduZWQgYXJpdGhtZXRpYy4KJiM0MzsJCSAqIHR4X3J1bnQ2NC9yeF9ydW50NjQgaG9sZCB0aGUgcnVubmluZyBzdW0gb2YgcnVudCBkZWx0YXMuCiYjNDM7CQkgKiBUaGVzZSBmaWVsZHMgYXJlIG5ldmVyIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS4KJiM0MzsJCSAqLwomIzQzOwkJdTMyIHR4X2Ryb3BzOwomIzQzOwkJdTMyIHR4X2Jyb2FkY2FzdDsKJiM0MzsJCXUzMiB0eF9tdWx0aWNhc3Q7CiYjNDM7CQl1MzIgdHhfcnVudDsKJiM0MzsJCXUzMiB0eF9sb25nOwomIzQzOwkJdTY0IHR4X3J1bnQ2NDsKJiM0MzsJCXUzMiByeF9kcm9wczsKJiM0MzsJCXUzMiByeF9icm9hZGNhc3Q7CiYjNDM7CQl1MzIgcnhfbXVsdGljYXN0OwomIzQzOwkJdTMyIHJ4X2Vycm9yczsKJiM0MzsJCXUzMiByeF9jcmNfZXJyb3I7CiYjNDM7CQl1MzIgcnhfb3Zlcl9lcnJvcnM7CiYjNDM7CQl1MzIgcnhfZnJhZ21lbnQ7CiYjNDM7CQl1MzIgcnhfamFiYmVyOwomIzQzOwkJdTMyIHJ4X3J1bnQ7CiYjNDM7CQl1MzIgcnhfbG9uZzsKJiM0MzsJCXU2NCByeF9ydW50NjQ7CiYjNDM7CX0gbWliX3ByZXY7CiB9OwogCiBlbnVtIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGFpcm9oYV9ldGguY2AgYW5kIGBhaXJvaGFfZXRoLmhgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGhvdyBoYXJkd2FyZSBzdGF0aXN0aWNzIGFyZSBoYW5kbGVkLiBUaGV5JiMzOTtyZSBpbnRyb2R1Y2luZyBhIGBtaWJfcHJldmAgc3RydWN0LiBSaWdodCwgdGhhdCYjMzk7cyB0byB0cmFjayBwcmV2aW91cyAzMi1iaXQgY291bnRlciB2YWx1ZXMgYW5kIGNhbGN1bGF0ZSBkZWx0YXMgdG8gaGFuZGxlIGNvdW50ZXIgd3JhcC1hcm91bmQsIHN0YW5kYXJkIHByYWN0aWNlIGZvciB0aGVzZSBzb3J0cyBvZiB0aGluZ3MuIFRoZSBgYWlyb2hhX2ZlX2luaXRgIGZ1bmN0aW9uIGlzIGFsc28gYmVpbmcgbW9kaWZpZWQuIFRoZXkmIzM5O3JlIGNsZWFyaW5nIHRoZSBNSUIgY291bnRlcnMgb24gaW5pdGlhbGl6YXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLgoKV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoZXkgKnJlbW92ZWQqIHRoZSBNSUIgY291bnRlciBjbGVhcmluZyBmcm9tIGBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzYC4gVGhlIG9sZCBjb2RlIHdhcyBjYWxsaW5nIGBhaXJvaGFfZGV2X2dldF9od19zdGF0c2AgYW5kIHJlc2V0dGluZyBjb3VudGVycy4gTm93LCBgYWlyb2hhX3VwZGF0ZV9od19zdGF0c2AgaXMganVzdCB1cGRhdGluZyBzdGF0cyBmb3IgYSAqc2luZ2xlKiBkZXZpY2UuIFRoZXkgYXJlIGFjY3VtdWxhdGluZyBkZWx0YXMgZm9yIDMyLWJpdCBjb3VudGVycywgYW5kIHJlYWRpbmcgdGhlIDY0LWJpdCBjb3VudGVycyBkaXJlY3RseS4gU28sIHdlIGFyZSBhY2N1bXVsYXRpbmcgdGhlIHZhbHVlcywgYW5kIG5vdCByZXNldHRpbmcgdGhlIGNvdW50ZXJzIGF0IGFsbC4gR290IGl0IQoKTm93LCBBaXJvaGEuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZXRoZXJuZXQgZHJpdmVyLCByaWdodD8gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBUaGVzZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIGFyZW4mIzM5O3QgdW5sZXNzIHdlIGhhdmUgc29tZSBzb3J0IG9mIFFFTVUgZW11bGF0aW9uIGZvciB0aGUgQWlyb2hhIFNvQywgd2hpY2ggaXMgdXN1YWxseSBhIGxvbmcgc2hvdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlci4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgcHJvYmVkLCBzZWUgaWYgaXQgaXMgaW5zdGFudGlhdGVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyb2hhX2V0aF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NjAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLgoKKipFeGFtaW5pbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlciBpbml0aWFsaXplcy4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIGFzIGFsd2F5cywgaXMgd2l0aCB0aGUgcHJvYmUgZnVuY3Rpb24uIExldCYjMzk7cyBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLiBUaGF0IHdvdWxkIGJlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYC4gTXkgaW5zdGluY3QgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIHdpbGwgaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpcyBkZXRlY3RlZCwgcmVzb3VyY2UgYWxsb2NhdGlvbiB0YWtlcyBwbGFjZSwgYW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBicm91Z2h0IG9ubGluZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFueSBBaXJvaGEtc3BlY2lmaWMgcXVpcmtzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCBgYWlyb2hhX2V0aC5jYCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTE1NDI9c3RhdGljIGludCBhaXJvaGFfcWRtYV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTU1LVx0aWYgKElTX0VSUihxZG1hLVx1MDAzZXJlZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU2Olx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXHUwMDNlZGV2LCBQVFJfRVJSKHFkbWEtXHUwMDNlcmVncyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1NTctXHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBpb21hcCBxZG1hJWQgcmVnc1xcblwmIzM0OywgaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzM3Nj1zdGF0aWMgaW50IGFpcm9oYV9yZWdpc3Rlcl9nZG1fZGV2aWNlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQwNTpzdGF0aWMgaW50IGFpcm9oYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDA2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MjktXHRpZiAoSVNfRVJSKGV0aC1cdTAwM2VmZV9yZWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzMDpcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZXRoLVx1MDAzZWRldiwgUFRSX0VSUihldGgtXHUwMDNlZmVfcmVncyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MzEtXHRcdFx0XHQgICAgIFwmIzM0O2ZhaWxlZCB0byBpb21hcCBmZSByZWdzXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NzA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3MTpcdC5wcm9iZSA9IGFpcm9oYV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc3Mi1cdC5yZW1vdmUgPSBhaXJvaGFfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjAKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGl0JiMzOTtzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIHdoaWNoIGlzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGhlYXZpbHkgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBtb3JlIGFjY3VyYXRlbHksIHRoZSBkZXZpY2UgdHJlZSBub2RlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBoYXJkd2FyZS4gVGhlIGRyaXZlciYjMzk7cyBpbnRlbmRlZCBmb3IgYW4gQWlyb2hhIFNvQywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgaXQmIzM5O3MgaGlnaGx5IHVubGlrZWx5IHRoaXMgY29kZSB3aWxsIGV2ZW4gYmUgdG91Y2hlZCB1bmxlc3MgdGhlcmUmIzM5O3MgYSAqdmVyeSogc3BlY2lmaWMgbWFjaGluZSB0eXBlIGVtdWxhdGluZyB0aGF0IHBhcnRpY3VsYXIgQWlyb2hhIFNvQy4KCk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgZm9yIGV4aXN0aW5nIFFFTVUgbWFjaGluZSB0eXBlcy4gQWlyb2hhLCBhcyBJIHJlY2FsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IHRoYXQgbWFrZXMgbmV0d29ya2luZyBTb0NzLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIHRoZSBFTjc1MjMgb3IgRU43NTgxLiBJIGltbWVkaWF0ZWx5IHdvbmRlciBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgdGhlc2UgY2hpcHMuIE5vcGUsIG5vdCB0aGF0IEkgY2FuIGZpbmQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGFuZCB0aGVyZSYjMzk7cyBubyBzdWl0YWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24sIEkgY2FuIGFsbW9zdCBndWFyYW50ZWUgdGhpcyBjb2RlIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aG91Z2guCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgbXkgbG9naWMuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYC4gUmlnaHQsIGl0JiMzOTtzIGFuIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGFuZCBpdHMgb3BlcmF0aW9uIHJlbGllcyBvbiBNTUlPIHJlZ2lzdGVycyBsaWtlIGBldGgtJmd0O2ZlX3JlZ3NgIGFuZCBgcWRtYS0mZ3Q7cmVnc2AuIFdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgZGVjZW50IGVtdWxhdG9yLCB0aGUgYHByb2JlYCBmdW5jdGlvbiB3b24mIzM5O3QgYmUgY2FsbGVkLCBvciBpdCYjMzk7bGwgZmFpbCBlYXJseSBvbiBpbiB0aGUgcHJvY2Vzcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGxpa2UgYGFpcm9oYV91cGRhdGVfaHdfc3RhdHNgIGFuZCBgYWlyb2hhX2ZlX2luaXRgIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gVGhpcyBtZWFucyB0aGVyZSBpcyBubyB3YXkgdG8gcmVhY2ggdGhpcyBpbiBHQ0Ugb3IgUUVNVSBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyLiBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBmYWxzZSwgYW5kIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBkb2N1bWVudCB0aGlzIHJhdGlvbmFsZSB0aG9yb3VnaGx5IHNvIHRoYXQgb3RoZXIgZW5naW5lZXJzIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gbG9naWMgaW4gdGhlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBBaXJvaGEgU29DIGhhcmR3YXJlIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIE1NSU8gcmVnaXN0ZXJzLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMzo1NDoxMS4zODA2MzAxOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgyNzQyMzMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhcmR3YXJlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBsb2dpYyBpbiB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0MgaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgTU1JTyByZWdpc3RlcnMuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuMzgwNjM3MTc2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUxNzIzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMjM6NTQ6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uMmQwMzJjYzZkZmNhZGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcXG5AQCAtNDkzLDYgKzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiBcXG4gc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiB7XFxuK1xcdGludCBpO1xcbitcXG4gXFx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcXG4gXFxuIFxcdC8qIFBTRSBJUSByZXNlcnZlICovXFxuQEAgLTU4Niw2ICs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbiBcXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cXG4gXFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbiBcXG4rXFx0LyogQ2xlYXIgTUlCIGNvdW50ZXJzIHRvIGVzdGFibGlzaCBjbGVhbiBiYXNlbGluZSBmb3IgZGVsdGEgdHJhY2tpbmcuXFxuK1xcdCAqIFRoaXMgcHJldmVudHMgc3B1cmlvdXMgc3RhdGlzdGljcyBmcm9tIHByZS1kcml2ZXIgYWN0aXZpdHkgKGUuZy4sXFxuK1xcdCAqIGtleGVjLCBkcml2ZXIgcmViaW5kLCB3YXJtIHJlYm9vdCkgb24gZmlyc3QgcG9sbC5cXG4rXFx0ICovXFxuK1xcdGZvciAoaSA9IEFJUk9IQV9HRE0xX0lEWDsgaSBcXHUwMDNjPSBBSVJPSEFfR0RNNF9JRFg7IGkrKylcXG4rXFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKGkpLFxcbitcXHRcXHRcXHQgICAgICBGRV9HRE1fTUlCX1JYX0NMRUFSX01BU0sgfCBGRV9HRE1fTUlCX1RYX0NMRUFSX01BU0spO1xcbitcXG4gXFx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XFxuIH1cXG4gXFxuQEAgLTE2ODYsMTEgKzE2OTYsMTQgQEAgc3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc3RvcF9uYXBpKHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSlcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhaXJvaGFfZGV2X2dldF9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4rc3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbiBcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuIFxcdHUzMiB2YWwsIGkgPSAwO1xcbitcXHR1NjQgdG1wLCBwcmV2O1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2VzdGF0c19sb2NrKTtcXG4gXFxuIFxcdC8qIFJlYWQgcmVsZXZhbnQgTUlCIGZvciBHRE0gd2l0aCBtdWx0aXBsZSBwb3J0IGF0dGFjaGVkICovXFxuIFxcdGlmIChwb3J0LVxcdTAwM2VpZCA9PSBBSVJPSEFfR0RNM19JRFggfHwgcG9ydC1cXHUwMDNlaWQgPT0gQUlST0hBX0dETTRfSURYKVxcbkBAIC0xNzAxLDE1MiArMTcxNCwxOTAgQEAgc3RhdGljIHZvaWQgYWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXFxuIFxcbiBcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZkZXYtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4gXFxuLVxcdC8qIFRYICovXFxuK1xcdC8qIFRYIC0gNjQtYml0IEgrTCByZWdpc3RlcnM6IGh3IGFjY3VtdWxhdGVzIHRoZSB0b3RhbCwgcmVhZCBkaXJlY3RseS5cXG4rXFx0ICogVXNlIGxvY2FsIHZhcmlhYmxlIHRvIHByZXZlbnQgcmVhZGVycyBmcm9tIHNlZWluZyBpbnRlcm1lZGlhdGUgdmFsdWVzLlxcbitcXHQgKiBDbGFtcCB0byBwcmV2ZW50IHJlZ3Jlc3Npb24gZnJvbSB0b3JuIHJlYWRzIGJldHdlZW4gSCBhbmQgTC5cXG4rXFx0ICovXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfT0tfUEtUX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHMgKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX0JZVEVfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdC8qIFRYIC0gMzItYml0IHJlZ2lzdGVyczogYWNjdW11bGF0ZSBkZWx0YSB0byBoYW5kbGUgd3JhcC1hcm91bmQuICovXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHMgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2Ryb3BzICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfYnJvYWRjYXN0ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Jyb2FkY2FzdCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX01DX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbXVsdGljYXN0KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9SVU5UX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudDY0ICs9XFxuK1xcdFxcdCh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCA9IHZhbDtcXG4gXFxuK1xcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xcbitcXHR0bXAgPSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9FNjRfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSB0bXA7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w2NF9DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEyN19DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMTI3X0NOVF9MKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDI1NV9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0w1MTFfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEwMjNfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0xPTkdfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYudHhfbG9uZyA9IHZhbDtcXG4gXFxuIFxcdC8qIFJYICovXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHM7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX1BLVF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9va19ieXRlcyArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9va19ieXRlcyArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHMgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2Ryb3BzICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZHJvcHMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzID0gdmFsO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfQkNfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9icm9hZGNhc3QpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX01DX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfZXJyb3JzICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9lcnJvcnMgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Vycm9ycyA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0NSQ19FUlJfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9jcmNfZXJyb3IgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9jcmNfZXJyb3IpO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvciA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT1ZFUkZMT1dfRFJPUF9DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9vdmVyX2Vycm9ycyArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfb3Zlcl9lcnJvcnMgKz0gKHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7XFxuIFxcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2ZyYWdtZW50ICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9mcmFnbWVudCArPSAodTMyKSh2YWwgLSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2ZyYWdtZW50KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCA9IHZhbDtcXG4gXFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0pBQkJFUl9DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9qYWJiZXIgKz0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2phYmJlciArPSAodTMyKSh2YWwgLSBkZXYtXFx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2phYmJlcik7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyID0gdmFsO1xcbiBcXG4gXFx0aSA9IDA7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX1JVTlRfQ05UKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50NjQgKz1cXG4rXFx0XFx0KHUzMikodmFsIC0gZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50KTtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5taWJfcHJldi5yeF9ydW50ID0gdmFsO1xcbiBcXG4rXFx0LyogcnhfbGVuWzBdOiBSVU5UICgzMi1iaXQsIGRlbHRhKSArIEU2NCAoNjQtYml0LCBhYnNvbHV0ZSkuICovXFxuK1xcdHRtcCA9IGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudDY0O1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9FNjRfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wICs9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IHRtcDtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w2NF9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTI3X0NOVF9IKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuK1xcdHRtcCA9ICgodTY0KXZhbCBcXHUwMDNjXFx1MDAzYyAzMik7XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMjdfQ05UX0wocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdHRtcCB8PSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcXG4gXFxuK1xcdHByZXYgPSBkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDI1NV9DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9MKHBvcnQtXFx1MDAzZWlkKSk7XFxuLVxcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xcbitcXHR0bXAgfD0gdmFsO1xcbitcXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XFxuIFxcbitcXHRwcmV2ID0gZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV07XFxuIFxcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0w1MTFfQ05UX0gocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4rXFx0dG1wID0gKCh1NjQpdmFsIFxcdTAwM2NcXHUwMDNjIDMyKTtcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4rXFx0cHJldiA9IGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfSChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbitcXHR0bXAgPSAoKHU2NCl2YWwgXFx1MDAzY1xcdTAwM2MgMzIpO1xcbiBcXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMTAyM19DTlRfTChwb3J0LVxcdTAwM2VpZCkpO1xcbi1cXHRkZXYtXFx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcXG4rXFx0dG1wIHw9IHZhbDtcXG4rXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xcbiBcXG4gXFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTE9OR19DTlQocG9ydC1cXHUwMDNlaWQpKTtcXG4tXFx0ZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICh1MzIpKHZhbCAtIGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDtcXG4gXFxuIFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZkZXYtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgYWlyb2hhX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldilcXG4te1xcbi1cXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbi1cXHRpbnQgaTtcXG4tXFxuLVxcdHNwaW5fbG9jayhcXHUwMDI2cG9ydC1cXHUwMDNlc3RhdHNfbG9jayk7XFxuLVxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShwb3J0LVxcdTAwM2VkZXZzKTsgaSsrKSB7XFxuLVxcdFxcdGlmIChwb3J0LVxcdTAwM2VkZXZzW2ldKVxcbi1cXHRcXHRcXHRhaXJvaGFfZGV2X2dldF9od19zdGF0cyhwb3J0LVxcdTAwM2VkZXZzW2ldKTtcXG4tXFx0fVxcbi1cXG4tXFx0LyogUmVzZXQgTUlCIGNvdW50ZXJzICovXFxuLVxcdGFpcm9oYV9mZV9zZXQoZGV2LVxcdTAwM2VldGgsIFJFR19GRV9HRE1fTUlCX0NMRUFSKHBvcnQtXFx1MDAzZWlkKSxcXG4tXFx0XFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwb3J0LVxcdTAwM2VzdGF0c19sb2NrKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbmluZGV4IGY2ZDAxYThlOGRhMTM5Li5mZTkzNGY5ZmZlOGExMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaFxcbkBAIC0yNDUsNiArMjQ1LDMzIEBAIHN0cnVjdCBhaXJvaGFfaHdfc3RhdHMge1xcbiBcXHR1NjQgcnhfZnJhZ21lbnQ7XFxuIFxcdHU2NCByeF9qYWJiZXI7XFxuIFxcdHU2NCByeF9sZW5bN107XFxuK1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHQvKiBQcmV2aW91cyBIVyByZWdpc3RlciB2YWx1ZXMgZm9yIDMyLWJpdCBjb3VudGVyIGRlbHRhXFxuK1xcdFxcdCAqIHRyYWNraW5nLiBTdG9yaW5nIHRoZSBsYXN0IHNlZW4gdmFsdWUgYW5kIGFjY3VtdWxhdGluZ1xcbitcXHRcXHQgKiAodTMyKShjdXJyIC0gcHJldikgaW50byB0aGUgNjQtYml0IHNvZnR3YXJlIGNvdW50ZXJcXG4rXFx0XFx0ICogaGFuZGxlcyB3cmFwLWFyb3VuZCB0cmFuc3BhcmVudGx5IHZpYSB1bnNpZ25lZCBhcml0aG1ldGljLlxcbitcXHRcXHQgKiB0eF9ydW50NjQvcnhfcnVudDY0IGhvbGQgdGhlIHJ1bm5pbmcgc3VtIG9mIHJ1bnQgZGVsdGFzLlxcbitcXHRcXHQgKiBUaGVzZSBmaWVsZHMgYXJlIG5ldmVyIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHUzMiB0eF9kcm9wcztcXG4rXFx0XFx0dTMyIHR4X2Jyb2FkY2FzdDtcXG4rXFx0XFx0dTMyIHR4X211bHRpY2FzdDtcXG4rXFx0XFx0dTMyIHR4X3J1bnQ7XFxuK1xcdFxcdHUzMiB0eF9sb25nO1xcbitcXHRcXHR1NjQgdHhfcnVudDY0O1xcbitcXHRcXHR1MzIgcnhfZHJvcHM7XFxuK1xcdFxcdHUzMiByeF9icm9hZGNhc3Q7XFxuK1xcdFxcdHUzMiByeF9tdWx0aWNhc3Q7XFxuK1xcdFxcdHUzMiByeF9lcnJvcnM7XFxuK1xcdFxcdHUzMiByeF9jcmNfZXJyb3I7XFxuK1xcdFxcdHUzMiByeF9vdmVyX2Vycm9ycztcXG4rXFx0XFx0dTMyIHJ4X2ZyYWdtZW50O1xcbitcXHRcXHR1MzIgcnhfamFiYmVyO1xcbitcXHRcXHR1MzIgcnhfcnVudDtcXG4rXFx0XFx0dTMyIHJ4X2xvbmc7XFxuK1xcdFxcdHU2NCByeF9ydW50NjQ7XFxuK1xcdH0gbWliX3ByZXY7XFxuIH07XFxuIFxcbiBlbnVtIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuOTA2NjEzMzY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzMwMTQzMDg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhcmR3YXJlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBsb2dpYyBpbiB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYykuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIEFpcm9oYSBTb0MgaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gcGh5c2ljYWwgTU1JTyByZWdpc3RlcnMuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNWRhYzExY2VkYjFkOWFjMTg4ZjM3NGM4NDUyZGFjZTkxZDM3YjI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAyMzo1NDoxMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5pbmRleCA1OTAwMWZkNGI2Zjc0MC4uMmQwMzJjYzZkZmNhZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jXG5AQCAtNDkzLDYgKzQ5Myw4IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIFxuIHN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbiB7XG4rXHRpbnQgaTtcbitcbiBcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XG4gXG4gXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuQEAgLTU4Niw2ICs1ODgsMTQgQEAgc3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuIFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXG4gXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XG4gXG4rXHQvKiBDbGVhciBNSUIgY291bnRlcnMgdG8gZXN0YWJsaXNoIGNsZWFuIGJhc2VsaW5lIGZvciBkZWx0YSB0cmFja2luZy5cbitcdCAqIFRoaXMgcHJldmVudHMgc3B1cmlvdXMgc3RhdGlzdGljcyBmcm9tIHByZS1kcml2ZXIgYWN0aXZpdHkgKGUuZy4sXG4rXHQgKiBrZXhlYywgZHJpdmVyIHJlYmluZCwgd2FybSByZWJvb3QpIG9uIGZpcnN0IHBvbGwuXG4rXHQgKi9cbitcdGZvciAoaSA9IEFJUk9IQV9HRE0xX0lEWDsgaSBcdTAwM2M9IEFJUk9IQV9HRE00X0lEWDsgaSsrKVxuK1x0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0xFQVIoaSksXG4rXHRcdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbitcbiBcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuIH1cbiBcbkBAIC0xNjg2LDExICsxNjk2LDE0IEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3N0b3BfbmFwaShzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuK3N0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXG4ge1xuIFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuIFx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG4gXHR1MzIgdmFsLCBpID0gMDtcbitcdHU2NCB0bXAsIHByZXY7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2cG9ydC1cdTAwM2VzdGF0c19sb2NrKTtcbiBcbiBcdC8qIFJlYWQgcmVsZXZhbnQgTUlCIGZvciBHRE0gd2l0aCBtdWx0aXBsZSBwb3J0IGF0dGFjaGVkICovXG4gXHRpZiAocG9ydC1cdTAwM2VpZCA9PSBBSVJPSEFfR0RNM19JRFggfHwgcG9ydC1cdTAwM2VpZCA9PSBBSVJPSEFfR0RNNF9JRFgpXG5AQCAtMTcwMSwxNTIgKzE3MTQsMTkwIEBAIHN0YXRpYyB2b2lkIGFpcm9oYV9kZXZfZ2V0X2h3X3N0YXRzKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2KVxuIFxuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZkZXYtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFxuLVx0LyogVFggKi9cbitcdC8qIFRYIC0gNjQtYml0IEgrTCByZWdpc3RlcnM6IGh3IGFjY3VtdWxhdGVzIHRoZSB0b3RhbCwgcmVhZCBkaXJlY3RseS5cbitcdCAqIFVzZSBsb2NhbCB2YXJpYWJsZSB0byBwcmV2ZW50IHJlYWRlcnMgZnJvbSBzZWVpbmcgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbitcdCAqIENsYW1wIHRvIHByZXZlbnQgcmVncmVzc2lvbiBmcm9tIHRvcm4gcmVhZHMgYmV0d2VlbiBIIGFuZCBMLlxuK1x0ICovXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX09LX1BLVF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfb2tfcGt0cyArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19QS1RfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX3BrdHMgKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9va19wa3RzID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9PS19CWVRFX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9va19ieXRlcyArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X29rX2J5dGVzID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHQvKiBUWCAtIDMyLWJpdCByZWdpc3RlcnM6IGFjY3VtdWxhdGUgZGVsdGEgdG8gaGFuZGxlIHdyYXAtYXJvdW5kLiAqL1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRFJPUF9DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2Ryb3BzICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcyArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfZHJvcHMpO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X2Ryb3BzID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfQkNfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9icm9hZGNhc3QgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2Jyb2FkY2FzdCArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfYnJvYWRjYXN0KTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9icm9hZGNhc3QgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9NQ19DTlQocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X211bHRpY2FzdCArPSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMudHhfbXVsdGljYXN0ICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9tdWx0aWNhc3QpO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X211bHRpY2FzdCA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NCArPVxuK1x0XHQodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYudHhfcnVudCA9IHZhbDtcbiBcbitcdC8qIHR4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xuK1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnR4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gdG1wO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MMjU1X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9UWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MNTExX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fVFhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy50eF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1RYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMudHhfbGVuW2krK10gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnR4X2xlbltpKytdICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9sb25nKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi50eF9sb25nID0gdmFsO1xuIFxuIFx0LyogUlggKi9cbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cztcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfT0tfUEtUX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9va19wa3RzICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX1BLVF9DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfcGt0cyArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX3BrdHMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXM7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX09LX0JZVEVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X29rX2J5dGVzICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfb2tfYnl0ZXMgPSBtYXgodG1wLCBwcmV2KTtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0RST1BfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9kcm9wcyArPSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfZHJvcHMgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Ryb3BzKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9kcm9wcyA9IHZhbDtcbiBcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0JDX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfYnJvYWRjYXN0ICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9icm9hZGNhc3QgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2Jyb2FkY2FzdCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfYnJvYWRjYXN0ID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTUNfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9tdWx0aWNhc3QgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X211bHRpY2FzdCArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbXVsdGljYXN0KTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9tdWx0aWNhc3QgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VSUk9SX0RST1BfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZXJyb3JzKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9DUkNfRVJSX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfY3JjX2Vycm9yICs9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9jcmNfZXJyb3IgKz0gKHUzMikodmFsIC0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X2NyY19lcnJvcik7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfY3JjX2Vycm9yID0gdmFsO1xuIFxuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9PVkVSRkxPV19EUk9QX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfb3Zlcl9lcnJvcnMgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X292ZXJfZXJyb3JzICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9vdmVyX2Vycm9ycyk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfb3Zlcl9lcnJvcnMgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9GUkFHX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfZnJhZ21lbnQgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2ZyYWdtZW50ICs9ICh1MzIpKHZhbCAtIGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9mcmFnbWVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfZnJhZ21lbnQgPSB2YWw7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9KQUJCRVJfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9qYWJiZXIgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2phYmJlciArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfamFiYmVyKTtcbitcdGRldi1cdTAwM2VzdGF0cy5taWJfcHJldi5yeF9qYWJiZXIgPSB2YWw7XG4gXG4gXHRpID0gMDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX1JVTlRfQ05UKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NCArPVxuK1x0XHQodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfcnVudCA9IHZhbDtcbiBcbitcdC8qIHJ4X2xlblswXTogUlVOVCAoMzItYml0LCBkZWx0YSkgKyBFNjQgKDY0LWJpdCwgYWJzb2x1dGUpLiAqL1xuK1x0dG1wID0gZGV2LVx1MDAzZXN0YXRzLm1pYl9wcmV2LnJ4X3J1bnQ2NDtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0U2NF9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfRTY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gdG1wO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNjRfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDY0X0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMjdfQ05UX0gocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbitcdHRtcCA9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDEyN19DTlRfTChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xuK1x0dG1wIHw9IHZhbDtcbitcdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSA9IG1heCh0bXAsIHByZXYpO1xuIFxuK1x0cHJldiA9IGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV07XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MMjU1X0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wyNTVfQ05UX0wocG9ydC1cdTAwM2VpZCkpO1xuLVx0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdICs9IHZhbDtcbitcdHRtcCB8PSB2YWw7XG4rXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gPSBtYXgodG1wLCBwcmV2KTtcbiBcbitcdHByZXYgPSBkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldO1xuIFx0dmFsID0gYWlyb2hhX2ZlX3JyKGV0aCwgUkVHX0ZFX0dETV9SWF9FVEhfTDUxMV9DTlRfSChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2ldICs9ICgodTY0KXZhbCBcdTAwM2NcdTAwM2MgMzIpO1xuK1x0dG1wID0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MNTExX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4rXHRwcmV2ID0gZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9IKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baV0gKz0gKCh1NjQpdmFsIFx1MDAzY1x1MDAzYyAzMik7XG4rXHR0bXAgPSAoKHU2NCl2YWwgXHUwMDNjXHUwMDNjIDMyKTtcbiBcdHZhbCA9IGFpcm9oYV9mZV9ycihldGgsIFJFR19GRV9HRE1fUlhfRVRIX0wxMDIzX0NOVF9MKHBvcnQtXHUwMDNlaWQpKTtcbi1cdGRldi1cdTAwM2VzdGF0cy5yeF9sZW5baSsrXSArPSB2YWw7XG4rXHR0bXAgfD0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpKytdID0gbWF4KHRtcCwgcHJldik7XG4gXG4gXHR2YWwgPSBhaXJvaGFfZmVfcnIoZXRoLCBSRUdfRkVfR0RNX1JYX0VUSF9MT05HX0NOVChwb3J0LVx1MDAzZWlkKSk7XG4tXHRkZXYtXHUwMDNlc3RhdHMucnhfbGVuW2krK10gKz0gdmFsO1xuK1x0ZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbltpXSArPSAodTMyKSh2YWwgLSBkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyk7XG4rXHRkZXYtXHUwMDNlc3RhdHMubWliX3ByZXYucnhfbG9uZyA9IHZhbDtcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNmRldi1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIGFpcm9oYV91cGRhdGVfaHdfc3RhdHMoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYpXG4te1xuLVx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuLVx0aW50IGk7XG4tXG4tXHRzcGluX2xvY2soXHUwMDI2cG9ydC1cdTAwM2VzdGF0c19sb2NrKTtcbi1cbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaSsrKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWRldnNbaV0pXG4tXHRcdFx0YWlyb2hhX2Rldl9nZXRfaHdfc3RhdHMocG9ydC1cdTAwM2VkZXZzW2ldKTtcbi1cdH1cbi1cbi1cdC8qIFJlc2V0IE1JQiBjb3VudGVycyAqL1xuLVx0YWlyb2hhX2ZlX3NldChkZXYtXHUwMDNlZXRoLCBSRUdfRkVfR0RNX01JQl9DTEVBUihwb3J0LVx1MDAzZWlkKSxcbi1cdFx0ICAgICAgRkVfR0RNX01JQl9SWF9DTEVBUl9NQVNLIHwgRkVfR0RNX01JQl9UWF9DTEVBUl9NQVNLKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvcnQtXHUwMDNlc3RhdHNfbG9jayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5pbmRleCBmNmQwMWE4ZThkYTEzOS4uZmU5MzRmOWZmZThhMTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oXG5AQCAtMjQ1LDYgKzI0NSwzMyBAQCBzdHJ1Y3QgYWlyb2hhX2h3X3N0YXRzIHtcbiBcdHU2NCByeF9mcmFnbWVudDtcbiBcdHU2NCByeF9qYWJiZXI7XG4gXHR1NjQgcnhfbGVuWzddO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0LyogUHJldmlvdXMgSFcgcmVnaXN0ZXIgdmFsdWVzIGZvciAzMi1iaXQgY291bnRlciBkZWx0YVxuK1x0XHQgKiB0cmFja2luZy4gU3RvcmluZyB0aGUgbGFzdCBzZWVuIHZhbHVlIGFuZCBhY2N1bXVsYXRpbmdcbitcdFx0ICogKHUzMikoY3VyciAtIHByZXYpIGludG8gdGhlIDY0LWJpdCBzb2Z0d2FyZSBjb3VudGVyXG4rXHRcdCAqIGhhbmRsZXMgd3JhcC1hcm91bmQgdHJhbnNwYXJlbnRseSB2aWEgdW5zaWduZWQgYXJpdGhtZXRpYy5cbitcdFx0ICogdHhfcnVudDY0L3J4X3J1bnQ2NCBob2xkIHRoZSBydW5uaW5nIHN1bSBvZiBydW50IGRlbHRhcy5cbitcdFx0ICogVGhlc2UgZmllbGRzIGFyZSBuZXZlciByZXBvcnRlZCB0byB1c2Vyc3BhY2UuXG4rXHRcdCAqL1xuK1x0XHR1MzIgdHhfZHJvcHM7XG4rXHRcdHUzMiB0eF9icm9hZGNhc3Q7XG4rXHRcdHUzMiB0eF9tdWx0aWNhc3Q7XG4rXHRcdHUzMiB0eF9ydW50O1xuK1x0XHR1MzIgdHhfbG9uZztcbitcdFx0dTY0IHR4X3J1bnQ2NDtcbitcdFx0dTMyIHJ4X2Ryb3BzO1xuK1x0XHR1MzIgcnhfYnJvYWRjYXN0O1xuK1x0XHR1MzIgcnhfbXVsdGljYXN0O1xuK1x0XHR1MzIgcnhfZXJyb3JzO1xuK1x0XHR1MzIgcnhfY3JjX2Vycm9yO1xuK1x0XHR1MzIgcnhfb3Zlcl9lcnJvcnM7XG4rXHRcdHUzMiByeF9mcmFnbWVudDtcbitcdFx0dTMyIHJ4X2phYmJlcjtcbitcdFx0dTMyIHJ4X3J1bnQ7XG4rXHRcdHUzMiByeF9sb25nO1xuK1x0XHR1NjQgcnhfcnVudDY0O1xuK1x0fSBtaWJfcHJldjtcbiB9O1xuIFxuIGVudW0ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTEuOTA2NjE1MTg4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MTgwMjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyB0aGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX2V0aC5oYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBob3cgaGFyZHdhcmUgc3RhdGlzdGljcyBhcmUgaGFuZGxlZC4gVGhleSdyZSBpbnRyb2R1Y2luZyBhIGBtaWJfcHJldmAgc3RydWN0LiBSaWdodCwgdGhhdCdzIHRvIHRyYWNrIHByZXZpb3VzIDMyLWJpdCBjb3VudGVyIHZhbHVlcyBhbmQgY2FsY3VsYXRlIGRlbHRhcyB0byBoYW5kbGUgY291bnRlciB3cmFwLWFyb3VuZCwgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5ncy4gVGhlIGBhaXJvaGFfZmVfaW5pdGAgZnVuY3Rpb24gaXMgYWxzbyBiZWluZyBtb2RpZmllZC4gVGhleSdyZSBjbGVhcmluZyB0aGUgTUlCIGNvdW50ZXJzIG9uIGluaXRpYWxpemF0aW9uLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuV2FpdCwgbG9va2luZyBjbG9zZXIsIHRoZXkgKnJlbW92ZWQqIHRoZSBNSUIgY291bnRlciBjbGVhcmluZyBmcm9tIGBhaXJvaGFfdXBkYXRlX2h3X3N0YXRzYC4gVGhlIG9sZCBjb2RlIHdhcyBjYWxsaW5nIGBhaXJvaGFfZGV2X2dldF9od19zdGF0c2AgYW5kIHJlc2V0dGluZyBjb3VudGVycy4gTm93LCBgYWlyb2hhX3VwZGF0ZV9od19zdGF0c2AgaXMganVzdCB1cGRhdGluZyBzdGF0cyBmb3IgYSAqc2luZ2xlKiBkZXZpY2UuIFRoZXkgYXJlIGFjY3VtdWxhdGluZyBkZWx0YXMgZm9yIDMyLWJpdCBjb3VudGVycywgYW5kIHJlYWRpbmcgdGhlIDY0LWJpdCBjb3VudGVycyBkaXJlY3RseS4gU28sIHdlIGFyZSBhY2N1bXVsYXRpbmcgdGhlIHZhbHVlcywgYW5kIG5vdCByZXNldHRpbmcgdGhlIGNvdW50ZXJzIGF0IGFsbC4gR290IGl0IVxuXG5Ob3csIEFpcm9oYS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBldGhlcm5ldCBkcml2ZXIsIHJpZ2h0PyBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgb2Z0ZW4gYXJlbid0IHVubGVzcyB3ZSBoYXZlIHNvbWUgc29ydCBvZiBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIEFpcm9oYSBTb0MsIHdoaWNoIGlzIHVzdWFsbHkgYSBsb25nIHNob3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgcHJvYmVkLCBzZWUgaWYgaXQgaXMgaW5zdGFudGlhdGVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MTguNDc4NDE5Njg2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDYxNjYzNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhX2V0aF9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMzo1NDoxOC44OTkwNDQxMjJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4NzI5ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipFeGFtaW5pbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKlxuXG5SaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyIGluaXRpYWxpemVzLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB3aXRoIHRoZSBwcm9iZSBmdW5jdGlvbi4gTGV0J3MgbmF2aWdhdGUgdG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlci4gVGhhdCB3b3VsZCBiZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguY2AuIE15IGluc3RpbmN0IGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aWxsIGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgaXMgZGV0ZWN0ZWQsIHJlc291cmNlIGFsbG9jYXRpb24gdGFrZXMgcGxhY2UsIGFuZCB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgYnJvdWdodCBvbmxpbmUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgQWlyb2hhLXNwZWNpZmljIHF1aXJrcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGtlcm5lbCBuZXR3b3JraW5nIHN0YWNrLiBMZXQncyBzZWUgd2hhdCBgYWlyb2hhX2V0aC5jYCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDYwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjEuOTI3Nzc2MDM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTgyOTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0xNTQyPXN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTU1LVxcdGlmIChJU19FUlIocWRtYS1cXHUwMDNlcmVncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU2OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGV0aC1cXHUwMDNlZGV2LCBQVFJfRVJSKHFkbWEtXFx1MDAzZXJlZ3MpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU1Ny1cXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gaW9tYXAgcWRtYSVkIHJlZ3NcXFxcblxcXCIsIGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzM3Nj1zdGF0aWMgaW50IGFpcm9oYV9yZWdpc3Rlcl9nZG1fZGV2aWNlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQwNTpzdGF0aWMgaW50IGFpcm9oYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQwNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MjktXFx0aWYgKElTX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQzMDpcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShldGgtXFx1MDAzZWRldiwgUFRSX0VSUihldGgtXFx1MDAzZWZlX3JlZ3MpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQzMS1cXHRcXHRcXHRcXHQgICAgIFxcXCJmYWlsZWQgdG8gaW9tYXAgZmUgcmVnc1xcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM3NzA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NzE6XFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc3Mi1cXHQucmVtb3ZlID0gYWlyb2hhX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjEuOTgzOTYzODA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIyNDAzNjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQncyBhIGBwbGF0Zm9ybV9kcml2ZXJgLCB3aGljaCBpcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhhdCBtZWFucyBpdCdzIGhlYXZpbHkgZGVwZW5kZW50IG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yLCBtb3JlIGFjY3VyYXRlbHksIHRoZSBkZXZpY2UgdHJlZSBub2RlcyBhc3NvY2lhdGVkIHdpdGggdGhhdCBoYXJkd2FyZS4gVGhlIGRyaXZlcidzIGludGVuZGVkIGZvciBhbiBBaXJvaGEgU29DLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBpdCdzIGhpZ2hseSB1bmxpa2VseSB0aGlzIGNvZGUgd2lsbCBldmVuIGJlIHRvdWNoZWQgdW5sZXNzIHRoZXJlJ3MgYSAqdmVyeSogc3BlY2lmaWMgbWFjaGluZSB0eXBlIGVtdWxhdGluZyB0aGF0IHBhcnRpY3VsYXIgQWlyb2hhIFNvQy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgZXhpc3RpbmcgUUVNVSBtYWNoaW5lIHR5cGVzLiBBaXJvaGEsIGFzIEkgcmVjYWxsLCBpcyBhIE1lZGlhVGVrIHN1YnNpZGlhcnkgdGhhdCBtYWtlcyBuZXR3b3JraW5nIFNvQ3MsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgdGhlIEVONzUyMyBvciBFTjc1ODEuIEkgaW1tZWRpYXRlbHkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoZXNlIGNoaXBzLiBOb3BlLCBub3QgdGhhdCBJIGNhbiBmaW5kLlxuXG5HaXZlbiB0aGF0IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgYW5kIHRoZXJlJ3Mgbm8gc3VpdGFibGUgc29mdHdhcmUgZW11bGF0aW9uLCBJIGNhbiBhbG1vc3QgZ3VhcmFudGVlIHRoaXMgY29kZSB3b24ndCBiZSByZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aG91Z2guXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBteSBsb2dpYy4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmNgLiBSaWdodCwgaXQncyBhbiBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyLCBhbmQgaXRzIG9wZXJhdGlvbiByZWxpZXMgb24gTU1JTyByZWdpc3RlcnMgbGlrZSBgZXRoLVx1MDAzZWZlX3JlZ3NgIGFuZCBgcWRtYS1cdTAwM2VyZWdzYC4gV2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBkZWNlbnQgZW11bGF0b3IsIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZCwgb3IgaXQnbGwgZmFpbCBlYXJseSBvbiBpbiB0aGUgcHJvY2Vzcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGxpa2UgYGFpcm9oYV91cGRhdGVfaHdfc3RhdHNgIGFuZCBgYWlyb2hhX2ZlX2luaXRgIHdpbGwgbmV2ZXIgZXhlY3V0ZS4gVGhpcyBtZWFucyB0aGVyZSBpcyBubyB3YXkgdG8gcmVhY2ggdGhpcyBpbiBHQ0Ugb3IgUUVNVSBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gaXMgY2xlYXIuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gZmFsc2UsIGFuZCBJJ2xsIG1ha2Ugc3VyZSB0byBkb2N1bWVudCB0aGlzIHJhdGlvbmFsZSB0aG9yb3VnaGx5IHNvIHRoYXQgb3RoZXIgZW5naW5lZXJzIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMCwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjM6NTQ6MjkuMjA4MDAyNDU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc3RhdGlzdGljcyBjb2xsZWN0aW9uIGxvZ2ljIGluIHRoZSBBaXJvaGEgZXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgQWlyb2hhIFNvQyBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBNTUlPIHJlZ2lzdGVycy4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsqc9v[1] Phase: Running StartedAt: 2026-07-06 23:54:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqc9v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-06 23:54:40 +0000 UTC FinishedAt: 2026-07-06 23:54:47 +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,}