Name: series-workflow98gkq Phase: Failed StartedAt: 2026-07-25 02:21:29 +0000 UTC FinishedAt: 2026-07-25 02:52:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gkq[0] Phase: Succeeded StartedAt: 2026-07-25 02:21:29 +0000 UTC FinishedAt: 2026-07-25 02:52:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gkq[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 02:21:29 +0000 UTC FinishedAt: 2026-07-25 02:52:37 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgJiMzOTtzZXNzaW9uJiMzOTsgZmllbGQgdG8gJiMzOTtzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MmIzM5OyBhbmQgdHdvIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMgJiMzOTtsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nJiMzOTsgYW5kICYjMzk7bGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcmIzM5Oy4gSG93ZXZlciwgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBuZXcgJiMzOTtzZXNzaW9uJiMzOTsgZmllbGQgaXMgcG9wdWxhdGVkIGJ1dCBuZXZlciByZWFkIGJ5IGFueSBmaWxlIGhhbmRsZXIgKGUuZy4sIGluIG1tL21lbWZkX2x1by5jKS4gVGh1cywgdGhlIHBhdGNoIGludHJvZHVjZXMgdW51c2VkIEFQSSBhbmQgZGVhZCBjb2RlLCBtYWtpbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1Zjc2ZmEzN2UwYWFiOTUyMWQ4ZWYxMzZkMmMwN2I5ZWNkOGE4ZDgxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDI6NTE6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmggYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxuaW5kZXggNjNlYTU0MTdkZTg0OWEuLjYwNTFhYmMwNjEyY2VlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGZpbGU7XG4gLyoqXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG4gICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxuJiM0MzsgKiBAc2Vzc2lvbjogICAgICAgICAgVGhlIHNlc3Npb24gdGhpcyBmaWxlIGJlbG9uZ3MgdG8uXG4gICogQHJldHJpZXZlX3N0YXR1czogIFRoZSByZXRyaWV2ZSBzdGF0dXMgZm9yIHRoZSAmIzM5O2Nhbl9maW5pc2ggLyBmaW5pc2gmIzM5O1xuICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuXG4gICogICAgICAgICAgICAgICAgICAgIGF0dGVtcHRlZCwgYSBwb3NpdGl2ZSB2YWx1ZSBtZWFucyB0aGUgcmV0cmlldmUgd2FzXG5AQCAtNDUsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IGZpbGU7XG4gICovXG4gc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIHtcbiBcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjtcbiYjNDM7XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzZXNzaW9uO1xuIFx0aW50IHJldHJpZXZlX3N0YXR1cztcbiBcdHN0cnVjdCBmaWxlICpmaWxlO1xuIFx0dTY0IHNlcmlhbGl6ZWRfZGF0YTtcbkBAIC0yNDcsNiAmIzQzOzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7XG4gaW50IGxpdmV1cGRhdGVfZmxiX2dldF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYiwgdm9pZCAqKm9ianApO1xuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbiBcbiYjNDM7Lyoga2VybmVsIGNhbiBpbnRlcm5hbGx5IHJldHJpZXZlIGZpbGVzICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4mIzQzO1xuJiM0MzsvKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi9cbiYjNDM7aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xuJiM0MztcbiAjZWxzZSAvKiBDT05GSUdfTElWRVVQREFURSAqL1xuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBsaXZldXBkYXRlX2VuYWJsZWQodm9pZClcbkBAIC0yOTksNSAmIzQzOzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuIHtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7fVxuJiM0MztcbiAjZW5kaWYgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5pbmRleCBjMzlmOTY5NjFhODViZS4uZGJhZTA3MTUyMjBiMTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5AQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBpbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZsdW9fZmlsZS1cdTAwM2VtdXRleCk7XG4gXG4gXHRhcmdzLmhhbmRsZXIgPSBmaDtcbiYjNDM7XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdGFyZ3MuZmlsZSA9IGZpbGU7XG4gXHRlcnIgPSBmaC1cdTAwM2VvcHMtXHUwMDNlcHJlc2VydmUoXHUwMDI2YXJncyk7XG4gXHRpZiAoZXJyKVxuQEAgLTM0MSw2ICYjNDM7MzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzc0LDYgJiM0MzszNzYsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4gXHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzk1LDYgJiM0MzszOTgsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4gXHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtNTg3LDYgJiM0Mzs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcbiBcdH1cbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuJiM0MztcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRlcnIgPSBsdW9fZmlsZS1cdTAwM2VmaC1cdTAwM2VvcHMtXHUwMDNlcmV0cmlldmUoXHUwMDI2YXJncyk7XG4gXHRpZiAoZXJyKSB7XG5AQCAtNjIwLDYgJiM0Mzs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbiBcbiBcdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG4mIzQzO1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTYzNyw2ICYjNDM7NjQzLDcgQEAgc3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdGd1YXJkKG11dGV4KShcdTAwMjZsdW9fZmlsZS1cdTAwM2VtdXRleCk7XG4gXG4gXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4gXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTkyNiwzICYjNDM7OTMzLDY1IEBAIHZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuIFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XG4gXHRsaXN0X2RlbChcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xuIH1cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyAtIEdldCB0aGUgdG9rZW4gZm9yIGEgcHJlc2VydmVkIGZpbGUuXG4mIzQzOyAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uXG4mIzQzOyAqIEBmaWxlOiAgIFRoZSBmaWxlIG9iamVjdCB0byBzZWFyY2ggZm9yLlxuJiM0MzsgKiBAdG9rZW5wOiBPdXRwdXQgcGFyYW1ldGVyIGZvciB0aGUgZm91bmQgdG9rZW4uXG4mIzQzOyAqXG4mIzQzOyAqIFNlYXJjaGVzIHRoZSBsaXN0IG9mIHByZXNlcnZlZCBmaWxlcyBpbiBhbiBvdXRnb2luZyBzZXNzaW9uIGZvciBhIG1hdGNoaW5nXG4mIzQzOyAqIGZpbGUgb2JqZWN0LiBJZiBmb3VuZCwgdGhlIGNvcnJlc3BvbmRpbmcgdXNlci1wcm92aWRlZCB0b2tlbiBpcyByZXR1cm5lZC5cbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgaW4ta2VybmVsIGNhbGxlcnMgdGhhdCBuZWVkIHRvIGNvcnJlbGF0ZSBhXG4mIzQzOyAqIGZpbGUgd2l0aCBpdHMgbGl2ZXVwZGF0ZSB0b2tlbi5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkLlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVOT0VOVCBpZiB0aGUgZmlsZSBpcyBub3QgcHJlc2VydmVkIGluIHRoaXMgc2Vzc2lvbi5cbiYjNDM7ICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTtcbiYjNDM7XHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xuJiM0MztcdGludCBlcnIgPSAtRU5PRU5UO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcdTAwMjZmaWxlX3NldC1cdTAwM2VmaWxlc19saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAobHVvX2ZpbGUtXHUwMDNlZmlsZSA9PSBmaWxlKSB7XG4mIzQzO1x0XHRcdGlmICh0b2tlbnApXG4mIzQzO1x0XHRcdFx0KnRva2VucCA9IGx1b19maWxlLVx1MDAzZXRva2VuO1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcgLSBSZXRyaWV2ZXMgYSBwcmVzZXJ2ZWQgZmlsZSBmb3IgaW4ta2VybmVsIHVzZS5cbiYjNDM7ICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbiYjNDM7ICogQHRva2VuOiAgVGhlIHVuaXF1ZSB0b2tlbiBpZGVudGlmeWluZyB0aGUgZmlsZSB0byByZXRyaWV2ZS5cbiYjNDM7ICogQGZpbGVwOiAgT24gc3VjY2VzcywgdGhpcyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGEgcG9pbnRlciB0byB0aGUgcmV0cmlldmVkXG4mIzQzOyAqICAgICAgICAgICYjMzk7c3RydWN0IGZpbGUmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogUHJvdmlkZXMgYSBrZXJuZWwtaW50ZXJuYWwgQVBJIGZvciBvdGhlciBzdWJzeXN0ZW1zIHRvIHJldHJpZXZlIHRoZWlyXG4mIzQzOyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXJcbiYjNDM7ICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0XG4mIzQzOyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJiMzOTtzIGxpZmV0aW1lIGlzIG1hbmFnZWQgYnkgTFVPIGFuZCBhbnkgdXNlcnNwYWNlXG4mIzQzOyAqIGZpbGUgZGVzY3JpcHRvcnMuXG4mIzQzOyAqXG4mIzQzOyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZCBvZiBhIHJlc3RvcmVkIHNlc3Npb24uXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLiBSZXR1cm5zIC1FTk9FTlQgaWYgbm8gZmlsZSB3aXRoIHRoZSBtYXRjaGluZyB0b2tlbiBpc1xuJiM0MzsgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBsdW9fcmV0cmlldmVfZmlsZShsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKSxcbiYjNDM7XHRcdFx0XHQgdG9rZW4sIGZpbGVwKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXG5pbmRleCA2NDg3OWZmZTczNzgxYy4uZGFjNjY0NGJmYjE4YWEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcbkBAIC03Nyw2ICYjNDM7NzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcbiBcbiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrO1xuIFxuJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKmx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb247XG4mIzQzO1xuJiM0MztcdHNlc3Npb24gPSBjb250YWluZXJfb2YoZmlsZV9zZXQsIHN0cnVjdCBsdW9fc2Vzc2lvbiwgZmlsZV9zZXQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKilzZXNzaW9uO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBsdW9fZmlsZV9zZXQgKmx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24gPSAoc3RydWN0IGx1b19zZXNzaW9uICopcztcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZzZXNzaW9uLVx1MDAzZW11dGV4KTtcbiYjNDM7XHRyZXR1cm4gXHUwMDI2c2Vzc2lvbi1cdTAwM2VmaWxlX3NldDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgbHVvX3Nlc3Npb25fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBmaWxlICoqZmlsZXApO1xuIGludCBsdW9fc2Vzc2lvbl9yZXRyaWV2ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcbiB2b2lkIF9faW5pdCBsdW9fc2Vzc2lvbl9zZXR1cF9vdXRnb2luZyh1NjQgKnNlc3Npb25zX3BhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O3Nlc3Npb24mIzM5OyBmaWVsZCB0byAmIzM5O3N0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyYjMzk7IGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAmIzM5O2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcmIzM5OyBhbmQgJiMzOTtsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyYjMzk7LiBIb3dldmVyLCB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsLCBhbmQgdGhlIG5ldyAmIzM5O3Nlc3Npb24mIzM5OyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVmNzZmYTM3ZTBhYWI5NTIxZDhlZjEzNmQyYzA3YjllY2Q4YThkODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwMjo1MToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgKaW5kZXggNjNlYTU0MTdkZTg0OWEuLjYwNTFhYmMwNjEyY2VlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaApAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGZpbGU7CiAvKioKICAqIHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAtIEFyZ3VtZW50cyBmb3IgZmlsZSBvcGVyYXRpb24gY2FsbGJhY2tzLgogICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLgomIzQzOyAqIEBzZXNzaW9uOiAgICAgICAgICBUaGUgc2Vzc2lvbiB0aGlzIGZpbGUgYmVsb25ncyB0by4KICAqIEByZXRyaWV2ZV9zdGF0dXM6ICBUaGUgcmV0cmlldmUgc3RhdHVzIGZvciB0aGUgJiMzOTtjYW5fZmluaXNoIC8gZmluaXNoJiMzOTsKICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuCiAgKiAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkLCBhIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHRoZSByZXRyaWV2ZSB3YXMKQEAgLTQ1LDYgJiM0Mzs0Niw3IEBAIHN0cnVjdCBmaWxlOwogICovCiBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgewogCXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjsKJiM0MzsJc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjsKIAlpbnQgcmV0cmlldmVfc3RhdHVzOwogCXN0cnVjdCBmaWxlICpmaWxlOwogCXU2NCBzZXJpYWxpemVkX2RhdGE7CkBAIC0yNDcsNiAmIzQzOzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7CiBpbnQgbGl2ZXVwZGF0ZV9mbGJfZ2V0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiLCB2b2lkICoqb2JqcCk7CiB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7CiAKJiM0MzsvKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sCiYjNDM7CQkJCSBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTsKJiM0MzsKJiM0MzsvKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywKJiM0MzsJCQkJICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApOwomIzQzOwogI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi8KIAogc3RhdGljIGlubGluZSBib29sIGxpdmV1cGRhdGVfZW5hYmxlZCh2b2lkKQpAQCAtMjk5LDUgJiM0MzszMDksMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYikKIHsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywKJiM0MzsJCQkJCSAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApCiYjNDM7ewomIzQzOwlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsCiYjNDM7CQkJCQkJc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKQomIzQzO3sKJiM0MzsJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzO30KJiM0MzsKICNlbmRpZiAvKiBDT05GSUdfTElWRVVQREFURSAqLwogI2VuZGlmIC8qIF9MSU5VWF9MSVZFVVBEQVRFX0ggKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jCmluZGV4IGMzOWY5Njk2MWE4NWJlLi5kYmFlMDcxNTIyMGIxMCAxMDA2NDQKLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jCkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpCiAJbXV0ZXhfaW5pdCgmYW1wO2x1b19maWxlLSZndDttdXRleCk7CiAKIAlhcmdzLmhhbmRsZXIgPSBmaDsKJiM0MzsJYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7CiAJYXJncy5maWxlID0gZmlsZTsKIAllcnIgPSBmaC0mZ3Q7b3BzLSZndDtwcmVzZXJ2ZSgmYW1wO2FyZ3MpOwogCWlmIChlcnIpCkBAIC0zNDEsNiAmIzQzOzM0Miw3IEBAIHZvaWQgbHVvX2ZpbGVfdW5wcmVzZXJ2ZV9maWxlcyhzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCkKIAkJCQkJICAgc3RydWN0IGx1b19maWxlLCBsaXN0KTsKIAogCQlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CQlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAkJYXJncy5maWxlID0gbHVvX2ZpbGUtJmd0O2ZpbGU7CiAJCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAkJYXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS0mZ3Q7cHJpdmF0ZV9kYXRhOwpAQCAtMzc0LDYgJiM0MzszNzYsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsCiAJCXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9OwogCiAJCWFyZ3MuaGFuZGxlciA9IGx1b19maWxlLSZndDtmaDsKJiM0MzsJCWFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpOwogCQlhcmdzLmZpbGUgPSBsdW9fZmlsZS0mZ3Q7ZmlsZTsKIAkJYXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS0mZ3Q7c2VyaWFsaXplZF9kYXRhOwogCQlhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLSZndDtwcml2YXRlX2RhdGE7CkBAIC0zOTUsNiAmIzQzOzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwKIAkJc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07CiAKIAkJYXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtJmd0O2ZoOwomIzQzOwkJYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7CiAJCWFyZ3MuZmlsZSA9IGx1b19maWxlLSZndDtmaWxlOwogCQlhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLSZndDtzZXJpYWxpemVkX2RhdGE7CiAJCWFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKQEAgLTU4Nyw2ICYjNDM7NTkxLDcgQEAgaW50IGx1b19yZXRyaWV2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sCiAJfQogCiAJYXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtJmd0O2ZoOwomIzQzOwlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAlhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLSZndDtzZXJpYWxpemVkX2RhdGE7CiAJZXJyID0gbHVvX2ZpbGUtJmd0O2ZoLSZndDtvcHMtJmd0O3JldHJpZXZlKCZhbXA7YXJncyk7CiAJaWYgKGVycikgewpAQCAtNjIwLDYgJiM0Mzs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LAogCQlzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTsKIAogCQlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CQlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAkJYXJncy5maWxlID0gbHVvX2ZpbGUtJmd0O2ZpbGU7CiAJCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAkJYXJncy5yZXRyaWV2ZV9zdGF0dXMgPSBsdW9fZmlsZS0mZ3Q7cmV0cmlldmVfc3RhdHVzOwpAQCAtNjM3LDYgJiM0Mzs2NDMsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LAogCWd1YXJkKG11dGV4KSgmYW1wO2x1b19maWxlLSZndDttdXRleCk7CiAKIAlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CWFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpOwogCWFyZ3MuZmlsZSA9IGx1b19maWxlLSZndDtmaWxlOwogCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAlhcmdzLnJldHJpZXZlX3N0YXR1cyA9IGx1b19maWxlLSZndDtyZXRyaWV2ZV9zdGF0dXM7CkBAIC05MjYsMyAmIzQzOzkzMyw2NSBAQCB2b2lkIGxpdmV1cGRhdGVfdW5yZWdpc3Rlcl9maWxlX2hhbmRsZXIoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpmaCkKIAlsdW9fZmxiX3VucmVnaXN0ZXJfYWxsKGZoKTsKIAlsaXN0X2RlbCgmYW1wO0FDQ0VTU19QUklWQVRFKGZoLCBsaXN0KSk7CiB9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLgomIzQzOyAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uCiYjNDM7ICogQGZpbGU6ICAgVGhlIGZpbGUgb2JqZWN0IHRvIHNlYXJjaCBmb3IuCiYjNDM7ICogQHRva2VucDogT3V0cHV0IHBhcmFtZXRlciBmb3IgdGhlIGZvdW5kIHRva2VuLgomIzQzOyAqCiYjNDM7ICogU2VhcmNoZXMgdGhlIGxpc3Qgb2YgcHJlc2VydmVkIGZpbGVzIGluIGFuIG91dGdvaW5nIHNlc3Npb24gZm9yIGEgbWF0Y2hpbmcKJiM0MzsgKiBmaWxlIG9iamVjdC4gSWYgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIHVzZXItcHJvdmlkZWQgdG9rZW4gaXMgcmV0dXJuZWQuCiYjNDM7ICoKJiM0MzsgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBpbi1rZXJuZWwgY2FsbGVycyB0aGF0IG5lZWQgdG8gY29ycmVsYXRlIGEKJiM0MzsgKiBmaWxlIHdpdGggaXRzIGxpdmV1cGRhdGUgdG9rZW4uCiYjNDM7ICoKJiM0MzsgKiBDb250ZXh0OiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIHNlc3Npb24gbXV0ZXggYWNxdWlyZWQuCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FTk9FTlQgaWYgdGhlIGZpbGUgaXMgbm90IHByZXNlcnZlZCBpbiB0aGlzIHNlc3Npb24uCiYjNDM7ICovCiYjNDM7aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsCiYjNDM7CQkJCSAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTsKJiM0MzsJc3RydWN0IGx1b19maWxlICpsdW9fZmlsZTsKJiM0MzsJaW50IGVyciA9IC1FTk9FTlQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkobHVvX2ZpbGUsICZhbXA7ZmlsZV9zZXQtJmd0O2ZpbGVzX2xpc3QsIGxpc3QpIHsKJiM0MzsJCWlmIChsdW9fZmlsZS0mZ3Q7ZmlsZSA9PSBmaWxlKSB7CiYjNDM7CQkJaWYgKHRva2VucCkKJiM0MzsJCQkJKnRva2VucCA9IGx1b19maWxlLSZndDt0b2tlbjsKJiM0MzsJCQllcnIgPSAwOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nIC0gUmV0cmlldmVzIGEgcHJlc2VydmVkIGZpbGUgZm9yIGluLWtlcm5lbCB1c2UuCiYjNDM7ICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS4KJiM0MzsgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLgomIzQzOyAqIEBmaWxlcDogIE9uIHN1Y2Nlc3MsIHRoaXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJldHJpZXZlZAomIzQzOyAqICAgICAgICAgICYjMzk7c3RydWN0IGZpbGUmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIFByb3ZpZGVzIGEga2VybmVsLWludGVybmFsIEFQSSBmb3Igb3RoZXIgc3Vic3lzdGVtcyB0byByZXRyaWV2ZSB0aGVpcgomIzQzOyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXIKJiM0MzsgKiBhcm91bmQgbHVvX3JldHJpZXZlX2ZpbGUoKSwgYWxsb3dpbmcgY2FsbGVycyB0byBmaW5kIGEgZmlsZSBieSBpdHMgdG9rZW4uCiYjNDM7ICoKJiM0MzsgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0CiYjNDM7ICogaXMgbm8gbG9uZ2VyIG5lZWRlZC4gVGhlIGZpbGUmIzM5O3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2UKJiM0MzsgKiBmaWxlIGRlc2NyaXB0b3JzLgomIzQzOyAqCiYjNDM7ICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi4KJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gUmV0dXJucyAtRU5PRU5UIGlmIG5vIGZpbGUgd2l0aCB0aGUgbWF0Y2hpbmcgdG9rZW4gaXMKJiM0MzsgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sCiYjNDM7CQkJCSBzdHJ1Y3QgZmlsZSAqKmZpbGVwKQomIzQzO3sKJiM0MzsJcmV0dXJuIGx1b19yZXRyaWV2ZV9maWxlKGx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHMpLAomIzQzOwkJCQkgdG9rZW4sIGZpbGVwKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oCmluZGV4IDY0ODc5ZmZlNzM3ODFjLi5kYWM2NjQ0YmZiMThhYSAxMDA2NDQKLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmgKQEAgLTc3LDYgJiM0Mzs3NywyMyBAQCBzdHJ1Y3QgbHVvX3Nlc3Npb24gewogCiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrOwogCiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uOwomIzQzOwomIzQzOwlzZXNzaW9uID0gY29udGFpbmVyX29mKGZpbGVfc2V0LCBzdHJ1Y3QgbHVvX3Nlc3Npb24sIGZpbGVfc2V0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICopc2Vzc2lvbjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzKQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uID0gKHN0cnVjdCBsdW9fc2Vzc2lvbiAqKXM7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtzZXNzaW9uLSZndDttdXRleCk7CiYjNDM7CXJldHVybiAmYW1wO3Nlc3Npb24tJmd0O2ZpbGVfc2V0OwomIzQzO30KJiM0MzsKIGludCBsdW9fc2Vzc2lvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7CiBpbnQgbHVvX3Nlc3Npb25fcmV0cmlldmUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7CiB2b2lkIF9faW5pdCBsdW9fc2Vzc2lvbl9zZXR1cF9vdXRnb2luZyh1NjQgKnNlc3Npb25zX3BhKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExpdmUgVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBuZXcgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGxpdmUgdXBkYXRlcy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBzZXNzaW9uYCBmaWVsZCB0byB0aGUgYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2Agc3RydWN0dXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWltZWQgYXQgZW5oYW5jaW5nIHRoZSBjb250cm9sIG9yIHRyYWNraW5nIG9mIGZpbGUgb3BlcmF0aW9ucyBkdXJpbmcgYSBsaXZlIHVwZGF0ZS4gSW50ZXJlc3RpbmcuIEFuZCBpdCYjMzk7cyBpbXBsZW1lbnRpbmcgdHdvIG5ldyBmdW5jdGlvbnM6IGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gSSYjMzk7bSBndWVzc2luZyB0aG9zZSB3aWxsIGhhbmRsZSBmZXRjaGluZyBvciBtYW5hZ2luZyBmaWxlcyBhbmQgdG9rZW5zIHRoYXQgYXJlIGNvbWluZyBpbiBvciBnb2luZyBvdXQgZHVyaW5nIHRoZSB1cGRhdGUgcHJvY2Vzcy4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcGF0Y2ggdG91Y2hlcyBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY2AsIGBpbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaGAsIGFuZCBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGxpdmUgdXBkYXRlIGltcGxlbWVudGF0aW9uLCB0aGUgcHVibGljLWZhY2luZyBoZWFkZXIsIGFuZCBpbnRlcm5hbCBkZWZpbml0aW9ucywgcmVzcGVjdGl2ZWx5LiBNYWtlcyBzZW5zZS4KCkJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiBhY3RpdmUgaW4gb3VyIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0xJVkVVUERBVEVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC4KCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIuIEkgd2FudCB0byBzZWUgKndoZXJlKiB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AsIGFyZSBhY3R1YWxseSBiZWluZyAqdXNlZCouIFNvLCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHJ1biBhIHNlYXJjaCBmb3IgdGhvc2UgZnVuY3Rpb24gbmFtZXMgYWNyb3NzIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhpcyBuZXcgc2Vzc2lvbiBtYW5hZ2VtZW50IGZpdHMgaW50byB0aGUgYnJvYWRlciBsaXZlIHVwZGF0ZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUwPXZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0yNTItLyoga2VybmVsIGNhbiBpbnRlcm5hbGx5IHJldHJpZXZlIGZpbGVzICovXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTM6aW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU0LVx0XHRcdFx0IHN0cnVjdCBmaWxlICoqZmlsZXApO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMwOD1zdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjMxMjpzdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTMtXHRcdFx0XHRcdCAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz05NzA9RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTcyLS8qKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5NzM6ICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzQtICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5MC0gKi9cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6OTkxOmludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTkyLVx0XHRcdFx0IHN0cnVjdCBmaWxlICoqZmlsZXApXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05OTYtfVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5OTc6RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBzdWJqZWN0IG1hdHRlcjoKCioqQ2hlY2tpbmcgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIFdoYXQgZXhhY3RseSBpcyBoYXBwZW5pbmcgaW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlPyBJIHNob3VsZCBwcm9iYWJseSBhc3N1bWUgaXQmIzM5O3MgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgdG9rZW4gcmV0cmlldmFsLCBsaWtlbHkgZm9yIG91dGdvaW5nIG5ldHdvcmsgcmVxdWVzdHMg4oCTIHByb2JhYmx5IHJlbGF0aW5nIHRvIGxpdmUgdXBkYXRlcy4gSXMgdGhpcyB0b2tlbiBmb3IgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIG9yIGJvdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgbGl2ZSB1cGRhdGUgd29ya2Zsb3cuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IEtub3dpbmcgdGhhdCB3aWxsIGNsYXJpZnkgaXRzIHJvbGUgaW4gdGhlIHByb2Nlc3MuIElzIHRoZXJlIGEgY2FjaGluZyBtZWNoYW5pc20/IEhvdyBzZWN1cmUgaXMgdGhlIHRva2VuIGdlbmVyYXRpb24gYW5kIHJldHJpZXZhbCBwcm9jZXNzPyBBbmQgYXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocyB0byBsb29rIGF0PyBUaGUgbmFtZSBzdWdnZXN0cyBpdCByZXRyaWV2ZXMgc29tZXRoaW5nLCBhbmQgdGhlICYjMzQ7b3V0Z29pbmcmIzM0OyBwYXJ0IGhpbnRzIHRoYXQgdGhlIHRva2VuIGlzIHVzZWQgd2hlbiBjb250YWN0aW5nIHNvbWUgZXh0ZXJuYWwgZW50aXR5IGZvciB1cGRhdGVzLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGtub3duIHZ1bG5lcmFiaWxpdGllcyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGlmIHRoZXJlIGlzIGFueSBwbGFjZSBmb3IgaW1wcm92ZW1lbnQuIEl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnbyBvdmVyIGFsbCBkb2N1bWVudGF0aW9uIHJlbGF0aW5nIHRvIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBtb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTI1Mz1pbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU2LS8qIEdldCBhIHRva2VuIGZvciBhbiBvdXRnb2luZyBmaWxlLCBvciAtRU5PRU5UIGlmIGZpbGUgaXMgbm90IHByZXNlcnZlZCAqL1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjU3OmludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU4LVx0XHRcdFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMxMj1zdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMzE3LVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MzE4OnN0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTktXHRcdFx0XHRcdFx0c3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9OTI3PXZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTM3LS8qKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5Mzg6ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05MzktICogQHM6ICAgICAgVGhlIG91dGdvaW5nIGxpdmV1cGRhdGUgc2Vzc2lvbi5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1MS0gKi9cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6OTUyOmludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NTMtXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk2OS19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk3MDpFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjA4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7VGhlc2UgbmV3IGZ1bmN0aW9ucy4uLiB0aGV5JiMzOTtyZSBub3QgZXZlbiAqY2FsbGVkKiBhbnl3aGVyZSBlbHNlIGluIHRoZSBrZXJuZWw/IFRoYXQmIzM5O3MuLi4gdW51c3VhbC4mIzM0OyBCdXQgaG9sZCBvbiwgdGhlIHBsb3QgdGhpY2tlbnMuIEkgc2VlIHRoZXkmIzM5O3ZlIGFsc28gZ29uZSBpbiBhbmQgbW9kaWZpZWQgc29tZSAqZXhpc3RpbmcqIGZ1bmN0aW9uczogYGx1b19wcmVzZXJ2ZV9maWxlYCwgYGx1b19maWxlX3VucHJlc2VydmVfZmlsZXNgLCBhbGwgdGhlIHdheSBkb3duIHRvIGBsdW9fZmlsZV9maW5pc2hfb25lYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBpbnNlcnRpbmcgYGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO2AgaW4gc2V2ZXJhbCBwbGFjZXMgd2l0aGluIHRob3NlLgoKSG1tLCBzbyB0aGV5JiMzOTtyZSB0eWluZyB0aGVzZSBuZXcgY29uY2VwdHMgaW50byB0aGUgZXhpc3RpbmcgbG9naWMuIFRoYXQgbWVhbnMgdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHVzZWQgdHJhbnNpdGl2ZWx5LiBUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgc2VlIGlmIGBsdW9fcHJlc2VydmVfZmlsZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYW55IGV4ZWN1dGlvbiBwYXRoLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gZGV0ZXJtaW5lIGl0cyB1c2FnZS4gQW5kLCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBjaGVjayB0aGUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX0xJVkVVUERBVEVgIGlzIGRlZmluZWQuIFRoaXMgcGF0Y2ggc2VlbXMgY2xvc2VseSBsaW5rZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsdW9fcHJlc2VydmVfZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTQ2LSAqIDEuIFByZXNlcnZlIChOb3JtYWwgT3BlcmF0aW9uKTogQSB1c2Vyc3BhY2UgYWdlbnQgcHJlc2VydmVzIGZpbGVzIG9uZSBieSBvbmVcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDc6ICogICAgdmlhIGFuIGlvY3RsLiBGb3IgZWFjaCBmaWxlLCBsdW9fcHJlc2VydmVfZmlsZSgpIGZpbmRzIGEgY29tcGF0aWJsZVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy00OC0gKiAgICBoYW5kbGVyLCBjYWxscyBpdHMgLnByZXNlcnZlKCkgb3BlcmF0aW9uLCBhbmQgY3JlYXRlcyBhbiBpbnRlcm5hbCBcdTAwMjZzdHJ1Y3Rcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTExOT1zdGF0aWMgREVGSU5FX1hBUlJBWShsdW9fcHJlc2VydmVkX2ZpbGVzKTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE0OS0gKiBUaGlzIHN0cnVjdHVyZSBpcyB0aGUgY29yZSBpbi1rZXJuZWwgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZmlsZSBiZWluZ1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoxNTA6ICogbWFuYWdlZCB0aHJvdWdoIGEgbGl2ZSB1cGRhdGUuIEFuIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgbHVvX3ByZXNlcnZlX2ZpbGUoKVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0xNTEtICogdG8gbGluayBhICYjMzk7c3RydWN0IGZpbGUmIzM5OyB0byBpdHMgY29ycmVzcG9uZGluZyBoYW5kbGVyLCBhIHVzZXItcHJvdmlkZWQgdG9rZW4sXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0xNzg9c3RhdGljIGJvb2wgbHVvX3Rva2VuX2lzX3VzZWQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbilcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE5MC0vKipcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTkxOiAqIGx1b19wcmVzZXJ2ZV9maWxlIC0gSW5pdGlhdGUgdGhlIHByZXNlcnZhdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci5cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTkyLSAqIEBmaWxlX3NldDogVGhlIGZpbGVfc2V0IHRvIHdoaWNoIHRoZSBwcmVzZXJ2ZWQgZmlsZSB3aWxsIGJlIGFkZGVkLlxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjI5LSAqL1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoyMzA6aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyNy0gKiAgIDMuIFJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlICYjMzk7c3RydWN0IGZpbGUmIzM5OyB0aGF0IHdhcyB0YWtlbiBieVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozMjg6ICogICAgICBsdW9fcHJlc2VydmVfZmlsZSgpIHZpYSBmcHV0KCksIHJldHVybmluZyBvd25lcnNoaXAuXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyOS0gKiAgIDQuIEZyZWVzIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcm5hbCAmIzM5O3N0cnVjdCBsdW9fZmlsZSYjMzk7LlxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYz0yMTE9dm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTI0OS0gKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jOjI1MDogKiBDb250ZXh0OiBDYWxsZWQgZnJvbSBsdW9fcHJlc2VydmVfZmlsZSgpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtMjUxLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg9MTAyPWludCBsdW9fc2Vzc2lvbl9kZXNlcmlhbGl6ZSh2b2lkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwMy1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oOjEwNDppbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwNS12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmM9MjYzPXN0YXRpYyBpbnQgbHVvX3Nlc3Npb25fcHJlc2VydmVfZmQoc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uLFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtMjY5LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNnNlc3Npb24tXHUwMDNlbXV0ZXgpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYzoyNzA6XHRlcnIgPSBsdW9fcHJlc2VydmVfZmlsZShcdTAwMjZzZXNzaW9uLVx1MDAzZWZpbGVfc2V0LCBhcmdwLVx1MDAzZXRva2VuLCBhcmdwLVx1MDAzZWZkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtMjcxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTgwCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTGl2ZXVwZGF0ZSBGaWxlIE9wZXJhdGlvbiBQYXRjaCoqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgc2Vzc2lvbmAgZmllbGQgaW50byB0aGUgYGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBgc2Vzc2lvbmAgYXJndW1lbnQgdGhhdCBnZXRzIHBhc3NlZCBkb3duIHRvIGVhY2ggb2YgdGhlIGZpbGUgaGFuZGxlciBvcGVyYXRpb25zIOKAkyB0aGUgYHByZXNlcnZlYCwgYHVucHJlc2VydmVgLCBgZnJlZXplYCwgYHVuZnJlZXplYCwgYHJldHJpZXZlYCwgYGNhbl9maW5pc2hgLCBhbmQgYGZpbmlzaGAgZnVuY3Rpb25zLiAKCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gRG9lcyBhbnlvbmUgKmFjdHVhbGx5KiBsZXZlcmFnZSB0aGF0IGBhcmdzLSZndDtzZXNzaW9uYCBkYXRhIHdpdGhpbiB0aGVpciBzcGVjaWZpYyBmaWxlIGhhbmRsZXIgaW1wbGVtZW50YXRpb25zPyYjMzQ7IEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBhbnkgaGFuZGxlciBjdXJyZW50bHkgKnVzZXMqIHRoaXMgbmV3IGBzZXNzaW9uYCBwYXJhbWV0ZXIuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHF1ZXN0aW9uLiBOb3cgSSBuZWVkIHRvIGdvIGxvb2sgdGhyb3VnaCB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWFsLXdvcmxkIHVzZXMgb2YgdGhhdCBzZXNzaW9uIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZ3MtXHUwMDNlc2Vzc2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZnMvbmZzNHhkci5jPTE4MjM9c3RhdGljIHZvaWQgZW5jb2RlX2JpbmRfY29ubl90b19zZXNzaW9uKHN0cnVjdCB4ZHJfc3RyZWFtICp4ZHIsXG4tLVxuZnMvbmZzL25mczR4ZHIuYy0xODMwLVx0XHRkZWNvZGVfYmluZF9jb25uX3RvX3Nlc3Npb25fbWF4c3osIGhkcik7XG5mcy9uZnMvbmZzNHhkci5jOjE4MzE6XHRlbmNvZGVfb3BhcXVlX2ZpeGVkKHhkciwgYXJncy1cdTAwM2VzZXNzaW9uaWQuZGF0YSwgTkZTNF9NQVhfU0VTU0lPTklEX0xFTik7XG5mcy9uZnMvbmZzNHhkci5jLTE4MzItXHRwID0geGRyX3Jlc2VydmVfc3BhY2UoeGRyLCA4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyOQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnVzZWQgU2Vzc2lvbiBEYXRhIGluIExpdmV1cGRhdGUgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgYGFyZ3MtJmd0O3Nlc3Npb25gIGlzbiYjMzk7dCBhY3R1YWxseSBiZWluZyBsZXZlcmFnZWQgaW4gYW55IG9mIHRoZSBmaWxlIGhhbmRsZXIgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgaGVhZC1zY3JhdGNoZXIuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgdGhlc2UgbmV3IGZ1bmN0aW9uczogYGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdgIGFuZCBgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdgLiBUaGV5JiMzOTtyZSAqZXhwb3J0ZWQqLCB3aGljaCB1c3VhbGx5IGltcGxpZXMgaW50ZW5kZWQgdXNlIGVsc2V3aGVyZSwgYnV0IEkgY2FuJiMzOTt0IGZpbmQgYSBzaW5nbGUga2VybmVsIG1vZHVsZSBvciBhbnl0aGluZyB0aGF0JiMzOTtzIGFjdHVhbGx5IGNhbGxpbmcgdGhlbS4gTW9yZW92ZXIsIHRoZXkmIzM5O3JlIGFkZGluZyBgc2Vzc2lvbmAgdG8gYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2AgYW5kIHBvcHVsYXRpbmcgaXQsIHdoaWNoIHJhaXNlcyBmbGFncy4gSXQmIzM5O3MgcmVhbGx5IHBvaW50aW5nIHRvIGEgZGVzaWduIGVsZW1lbnQgdGhhdCYjMzk7cyBiZWVuIGltcGxlbWVudGVkIGJ1dCBuZXZlciBmdWxseSBjb25uZWN0ZWQgdG8gdGhlIHJlbGV2YW50IGhhbmRsZXJzLgoKSG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLiBMZXQgbWUgcXVpY2tseSBkbyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBzd2VlcCBmb3IgaW5zdGFuY2VzIG9mIGVpdGhlciBgYXJncy5zZXNzaW9uYCBvciBqdXN0IGBzZXNzaW9uYCB3aXRoaW4gYW55IG9mIHRoZSBvdGhlciBoYW5kbGVyIGZ1bmN0aW9ucy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gV2UgaGF2ZSB0byBjb25zaWRlciB0aGF0IHRoZXJlIG1pZ2h0IGJlIGluZGlyZWN0IHVzZXMgb3IgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLnNlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTA5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjExMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfS1BST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYGtwcm9iZS5zZXNzaW9uJiM0MztgYCBbI2twbXVsdGldXyAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTExMS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTE5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfVVBST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uJiM0MztgYCBbI3VwbXVsXV8gICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0MztcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxMjI6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGB1cHJvYmUuc2Vzc2lvbi5zJiM0MztgYCBbI3VwbXVsXV8gIHwgWWVzICAgICAgIHxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMjMtJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLSYjNDM7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz02NTE9c3RhdGljIGludCBzZXZfbGF1bmNoX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjc4LVx0c2Vzc2lvbl9ibG9iID0gTlVMTDtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njc5Olx0aWYgKHBhcmFtcy5zZXNzaW9uX3VhZGRyKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjY4MDpcdFx0c2Vzc2lvbl9ibG9iID0gcHNwX2NvcHlfdXNlcl9ibG9iKHBhcmFtcy5zZXNzaW9uX3VhZGRyLCBwYXJhbXMuc2Vzc2lvbl9sZW4pO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02ODEtXHRcdGlmIChJU19FUlIoc2Vzc2lvbl9ibG9iKSkge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg1LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2ODY6XHRcdHN0YXJ0LnNlc3Npb25fYWRkcmVzcyA9IF9fc21lX3NldChfX3BhKHNlc3Npb25fYmxvYikpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2ODc6XHRcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02ODgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNTU3PV9fc2V2X3NlbmRfc3RhcnRfcXVlcnlfc2Vzc2lvbl9sZW5ndGgoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTY2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNTY3Olx0cGFyYW1zLVx1MDAzZXNlc3Npb25fbGVuID0gZGF0YS5zZXNzaW9uX2xlbjtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU2OC1cdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3AtXHUwMDNlZGF0YSksIHBhcmFtcyxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTE1NzU9c3RhdGljIGludCBzZXZfc2VuZF9zdGFydChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1OTAtXHQvKiBpZiBzZXNzaW9uX2xlbiBpcyB6ZXJvLCB1c2Vyc3BhY2Ugd2FudHMgdG8gcXVlcnkgdGhlIHNlc3Npb24gbGVuZ3RoICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTE6XHRpZiAoIXBhcmFtcy5zZXNzaW9uX2xlbilcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Mi1cdFx0cmV0dXJuIF9fc2V2X3NlbmRfc3RhcnRfcXVlcnlfc2Vzc2lvbl9sZW5ndGgoa3ZtLCBhcmdwLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Ni1cdGlmICghcGFyYW1zLnBkaF9jZXJ0X3VhZGRyIHx8ICFwYXJhbXMucGRoX2NlcnRfbGVuIHx8XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTc6XHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8IHBhcmFtcy5zZXNzaW9uX2xlbiBcdTAwM2UgU0VWX0ZXX0JMT0JfTUFYX1NJWkUpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1OTgtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMC1cdC8qIGFsbG9jYXRlIHRoZSBtZW1vcnkgdG8gaG9sZCB0aGUgc2Vzc2lvbiBkYXRhIGJsb2IgKi9cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTYwMTpcdHNlc3Npb25fZGF0YSA9IGt6YWxsb2MocGFyYW1zLnNlc3Npb25fbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjAyLVx0aWYgKCFzZXNzaW9uX2RhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjM0LVx0ZGF0YS5hbWRfY2VydHNfbGVuID0gcGFyYW1zLmFtZF9jZXJ0c19sZW47XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzU6XHRkYXRhLnNlc3Npb25fYWRkcmVzcyA9IF9fcHNwX3BhKHNlc3Npb25fZGF0YSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzY6XHRkYXRhLnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjM3LVx0ZGF0YS5oYW5kbGUgPSB0b19rdm1fc2V2X2luZm8oa3ZtKS1cdTAwM2VoYW5kbGU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQwLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQxOlx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocGFyYW1zLnNlc3Npb25fdWFkZHIpLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQyOlx0XHRcdHNlc3Npb25fZGF0YSwgcGFyYW1zLnNlc3Npb25fbGVuKSkge1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQzLVx0XHRyZXQgPSAtRUZBVUxUO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTY0Ny1cdHBhcmFtcy5wb2xpY3kgPSBkYXRhLnBvbGljeTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTY0ODpcdHBhcmFtcy5zZXNzaW9uX2xlbiA9IGRhdGEuc2Vzc2lvbl9sZW47XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDktXHRpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihhcmdwLVx1MDAzZWRhdGEpLCBcdTAwMjZwYXJhbXMsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNzg5PXN0YXRpYyBpbnQgc2V2X3JlY2VpdmVfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODA4LVx0aWYgKCFwYXJhbXMucGRoX3VhZGRyIHx8ICFwYXJhbXMucGRoX2xlbiB8fFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODA5Olx0ICAgICFwYXJhbXMuc2Vzc2lvbl91YWRkciB8fCAhcGFyYW1zLnNlc3Npb25fbGVuKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODEwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MTUtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE4MTY6XHRzZXNzaW9uX2RhdGEgPSBwc3BfY29weV91c2VyX2Jsb2IocGFyYW1zLnNlc3Npb25fdWFkZHIsXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE4MTc6XHRcdFx0cGFyYW1zLnNlc3Npb25fbGVuKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTgxOC1cdGlmIChJU19FUlIoc2Vzc2lvbl9kYXRhKSkge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTgyNy1cdHN0YXJ0LnBkaF9jZXJ0X2xlbiA9IHBhcmFtcy5wZGhfbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODI4Olx0c3RhcnQuc2Vzc2lvbl9hZGRyZXNzID0gX19wc3BfcGEoc2Vzc2lvbl9kYXRhKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyOTpcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODMwLVxuLS1cbmJsb2NrL3NlZC1vcGFsLmM9MjkzNz1zdGF0aWMgdm9pZCBvcGFsX2xvY2tfY2hlY2tfZm9yX3NhdmVkX2tleShzdHJ1Y3Qgb3BhbF9kZXYgKmRldixcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTI5NjMtXHRcdFx0XHRpdGVyLVx1MDAzZWxyID09IGxrX3VubGstXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5sciBcdTAwMjZcdTAwMjZcbmJsb2NrL3NlZC1vcGFsLmM6Mjk2NDpcdFx0XHRcdGl0ZXItXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW4gXHUwMDNlIDApIHtcbmJsb2NrL3NlZC1vcGFsLmMtMjk2NS1cdFx0XHRsa191bmxrLVx1MDAzZXNlc3Npb24ub3BhbF9rZXkua2V5X2xlbiA9XG5ibG9jay9zZWQtb3BhbC5jOjI5NjY6XHRcdFx0XHRpdGVyLVx1MDAzZXVubGsuc2Vzc2lvbi5vcGFsX2tleS5rZXlfbGVuO1xuYmxvY2svc2VkLW9wYWwuYy0yOTY3LVx0XHRcdG1lbWNweShsa191bmxrLVx1MDAzZXNlc3Npb24ub3BhbF9rZXkua2V5LFxuYmxvY2svc2VkLW9wYWwuYzoyOTY4Olx0XHRcdFx0aXRlci1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5LFxuYmxvY2svc2VkLW9wYWwuYzoyOTY5Olx0XHRcdFx0aXRlci1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5X2xlbik7XG5ibG9jay9zZWQtb3BhbC5jLTI5NzAtXHRcdFx0YnJlYWs7XG4tLVxuYmxvY2svc2VkLW9wYWwuYz0zMjU5PWJvb2wgb3BhbF91bmxvY2tfZnJvbV9zdXNwZW5kKHN0cnVjdCBvcGFsX2RldiAqZGV2KVxuLS1cbmJsb2NrL3NlZC1vcGFsLmMtMzI4MC1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtGYWlsZWQgdG8gdW5sb2NrIExSICVoaHUgd2l0aCBzdW0gJWRcXG5cJiMzNDssXG5ibG9jay9zZWQtb3BhbC5jOjMyODE6XHRcdFx0XHQgc3VzcGVuZC1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkubHIsXG5ibG9jay9zZWQtb3BhbC5jOjMyODI6XHRcdFx0XHQgc3VzcGVuZC1cdTAwM2V1bmxrLnNlc3Npb24uc3VtKTtcbmJsb2NrL3NlZC1vcGFsLmMtMzI4My1cdFx0XHR3YXNfZmFpbHVyZSA9IHRydWU7XG4tLVxuYmxvY2svc2VkLW9wYWwuYy0zMjg2LVx0XHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBPUEFMX0ZMX01CUl9FTkFCTEVEKSB7XG5ibG9jay9zZWQtb3BhbC5jOjMyODc6XHRcdFx0cmV0ID0gX19vcGFsX3NldF9tYnJfZG9uZShkZXYsIFx1MDAyNnN1c3BlbmQtXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5KTtcbmJsb2NrL3NlZC1vcGFsLmMtMzI4OC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYz00Nz1zdGF0aWMgaW50IHN0bTMyX2RiZ19wdGFfb3Blbl9zZXNzaW9uKHUzMiAqaWQpXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jLTYzLVxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jOjY0Olx0KmlkID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy02NS1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM9NzQ9c3RhdGljIGludCBzdG0zMl9kYmdfYnVzX2dyYW50X2FjY2VzcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqY3RybCwgdTMyIGRiZ19wcm9maWxlKVxuLS1cbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy04OC1cdGludl9hcmcuZnVuYyA9IFBUQV9DTURfR1JBTlRfREJHX0FDQ0VTUztcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYzo4OTpcdGludl9hcmcuc2Vzc2lvbiA9IHNlc3Npb25faWQ7XG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtOTAtXHRpbnZfYXJnLm51bV9wYXJhbXMgPSAxO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9NzM9c3RhdGljIHNpemVfdCBnZXRfb3B0ZWVfcm5nX2RhdGEoc3RydWN0IG9wdGVlX3JuZ19wcml2YXRlICpwdnRfZGF0YSxcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTg2LVx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9FTlRST1BZO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzo4NzpcdGludl9hcmcuc2Vzc2lvbiA9IHB2dF9kYXRhLVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTg4LVx0aW52X2FyZy5udW1fcGFyYW1zID0gNDtcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jPTE3Nj1zdGF0aWMgaW50IGdldF9vcHRlZV9ybmdfaW5mbyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODYtXHRpbnZfYXJnLmZ1bmMgPSBUQV9DTURfR0VUX1JOR19JTkZPO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoxODc6XHRpbnZfYXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uX2lkO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODgtXHRpbnZfYXJnLm51bV9wYXJhbXMgPSA0O1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9MjExPXN0YXRpYyBpbnQgb3B0ZWVfcm5nX3Byb2JlKHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZSAqcm5nX2RldmljZSlcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzNi1cdH1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjM3Olx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzOC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1My1vdXRfc2VzczpcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjU0Olx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1NS1vdXRfY3R4OlxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9MjYxPXN0YXRpYyB2b2lkIG9wdGVlX3JuZ19yZW1vdmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yNjIte1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoyNjM6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMjY0LVx0dGVlX2NsaWVudF9jbG9zZV9jb250ZXh0KHB2dF9kYXRhLmN0eCk7XG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM9NDE1NT1zdGF0aWMgaW50IGhhbmRsZV9sYW5fZ2V0X21zZ19yc3Aoc3RydWN0IGlwbWlfc21pICppbnRmLFxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jLTQxNzctXHRsYW5fYWRkci5hZGRyX3R5cGUgPSBJUE1JX0xBTl9BRERSX1RZUEU7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX21zZ2hhbmRsZXIuYzo0MTc4Olx0bGFuX2FkZHIuc2Vzc2lvbl9oYW5kbGUgPSBtc2ctXHUwMDNlcnNwWzRdO1xuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMtNDE3OS1cdGxhbl9hZGRyLnJlbW90ZV9TV0lEID0gbXNnLVx1MDAzZXJzcFs4XTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmM9MjM5PXN0YXRpYyB2b2lkIHRwbV9kZXZfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG0tY2hpcC5jLTI0Ny1cdGtmcmVlKGNoaXAtXHUwMDNld29ya19zcGFjZS5jb250ZXh0X2J1Zik7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmM6MjQ4Olx0a2ZyZWUoY2hpcC1cdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmKTtcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYy0yNDktI2lmZGVmIENPTkZJR19UQ0dfVFBNMl9ITUFDXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9MzA2PWludCB0cG0yX3ByZXBhcmVfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSwgdTggKmNtZCxcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjAtXHQgICAgICAgc2l6ZW9mKHNwYWNlLVx1MDAzZWNvbnRleHRfdGJsKSk7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzozMjE6XHRtZW1jcHkoXHUwMDI2Y2hpcC1cdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fdGJsLCBcdTAwMjZzcGFjZS1cdTAwM2VzZXNzaW9uX3RibCxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTMyMi1cdCAgICAgICBzaXplb2Yoc3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwpKTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjQtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6MzI1Olx0bWVtY3B5KGNoaXAtXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX2J1Ziwgc3BhY2UtXHUwMDNlc2Vzc2lvbl9idWYsXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjYtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jPTU0MD1pbnQgdHBtMl9jb21taXRfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSxcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzAtXHQgICAgICAgc2l6ZW9mKHNwYWNlLVx1MDAzZWNvbnRleHRfdGJsKSk7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzo1NzE6XHRtZW1jcHkoXHUwMDI2c3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwsIFx1MDAyNmNoaXAtXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX3RibCxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTU3Mi1cdCAgICAgICBzaXplb2Yoc3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwpKTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzQtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6NTc1Olx0bWVtY3B5KHNwYWNlLVx1MDAzZXNlc3Npb25fYnVmLCBjaGlwLVx1MDAzZXdvcmtfc3BhY2Uuc2Vzc2lvbl9idWYsXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzYtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmM9NDU9c3RhdGljIGludCBmdHBtX3RlZV90cG1fb3Bfc2VuZChzdHJ1Y3QgdHBtX2NoaXAgKmNoaXAsIHU4ICpidWYsIHNpemVfdCBidWZzaXosXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy02OS1cdFx0LmZ1bmMgPSBGVFBNX09QVEVFX1RBX1NVQk1JVF9DT01NQU5ELFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYzo3MDpcdFx0LnNlc3Npb24gPSBwdnRfZGF0YS1cdTAwM2VzZXNzaW9uLFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy03MS1cdFx0Lm51bV9wYXJhbXMgPSA0LFxuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmM9MTcyPXN0YXRpYyBpbnQgZnRwbV90ZWVfcHJvYmVfZ2VuZXJpYyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMDgtXHR9XG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jOjIwOTpcdHB2dF9kYXRhLVx1MDAzZXNlc3Npb24gPSBzZXNzX2FyZy5zZXNzaW9uO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMTAtXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQwODU9c3RhdGljIGludCBnZW5lcmljX2NyYV9pbml0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxMDYtXHRhdG9taWNfaW5jKFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50KTtcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYzo0MTA3Olx0YXRvbWljX2luYyhcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxMDgtXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQxOTY9c3RhdGljIHZvaWQgZ2VuZXJpY19jcmFfZXhpdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxOTcte1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jOjQxOTg6XHRhdG9taWNfZGVjKFx1MDAyNmlwcm9jX3ByaXYuc2Vzc2lvbl9jb3VudCk7XG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDE5OS19XG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQzMzc9c3RhdGljIHZvaWQgc3B1X2NvdW50ZXJzX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDM0MS1cbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYzo0MzQyOlx0YXRvbWljX3NldChcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQsIDApO1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQzNDMtXHRhdG9taWNfc2V0KFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50LCAwKTtcbi0tXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM9MTA5PXN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19hbGdfc2tjaXBoZXJfaW5pdF9zZXNzaW9uKFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0xNzgtXHRpZiAoZW5jcnlwdClcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoxNzk6XHRcdGN0eC1cdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQgPSBsZTY0X3RvX2NwdShpbnB1dC1cdTAwM2VzZXNzaW9uX2lkKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0xODAtXHRlbHNlXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MTgxOlx0XHRjdHgtXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkID0gbGU2NF90b19jcHUoaW5wdXQtXHUwMDNlc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTgyLVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYz0xOTA9c3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9jbG9zZV9zZXNzaW9uKFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMTctXHRpZiAoZW5jcnlwdClcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMTg6XHRcdGRlc3Ryb3lfc2Vzc2lvbi1cdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVx1MDAzZWVuY19zZXNzX2luZm8uc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMjE5LVx0ZWxzZVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjIyMDpcdFx0ZGVzdHJveV9zZXNzaW9uLVx1MDAzZXNlc3Npb25faWQgPSBjcHVfdG9fbGU2NChjdHgtXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMjEtXG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jPTMyMT1fX3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfZG9fcmVxKHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9yZXF1ZXN0ICp2Y19zeW1fcmVxLFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0zNjktXHRpZiAodmNfc3ltX3JlcS1cdTAwM2VlbmNyeXB0KSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MzcwOlx0XHRyZXFfZGF0YS1cdTAwM2VoZWFkZXIuc2Vzc2lvbl9pZCA9XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MzcxOlx0XHRcdGNwdV90b19sZTY0KGN0eC1cdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3Mi1cdFx0cmVxX2RhdGEtXHUwMDNlaGVhZGVyLm9wY29kZSA9XG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3NC1cdH0gZWxzZSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc1Olx0XHRyZXFfZGF0YS1cdTAwM2VoZWFkZXIuc2Vzc2lvbl9pZCA9XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc2Olx0XHRcdGNwdV90b19sZTY0KGN0eC1cdTAwM2VkZWNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3Ny1cdFx0cmVxX2RhdGEtXHUwMDNlaGVhZGVyLm9wY29kZSA9XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MTYwPXN0YXRpYyBpbnQgb3Blbl9zZXNzaW9uKHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICphZ2VudCwgdTMyICp0ZWVfc2Vzc2lvbilcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xNzUtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxNzY6XHQqdGVlX3Nlc3Npb24gPSBhcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTE3Ny1cbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYz0xODY9c3RhdGljIGludCBnZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICphZ2VudClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xOTgtXHRhcmcuZnVuYyA9IFBUQV9TQ01JX0NNRF9DQVBBQklMSVRJRVM7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxOTk6XHRhcmcuc2Vzc2lvbiA9IHRlZV9zZXNzaW9uO1xuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMjAwLVx0YXJnLm51bV9wYXJhbXMgPSAxO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTIyNT1zdGF0aWMgaW50IGdldF9jaGFubmVsKHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMjM4LVx0YXJnLmZ1bmMgPSBQVEFfU0NNSV9DTURfR0VUX0NIQU5ORUw7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyMzk6XHRhcmcuc2Vzc2lvbiA9IGNoYW5uZWwtXHUwMDNldGVlX3Nlc3Npb247XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNDAtXHRhcmcubnVtX3BhcmFtcyA9IDE7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjYwPXN0YXRpYyBpbnQgaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNjMtXHRcdC5mdW5jID0gUFRBX1NDTUlfQ01EX1BST0NFU1NfU01UX0NIQU5ORUwsXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyNjQ6XHRcdC5zZXNzaW9uID0gY2hhbm5lbC1cdTAwM2V0ZWVfc2Vzc2lvbixcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2NS1cdFx0Lm51bV9wYXJhbXMgPSAxLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTI4Mz1zdGF0aWMgaW50IGludm9rZV9wcm9jZXNzX21zZ19jaGFubmVsKHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwsIHNpemVfdCBtc2dfc2l6ZSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODYtXHRcdC5mdW5jID0gUFRBX1NDTUlfQ01EX1BST0NFU1NfTVNHX0NIQU5ORUwsXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyODc6XHRcdC5zZXNzaW9uID0gY2hhbm5lbC1cdTAwM2V0ZWVfc2Vzc2lvbixcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI4OC1cdFx0Lm51bV9wYXJhbXMgPSAzLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz02Nj1zdGF0aWMgdm9pZCBwcmVwYXJlX2FyZ3MoaW50IGNtZCxcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtNzMtXHRhcmctXHUwMDNlZnVuYyA9IGNtZDtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzo3NDpcdGFyZy1cdTAwM2VzZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy03NS1cdGFyZy1cdTAwM2VudW1fcGFyYW1zID0gTUFYX1RFRV9QQVJBTV9BUlJZX01FTUI7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jPTE4ND1zdGF0aWMgaW50IHRlZV9ibnh0X2Z3X3Byb2JlKHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZSAqYm54dF9kZXZpY2UpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIxMC1cdH1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMTE6XHRwdnRfZGF0YS5zZXNzaW9uX2lkID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMTItXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIyNi1vdXRfc2VzczpcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMjc6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMjgtb3V0X2N0eDpcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MjM0PXN0YXRpYyB2b2lkIHRlZV9ibnh0X2Z3X3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKmJueHRfZGV2aWNlKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMzYtXHR0ZWVfc2htX2ZyZWUocHZ0X2RhdGEuZndfc2htX3Bvb2wpO1xuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jOjIzNzpcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzOC1cdHRlZV9jbGllbnRfY2xvc2VfY29udGV4dChwdnRfZGF0YS5jdHgpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz0yNDI9c3RhdGljIHZvaWQgdGVlX2JueHRfZndfc2h1dGRvd24oc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtMjQ0LVx0dGVlX3NobV9mcmVlKHB2dF9kYXRhLmZ3X3NobV9wb29sKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyNDU6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDYtXHR0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQocHZ0X2RhdGEuY3R4KTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jPTUxPXN0YXRpYyBlZmlfc3RhdHVzX3QgdGVlX21tX2NvbW11bmljYXRlKHZvaWQgKmNvbW1fYnVmLCBzaXplX3QgZHNpemUpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy03Ni1cdGFyZy5mdW5jID0gUFRBX1NUTU1fQ01EX0NPTU1VTklDQVRFO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo3NzpcdGFyZy5zZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNzgtXHRhcmcubnVtX3BhcmFtcyA9IDQ7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MTE9c3RhdGljIHZvaWQgdGVlX3N0bW1fZWZpX2Nsb3NlX3Nlc3Npb24odm9pZCAqZGF0YSlcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTEyLXtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6NTEzOlx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbik7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTUxNC19XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MzE9c3RhdGljIGludCB0ZWVfc3RtbV9lZmlfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU0LVx0fVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo1NTU6XHRwdnRfZGF0YS5zZXNzaW9uID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU2LVx0cHZ0X2RhdGEuZGV2ID0gZGV2O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNjM1PXN0YXRpYyB2b2lkIHBzcF9wcmVwX3RhX3VubG9hZF9jbWRfYnVmKHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE2MzgtXHRjbWQtXHUwMDNlY21kX2lkID0gR0ZYX0NNRF9JRF9VTkxPQURfVEE7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTYzOTpcdGNtZC1cdTAwM2VjbWQuY21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNjQwLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM9MTczNT1zdGF0aWMgdm9pZCBwc3BfcHJlcF90YV9pbnZva2VfY21kX2J1ZihzdHJ1Y3QgcHNwX2dmeF9jbWRfcmVzcCAqY21kLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNzM5LVx0Y21kLVx1MDAzZWNtZF9pZFx0XHRcdFx0PSBHRlhfQ01EX0lEX0lOVk9LRV9DTUQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTc0MDpcdGNtZC1cdTAwM2VjbWQuY21kX2ludm9rZV9jbWQuc2Vzc2lvbl9pZFx0PSBzZXNzaW9uX2lkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE3NDEtXHRjbWQtXHUwMDNlY21kLmNtZF9pbnZva2VfY21kLnRhX2NtZF9pZFx0PSB0YV9jbWRfaWQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jPTE3NjM9aW50IHBzcF90YV9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLCBzdHJ1Y3QgdGFfY29udGV4dCAqY29udGV4dClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc4OS1cdGlmICghcmV0KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jOjE3OTA6XHRcdGNvbnRleHQtXHUwMDNlc2Vzc2lvbl9pZCA9IGNtZC1cdTAwM2VyZXNwLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc5MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MjUyPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2NyZWF0ZV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMjc3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjI3ODpcdGhkY3AtXHUwMDNlYXV0aC5pZCA9IGhkY3BfY21kLVx1MDAzZW91dF9tc2cuaGRjcDFfY3JlYXRlX3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGU7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMjc5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz0yOTQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDFfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzA1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMwNjpcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMV9kZXN0cm95X3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzA3LVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9ERVNUUk9ZX1NFU1NJT047XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTMyOD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV92YWxpZGF0ZV9yeChzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTMzNy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzozMzg6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZmlyc3RfcGFydF9hdXRoZW50aWNhdGlvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXHUwMDNlYXV0aC5pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTM2OT1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTM4Mi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzozODM6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzg0LVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9FTkFCTEVfRU5DUllQVElPTjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9Mzk5PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX3ZhbGlkYXRlX2tzdmxpc3RfdnAoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00MDgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDA5Olx0aGRjcF9jbWQtXHUwMDNlaW5fbXNnLmhkY3AxX3NlY29uZF9wYXJ0X2F1dGhlbnRpY2F0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cdTAwM2VhdXRoLmlkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQxMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDQwPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ1Ny1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo0NTg6XHRcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMV9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDU5LVx0XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cdTAwM2VkaXNwbGF5c1tpXS5pbmRleDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDc3PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2xpbmtfbWFpbnRlbmFuY2Uoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00ODctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDg4Olx0aGRjcF9jbWQtXHUwMDNlaW5fbXNnLmhkY3AxX2dldF9lbmNyeXB0aW9uX3N0YXR1cy5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXHUwMDNlYXV0aC5pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00ODktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTUwMz1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTU0My1cdGVsc2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo1NDQ6XHRcdGhkY3AtXHUwMDNlYXV0aC5pZCA9IGhkY3BfY21kLVx1MDAzZW91dF9tc2cuaGRjcDJfY3JlYXRlX3Nlc3Npb25fdjIuc2Vzc2lvbl9oYW5kbGU7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQ1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz01NTA9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjU2MTpcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMl9kZXN0cm95X3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYyLVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMl9ERVNUUk9ZX1NFU1NJT047XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTgzND1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTg0OC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo4NDk6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDJfc2V0X2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtODUwLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz05MTg9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTM5LVx0XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cdTAwM2VkaXNwbGF5c1tpXS5pbmRleDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo5NDA6XHRcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMl9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTQxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTUyPXN0YXRpYyBpbnQgcmFzX3BzcF9zeW5jX3N5c3RlbV9yYXNfcHNwX3N0YXR1cyhzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNjctXHRcdFx0dGFfY3R4LVx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHN0YXR1cy5pbml0aWFsaXplZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jOjY4Olx0XHRcdHRhX2N0eC1cdTAwM2VzZXNzaW9uX2lkID0gc3RhdHVzLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02OS1cdFx0fVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTI0Mj1zdGF0aWMgaW50IHNlbmRfcHNwX2NtZChzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtMzA4LVx0cmVzcC1cdTAwM2VzdGF0dXMgPSBnZnhfY21kLVx1MDAzZXJlc3Auc3RhdHVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6MzA5Olx0cmVzcC1cdTAwM2VzZXNzaW9uX2lkID0gZ2Z4X2NtZC1cdTAwM2VyZXNwLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy0zMTAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9MzU0PXN0YXRpYyBpbnQgc2VuZF9yYXNfdGFfcnVudGltZV9jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5MC1cdGludm9rZV9jbWQudGFfY21kX2lkID0gY21kX2lkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6MzkxOlx0aW52b2tlX2NtZC5zZXNzaW9uX2lkID0gdGFfY3R4LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy0zOTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9NDY1PXN0YXRpYyBpbnQgc2VuZF9sb2FkX3RhX2Z3X2NtZChzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTMwLVx0XHR0YV9jdHgtXHUwMDNldGFfdmVyc2lvbiA9IGZ3X2hkci1cdTAwM2VpbWFnZV92ZXJzaW9uO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6NTMxOlx0XHR0YV9jdHgtXHUwMDNlc2Vzc2lvbl9pZCA9IHJlc3Auc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTUzMi1cdFx0dGFfY3R4LVx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHRydWU7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9NTY3PXN0YXRpYyBpbnQgdW5sb2FkX3Jhc190YV9maXJtd2FyZShzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTc3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6NTc4Olx0Y21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gdGFfY3R4LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy01NzktXHRyZXQgPSBzZW5kX3BzcF9jbWQocmFzX2NvcmUsIEdGWF9DTURfSURfVU5MT0FEX1RBLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmM9MzMwPWludCBpbnRlbF9weHBfdGVlX2NtZF9jcmVhdGVfYXJiX3Nlc3Npb24oc3RydWN0IGludGVsX3B4cCAqcHhwLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmMtMzQxLVx0bXNnX2luLnByb3RlY3Rpb25fbW9kZSA9IFBYUDQyX0FSQl9TRVNTSU9OX01PREVfSEVBVlk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jOjM0MjpcdG1zZ19pbi5zZXNzaW9uX2lkID0gYXJiX3Nlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jLTM0My1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jPTk3Mz1zdGF0aWMgc3RydWN0IGlzY3NpX3RyYW5zcG9ydCBpc2NzaV9pc2VyX3RyYW5zcG9ydCA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jLTEwMDMtXHQvKiByZWNvdmVyeSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYzoxMDA0Olx0LnNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQgPSBpc2NzaV9zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0LFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYy0xMDA1LVxuLS1cbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jPTIzNDk9c3RhdGljIGludCBfX211c3RfY2hlY2sgaW5pdGlhbGl6ZV96b25lKHN0cnVjdCB2ZG8gKnZkbywgc3RydWN0IGhhc2hfem9uZXMgKnpvbmVzLFxuLS1cbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jLTIzODYtXHRcdGNvbnRleHQtXHUwMDNlcmVxdWVzdC5jYWxsYmFjayA9IGZpbmlzaF9pbmRleF9vcGVyYXRpb247XG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYzoyMzg3Olx0XHRjb250ZXh0LVx1MDAzZXJlcXVlc3Quc2Vzc2lvbiA9IHpvbmVzLVx1MDAzZWluZGV4X3Nlc3Npb247XG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYy0yMzg4LVx0XHRsaXN0X2FkZChcdTAwMjZjb250ZXh0LVx1MDAzZWxpc3RfZW50cnksIFx1MDAyNnpvbmUtXHUwMDNlYXZhaWxhYmxlKTtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz05Mj1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9vcGVuKHN0cnVjdCBpcmlzX2luc3QgKmluc3QpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE0LVx0cGFja2V0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TWVNfU0VTU0lPTl9JTklUO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE1Olx0cGFja2V0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNi1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNy1cdGlmIChpbnN0LVx1MDAzZWRvbWFpbiA9PSBERUNPREVSKVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE4Olx0XHRwYWNrZXQuc2Vzc2lvbl9kb21haW4gPSBIRklfU0VTU0lPTl9UWVBFX0RFQztcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExOS1cdGVsc2VcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjEyMDpcdFx0cGFja2V0LnNlc3Npb25fZG9tYWluID0gSEZJX1NFU1NJT05fVFlQRV9FTkM7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xMjEtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMjI6XHRwYWNrZXQuc2Vzc2lvbl9jb2RlYyA9IGNvZGVjO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTIzLVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTEzMz1zdGF0aWMgdm9pZCBpcmlzX2hmaV9nZW4xX3BhY2tldF9zZXNzaW9uX2NtZChzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LFxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEzOC1cdHBhY2tldC1cdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IHB0eXBlO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTM5Olx0cGFja2V0LVx1MDAzZXNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTE0MC19XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MTg4PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9zZXNzaW9uX3N0b3Aoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgdTMyIHBsYW5lKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTIwNi1cdFx0XHRmbHVzaF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRkxVU0g7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoyMDc6XHRcdFx0Zmx1c2hfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTIwOC1cdFx0XHRmbHVzaF9wa3QuZmx1c2hfdHlwZSA9IGZsdXNoX3R5cGU7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9Mjc0PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9pbnB1dF9idWZmZXIoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgc3RydWN0IGlyaXNfYnVmZmVyICpidWYpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgxLVx0XHRjb21faXBfcGt0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX0VNUFRZX0JVRkZFUjtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjI4MjpcdFx0Y29tX2lwX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0yODMtXHRcdGNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVx1MDAzZXRpbWVzdGFtcCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjk4LVx0XHR1bmNvbV9pcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6Mjk5Olx0XHR1bmNvbV9pcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzAwLVx0XHR1bmNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVx1MDAzZXRpbWVzdGFtcCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MzE2PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9vdXRwdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTMyMS1cdG9wX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GSUxMX0JVRkZFUjtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjMyMjpcdG9wX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zMjMtXHRvcF9wa3Qub3V0cHV0X3RhZyA9IGJ1Zi1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0zMzk9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3F1ZXVlX2ludGVybmFsX2J1ZmZlcihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCBzdHJ1Y3QgaXJpc19idWZmZXIgKmJ1Zilcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zNTEtXHRpbnRfcGt0LVx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9CVUZGRVJTO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MzUyOlx0aW50X3BrdC1cdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zNTMtXHRpbnRfcGt0LVx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVx1MDAzZWJ1ZmZlcl9zaXplO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTM5ND1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxMi1cdHBrdC1cdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9SRUxFQVNFX0JVRkZFUlM7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0MTM6XHRwa3QtXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDE0LVx0cGt0LVx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVx1MDAzZWJ1ZmZlcl9zaXplO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTQ1Mz1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9kcmFpbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCB1MzIgcGxhbmUpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDU5LVx0XHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDYwOlx0XHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDYxLVx0XHRpcF9wa3QuZmxhZ3MgPSBIRklfQlVGRkVSRkxBR19FT1M7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDcxLVx0XHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDcyOlx0XHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDczLVx0XHRpcF9wa3QuZmxhZ3MgPSBIRklfQlVGRkVSRkxBR19FT1M7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9NDgzPWlyaXNfaGZpX2dlbjFfcGFja2V0X3Nlc3Npb25fc2V0X3Byb3BlcnR5KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfcHJvcGVydHlfcGt0ICpwYWNrZXQsXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDg5LVx0cGFja2V0LVx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9QUk9QRVJUWTtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjQ5MDpcdHBhY2tldC1cdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00OTEtXHRwYWNrZXQtXHUwMDNlbnVtX3Byb3BlcnRpZXMgPSAxO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU0MQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlJlZmluaW5nIHRoZSBTZWFyY2ggU3RyYXRlZ3kqKgoKSG1tLCBJIHNlZSBJIHdhcyBpbml0aWFsbHkgdG9vIGJyb2FkIHdpdGggbXkgc2VhcmNoIGZvciBgXC5zZXNzaW9uYC4gVGhhdCBwYXR0ZXJuLCBvZiBjb3Vyc2UsIHdvdWxkIG1hdGNoIG5vdCBqdXN0IHRoZSBzcGVjaWZpYyB2YXJpYWJsZSBvciBrZXkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBidXQgKmFueSogaW5zdGFuY2Ugb2YgYC5zZXNzaW9uYCwgbGlrZSBpbiBzb21ldGhpbmcgd2l0aCBhIGdlbmVyYWwgc3RydWN0dXJlLiBTbyB0aGF0IGluaXRpYWwgc2VhcmNoIG1pZ2h0IGhhdmUgeWllbGRlZCBpcnJlbGV2YW50IHJlc3VsdHMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIExldCYjMzk7cyB0cnkgbmFycm93aW5nIGl0IGRvd24uIE15IG9iamVjdGl2ZSBpcyB0byBmaW5kIGluc3RhbmNlcyB0aGF0IGV4cGxpY2l0bHkgcmVsYXRlIHRvIGBhcmdzLnNlc3Npb25gLCBvciBwZXJoYXBzIGFuIGVxdWl2YWxlbnQgc3RydWN0dXJlIGFjY2Vzc2VkIHdpdGggYC0mZ3Q7YC4gVGhlcmVmb3JlLCBJJiMzOTtsbCByZXZpc2UgbXkgc2VhcmNoIHRvIHNwZWNpZmljYWxseSBsb29rIGZvciBgYXJnc1wuc2Vzc2lvbmAgb3IgYGFyZ3MtJmd0O3Nlc3Npb25gLiBUaGF0IHNob3VsZCBwcm92aWRlIG1vcmUgZm9jdXNlZCBhbmQgcmVsZXZhbnQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXJnc1xcLnNlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmZzL25mczRwcm9jLmM9ODQ1ND1pbnQgbmZzNF9wcm9jX2JpbmRfb25lX2Nvbm5fdG9fc2Vzc2lvbihzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQsXG4tLVxuZnMvbmZzL25mczRwcm9jLmMtODQ4MS1cbmZzL25mcy9uZnM0cHJvYy5jOjg0ODI6XHRuZnM0X2NvcHlfc2Vzc2lvbmlkKFx1MDAyNmFyZ3Muc2Vzc2lvbmlkLCBcdTAwMjZjbHAtXHUwMDNlY2xfc2Vzc2lvbi1cdTAwM2VzZXNzX2lkKTtcbmZzL25mcy9uZnM0cHJvYy5jLTg0ODMtXHRpZiAoIShjbHAtXHUwMDNlY2xfc2Vzc2lvbi1cdTAwM2VmbGFncyBcdTAwMjYgU0VTU0lPTjRfQkFDS19DSEFOKSlcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTIzMD1pbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg2LVx0YXJncy5oYW5kbGVyID0gZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjI4NzpcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0yODgtXHRhcmdzLmZpbGUgPSBmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9MzM0PXZvaWQgbHVvX2ZpbGVfdW5wcmVzZXJ2ZV9maWxlcyhzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0NC1cdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjM0NTpcdFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0Ni1cdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzgtXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzk6XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zODAtXHRcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zOTI9c3RhdGljIHZvaWQgbHVvX2ZpbGVfdW5mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDAwLVx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDAxOlx0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDAyLVx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9NTU2PWludCBsdW9fcmV0cmlldmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTkzLVx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU5NDpcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy01OTUtXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI3LVx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI4Olx0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI5LVx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9NjM4PXN0YXRpYyB2b2lkIGx1b19maWxlX2ZpbmlzaF9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy02NDUtXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjQ2Olx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Ny1cdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgJiMzNDtMaXZldXBkYXRlJiMzNDsgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgLiBSaWdodCBub3csIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IG5vbmUgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMgYXJlIGFjdHVhbGx5ICp1c2luZyogZWl0aGVyIGBhcmdzLSZndDtzZXNzaW9uYCBvciBgYXJncy5zZXNzaW9uYC4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgZmllbGQsIHRoZSBwb3B1bGF0aW9uIHdpdGhpbiBgbHVvX2ZpbGUuY2AsIGFuZCB0aGUgYWRkaXRpb24gb2YgYGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdgIGFuZCBgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdgLCB3aGljaCBhcmUgZXhwb3J0ZWQsIGJ1dCBzZWVtIHVudXNlZC4gU28sIHRoZSBwYXRjaCwgYXQgdGhpcyBwb2ludCwgYXBwZWFycyB0byBiZSBkZWFkIGNvZGUsIG9yIG1heWJlIGFuIEFQSSBob29rIGZvciBzb21lIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbi4gSXQgZG9lc24mIzM5O3QgbW9kaWZ5IGFueSBjdXJyZW50IGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IGluIGFueSB3YXkuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCBjb2RlIGZvciBhbnkgZXhpc3RpbmcgZmlsZSBoYW5kbGVycyBhbmQgdGhlaXIgYWNjZXNzIG9mIGEgYHNlc3Npb25gIHZhcmlhYmxlIHdpdGhvdXQgdGhlIGBhcmdzLmAgb3IgYGFyZ3MtJmd0O2Agc2NvcGUgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBzb21lIG90aGVyIGNoYW5nZS4gSSB3YW50IHRvIHJ1bGUgb3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBtaXNzaW5nIGFuIGluZGlyZWN0IHVzYWdlIG9mIHRoZSBuZXcgbWVtYmVyLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhhdCBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBpbiB0aG9zZSBmaWxlIGhhbmRsZXIgZGVmaW5pdGlvbnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTIzPXN0cnVjdCBmaWxlO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1LS8qKlxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjY6ICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0yNy0gKiBAaGFuZGxlcjogICAgICAgICAgVGhlIGZpbGUgaGFuZGxlciBiZWluZyBjYWxsZWQuXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDYtICovXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo0NzpzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3Mge1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDgtXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmhhbmRsZXI7XG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNzMtICogQWxsIG9wZXJhdGlvbnMgKGV4Y2VwdCBjYW5fcHJlc2VydmUpIHJlY2VpdmUgYSBwb2ludGVyIHRvIGFcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc0OiAqICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGNvbnRleHQuXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03NS0gKi9cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTc2PXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03OC1cdFx0XHQgICAgIHN0cnVjdCBmaWxlICpmaWxlKTtcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc5Olx0aW50ICgqcHJlc2VydmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MDpcdHZvaWQgKCp1bnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODE6XHRpbnQgKCpmcmVlemUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MjpcdHZvaWQgKCp1bmZyZWV6ZSkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgzOlx0aW50ICgqcmV0cmlldmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4NDpcdGJvb2wgKCpjYW5fZmluaXNoKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODU6XHR2b2lkICgqZmluaXNoKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtODYtXHR1bnNpZ25lZCBsb25nICgqZ2V0X2lkKShzdHJ1Y3QgZmlsZSAqZmlsZSk7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0yMzA9aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MjMyOlx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMy1cdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqZmg7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zMzQ9dm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzM4LVx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmZpbGVfc2V0LVx1MDAzZWZpbGVzX2xpc3QpKSB7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMzOTpcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0MC1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzUtXHRpZiAobHVvX2ZpbGUtXHUwMDNlZmgtXHUwMDNlb3BzLVx1MDAzZWZyZWV6ZSkge1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzY6XHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzctXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zOTI9c3RhdGljIHZvaWQgbHVvX2ZpbGVfdW5mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzk3LVx0aWYgKGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2V1bmZyZWV6ZSkge1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozOTg6XHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zOTktXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz01NTY9aW50IGx1b19yZXRyaWV2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy01NTgte1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo1NTk6XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTYwLVx0c3RydWN0IGx1b19maWxlICpsdW9fZmlsZTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI0LVx0aWYgKGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2VjYW5fZmluaXNoKSB7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjYyNTpcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTYyNi1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYzOD1zdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQwLXtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjQxOlx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Mi1cbi0tXG5tbS9tZW1mZF9sdW8uYz0yMzE9c3RhdGljIHZvaWQgbWVtZmRfbHVvX3VucHJlc2VydmVfZm9saW9zKHN0cnVjdCBraG9fdm1hbGxvYyAqa2hvX3ZtYWxsb2MsXG4tLVxubW0vbWVtZmRfbHVvLmMtMjU3LVxubW0vbWVtZmRfbHVvLmM6MjU4OnN0YXRpYyBpbnQgbWVtZmRfbHVvX3ByZXNlcnZlKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncylcbm1tL21lbWZkX2x1by5jLTI1OS17XG4tLVxubW0vbWVtZmRfbHVvLmMtMzIzLVxubW0vbWVtZmRfbHVvLmM6MzI0OnN0YXRpYyBpbnQgbWVtZmRfbHVvX2ZyZWV6ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy0zMjUte1xuLS1cbm1tL21lbWZkX2x1by5jLTM0MS1cbm1tL21lbWZkX2x1by5jOjM0MjpzdGF0aWMgdm9pZCBtZW1mZF9sdW9fdW5wcmVzZXJ2ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy0zNDMte1xuLS1cbm1tL21lbWZkX2x1by5jPTM2Mj1zdGF0aWMgdm9pZCBtZW1mZF9sdW9fZGlzY2FyZF9mb2xpb3MoY29uc3Qgc3RydWN0IG1lbWZkX2x1b19mb2xpb19zZXIgKmZvbGlvc19zZXIsXG4tLVxubW0vbWVtZmRfbHVvLmMtMzg2LVxubW0vbWVtZmRfbHVvLmM6Mzg3OnN0YXRpYyB2b2lkIG1lbWZkX2x1b19maW5pc2goc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxubW0vbWVtZmRfbHVvLmMtMzg4LXtcbi0tXG5tbS9tZW1mZF9sdW8uYz00MTc9c3RhdGljIGludCBtZW1mZF9sdW9fcmV0cmlldmVfZm9saW9zKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbm1tL21lbWZkX2x1by5jLTUxNy1cbm1tL21lbWZkX2x1by5jOjUxODpzdGF0aWMgaW50IG1lbWZkX2x1b19yZXRyaWV2ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy01MTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIwNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqRGVlcCBEaXZlIGludG8gYG1tL21lbWZkX2x1by5jYCBhbmQgaXRzIENvbm5lY3Rpb24gdG8gU2Vzc2lvbiBBcmd1bWVudHMqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHByZXR0eSBmb2N1c2VkLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgc29sZSBmaWxlIGhhbmRsZXIsIGBtbS9tZW1mZF9sdW8uY2AuIFRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCwga2VlcHMgdGhlIHNjb3BlIG1hbmFnZWFibGUuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkOiBkb2VzIHRoaXMgaGFuZGxlciwgdGhlIG9uZSBhbmQgb25seSBmb3IgdGhpcyB0YXNrLCBhY3R1YWxseSBsZXZlcmFnZSBgYXJncy0mZ3Q7c2Vzc2lvbmA/IFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiwgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGUuIEl0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nlc3Npb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tZW1mZF9sdW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDMxCgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnVzZWQgQVBJIGluIGEgTGl2ZXVwZGF0ZSBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQmIzM5O3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gSXQgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgYHNlc3Npb25gIGZpZWxkIHRvIHRoZSBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEFsb25nc2lkZSB0aGF0LCB3ZSYjMzk7dmUgZ290IHR3byBuZXcgZnVuY3Rpb25zLCBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIEJvdGggb2YgdGhlc2UgYXJlIGV4cG9ydGVkLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSB0ZWNobmljYWxseSBhdmFpbGFibGUgZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwuIEhvd2V2ZXIsIGFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXIsICp0aGV5IGFyZW4mIzM5O3QgYWN0dWFsbHkgdXNlZCBhbnl3aGVyZSB3aXRoaW4gdGhlIGtlcm5lbCBjb2RlKi4gTm93aGVyZSEKClRoZSBgc2Vzc2lvbmAgZmllbGQgaXRzZWxmLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBhbHNvIHBvcHVsYXRlZCBidXQgY29tcGxldGVseSBpZ25vcmVkIGJ5IGFueSBvZiB0aGUgZXhpc3RpbmcgZmlsZSBoYW5kbGVycy4gSXQmIzM5O3MganVzdC4uLnRoZXJlLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUgd2VudCB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgYWRkaW5nIGFsbCB0aGlzIG5ldyBBUEkgYW5kIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgYnV0IGNvbXBsZXRlbHkgbmVnbGVjdGVkIHRvICp1c2UqIGFueSBvZiBpdC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIHN1YmplY3QgdG8gZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IGNyZWF0aW5nIHVudXNlZCBBUEkgYW5kIGZpZWxkcy4gU28sIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBmbGFnIHRoaXMgb25lIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCBkb2VzbiYjMzk7dCBwcmVzZW50IGFueSBpbW1lZGlhdGUgYXR0YWNrIHN1cmZhY2Ugb3IgY2hhbmdlIHRvIHRoZSBleGlzdGluZyBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIHRvICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICYjMzk7bGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyYjMzk7IGFuZCAmIzM5O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzOTsuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIHRvICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICYjMzk7bGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyYjMzk7IGFuZCAmIzM5O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzOTsuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MTguNDYyMDIzNTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1MjM4MDY0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ3Nlc3Npb24nIGZpZWxkIHRvICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAnbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZycgYW5kICdsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZycuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICdzZXNzaW9uJyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MTguNDYyMDMyMDQ4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg3MzI5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Zjc2ZmEzN2UwYWFiOTUyMWQ4ZWYxMzZkMmMwN2I5ZWNkOGE4ZDgxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDAyOjUxOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcXG5pbmRleCA2M2VhNTQxN2RlODQ5YS4uNjA1MWFiYzA2MTJjZWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBmaWxlO1xcbiAvKipcXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXFxuICAqIEBoYW5kbGVyOiAgICAgICAgICBUaGUgZmlsZSBoYW5kbGVyIGJlaW5nIGNhbGxlZC5cXG4rICogQHNlc3Npb246ICAgICAgICAgIFRoZSBzZXNzaW9uIHRoaXMgZmlsZSBiZWxvbmdzIHRvLlxcbiAgKiBAcmV0cmlldmVfc3RhdHVzOiAgVGhlIHJldHJpZXZlIHN0YXR1cyBmb3IgdGhlICdjYW5fZmluaXNoIC8gZmluaXNoJ1xcbiAgKiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLiBBIHZhbHVlIG9mIDAgbWVhbnMgdGhlIHJldHJpZXZlIGhhcyBub3QgYmVlblxcbiAgKiAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkLCBhIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHRoZSByZXRyaWV2ZSB3YXNcXG5AQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgZmlsZTtcXG4gICovXFxuIHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyB7XFxuIFxcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjtcXG4rXFx0c3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjtcXG4gXFx0aW50IHJldHJpZXZlX3N0YXR1cztcXG4gXFx0c3RydWN0IGZpbGUgKmZpbGU7XFxuIFxcdHU2NCBzZXJpYWxpemVkX2RhdGE7XFxuQEAgLTI0Nyw2ICsyNDksMTQgQEAgdm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpO1xcbiBpbnQgbGl2ZXVwZGF0ZV9mbGJfZ2V0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiLCB2b2lkICoqb2JqcCk7XFxuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcXG4gXFxuKy8qIGtlcm5lbCBjYW4gaW50ZXJuYWxseSByZXRyaWV2ZSBmaWxlcyAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcXG4rXFxuKy8qIEdldCBhIHRva2VuIGZvciBhbiBvdXRnb2luZyBmaWxlLCBvciAtRU5PRU5UIGlmIGZpbGUgaXMgbm90IHByZXNlcnZlZCAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xcbitcXG4gI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBsaXZldXBkYXRlX2VuYWJsZWQodm9pZClcXG5AQCAtMjk5LDUgKzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxcbiB7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0b2tlbiwgc3RydWN0IGZpbGUgKipmaWxlcClcXG4re1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4re1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK31cXG4rXFxuICNlbmRpZiAvKiBDT05GSUdfTElWRVVQREFURSAqL1xcbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY1xcbmluZGV4IGMzOWY5Njk2MWE4NWJlLi5kYmFlMDcxNTIyMGIxMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXFxuKysrIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY1xcbkBAIC0yODQsNiArMjg0LDcgQEAgaW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2bHVvX2ZpbGUtXFx1MDAzZW11dGV4KTtcXG4gXFxuIFxcdGFyZ3MuaGFuZGxlciA9IGZoO1xcbitcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0YXJncy5maWxlID0gZmlsZTtcXG4gXFx0ZXJyID0gZmgtXFx1MDAzZW9wcy1cXHUwMDNlcHJlc2VydmUoXFx1MDAyNmFyZ3MpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0zNDEsNiArMzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xcbiBcXG4gXFx0XFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbitcXHRcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuIFxcdFxcdGFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtXFx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcXG4gXFx0XFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbkBAIC0zNzQsNiArMzc2LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbiBcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG4gXFxuIFxcdFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdFxcdGFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5AQCAtMzk1LDYgKzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4gXFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxuIFxcbiBcXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxuK1xcdFxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbiBcXHRcXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cXHUwMDNlZmlsZTtcXG4gXFx0XFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xcbiBcXHRcXHRhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuQEAgLTU4Nyw2ICs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4gXFx0fVxcbiBcXG4gXFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbitcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xcbiBcXHRlcnIgPSBsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlcmV0cmlldmUoXFx1MDAyNmFyZ3MpO1xcbiBcXHRpZiAoZXJyKSB7XFxuQEAgLTYyMCw2ICs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbiBcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG4gXFxuIFxcdFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdFxcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXFx1MDAzZXJldHJpZXZlX3N0YXR1cztcXG5AQCAtNjM3LDYgKzY0Myw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX2ZpbmlzaF9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuIFxcdGd1YXJkKG11dGV4KShcXHUwMDI2bHVvX2ZpbGUtXFx1MDAzZW11dGV4KTtcXG4gXFxuIFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXFx1MDAzZXJldHJpZXZlX3N0YXR1cztcXG5AQCAtOTI2LDMgKzkzMyw2NSBAQCB2b2lkIGxpdmV1cGRhdGVfdW5yZWdpc3Rlcl9maWxlX2hhbmRsZXIoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpmaClcXG4gXFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xcbiB9XFxuK1xcbisvKipcXG4rICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxcbisgKiBAczogICAgICBUaGUgb3V0Z29pbmcgbGl2ZXVwZGF0ZSBzZXNzaW9uLlxcbisgKiBAZmlsZTogICBUaGUgZmlsZSBvYmplY3QgdG8gc2VhcmNoIGZvci5cXG4rICogQHRva2VucDogT3V0cHV0IHBhcmFtZXRlciBmb3IgdGhlIGZvdW5kIHRva2VuLlxcbisgKlxcbisgKiBTZWFyY2hlcyB0aGUgbGlzdCBvZiBwcmVzZXJ2ZWQgZmlsZXMgaW4gYW4gb3V0Z29pbmcgc2Vzc2lvbiBmb3IgYSBtYXRjaGluZ1xcbisgKiBmaWxlIG9iamVjdC4gSWYgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIHVzZXItcHJvdmlkZWQgdG9rZW4gaXMgcmV0dXJuZWQuXFxuKyAqXFxuKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGluLWtlcm5lbCBjYWxsZXJzIHRoYXQgbmVlZCB0byBjb3JyZWxhdGUgYVxcbisgKiBmaWxlIHdpdGggaXRzIGxpdmV1cGRhdGUgdG9rZW4uXFxuKyAqXFxuKyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZC5cXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FTk9FTlQgaWYgdGhlIGZpbGUgaXMgbm90IHByZXNlcnZlZCBpbiB0aGlzIHNlc3Npb24uXFxuKyAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApXFxuK3tcXG4rXFx0c3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTtcXG4rXFx0c3RydWN0IGx1b19maWxlICpsdW9fZmlsZTtcXG4rXFx0aW50IGVyciA9IC1FTk9FTlQ7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcXHUwMDI2ZmlsZV9zZXQtXFx1MDAzZWZpbGVzX2xpc3QsIGxpc3QpIHtcXG4rXFx0XFx0aWYgKGx1b19maWxlLVxcdTAwM2VmaWxlID09IGZpbGUpIHtcXG4rXFx0XFx0XFx0aWYgKHRva2VucClcXG4rXFx0XFx0XFx0XFx0KnRva2VucCA9IGx1b19maWxlLVxcdTAwM2V0b2tlbjtcXG4rXFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XFxuK1xcbisvKipcXG4rICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxcbisgKiBAczogICAgICBUaGUgaW5jb21pbmcgbGl2ZXVwZGF0ZSBzZXNzaW9uIChyZXN0b3JlZCBmcm9tIHRoZSBwcmV2aW91cyBrZXJuZWwpLlxcbisgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLlxcbisgKiBAZmlsZXA6ICBPbiBzdWNjZXNzLCB0aGlzIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYSBwb2ludGVyIHRvIHRoZSByZXRyaWV2ZWRcXG4rICogICAgICAgICAgJ3N0cnVjdCBmaWxlJy5cXG4rICpcXG4rICogUHJvdmlkZXMgYSBrZXJuZWwtaW50ZXJuYWwgQVBJIGZvciBvdGhlciBzdWJzeXN0ZW1zIHRvIHJldHJpZXZlIHRoZWlyXFxuKyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXJcXG4rICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxcbisgKlxcbisgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0XFxuKyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJ3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2VcXG4rICogZmlsZSBkZXNjcmlwdG9ycy5cXG4rICpcXG4rICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi5cXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIFJldHVybnMgLUVOT0VOVCBpZiBubyBmaWxlIHdpdGggdGhlIG1hdGNoaW5nIHRva2VuIGlzXFxuKyAqICAgICAgICAgZm91bmQsIG9yIGFueSBvdGhlciBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbisgKi9cXG4raW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IGZpbGUgKipmaWxlcClcXG4re1xcbitcXHRyZXR1cm4gbHVvX3JldHJpZXZlX2ZpbGUobHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyksXFxuK1xcdFxcdFxcdFxcdCB0b2tlbiwgZmlsZXApO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcpO1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXFxuaW5kZXggNjQ4NzlmZmU3Mzc4MWMuLmRhYzY2NDRiZmIxOGFhIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXFxuKysrIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcXG5AQCAtNzcsNiArNzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcXG4gXFxuIGV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlIGx1b19yZWdpc3Rlcl9yd2xvY2s7XFxuIFxcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKmx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXFxuK3tcXG4rXFx0c3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uO1xcbitcXG4rXFx0c2Vzc2lvbiA9IGNvbnRhaW5lcl9vZihmaWxlX3NldCwgc3RydWN0IGx1b19zZXNzaW9uLCBmaWxlX3NldCk7XFxuK1xcbitcXHRyZXR1cm4gKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKilzZXNzaW9uO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBsdW9fZmlsZV9zZXQgKmx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMpXFxuK3tcXG4rXFx0c3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uID0gKHN0cnVjdCBsdW9fc2Vzc2lvbiAqKXM7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZzZXNzaW9uLVxcdTAwM2VtdXRleCk7XFxuK1xcdHJldHVybiBcXHUwMDI2c2Vzc2lvbi1cXHUwMDNlZmlsZV9zZXQ7XFxuK31cXG4rXFxuIGludCBsdW9fc2Vzc2lvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7XFxuIGludCBsdW9fc2Vzc2lvbl9yZXRyaWV2ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcXG4gdm9pZCBfX2luaXQgbHVvX3Nlc3Npb25fc2V0dXBfb3V0Z29pbmcodTY0ICpzZXNzaW9uc19wYSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjE5LjEyMTU4MzQ2MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU0ODY0MjMzMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdzZXNzaW9uJyBmaWVsZCB0byAnc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJyBhbmQgdHdvIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMgJ2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcnIGFuZCAnbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcnLiBIb3dldmVyLCB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsLCBhbmQgdGhlIG5ldyAnc2Vzc2lvbicgZmllbGQgaXMgcG9wdWxhdGVkIGJ1dCBuZXZlciByZWFkIGJ5IGFueSBmaWxlIGhhbmRsZXIgKGUuZy4sIGluIG1tL21lbWZkX2x1by5jKS4gVGh1cywgdGhlIHBhdGNoIGludHJvZHVjZXMgdW51c2VkIEFQSSBhbmQgZGVhZCBjb2RlLCBtYWtpbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmNzZmYTM3ZTBhYWI5NTIxZDhlZjEzNmQyYzA3YjllY2Q4YThkODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMjo1MToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcbmluZGV4IDYzZWE1NDE3ZGU4NDlhLi42MDUxYWJjMDYxMmNlZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IGZpbGU7XG4gLyoqXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG4gICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxuKyAqIEBzZXNzaW9uOiAgICAgICAgICBUaGUgc2Vzc2lvbiB0aGlzIGZpbGUgYmVsb25ncyB0by5cbiAgKiBAcmV0cmlldmVfc3RhdHVzOiAgVGhlIHJldHJpZXZlIHN0YXR1cyBmb3IgdGhlICdjYW5fZmluaXNoIC8gZmluaXNoJ1xuICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuXG4gICogICAgICAgICAgICAgICAgICAgIGF0dGVtcHRlZCwgYSBwb3NpdGl2ZSB2YWx1ZSBtZWFucyB0aGUgcmV0cmlldmUgd2FzXG5AQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgZmlsZTtcbiAgKi9cbiBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3Mge1xuIFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpoYW5kbGVyO1xuK1x0c3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjtcbiBcdGludCByZXRyaWV2ZV9zdGF0dXM7XG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZTtcbiBcdHU2NCBzZXJpYWxpemVkX2RhdGE7XG5AQCAtMjQ3LDYgKzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7XG4gaW50IGxpdmV1cGRhdGVfZmxiX2dldF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYiwgdm9pZCAqKm9ianApO1xuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbiBcbisvKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4rXHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4rXG4rLyogR2V0IGEgdG9rZW4gZm9yIGFuIG91dGdvaW5nIGZpbGUsIG9yIC1FTk9FTlQgaWYgZmlsZSBpcyBub3QgcHJlc2VydmVkICovXG4raW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4rXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucCk7XG4rXG4gI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbGl2ZXVwZGF0ZV9lbmFibGVkKHZvaWQpXG5AQCAtMjk5LDUgKzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuIHtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuK1x0XHRcdFx0XHQgICAgICAgdTY0IHRva2VuLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKVxuK3tcbitcdHJldHVybiAtRU9QTk9UU1VQUDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbitcdFx0XHRcdFx0XHRzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApXG4re1xuK1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK31cbitcbiAjZW5kaWYgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5pbmRleCBjMzlmOTY5NjFhODViZS4uZGJhZTA3MTUyMjBiMTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5AQCAtMjg0LDYgKzI4NCw3IEBAIGludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpXG4gXHRtdXRleF9pbml0KFx1MDAyNmx1b19maWxlLVx1MDAzZW11dGV4KTtcbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLmZpbGUgPSBmaWxlO1xuIFx0ZXJyID0gZmgtXHUwMDNlb3BzLVx1MDAzZXByZXNlcnZlKFx1MDAyNmFyZ3MpO1xuIFx0aWYgKGVycilcbkBAIC0zNDEsNiArMzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbitcdFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4gXHRcdGFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xuIFx0XHRhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbkBAIC0zNzQsNiArMzc2LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbiBcbiBcdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG4rXHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzk1LDYgKzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG4gXG4gXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuQEAgLTU4Nyw2ICs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcbiBcdH1cbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdGVyciA9IGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2VyZXRyaWV2ZShcdTAwMjZhcmdzKTtcbiBcdGlmIChlcnIpIHtcbkBAIC02MjAsNiArNjI1LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9jYW5fZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG4gXG4gXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTYzNyw2ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmx1b19maWxlLVx1MDAzZW11dGV4KTtcbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRhcmdzLnJldHJpZXZlX3N0YXR1cyA9IGx1b19maWxlLVx1MDAzZXJldHJpZXZlX3N0YXR1cztcbkBAIC05MjYsMyArOTMzLDY1IEBAIHZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuIFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XG4gXHRsaXN0X2RlbChcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xuIH1cbitcbisvKipcbisgKiBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyAtIEdldCB0aGUgdG9rZW4gZm9yIGEgcHJlc2VydmVkIGZpbGUuXG4rICogQHM6ICAgICAgVGhlIG91dGdvaW5nIGxpdmV1cGRhdGUgc2Vzc2lvbi5cbisgKiBAZmlsZTogICBUaGUgZmlsZSBvYmplY3QgdG8gc2VhcmNoIGZvci5cbisgKiBAdG9rZW5wOiBPdXRwdXQgcGFyYW1ldGVyIGZvciB0aGUgZm91bmQgdG9rZW4uXG4rICpcbisgKiBTZWFyY2hlcyB0aGUgbGlzdCBvZiBwcmVzZXJ2ZWQgZmlsZXMgaW4gYW4gb3V0Z29pbmcgc2Vzc2lvbiBmb3IgYSBtYXRjaGluZ1xuKyAqIGZpbGUgb2JqZWN0LiBJZiBmb3VuZCwgdGhlIGNvcnJlc3BvbmRpbmcgdXNlci1wcm92aWRlZCB0b2tlbiBpcyByZXR1cm5lZC5cbisgKlxuKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGluLWtlcm5lbCBjYWxsZXJzIHRoYXQgbmVlZCB0byBjb3JyZWxhdGUgYVxuKyAqIGZpbGUgd2l0aCBpdHMgbGl2ZXVwZGF0ZSB0b2tlbi5cbisgKlxuKyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZC5cbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVOT0VOVCBpZiB0aGUgZmlsZSBpcyBub3QgcHJlc2VydmVkIGluIHRoaXMgc2Vzc2lvbi5cbisgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbitcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuK3tcbitcdHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0ID0gbHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyk7XG4rXHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xuK1x0aW50IGVyciA9IC1FTk9FTlQ7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcdTAwMjZmaWxlX3NldC1cdTAwM2VmaWxlc19saXN0LCBsaXN0KSB7XG4rXHRcdGlmIChsdW9fZmlsZS1cdTAwM2VmaWxlID09IGZpbGUpIHtcbitcdFx0XHRpZiAodG9rZW5wKVxuK1x0XHRcdFx0KnRva2VucCA9IGx1b19maWxlLVx1MDAzZXRva2VuO1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdH1cbitcbitcdHJldHVybiBlcnI7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKTtcbitcbisvKipcbisgKiBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nIC0gUmV0cmlldmVzIGEgcHJlc2VydmVkIGZpbGUgZm9yIGluLWtlcm5lbCB1c2UuXG4rICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbisgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLlxuKyAqIEBmaWxlcDogIE9uIHN1Y2Nlc3MsIHRoaXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJldHJpZXZlZFxuKyAqICAgICAgICAgICdzdHJ1Y3QgZmlsZScuXG4rICpcbisgKiBQcm92aWRlcyBhIGtlcm5lbC1pbnRlcm5hbCBBUEkgZm9yIG90aGVyIHN1YnN5c3RlbXMgdG8gcmV0cmlldmUgdGhlaXJcbisgKiBwcmVzZXJ2ZWQgZmlsZXMgYWZ0ZXIgYSBsaXZlIHVwZGF0ZS4gVGhpcyBmdW5jdGlvbiBpcyBhIHNpbXBsZSB3cmFwcGVyXG4rICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxuKyAqXG4rICogVGhlIGNhbGxlciByZWNlaXZlcyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGZpbGUgYW5kIG11c3QgY2FsbCBmcHV0KCkgd2hlbiBpdFxuKyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJ3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2VcbisgKiBmaWxlIGRlc2NyaXB0b3JzLlxuKyAqXG4rICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi5cbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gUmV0dXJucyAtRU5PRU5UIGlmIG5vIGZpbGUgd2l0aCB0aGUgbWF0Y2hpbmcgdG9rZW4gaXNcbisgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbisgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4rXHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcClcbit7XG4rXHRyZXR1cm4gbHVvX3JldHJpZXZlX2ZpbGUobHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyksXG4rXHRcdFx0XHQgdG9rZW4sIGZpbGVwKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmggYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaFxuaW5kZXggNjQ4NzlmZmU3Mzc4MWMuLmRhYzY2NDRiZmIxOGFhIDEwMDY0NFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcbisrKyBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXG5AQCAtNzcsNiArNzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcbiBcbiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrO1xuIFxuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldClcbit7XG4rXHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb247XG4rXG4rXHRzZXNzaW9uID0gY29udGFpbmVyX29mKGZpbGVfc2V0LCBzdHJ1Y3QgbHVvX3Nlc3Npb24sIGZpbGVfc2V0KTtcbitcbitcdHJldHVybiAoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqKXNlc3Npb247XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGx1b19maWxlX3NldCAqbHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcylcbit7XG4rXHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24gPSAoc3RydWN0IGx1b19zZXNzaW9uICopcztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2c2Vzc2lvbi1cdTAwM2VtdXRleCk7XG4rXHRyZXR1cm4gXHUwMDI2c2Vzc2lvbi1cdTAwM2VmaWxlX3NldDtcbit9XG4rXG4gaW50IGx1b19zZXNzaW9uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcbiBpbnQgbHVvX3Nlc3Npb25fcmV0cmlldmUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4gdm9pZCBfX2luaXQgbHVvX3Nlc3Npb25fc2V0dXBfb3V0Z29pbmcodTY0ICpzZXNzaW9uc19wYSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MToxOS4xMjE1ODU0OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwODIzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTGl2ZSBVcGRhdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIG5ldyBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gbGl2ZSB1cGRhdGVzLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgIHN0cnVjdHVyZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFpbWVkIGF0IGVuaGFuY2luZyB0aGUgY29udHJvbCBvciB0cmFja2luZyBvZiBmaWxlIG9wZXJhdGlvbnMgZHVyaW5nIGEgbGl2ZSB1cGRhdGUuIEludGVyZXN0aW5nLiBBbmQgaXQncyBpbXBsZW1lbnRpbmcgdHdvIG5ldyBmdW5jdGlvbnM6IGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gSSdtIGd1ZXNzaW5nIHRob3NlIHdpbGwgaGFuZGxlIGZldGNoaW5nIG9yIG1hbmFnaW5nIGZpbGVzIGFuZCB0b2tlbnMgdGhhdCBhcmUgY29taW5nIGluIG9yIGdvaW5nIG91dCBkdXJpbmcgdGhlIHVwZGF0ZSBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcGF0Y2ggdG91Y2hlcyBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY2AsIGBpbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaGAsIGFuZCBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhgLiBUaGF0J3MgdGhlIGNvcmUgbGl2ZSB1cGRhdGUgaW1wbGVtZW50YXRpb24sIHRoZSBwdWJsaWMtZmFjaW5nIGhlYWRlciwgYW5kIGludGVybmFsIGRlZmluaXRpb25zLCByZXNwZWN0aXZlbHkuIE1ha2VzIHNlbnNlLlxuXG5CZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gYWN0aXZlIGluIG91ciBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19MSVZFVVBEQVRFYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24uIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC5cblxuQWxyaWdodCwgdGltZSB0byBnZXQgbW9yZSBncmFudWxhci4gSSB3YW50IHRvIHNlZSAqd2hlcmUqIHRoZXNlIG5ldyBmdW5jdGlvbnMsIGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCwgYXJlIGFjdHVhbGx5IGJlaW5nICp1c2VkKi4gU28sIEknbGwgdXNlIGBncmVwcGVyYCB0byBydW4gYSBzZWFyY2ggZm9yIHRob3NlIGZ1bmN0aW9uIG5hbWVzIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNlbnNlIG9mIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoaXMgbmV3IHNlc3Npb24gbWFuYWdlbWVudCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbGl2ZSB1cGRhdGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjIzLjU1MjQyMjc4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODAzNzc1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUwPXZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1Mi0vKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi9cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTM6aW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1NC1cXHRcXHRcXHRcXHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaD0zMDg9c3RhdGljIGlubGluZSB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYilcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDozMTI6c3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMy1cXHRcXHRcXHRcXHRcXHQgICAgICAgdTY0IHRva2VuLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz05NzA9RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzItLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5NzM6ICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTc0LSAqIEBzOiAgICAgIFRoZSBpbmNvbWluZyBsaXZldXBkYXRlIHNlc3Npb24gKHJlc3RvcmVkIGZyb20gdGhlIHByZXZpb3VzIGtlcm5lbCkuXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5MC0gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk5MTppbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05OTItXFx0XFx0XFx0XFx0IHN0cnVjdCBmaWxlICoqZmlsZXApXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5Ni19XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5OTc6RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjI3LjM1NjIwNjU1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzczOTgzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UncmUgbG9va2luZyBhdCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgc3ViamVjdCBtYXR0ZXI6XG5cbioqQ2hlY2tpbmcgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gV2hhdCBleGFjdGx5IGlzIGhhcHBlbmluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIGNvZGU/IEkgc2hvdWxkIHByb2JhYmx5IGFzc3VtZSBpdCdzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHRva2VuIHJldHJpZXZhbCwgbGlrZWx5IGZvciBvdXRnb2luZyBuZXR3b3JrIHJlcXVlc3RzIOKAkyBwcm9iYWJseSByZWxhdGluZyB0byBsaXZlIHVwZGF0ZXMuIElzIHRoaXMgdG9rZW4gZm9yIGF1dGhlbnRpY2F0aW9uLCBhdXRob3JpemF0aW9uLCBvciBib3RoPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxpdmUgdXBkYXRlIHdvcmtmbG93LiBXaGF0J3MgdGhlIGNvbnRleHQ/IFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IEtub3dpbmcgdGhhdCB3aWxsIGNsYXJpZnkgaXRzIHJvbGUgaW4gdGhlIHByb2Nlc3MuIElzIHRoZXJlIGEgY2FjaGluZyBtZWNoYW5pc20/IEhvdyBzZWN1cmUgaXMgdGhlIHRva2VuIGdlbmVyYXRpb24gYW5kIHJldHJpZXZhbCBwcm9jZXNzPyBBbmQgYXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocyB0byBsb29rIGF0PyBUaGUgbmFtZSBzdWdnZXN0cyBpdCByZXRyaWV2ZXMgc29tZXRoaW5nLCBhbmQgdGhlIFwib3V0Z29pbmdcIiBwYXJ0IGhpbnRzIHRoYXQgdGhlIHRva2VuIGlzIHVzZWQgd2hlbiBjb250YWN0aW5nIHNvbWUgZXh0ZXJuYWwgZW50aXR5IGZvciB1cGRhdGVzLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGtub3duIHZ1bG5lcmFiaWxpdGllcyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGlmIHRoZXJlIGlzIGFueSBwbGFjZSBmb3IgaW1wcm92ZW1lbnQuIEl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnbyBvdmVyIGFsbCBkb2N1bWVudGF0aW9uIHJlbGF0aW5nIHRvIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBtb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzc2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MzAuNjkzNjA3MjE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzM2Nzk1NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUzPWludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1Ni0vKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi9cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTc6aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMxMj1zdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTctXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MzE4OnN0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMzE5LVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9OTI3PXZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05MzctLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5Mzg6ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTM5LSAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1MS0gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk1MjppbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1My1cXHRcXHRcXHRcXHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTY5LX1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk3MDpFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjMzLjMyNzI5MDcwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjM2MDE1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiVGhlc2UgbmV3IGZ1bmN0aW9ucy4uLiB0aGV5J3JlIG5vdCBldmVuICpjYWxsZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbD8gVGhhdCdzLi4uIHVudXN1YWwuXCIgQnV0IGhvbGQgb24sIHRoZSBwbG90IHRoaWNrZW5zLiBJIHNlZSB0aGV5J3ZlIGFsc28gZ29uZSBpbiBhbmQgbW9kaWZpZWQgc29tZSAqZXhpc3RpbmcqIGZ1bmN0aW9uczogYGx1b19wcmVzZXJ2ZV9maWxlYCwgYGx1b19maWxlX3VucHJlc2VydmVfZmlsZXNgLCBhbGwgdGhlIHdheSBkb3duIHRvIGBsdW9fZmlsZV9maW5pc2hfb25lYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGluc2VydGluZyBgYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7YCBpbiBzZXZlcmFsIHBsYWNlcyB3aXRoaW4gdGhvc2UuXG5cbkhtbSwgc28gdGhleSdyZSB0eWluZyB0aGVzZSBuZXcgY29uY2VwdHMgaW50byB0aGUgZXhpc3RpbmcgbG9naWMuIFRoYXQgbWVhbnMgdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHVzZWQgdHJhbnNpdGl2ZWx5LiBUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgc2VlIGlmIGBsdW9fcHJlc2VydmVfZmlsZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYW55IGV4ZWN1dGlvbiBwYXRoLiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBmdW5jdGlvbiBjYWxscyB0byBkZXRlcm1pbmUgaXRzIHVzYWdlLiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGlmIGBDT05GSUdfTElWRVVQREFURWAgaXMgZGVmaW5lZC4gVGhpcyBwYXRjaCBzZWVtcyBjbG9zZWx5IGxpbmtlZCB0byB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjM3LjI1MDg5NDIzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk0NTg3NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImx1b19wcmVzZXJ2ZV9maWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDYtICogMS4gUHJlc2VydmUgKE5vcm1hbCBPcGVyYXRpb24pOiBBIHVzZXJzcGFjZSBhZ2VudCBwcmVzZXJ2ZXMgZmlsZXMgb25lIGJ5IG9uZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDc6ICogICAgdmlhIGFuIGlvY3RsLiBGb3IgZWFjaCBmaWxlLCBsdW9fcHJlc2VydmVfZmlsZSgpIGZpbmRzIGEgY29tcGF0aWJsZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDgtICogICAgaGFuZGxlciwgY2FsbHMgaXRzIC5wcmVzZXJ2ZSgpIG9wZXJhdGlvbiwgYW5kIGNyZWF0ZXMgYW4gaW50ZXJuYWwgXFx1MDAyNnN0cnVjdFxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0xMTk9c3RhdGljIERFRklORV9YQVJSQVkobHVvX3ByZXNlcnZlZF9maWxlcyk7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE0OS0gKiBUaGlzIHN0cnVjdHVyZSBpcyB0aGUgY29yZSBpbi1rZXJuZWwgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZmlsZSBiZWluZ1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTUwOiAqIG1hbmFnZWQgdGhyb3VnaCBhIGxpdmUgdXBkYXRlLiBBbiBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGx1b19wcmVzZXJ2ZV9maWxlKClcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE1MS0gKiB0byBsaW5rIGEgJ3N0cnVjdCBmaWxlJyB0byBpdHMgY29ycmVzcG9uZGluZyBoYW5kbGVyLCBhIHVzZXItcHJvdmlkZWQgdG9rZW4sXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTE3OD1zdGF0aWMgYm9vbCBsdW9fdG9rZW5faXNfdXNlZChzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0xOTAtLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoxOTE6ICogbHVvX3ByZXNlcnZlX2ZpbGUgLSBJbml0aWF0ZSB0aGUgcHJlc2VydmF0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTkyLSAqIEBmaWxlX3NldDogVGhlIGZpbGVfc2V0IHRvIHdoaWNoIHRoZSBwcmVzZXJ2ZWQgZmlsZSB3aWxsIGJlIGFkZGVkLlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0yMjktICovXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoyMzA6aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMS17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyNy0gKiAgIDMuIFJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlICdzdHJ1Y3QgZmlsZScgdGhhdCB3YXMgdGFrZW4gYnlcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMyODogKiAgICAgIGx1b19wcmVzZXJ2ZV9maWxlKCkgdmlhIGZwdXQoKSwgcmV0dXJuaW5nIG93bmVyc2hpcC5cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyOS0gKiAgIDQuIEZyZWVzIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcm5hbCAnc3RydWN0IGx1b19maWxlJy5cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYz0yMTE9dm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtMjQ5LSAqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jOjI1MDogKiBDb250ZXh0OiBDYWxsZWQgZnJvbSBsdW9fcHJlc2VydmVfZmlsZSgpXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTI1MS0gKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg9MTAyPWludCBsdW9fc2Vzc2lvbl9kZXNlcmlhbGl6ZSh2b2lkKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaC0xMDMtXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg6MTA0OmludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwNS12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYz0yNjM9c3RhdGljIGludCBsdW9fc2Vzc2lvbl9wcmVzZXJ2ZV9mZChzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24sXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTI2OS1cXHRndWFyZChtdXRleCkoXFx1MDAyNnNlc3Npb24tXFx1MDAzZW11dGV4KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jOjI3MDpcXHRlcnIgPSBsdW9fcHJlc2VydmVfZmlsZShcXHUwMDI2c2Vzc2lvbi1cXHUwMDNlZmlsZV9zZXQsIGFyZ3AtXFx1MDAzZXRva2VuLCBhcmdwLVxcdTAwM2VmZCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYy0yNzEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDAuMDQ1NDg4NzcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzODM2MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIExpdmV1cGRhdGUgRmlsZSBPcGVyYXRpb24gUGF0Y2gqKlxuXG5SaWdodCwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgc2Vzc2lvbmAgZmllbGQgaW50byB0aGUgYGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEVzc2VudGlhbGx5LCBpdCdzIGFkZGluZyBhIGBzZXNzaW9uYCBhcmd1bWVudCB0aGF0IGdldHMgcGFzc2VkIGRvd24gdG8gZWFjaCBvZiB0aGUgZmlsZSBoYW5kbGVyIG9wZXJhdGlvbnMg4oCTIHRoZSBgcHJlc2VydmVgLCBgdW5wcmVzZXJ2ZWAsIGBmcmVlemVgLCBgdW5mcmVlemVgLCBgcmV0cmlldmVgLCBgY2FuX2ZpbmlzaGAsIGFuZCBgZmluaXNoYCBmdW5jdGlvbnMuIFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gRG9lcyBhbnlvbmUgKmFjdHVhbGx5KiBsZXZlcmFnZSB0aGF0IGBhcmdzLVx1MDAzZXNlc3Npb25gIGRhdGEgd2l0aGluIHRoZWlyIHNwZWNpZmljIGZpbGUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbnM/XCIgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGFueSBoYW5kbGVyIGN1cnJlbnRseSAqdXNlcyogdGhpcyBuZXcgYHNlc3Npb25gIHBhcmFtZXRlci4gVGhhdCdzIGEgY3J1Y2lhbCBxdWVzdGlvbi4gTm93IEkgbmVlZCB0byBnbyBsb29rIHRocm91Z2ggdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVhbC13b3JsZCB1c2VzIG9mIHRoYXQgc2Vzc2lvbiBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTgwLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDMuMTgzODU0MzEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzcxNjc4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyZ3MtXFx1MDAzZXNlc3Npb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmZzL25mczR4ZHIuYz0xODIzPXN0YXRpYyB2b2lkIGVuY29kZV9iaW5kX2Nvbm5fdG9fc2Vzc2lvbihzdHJ1Y3QgeGRyX3N0cmVhbSAqeGRyLFxcbi0tXFxuZnMvbmZzL25mczR4ZHIuYy0xODMwLVxcdFxcdGRlY29kZV9iaW5kX2Nvbm5fdG9fc2Vzc2lvbl9tYXhzeiwgaGRyKTtcXG5mcy9uZnMvbmZzNHhkci5jOjE4MzE6XFx0ZW5jb2RlX29wYXF1ZV9maXhlZCh4ZHIsIGFyZ3MtXFx1MDAzZXNlc3Npb25pZC5kYXRhLCBORlM0X01BWF9TRVNTSU9OSURfTEVOKTtcXG5mcy9uZnMvbmZzNHhkci5jLTE4MzItXFx0cCA9IHhkcl9yZXNlcnZlX3NwYWNlKHhkciwgOCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjQ1LjU1NTU0MTgwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM4NTM0OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVudXNlZCBTZXNzaW9uIERhdGEgaW4gTGl2ZXVwZGF0ZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIHBhdGNoIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBgYXJncy1cdTAwM2VzZXNzaW9uYCBpc24ndCBhY3R1YWxseSBiZWluZyBsZXZlcmFnZWQgaW4gYW55IG9mIHRoZSBmaWxlIGhhbmRsZXIgZnVuY3Rpb25zLiBUaGF0J3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIFRoZXkncmUgKmV4cG9ydGVkKiwgd2hpY2ggdXN1YWxseSBpbXBsaWVzIGludGVuZGVkIHVzZSBlbHNld2hlcmUsIGJ1dCBJIGNhbid0IGZpbmQgYSBzaW5nbGUga2VybmVsIG1vZHVsZSBvciBhbnl0aGluZyB0aGF0J3MgYWN0dWFsbHkgY2FsbGluZyB0aGVtLiBNb3Jlb3ZlciwgdGhleSdyZSBhZGRpbmcgYHNlc3Npb25gIHRvIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgIGFuZCBwb3B1bGF0aW5nIGl0LCB3aGljaCByYWlzZXMgZmxhZ3MuIEl0J3MgcmVhbGx5IHBvaW50aW5nIHRvIGEgZGVzaWduIGVsZW1lbnQgdGhhdCdzIGJlZW4gaW1wbGVtZW50ZWQgYnV0IG5ldmVyIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgcmVsZXZhbnQgaGFuZGxlcnMuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLiBMZXQgbWUgcXVpY2tseSBkbyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBzd2VlcCBmb3IgaW5zdGFuY2VzIG9mIGVpdGhlciBgYXJncy5zZXNzaW9uYCBvciBqdXN0IGBzZXNzaW9uYCB3aXRoaW4gYW55IG9mIHRoZSBvdGhlciBoYW5kbGVyIGZ1bmN0aW9ucy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gV2UgaGF2ZSB0byBjb25zaWRlciB0aGF0IHRoZXJlIG1pZ2h0IGJlIGluZGlyZWN0IHVzZXMgb3IgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MjksIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDkuMTk0MDc5NDc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNDk4MDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwuc2Vzc2lvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMDktKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxMTA6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgQlBGX1RSQUNFX0tQUk9CRV9TRVNTSU9OYGAgICAgICAgICAgIHwgYGBrcHJvYmUuc2Vzc2lvbitgYCBbI2twbXVsdGldXyAgfCAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMTEtKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTExOS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfVVBST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uK2BgIFsjdXBtdWxdXyAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMjp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uLnMrYGAgWyN1cG11bF1fICB8IFllcyAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTY1MT1zdGF0aWMgaW50IHNldl9sYXVuY2hfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTY3OC1cXHRzZXNzaW9uX2Jsb2IgPSBOVUxMO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njc5OlxcdGlmIChwYXJhbXMuc2Vzc2lvbl91YWRkcikge1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjgwOlxcdFxcdHNlc3Npb25fYmxvYiA9IHBzcF9jb3B5X3VzZXJfYmxvYihwYXJhbXMuc2Vzc2lvbl91YWRkciwgcGFyYW1zLnNlc3Npb25fbGVuKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTY4MS1cXHRcXHRpZiAoSVNfRVJSKHNlc3Npb25fYmxvYikpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg1LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njg2OlxcdFxcdHN0YXJ0LnNlc3Npb25fYWRkcmVzcyA9IF9fc21lX3NldChfX3BhKHNlc3Npb25fYmxvYikpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njg3OlxcdFxcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg4LVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MTU1Nz1fX3Nldl9zZW5kX3N0YXJ0X3F1ZXJ5X3Nlc3Npb25fbGVuZ3RoKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTY2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTU2NzpcXHRwYXJhbXMtXFx1MDAzZXNlc3Npb25fbGVuID0gZGF0YS5zZXNzaW9uX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1NjgtXFx0aWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoYXJncC1cXHUwMDNlZGF0YSksIHBhcmFtcyxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MTU3NT1zdGF0aWMgaW50IHNldl9zZW5kX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTkwLVxcdC8qIGlmIHNlc3Npb25fbGVuIGlzIHplcm8sIHVzZXJzcGFjZSB3YW50cyB0byBxdWVyeSB0aGUgc2Vzc2lvbiBsZW5ndGggKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTE6XFx0aWYgKCFwYXJhbXMuc2Vzc2lvbl9sZW4pXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTkyLVxcdFxcdHJldHVybiBfX3Nldl9zZW5kX3N0YXJ0X3F1ZXJ5X3Nlc3Npb25fbGVuZ3RoKGt2bSwgYXJncCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Ni1cXHRpZiAoIXBhcmFtcy5wZGhfY2VydF91YWRkciB8fCAhcGFyYW1zLnBkaF9jZXJ0X2xlbiB8fFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTU5NzpcXHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8IHBhcmFtcy5zZXNzaW9uX2xlbiBcXHUwMDNlIFNFVl9GV19CTE9CX01BWF9TSVpFKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMC1cXHQvKiBhbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIGhvbGQgdGhlIHNlc3Npb24gZGF0YSBibG9iICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjAxOlxcdHNlc3Npb25fZGF0YSA9IGt6YWxsb2MocGFyYW1zLnNlc3Npb25fbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMi1cXHRpZiAoIXNlc3Npb25fZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYzNC1cXHRkYXRhLmFtZF9jZXJ0c19sZW4gPSBwYXJhbXMuYW1kX2NlcnRzX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzU6XFx0ZGF0YS5zZXNzaW9uX2FkZHJlc3MgPSBfX3BzcF9wYShzZXNzaW9uX2RhdGEpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTYzNjpcXHRkYXRhLnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYzNy1cXHRkYXRhLmhhbmRsZSA9IHRvX2t2bV9zZXZfaW5mbyhrdm0pLVxcdTAwM2VoYW5kbGU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDAtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQxOlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocGFyYW1zLnNlc3Npb25fdWFkZHIpLFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTY0MjpcXHRcXHRcXHRzZXNzaW9uX2RhdGEsIHBhcmFtcy5zZXNzaW9uX2xlbikpIHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDMtXFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTY0Ny1cXHRwYXJhbXMucG9saWN5ID0gZGF0YS5wb2xpY3k7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQ4OlxcdHBhcmFtcy5zZXNzaW9uX2xlbiA9IGRhdGEuc2Vzc2lvbl9sZW47XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQ5LVxcdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3AtXFx1MDAzZWRhdGEpLCBcXHUwMDI2cGFyYW1zLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNzg5PXN0YXRpYyBpbnQgc2V2X3JlY2VpdmVfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MDgtXFx0aWYgKCFwYXJhbXMucGRoX3VhZGRyIHx8ICFwYXJhbXMucGRoX2xlbiB8fFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgwOTpcXHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8ICFwYXJhbXMuc2Vzc2lvbl9sZW4pXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODEwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODE1LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgxNjpcXHRzZXNzaW9uX2RhdGEgPSBwc3BfY29weV91c2VyX2Jsb2IocGFyYW1zLnNlc3Npb25fdWFkZHIsXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODE3OlxcdFxcdFxcdHBhcmFtcy5zZXNzaW9uX2xlbik7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODE4LVxcdGlmIChJU19FUlIoc2Vzc2lvbl9kYXRhKSkge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODI3LVxcdHN0YXJ0LnBkaF9jZXJ0X2xlbiA9IHBhcmFtcy5wZGhfbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyODpcXHRzdGFydC5zZXNzaW9uX2FkZHJlc3MgPSBfX3BzcF9wYShzZXNzaW9uX2RhdGEpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyOTpcXHRzdGFydC5zZXNzaW9uX2xlbiA9IHBhcmFtcy5zZXNzaW9uX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MzAtXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTI5Mzc9c3RhdGljIHZvaWQgb3BhbF9sb2NrX2NoZWNrX2Zvcl9zYXZlZF9rZXkoc3RydWN0IG9wYWxfZGV2ICpkZXYsXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jLTI5NjMtXFx0XFx0XFx0XFx0aXRlci1cXHUwMDNlbHIgPT0gbGtfdW5say1cXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5sciBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL3NlZC1vcGFsLmM6Mjk2NDpcXHRcXHRcXHRcXHRpdGVyLVxcdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5X2xlbiBcXHUwMDNlIDApIHtcXG5ibG9jay9zZWQtb3BhbC5jLTI5NjUtXFx0XFx0XFx0bGtfdW5say1cXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5rZXlfbGVuID1cXG5ibG9jay9zZWQtb3BhbC5jOjI5NjY6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW47XFxuYmxvY2svc2VkLW9wYWwuYy0yOTY3LVxcdFxcdFxcdG1lbWNweShsa191bmxrLVxcdTAwM2VzZXNzaW9uLm9wYWxfa2V5LmtleSxcXG5ibG9jay9zZWQtb3BhbC5jOjI5Njg6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleSxcXG5ibG9jay9zZWQtb3BhbC5jOjI5Njk6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW4pO1xcbmJsb2NrL3NlZC1vcGFsLmMtMjk3MC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmM9MzI1OT1ib29sIG9wYWxfdW5sb2NrX2Zyb21fc3VzcGVuZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzI4MC1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRmFpbGVkIHRvIHVubG9jayBMUiAlaGh1IHdpdGggc3VtICVkXFxcXG5cXFwiLFxcbmJsb2NrL3NlZC1vcGFsLmM6MzI4MTpcXHRcXHRcXHRcXHQgc3VzcGVuZC1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmxyLFxcbmJsb2NrL3NlZC1vcGFsLmM6MzI4MjpcXHRcXHRcXHRcXHQgc3VzcGVuZC1cXHUwMDNldW5say5zZXNzaW9uLnN1bSk7XFxuYmxvY2svc2VkLW9wYWwuYy0zMjgzLVxcdFxcdFxcdHdhc19mYWlsdXJlID0gdHJ1ZTtcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzI4Ni1cXHRcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IE9QQUxfRkxfTUJSX0VOQUJMRUQpIHtcXG5ibG9jay9zZWQtb3BhbC5jOjMyODc6XFx0XFx0XFx0cmV0ID0gX19vcGFsX3NldF9tYnJfZG9uZShkZXYsIFxcdTAwMjZzdXNwZW5kLVxcdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkpO1xcbmJsb2NrL3NlZC1vcGFsLmMtMzI4OC1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jPTQ3PXN0YXRpYyBpbnQgc3RtMzJfZGJnX3B0YV9vcGVuX3Nlc3Npb24odTMyICppZClcXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy02My1cXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM6NjQ6XFx0KmlkID0gc2Vzc19hcmcuc2Vzc2lvbjtcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM9NzQ9c3RhdGljIGludCBzdG0zMl9kYmdfYnVzX2dyYW50X2FjY2VzcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqY3RybCwgdTMyIGRiZ19wcm9maWxlKVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jLTg4LVxcdGludl9hcmcuZnVuYyA9IFBUQV9DTURfR1JBTlRfREJHX0FDQ0VTUztcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM6ODk6XFx0aW52X2FyZy5zZXNzaW9uID0gc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtOTAtXFx0aW52X2FyZy5udW1fcGFyYW1zID0gMTtcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9NzM9c3RhdGljIHNpemVfdCBnZXRfb3B0ZWVfcm5nX2RhdGEoc3RydWN0IG9wdGVlX3JuZ19wcml2YXRlICpwdnRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtODYtXFx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9FTlRST1BZO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6ODc6XFx0aW52X2FyZy5zZXNzaW9uID0gcHZ0X2RhdGEtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy04OC1cXHRpbnZfYXJnLm51bV9wYXJhbXMgPSA0O1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYz0xNzY9c3RhdGljIGludCBnZXRfb3B0ZWVfcm5nX2luZm8oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODYtXFx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9STkdfSU5GTztcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jOjE4NzpcXHRpbnZfYXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMTg4LVxcdGludl9hcmcubnVtX3BhcmFtcyA9IDQ7XFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jPTIxMT1zdGF0aWMgaW50IG9wdGVlX3JuZ19wcm9iZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKnJuZ19kZXZpY2UpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzNi1cXHR9XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoyMzc6XFx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yMzgtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1My1vdXRfc2VzczpcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jOjI1NDpcXHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1NS1vdXRfY3R4Olxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYz0yNjE9c3RhdGljIHZvaWQgb3B0ZWVfcm5nX3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKnRlZV9kZXYpXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yNjIte1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjYzOlxcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMjY0LVxcdHRlZV9jbGllbnRfY2xvc2VfY29udGV4dChwdnRfZGF0YS5jdHgpO1xcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM9NDE1NT1zdGF0aWMgaW50IGhhbmRsZV9sYW5fZ2V0X21zZ19yc3Aoc3RydWN0IGlwbWlfc21pICppbnRmLFxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMtNDE3Ny1cXHRsYW5fYWRkci5hZGRyX3R5cGUgPSBJUE1JX0xBTl9BRERSX1RZUEU7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM6NDE3ODpcXHRsYW5fYWRkci5zZXNzaW9uX2hhbmRsZSA9IG1zZy1cXHUwMDNlcnNwWzRdO1xcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jLTQxNzktXFx0bGFuX2FkZHIucmVtb3RlX1NXSUQgPSBtc2ctXFx1MDAzZXJzcFs4XTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYz0yMzk9c3RhdGljIHZvaWQgdHBtX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYy0yNDctXFx0a2ZyZWUoY2hpcC1cXHUwMDNld29ya19zcGFjZS5jb250ZXh0X2J1Zik7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0tY2hpcC5jOjI0ODpcXHRrZnJlZShjaGlwLVxcdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmKTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmMtMjQ5LSNpZmRlZiBDT05GSUdfVENHX1RQTTJfSE1BQ1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9MzA2PWludCB0cG0yX3ByZXBhcmVfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSwgdTggKmNtZCxcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTMyMC1cXHQgICAgICAgc2l6ZW9mKHNwYWNlLVxcdTAwM2Vjb250ZXh0X3RibCkpO1xcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jOjMyMTpcXHRtZW1jcHkoXFx1MDAyNmNoaXAtXFx1MDAzZXdvcmtfc3BhY2Uuc2Vzc2lvbl90YmwsIFxcdTAwMjZzcGFjZS1cXHUwMDNlc2Vzc2lvbl90YmwsXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtMzIyLVxcdCAgICAgICBzaXplb2Yoc3BhY2UtXFx1MDAzZXNlc3Npb25fdGJsKSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjQtXFx0ICAgICAgIHNwYWNlLVxcdTAwM2VidWZfc2l6ZSk7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6MzI1OlxcdG1lbWNweShjaGlwLVxcdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmLCBzcGFjZS1cXHUwMDNlc2Vzc2lvbl9idWYsXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtMzI2LVxcdCAgICAgICBzcGFjZS1cXHUwMDNlYnVmX3NpemUpO1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9NTQwPWludCB0cG0yX2NvbW1pdF9zcGFjZShzdHJ1Y3QgdHBtX2NoaXAgKmNoaXAsIHN0cnVjdCB0cG1fc3BhY2UgKnNwYWNlLFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtNTcwLVxcdCAgICAgICBzaXplb2Yoc3BhY2UtXFx1MDAzZWNvbnRleHRfdGJsKSk7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6NTcxOlxcdG1lbWNweShcXHUwMDI2c3BhY2UtXFx1MDAzZXNlc3Npb25fdGJsLCBcXHUwMDI2Y2hpcC1cXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX3RibCxcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzItXFx0ICAgICAgIHNpemVvZihzcGFjZS1cXHUwMDNlc2Vzc2lvbl90YmwpKTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTU3NC1cXHQgICAgICAgc3BhY2UtXFx1MDAzZWJ1Zl9zaXplKTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzo1NzU6XFx0bWVtY3B5KHNwYWNlLVxcdTAwM2VzZXNzaW9uX2J1ZiwgY2hpcC1cXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX2J1ZixcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzYtXFx0ICAgICAgIHNwYWNlLVxcdTAwM2VidWZfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jPTQ1PXN0YXRpYyBpbnQgZnRwbV90ZWVfdHBtX29wX3NlbmQoc3RydWN0IHRwbV9jaGlwICpjaGlwLCB1OCAqYnVmLCBzaXplX3QgYnVmc2l6LFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy02OS1cXHRcXHQuZnVuYyA9IEZUUE1fT1BURUVfVEFfU1VCTUlUX0NPTU1BTkQsXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYzo3MDpcXHRcXHQuc2Vzc2lvbiA9IHB2dF9kYXRhLVxcdTAwM2VzZXNzaW9uLFxcbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmMtNzEtXFx0XFx0Lm51bV9wYXJhbXMgPSA0LFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYz0xNzI9c3RhdGljIGludCBmdHBtX3RlZV9wcm9iZV9nZW5lcmljKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmMtMjA4LVxcdH1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jOjIwOTpcXHRwdnRfZGF0YS1cXHUwMDNlc2Vzc2lvbiA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMTAtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM9NDA4NT1zdGF0aWMgaW50IGdlbmVyaWNfY3JhX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTA2LVxcdGF0b21pY19pbmMoXFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50KTtcXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDEwNzpcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTA4LVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQxOTY9c3RhdGljIHZvaWQgZ2VuZXJpY19jcmFfZXhpdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTk3LXtcXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDE5ODpcXHRhdG9taWNfZGVjKFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTk5LX1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYz00MzM3PXN0YXRpYyB2b2lkIHNwdV9jb3VudGVyc19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDM0MS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDM0MjpcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQsIDApO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MzQzLVxcdGF0b21pY19zZXQoXFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50LCAwKTtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYz0xMDk9c3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9pbml0X3Nlc3Npb24oXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTc4LVxcdGlmIChlbmNyeXB0KVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoxNzk6XFx0XFx0Y3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQgPSBsZTY0X3RvX2NwdShpbnB1dC1cXHUwMDNlc2Vzc2lvbl9pZCk7XFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTE4MC1cXHRlbHNlXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjE4MTpcXHRcXHRjdHgtXFx1MDAzZWRlY19zZXNzX2luZm8uc2Vzc2lvbl9pZCA9IGxlNjRfdG9fY3B1KGlucHV0LVxcdTAwM2VzZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jPTE5MD1zdGF0aWMgaW50IHZpcnRpb19jcnlwdG9fYWxnX3NrY2lwaGVyX2Nsb3NlX3Nlc3Npb24oXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMjE3LVxcdGlmIChlbmNyeXB0KVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMTg6XFx0XFx0ZGVzdHJveV9zZXNzaW9uLVxcdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMTktXFx0ZWxzZVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMjA6XFx0XFx0ZGVzdHJveV9zZXNzaW9uLVxcdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VkZWNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMjEtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM9MzIxPV9fdmlydGlvX2NyeXB0b19za2NpcGhlcl9kb19yZXEoc3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX3JlcXVlc3QgKnZjX3N5bV9yZXEsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMzY5LVxcdGlmICh2Y19zeW1fcmVxLVxcdTAwM2VlbmNyeXB0KSB7XFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjM3MDpcXHRcXHRyZXFfZGF0YS1cXHUwMDNlaGVhZGVyLnNlc3Npb25faWQgPVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzozNzE6XFx0XFx0XFx0Y3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0zNzItXFx0XFx0cmVxX2RhdGEtXFx1MDAzZWhlYWRlci5vcGNvZGUgPVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzozNzU6XFx0XFx0cmVxX2RhdGEtXFx1MDAzZWhlYWRlci5zZXNzaW9uX2lkID1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc2OlxcdFxcdFxcdGNwdV90b19sZTY0KGN0eC1cXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMzc3LVxcdFxcdHJlcV9kYXRhLVxcdTAwM2VoZWFkZXIub3Bjb2RlID1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTE2MD1zdGF0aWMgaW50IG9wZW5fc2Vzc2lvbihzdHJ1Y3Qgc2NtaV9vcHRlZV9hZ2VudCAqYWdlbnQsIHUzMiAqdGVlX3Nlc3Npb24pXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xNzUtXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM6MTc2OlxcdCp0ZWVfc2Vzc2lvbiA9IGFyZy5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTE3Ny1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTE4Nj1zdGF0aWMgaW50IGdldF9jYXBhYmlsaXRpZXMoc3RydWN0IHNjbWlfb3B0ZWVfYWdlbnQgKmFnZW50KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMTk4LVxcdGFyZy5mdW5jID0gUFRBX1NDTUlfQ01EX0NBUEFCSUxJVElFUztcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxOTk6XFx0YXJnLnNlc3Npb24gPSB0ZWVfc2Vzc2lvbjtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yMDAtXFx0YXJnLm51bV9wYXJhbXMgPSAxO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjI1PXN0YXRpYyBpbnQgZ2V0X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTIzOC1cXHRhcmcuZnVuYyA9IFBUQV9TQ01JX0NNRF9HRVRfQ0hBTk5FTDtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyMzk6XFx0YXJnLnNlc3Npb24gPSBjaGFubmVsLVxcdTAwM2V0ZWVfc2Vzc2lvbjtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNDAtXFx0YXJnLm51bV9wYXJhbXMgPSAxO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjYwPXN0YXRpYyBpbnQgaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2My1cXHRcXHQuZnVuYyA9IFBUQV9TQ01JX0NNRF9QUk9DRVNTX1NNVF9DSEFOTkVMLFxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jOjI2NDpcXHRcXHQuc2Vzc2lvbiA9IGNoYW5uZWwtXFx1MDAzZXRlZV9zZXNzaW9uLFxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2NS1cXHRcXHQubnVtX3BhcmFtcyA9IDEsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYz0yODM9c3RhdGljIGludCBpbnZva2VfcHJvY2Vzc19tc2dfY2hhbm5lbChzdHJ1Y3Qgc2NtaV9vcHRlZV9jaGFubmVsICpjaGFubmVsLCBzaXplX3QgbXNnX3NpemUpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODYtXFx0XFx0LmZ1bmMgPSBQVEFfU0NNSV9DTURfUFJPQ0VTU19NU0dfQ0hBTk5FTCxcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyODc6XFx0XFx0LnNlc3Npb24gPSBjaGFubmVsLVxcdTAwM2V0ZWVfc2Vzc2lvbixcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODgtXFx0XFx0Lm51bV9wYXJhbXMgPSAzLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jPTY2PXN0YXRpYyB2b2lkIHByZXBhcmVfYXJncyhpbnQgY21kLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTczLVxcdGFyZy1cXHUwMDNlZnVuYyA9IGNtZDtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM6NzQ6XFx0YXJnLVxcdTAwM2VzZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtNzUtXFx0YXJnLVxcdTAwM2VudW1fcGFyYW1zID0gTUFYX1RFRV9QQVJBTV9BUlJZX01FTUI7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MTg0PXN0YXRpYyBpbnQgdGVlX2JueHRfZndfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMTAtXFx0fVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMTE6XFx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIxMi1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMjYtb3V0X3Nlc3M6XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jOjIyNzpcXHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtMjI4LW91dF9jdHg6XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MjM0PXN0YXRpYyB2b2lkIHRlZV9ibnh0X2Z3X3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKmJueHRfZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzNi1cXHR0ZWVfc2htX2ZyZWUocHZ0X2RhdGEuZndfc2htX3Bvb2wpO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMzc6XFx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbl9pZCk7XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzOC1cXHR0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQocHZ0X2RhdGEuY3R4KTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz0yNDI9c3RhdGljIHZvaWQgdGVlX2JueHRfZndfc2h1dGRvd24oc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDQtXFx0dGVlX3NobV9mcmVlKHB2dF9kYXRhLmZ3X3NobV9wb29sKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM6MjQ1OlxcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDYtXFx0dGVlX2NsaWVudF9jbG9zZV9jb250ZXh0KHB2dF9kYXRhLmN0eCk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jPTUxPXN0YXRpYyBlZmlfc3RhdHVzX3QgdGVlX21tX2NvbW11bmljYXRlKHZvaWQgKmNvbW1fYnVmLCBzaXplX3QgZHNpemUpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTc2LVxcdGFyZy5mdW5jID0gUFRBX1NUTU1fQ01EX0NPTU1VTklDQVRFO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6Nzc6XFx0YXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNzgtXFx0YXJnLm51bV9wYXJhbXMgPSA0O1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MTE9c3RhdGljIHZvaWQgdGVlX3N0bW1fZWZpX2Nsb3NlX3Nlc3Npb24odm9pZCAqZGF0YSlcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTUxMi17XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo1MTM6XFx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbik7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy01MTQtfVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MzE9c3RhdGljIGludCB0ZWVfc3RtbV9lZmlfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy01NTQtXFx0fVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6NTU1OlxcdHB2dF9kYXRhLnNlc3Npb24gPSBzZXNzX2FyZy5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU2LVxcdHB2dF9kYXRhLmRldiA9IGRldjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNjM1PXN0YXRpYyB2b2lkIHBzcF9wcmVwX3RhX3VubG9hZF9jbWRfYnVmKHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTYzOC1cXHRjbWQtXFx1MDAzZWNtZF9pZCA9IEdGWF9DTURfSURfVU5MT0FEX1RBO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYzoxNjM5OlxcdGNtZC1cXHUwMDNlY21kLmNtZF91bmxvYWRfdGEuc2Vzc2lvbl9pZCA9IHNlc3Npb25faWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE2NDAtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jPTE3MzU9c3RhdGljIHZvaWQgcHNwX3ByZXBfdGFfaW52b2tlX2NtZF9idWYoc3RydWN0IHBzcF9nZnhfY21kX3Jlc3AgKmNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNzM5LVxcdGNtZC1cXHUwMDNlY21kX2lkXFx0XFx0XFx0XFx0PSBHRlhfQ01EX0lEX0lOVk9LRV9DTUQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jOjE3NDA6XFx0Y21kLVxcdTAwM2VjbWQuY21kX2ludm9rZV9jbWQuc2Vzc2lvbl9pZFxcdD0gc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc0MS1cXHRjbWQtXFx1MDAzZWNtZC5jbWRfaW52b2tlX2NtZC50YV9jbWRfaWRcXHQ9IHRhX2NtZF9pZDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNzYzPWludCBwc3BfdGFfbG9hZChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwgc3RydWN0IHRhX2NvbnRleHQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc4OS1cXHRpZiAoIXJldClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTc5MDpcXHRcXHRjb250ZXh0LVxcdTAwM2VzZXNzaW9uX2lkID0gY21kLVxcdTAwM2VyZXNwLnNlc3Npb25faWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE3OTEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MjUyPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2NyZWF0ZV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0yNzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjI3ODpcXHRoZGNwLVxcdTAwM2VhdXRoLmlkID0gaGRjcF9jbWQtXFx1MDAzZW91dF9tc2cuaGRjcDFfY3JlYXRlX3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGU7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz0yOTQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDFfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMDUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMwNjpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2Rlc3Ryb3lfc2Vzc2lvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXFx1MDAzZWF1dGguaWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTMwNy1cXHRoZGNwX2NtZC1cXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9ERVNUUk9ZX1NFU1NJT047XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MzI4PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX3ZhbGlkYXRlX3J4KHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMzODpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2ZpcnN0X3BhcnRfYXV0aGVudGljYXRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVxcdTAwM2VhdXRoLmlkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MzY5PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zODItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjM4MzpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2VuYWJsZV9lbmNyeXB0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzg0LVxcdGhkY3BfY21kLVxcdTAwM2VjbWRfaWQgPSBUQV9IRENQX0NPTU1BTkRfX0hEQ1AxX0VOQUJMRV9FTkNSWVBUSU9OO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTM5OT1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV92YWxpZGF0ZV9rc3ZsaXN0X3ZwKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00MDgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjQwOTpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX3NlY29uZF9wYXJ0X2F1dGhlbnRpY2F0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDEwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTQ0MD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDU4OlxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDU5LVxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cXHUwMDNlZGlzcGxheXNbaV0uaW5kZXg7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDc3PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2xpbmtfbWFpbnRlbmFuY2Uoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ4Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDg4OlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZ2V0X2VuY3J5cHRpb25fc3RhdHVzLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDg5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTUwMz1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQzLVxcdGVsc2VcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NTQ0OlxcdFxcdGhkY3AtXFx1MDAzZWF1dGguaWQgPSBoZGNwX2NtZC1cXHUwMDNlb3V0X21zZy5oZGNwMl9jcmVhdGVfc2Vzc2lvbl92Mi5zZXNzaW9uX2hhbmRsZTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQ1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTU1MD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9kZXN0cm95X3Nlc3Npb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTU2MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NTYxOlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfZGVzdHJveV9zZXNzaW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYyLVxcdGhkY3BfY21kLVxcdTAwM2VjbWRfaWQgPSBUQV9IRENQX0NPTU1BTkRfX0hEQ1AyX0RFU1RST1lfU0VTU0lPTjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz04MzQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTg0OC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6ODQ5OlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfc2V0X2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVxcdTAwM2VhdXRoLmlkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy04NTAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9OTE4PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AyX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTM5LVxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cXHUwMDNlZGlzcGxheXNbaV0uaW5kZXg7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjk0MDpcXHRcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AyX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXFx1MDAzZWF1dGguaWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTk0MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTUyPXN0YXRpYyBpbnQgcmFzX3BzcF9zeW5jX3N5c3RlbV9yYXNfcHNwX3N0YXR1cyhzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02Ny1cXHRcXHRcXHR0YV9jdHgtXFx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHN0YXR1cy5pbml0aWFsaXplZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo2ODpcXHRcXHRcXHR0YV9jdHgtXFx1MDAzZXNlc3Npb25faWQgPSBzdGF0dXMuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYz0yNDI9c3RhdGljIGludCBzZW5kX3BzcF9jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtMzA4LVxcdHJlc3AtXFx1MDAzZXN0YXR1cyA9IGdmeF9jbWQtXFx1MDAzZXJlc3Auc3RhdHVzO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jOjMwOTpcXHRyZXNwLVxcdTAwM2VzZXNzaW9uX2lkID0gZ2Z4X2NtZC1cXHUwMDNlcmVzcC5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTMxMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTM1ND1zdGF0aWMgaW50IHNlbmRfcmFzX3RhX3J1bnRpbWVfY21kKHN0cnVjdCByYXNfY29yZV9jb250ZXh0ICpyYXNfY29yZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5MC1cXHRpbnZva2VfY21kLnRhX2NtZF9pZCA9IGNtZF9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzozOTE6XFx0aW52b2tlX2NtZC5zZXNzaW9uX2lkID0gdGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTQ2NT1zdGF0aWMgaW50IHNlbmRfbG9hZF90YV9md19jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTMwLVxcdFxcdHRhX2N0eC1cXHUwMDNldGFfdmVyc2lvbiA9IGZ3X2hkci1cXHUwMDNlaW1hZ2VfdmVyc2lvbjtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo1MzE6XFx0XFx0dGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkID0gcmVzcC5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTUzMi1cXHRcXHR0YV9jdHgtXFx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYz01Njc9c3RhdGljIGludCB1bmxvYWRfcmFzX3RhX2Zpcm13YXJlKHN0cnVjdCByYXNfY29yZV9jb250ZXh0ICpyYXNfY29yZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTU3Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo1Nzg6XFx0Y21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gdGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTU3OS1cXHRyZXQgPSBzZW5kX3BzcF9jbWQocmFzX2NvcmUsIEdGWF9DTURfSURfVU5MT0FEX1RBLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvcHhwL2ludGVsX3B4cF90ZWUuYz0zMzA9aW50IGludGVsX3B4cF90ZWVfY21kX2NyZWF0ZV9hcmJfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfcHhwICpweHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jLTM0MS1cXHRtc2dfaW4ucHJvdGVjdGlvbl9tb2RlID0gUFhQNDJfQVJCX1NFU1NJT05fTU9ERV9IRUFWWTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jOjM0MjpcXHRtc2dfaW4uc2Vzc2lvbl9pZCA9IGFyYl9zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmMtMzQzLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYz05NzM9c3RhdGljIHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgaXNjc2lfaXNlcl90cmFuc3BvcnQgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jLTEwMDMtXFx0LyogcmVjb3ZlcnkgKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jOjEwMDQ6XFx0LnNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQgPSBpc2NzaV9zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmMtMTAwNS1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jPTIzNDk9c3RhdGljIGludCBfX211c3RfY2hlY2sgaW5pdGlhbGl6ZV96b25lKHN0cnVjdCB2ZG8gKnZkbywgc3RydWN0IGhhc2hfem9uZXMgKnpvbmVzLFxcbi0tXFxuZHJpdmVycy9tZC9kbS12ZG8vZGVkdXBlLmMtMjM4Ni1cXHRcXHRjb250ZXh0LVxcdTAwM2VyZXF1ZXN0LmNhbGxiYWNrID0gZmluaXNoX2luZGV4X29wZXJhdGlvbjtcXG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYzoyMzg3OlxcdFxcdGNvbnRleHQtXFx1MDAzZXJlcXVlc3Quc2Vzc2lvbiA9IHpvbmVzLVxcdTAwM2VpbmRleF9zZXNzaW9uO1xcbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jLTIzODgtXFx0XFx0bGlzdF9hZGQoXFx1MDAyNmNvbnRleHQtXFx1MDAzZWxpc3RfZW50cnksIFxcdTAwMjZ6b25lLVxcdTAwM2VhdmFpbGFibGUpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9OTI9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3Nlc3Npb25fb3BlbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE0LVxcdHBhY2tldC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU1lTX1NFU1NJT05fSU5JVDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMTU6XFx0cGFja2V0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE2LVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNy1cXHRpZiAoaW5zdC1cXHUwMDNlZG9tYWluID09IERFQ09ERVIpXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE4OlxcdFxcdHBhY2tldC5zZXNzaW9uX2RvbWFpbiA9IEhGSV9TRVNTSU9OX1RZUEVfREVDO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExOS1cXHRlbHNlXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTIwOlxcdFxcdHBhY2tldC5zZXNzaW9uX2RvbWFpbiA9IEhGSV9TRVNTSU9OX1RZUEVfRU5DO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEyMS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMjI6XFx0cGFja2V0LnNlc3Npb25fY29kZWMgPSBjb2RlYztcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xMjMtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0xMzM9c3RhdGljIHZvaWQgaXJpc19oZmlfZ2VuMV9wYWNrZXRfc2Vzc2lvbl9jbWQoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEzOC1cXHRwYWNrZXQtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gcHR5cGU7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTM5OlxcdHBhY2tldC1cXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xNDAtfVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MTg4PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9zZXNzaW9uX3N0b3Aoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgdTMyIHBsYW5lKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjA2LVxcdFxcdFxcdGZsdXNoX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GTFVTSDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoyMDc6XFx0XFx0XFx0Zmx1c2hfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjA4LVxcdFxcdFxcdGZsdXNoX3BrdC5mbHVzaF90eXBlID0gZmx1c2hfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTI3ND1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfcXVldWVfaW5wdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgxLVxcdFxcdGNvbV9pcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjI4MjpcXHRcXHRjb21faXBfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgzLVxcdFxcdGNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVxcdTAwM2V0aW1lc3RhbXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjk4LVxcdFxcdHVuY29tX2lwX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9FTVBUWV9CVUZGRVI7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6Mjk5OlxcdFxcdHVuY29tX2lwX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTMwMC1cXHRcXHR1bmNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVxcdTAwM2V0aW1lc3RhbXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MzE2PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9vdXRwdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzIxLVxcdG9wX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GSUxMX0JVRkZFUjtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzozMjI6XFx0b3BfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzIzLVxcdG9wX3BrdC5vdXRwdXRfdGFnID0gYnVmLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTMzOT1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfcXVldWVfaW50ZXJuYWxfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzUxLVxcdGludF9wa3QtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9CVUZGRVJTO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjM1MjpcXHRpbnRfcGt0LVxcdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTM1My1cXHRpbnRfcGt0LVxcdTAwM2VidWZmZXJfc2l6ZSA9IGJ1Zi1cXHUwMDNlYnVmZmVyX3NpemU7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0zOTQ9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3Nlc3Npb25fdW5zZXRfYnVmZmVycyhzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCBzdHJ1Y3QgaXJpc19idWZmZXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxMi1cXHRwa3QtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1JFTEVBU0VfQlVGRkVSUztcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0MTM6XFx0cGt0LVxcdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxNC1cXHRwa3QtXFx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVxcdTAwM2VidWZmZXJfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTQ1Mz1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9kcmFpbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCB1MzIgcGxhbmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00NTktXFx0XFx0aXBfcGt0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX0VNUFRZX0JVRkZFUjtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0NjA6XFx0XFx0aXBfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDYxLVxcdFxcdGlwX3BrdC5mbGFncyA9IEhGSV9CVUZGRVJGTEFHX0VPUztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQ3MS1cXHRcXHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjQ3MjpcXHRcXHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00NzMtXFx0XFx0aXBfcGt0LmZsYWdzID0gSEZJX0JVRkZFUkZMQUdfRU9TO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9NDgzPWlyaXNfaGZpX2dlbjFfcGFja2V0X3Nlc3Npb25fc2V0X3Byb3BlcnR5KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfcHJvcGVydHlfcGt0ICpwYWNrZXQsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00ODktXFx0cGFja2V0LVxcdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9TRVRfUFJPUEVSVFk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDkwOlxcdHBhY2tldC1cXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00OTEtXFx0cGFja2V0LVxcdTAwM2VudW1fcHJvcGVydGllcyA9IDE7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NTEuNzY3NTgzMjE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTgxMjQ5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlJlZmluaW5nIHRoZSBTZWFyY2ggU3RyYXRlZ3kqKlxuXG5IbW0sIEkgc2VlIEkgd2FzIGluaXRpYWxseSB0b28gYnJvYWQgd2l0aCBteSBzZWFyY2ggZm9yIGBcXC5zZXNzaW9uYC4gVGhhdCBwYXR0ZXJuLCBvZiBjb3Vyc2UsIHdvdWxkIG1hdGNoIG5vdCBqdXN0IHRoZSBzcGVjaWZpYyB2YXJpYWJsZSBvciBrZXkgSSdtIGludGVyZXN0ZWQgaW4sIGJ1dCAqYW55KiBpbnN0YW5jZSBvZiBgLnNlc3Npb25gLCBsaWtlIGluIHNvbWV0aGluZyB3aXRoIGEgZ2VuZXJhbCBzdHJ1Y3R1cmUuIFNvIHRoYXQgaW5pdGlhbCBzZWFyY2ggbWlnaHQgaGF2ZSB5aWVsZGVkIGlycmVsZXZhbnQgcmVzdWx0cy4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZS4gTGV0J3MgdHJ5IG5hcnJvd2luZyBpdCBkb3duLiBNeSBvYmplY3RpdmUgaXMgdG8gZmluZCBpbnN0YW5jZXMgdGhhdCBleHBsaWNpdGx5IHJlbGF0ZSB0byBgYXJncy5zZXNzaW9uYCwgb3IgcGVyaGFwcyBhbiBlcXVpdmFsZW50IHN0cnVjdHVyZSBhY2Nlc3NlZCB3aXRoIGAtXHUwMDNlYC4gVGhlcmVmb3JlLCBJJ2xsIHJldmlzZSBteSBzZWFyY2ggdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGBhcmdzXFwuc2Vzc2lvbmAgb3IgYGFyZ3MtXHUwMDNlc2Vzc2lvbmAuIFRoYXQgc2hvdWxkIHByb3ZpZGUgbW9yZSBmb2N1c2VkIGFuZCByZWxldmFudCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0MSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjU1LjI2NTcxMTAyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjIxOTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcmdzXFxcXC5zZXNzaW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25mcy9uZnM0cHJvYy5jPTg0NTQ9aW50IG5mczRfcHJvY19iaW5kX29uZV9jb25uX3RvX3Nlc3Npb24oc3RydWN0IHJwY19jbG50ICpjbG50LFxcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtODQ4MS1cXG5mcy9uZnMvbmZzNHByb2MuYzo4NDgyOlxcdG5mczRfY29weV9zZXNzaW9uaWQoXFx1MDAyNmFyZ3Muc2Vzc2lvbmlkLCBcXHUwMDI2Y2xwLVxcdTAwM2VjbF9zZXNzaW9uLVxcdTAwM2VzZXNzX2lkKTtcXG5mcy9uZnMvbmZzNHByb2MuYy04NDgzLVxcdGlmICghKGNscC1cXHUwMDNlY2xfc2Vzc2lvbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTRVNTSU9ONF9CQUNLX0NIQU4pKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0yMzA9aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg2LVxcdGFyZ3MuaGFuZGxlciA9IGZoO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6Mjg3OlxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg4LVxcdGFyZ3MuZmlsZSA9IGZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTMzND12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0NC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNDU6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNDYtXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM3OC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzk6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zODAtXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM5Mj1zdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTQwMC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo0MDE6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy00MDItXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTU1Nj1pbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTkzLVxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU5NDpcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTU5NS1cXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy02MjctXFx0XFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI4OlxcdFxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI5LVxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02Mzg9c3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQ1LVxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjY0NjpcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Ny1cXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cXHUwMDNlZmlsZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NTguMTE3OTM2OTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NDY0MzM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFwiTGl2ZXVwZGF0ZVwiIFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgLiBSaWdodCBub3csIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IG5vbmUgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMgYXJlIGFjdHVhbGx5ICp1c2luZyogZWl0aGVyIGBhcmdzLVx1MDAzZXNlc3Npb25gIG9yIGBhcmdzLnNlc3Npb25gLiBJIHNlZSB0aGUgYWRkaXRpb24gb2YgdGhpcyBmaWVsZCwgdGhlIHBvcHVsYXRpb24gd2l0aGluIGBsdW9fZmlsZS5jYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AsIHdoaWNoIGFyZSBleHBvcnRlZCwgYnV0IHNlZW0gdW51c2VkLiBTbywgdGhlIHBhdGNoLCBhdCB0aGlzIHBvaW50LCBhcHBlYXJzIHRvIGJlIGRlYWQgY29kZSwgb3IgbWF5YmUgYW4gQVBJIGhvb2sgZm9yIHNvbWUgZnV0dXJlIGltcGxlbWVudGF0aW9uLiBJdCBkb2Vzbid0IG1vZGlmeSBhbnkgY3VycmVudCBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyBpbiBhbnkgd2F5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUga2VybmVsIGNvZGUgZm9yIGFueSBleGlzdGluZyBmaWxlIGhhbmRsZXJzIGFuZCB0aGVpciBhY2Nlc3Mgb2YgYSBgc2Vzc2lvbmAgdmFyaWFibGUgd2l0aG91dCB0aGUgYGFyZ3MuYCBvciBgYXJncy1cdTAwM2VgIHNjb3BlIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gc29tZSBvdGhlciBjaGFuZ2UuIEkgd2FudCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgbWlzc2luZyBhbiBpbmRpcmVjdCB1c2FnZSBvZiB0aGUgbmV3IG1lbWJlci4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoYXQgYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2Agc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIHRob3NlIGZpbGUgaGFuZGxlciBkZWZpbml0aW9ucy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg5NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MjowMi44MTI1ODI1MThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDg1NTkzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTIzPXN0cnVjdCBmaWxlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjUtLyoqXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjY6ICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjctICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxcbi0tXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDYtICovXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6NDc6c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIHtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC00OC1cXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmhhbmRsZXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03My0gKiBBbGwgb3BlcmF0aW9ucyAoZXhjZXB0IGNhbl9wcmVzZXJ2ZSkgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gYVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc0OiAqICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGNvbnRhaW5pbmcgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LlxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTc1LSAqL1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTc2PXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTc4LVxcdFxcdFxcdCAgICAgc3RydWN0IGZpbGUgKmZpbGUpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc5OlxcdGludCAoKnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgwOlxcdHZvaWQgKCp1bnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgxOlxcdGludCAoKmZyZWV6ZSkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MjpcXHR2b2lkICgqdW5mcmVlemUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODM6XFx0aW50ICgqcmV0cmlldmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODQ6XFx0Ym9vbCAoKmNhbl9maW5pc2gpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODU6XFx0dm9pZCAoKmZpbmlzaCkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC04Ni1cXHR1bnNpZ25lZCBsb25nICgqZ2V0X2lkKShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTIzMD1pbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjIzMjpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMy1cXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zMzQ9dm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zMzgtXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZmaWxlX3NldC1cXHUwMDNlZmlsZXNfbGlzdCkpIHtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMzOTpcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0MC1cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9MzY4PXN0YXRpYyBpbnQgbHVvX2ZpbGVfZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzc1LVxcdGlmIChsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlZnJlZXplKSB7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzY6XFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzctXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM5Mj1zdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM5Ny1cXHRpZiAobHVvX2ZpbGUtXFx1MDAzZWZoLVxcdTAwM2VvcHMtXFx1MDAzZXVuZnJlZXplKSB7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozOTg6XFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zOTktXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTU1Nj1pbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTU4LXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU1OTpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTU2MC1cXHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02MTc9c3RhdGljIGludCBsdW9fZmlsZV9jYW5fZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI0LVxcdGlmIChsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlY2FuX2ZpbmlzaCkge1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI1OlxcdFxcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI2LVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02Mzg9c3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQwLXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjY0MTpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Mi1cXG4tLVxcbm1tL21lbWZkX2x1by5jPTIzMT1zdGF0aWMgdm9pZCBtZW1mZF9sdW9fdW5wcmVzZXJ2ZV9mb2xpb3Moc3RydWN0IGtob192bWFsbG9jICpraG9fdm1hbGxvYyxcXG4tLVxcbm1tL21lbWZkX2x1by5jLTI1Ny1cXG5tbS9tZW1mZF9sdW8uYzoyNTg6c3RhdGljIGludCBtZW1mZF9sdW9fcHJlc2VydmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTI1OS17XFxuLS1cXG5tbS9tZW1mZF9sdW8uYy0zMjMtXFxubW0vbWVtZmRfbHVvLmM6MzI0OnN0YXRpYyBpbnQgbWVtZmRfbHVvX2ZyZWV6ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXFxubW0vbWVtZmRfbHVvLmMtMzI1LXtcXG4tLVxcbm1tL21lbWZkX2x1by5jLTM0MS1cXG5tbS9tZW1mZF9sdW8uYzozNDI6c3RhdGljIHZvaWQgbWVtZmRfbHVvX3VucHJlc2VydmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTM0My17XFxuLS1cXG5tbS9tZW1mZF9sdW8uYz0zNjI9c3RhdGljIHZvaWQgbWVtZmRfbHVvX2Rpc2NhcmRfZm9saW9zKGNvbnN0IHN0cnVjdCBtZW1mZF9sdW9fZm9saW9fc2VyICpmb2xpb3Nfc2VyLFxcbi0tXFxubW0vbWVtZmRfbHVvLmMtMzg2LVxcbm1tL21lbWZkX2x1by5jOjM4NzpzdGF0aWMgdm9pZCBtZW1mZF9sdW9fZmluaXNoKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncylcXG5tbS9tZW1mZF9sdW8uYy0zODgte1xcbi0tXFxubW0vbWVtZmRfbHVvLmM9NDE3PXN0YXRpYyBpbnQgbWVtZmRfbHVvX3JldHJpZXZlX2ZvbGlvcyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbm1tL21lbWZkX2x1by5jLTUxNy1cXG5tbS9tZW1mZF9sdW8uYzo1MTg6c3RhdGljIGludCBtZW1mZF9sdW9fcmV0cmlldmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTUxOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjA1LjYyMTE0NjIwMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTIwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuXG5cbioqRGVlcCBEaXZlIGludG8gYG1tL21lbWZkX2x1by5jYCBhbmQgaXRzIENvbm5lY3Rpb24gdG8gU2Vzc2lvbiBBcmd1bWVudHMqKlxuXG5BbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGhlcmUgaXMgcHJldHR5IGZvY3VzZWQuIFdlJ3JlIGxvb2tpbmcgYXQgdGhlIHNvbGUgZmlsZSBoYW5kbGVyLCBgbW0vbWVtZmRfbHVvLmNgLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGtlZXBzIHRoZSBzY29wZSBtYW5hZ2VhYmxlLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZDogZG9lcyB0aGlzIGhhbmRsZXIsIHRoZSBvbmUgYW5kIG9ubHkgZm9yIHRoaXMgdGFzaywgYWN0dWFsbHkgbGV2ZXJhZ2UgYGFyZ3MtXHUwMDNlc2Vzc2lvbmA/IFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIHdlJ3JlIGludGVyZXN0ZWQgaW4sIHRoZSBjZW50cmFsIHBpZWNlIG9mIHRoaXMgcHV6emxlLiBJdCdzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjA4LjkzNjY3MTIwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTAyNTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXNzaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbWZkX2x1by5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MjowOS4wNjAxODQ2NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyNTU2MzE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnVzZWQgQVBJIGluIGEgTGl2ZXVwZGF0ZSBDb250ZXh0KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGZyYW5rbHksIGl0J3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gSXQgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgYHNlc3Npb25gIGZpZWxkIHRvIHRoZSBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEFsb25nc2lkZSB0aGF0LCB3ZSd2ZSBnb3QgdHdvIG5ldyBmdW5jdGlvbnMsIGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gQm90aCBvZiB0aGVzZSBhcmUgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIHRoZXkncmUgdGVjaG5pY2FsbHkgYXZhaWxhYmxlIGZvciBvdGhlciBrZXJuZWwgbW9kdWxlcyB0byBjYWxsLiBIb3dldmVyLCBhbmQgaGVyZSdzIHRoZSBraWNrZXIsICp0aGV5IGFyZW4ndCBhY3R1YWxseSB1c2VkIGFueXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGNvZGUqLiBOb3doZXJlIVxuXG5UaGUgYHNlc3Npb25gIGZpZWxkIGl0c2VsZiwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgYWxzbyBwb3B1bGF0ZWQgYnV0IGNvbXBsZXRlbHkgaWdub3JlZCBieSBhbnkgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMuIEl0J3MganVzdC4uLnRoZXJlLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUgd2VudCB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgYWRkaW5nIGFsbCB0aGlzIG5ldyBBUEkgYW5kIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgYnV0IGNvbXBsZXRlbHkgbmVnbGVjdGVkIHRvICp1c2UqIGFueSBvZiBpdC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIG15IHByb2Zlc3Npb25hbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWxpdHkgdGhhdCdzIHN1YmplY3QgdG8gZnV6emluZy4gSXQncyBzaW1wbHkgY3JlYXRpbmcgdW51c2VkIEFQSSBhbmQgZmllbGRzLiBTbywgSSdtIGdvaW5nIHRvIGhhdmUgdG8gZmxhZyB0aGlzIG9uZSBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgZG9lc24ndCBwcmVzZW50IGFueSBpbW1lZGlhdGUgYXR0YWNrIHN1cmZhY2Ugb3IgY2hhbmdlIHRvIHRoZSBleGlzdGluZyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MzEsIk91dHB1dFRva2VucyI6MTQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjEzLjk4NTc1MDY4MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ3Nlc3Npb24nIGZpZWxkIHRvICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAnbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZycgYW5kICdsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZycuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICdzZXNzaW9uJyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyAnc2Vzc2lvbicgZmllbGQgdG8gJ3N0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncycgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICdsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nJyBhbmQgJ2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJy4gSG93ZXZlciwgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBuZXcgJ3Nlc3Npb24nIGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow98gkq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 02:21:29 +0000 UTC FinishedAt: 2026-07-25 02:52:15 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgJiMzOTtzZXNzaW9uJiMzOTsgZmllbGQgdG8gJiMzOTtzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MmIzM5OyBhbmQgdHdvIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMgJiMzOTtsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nJiMzOTsgYW5kICYjMzk7bGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcmIzM5Oy4gSG93ZXZlciwgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBuZXcgJiMzOTtzZXNzaW9uJiMzOTsgZmllbGQgaXMgcG9wdWxhdGVkIGJ1dCBuZXZlciByZWFkIGJ5IGFueSBmaWxlIGhhbmRsZXIgKGUuZy4sIGluIG1tL21lbWZkX2x1by5jKS4gVGh1cywgdGhlIHBhdGNoIGludHJvZHVjZXMgdW51c2VkIEFQSSBhbmQgZGVhZCBjb2RlLCBtYWtpbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1Zjc2ZmEzN2UwYWFiOTUyMWQ4ZWYxMzZkMmMwN2I5ZWNkOGE4ZDgxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDI6NTE6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmggYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxuaW5kZXggNjNlYTU0MTdkZTg0OWEuLjYwNTFhYmMwNjEyY2VlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGZpbGU7XG4gLyoqXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG4gICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxuJiM0MzsgKiBAc2Vzc2lvbjogICAgICAgICAgVGhlIHNlc3Npb24gdGhpcyBmaWxlIGJlbG9uZ3MgdG8uXG4gICogQHJldHJpZXZlX3N0YXR1czogIFRoZSByZXRyaWV2ZSBzdGF0dXMgZm9yIHRoZSAmIzM5O2Nhbl9maW5pc2ggLyBmaW5pc2gmIzM5O1xuICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuXG4gICogICAgICAgICAgICAgICAgICAgIGF0dGVtcHRlZCwgYSBwb3NpdGl2ZSB2YWx1ZSBtZWFucyB0aGUgcmV0cmlldmUgd2FzXG5AQCAtNDUsNiAmIzQzOzQ2LDcgQEAgc3RydWN0IGZpbGU7XG4gICovXG4gc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIHtcbiBcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjtcbiYjNDM7XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzZXNzaW9uO1xuIFx0aW50IHJldHJpZXZlX3N0YXR1cztcbiBcdHN0cnVjdCBmaWxlICpmaWxlO1xuIFx0dTY0IHNlcmlhbGl6ZWRfZGF0YTtcbkBAIC0yNDcsNiAmIzQzOzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7XG4gaW50IGxpdmV1cGRhdGVfZmxiX2dldF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYiwgdm9pZCAqKm9ianApO1xuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbiBcbiYjNDM7Lyoga2VybmVsIGNhbiBpbnRlcm5hbGx5IHJldHJpZXZlIGZpbGVzICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4mIzQzO1xuJiM0MzsvKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi9cbiYjNDM7aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xuJiM0MztcbiAjZWxzZSAvKiBDT05GSUdfTElWRVVQREFURSAqL1xuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBsaXZldXBkYXRlX2VuYWJsZWQodm9pZClcbkBAIC0yOTksNSAmIzQzOzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuIHtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcbiYjNDM7e1xuJiM0MztcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7fVxuJiM0MztcbiAjZW5kaWYgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5pbmRleCBjMzlmOTY5NjFhODViZS4uZGJhZTA3MTUyMjBiMTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5AQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBpbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZsdW9fZmlsZS1cdTAwM2VtdXRleCk7XG4gXG4gXHRhcmdzLmhhbmRsZXIgPSBmaDtcbiYjNDM7XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdGFyZ3MuZmlsZSA9IGZpbGU7XG4gXHRlcnIgPSBmaC1cdTAwM2VvcHMtXHUwMDNlcHJlc2VydmUoXHUwMDI2YXJncyk7XG4gXHRpZiAoZXJyKVxuQEAgLTM0MSw2ICYjNDM7MzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzc0LDYgJiM0MzszNzYsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4gXHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzk1LDYgJiM0MzszOTgsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4gXHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtNTg3LDYgJiM0Mzs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcbiBcdH1cbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuJiM0MztcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRlcnIgPSBsdW9fZmlsZS1cdTAwM2VmaC1cdTAwM2VvcHMtXHUwMDNlcmV0cmlldmUoXHUwMDI2YXJncyk7XG4gXHRpZiAoZXJyKSB7XG5AQCAtNjIwLDYgJiM0Mzs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbiBcbiBcdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG4mIzQzO1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTYzNyw2ICYjNDM7NjQzLDcgQEAgc3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdGd1YXJkKG11dGV4KShcdTAwMjZsdW9fZmlsZS1cdTAwM2VtdXRleCk7XG4gXG4gXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbiYjNDM7XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4gXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTkyNiwzICYjNDM7OTMzLDY1IEBAIHZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuIFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XG4gXHRsaXN0X2RlbChcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xuIH1cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyAtIEdldCB0aGUgdG9rZW4gZm9yIGEgcHJlc2VydmVkIGZpbGUuXG4mIzQzOyAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uXG4mIzQzOyAqIEBmaWxlOiAgIFRoZSBmaWxlIG9iamVjdCB0byBzZWFyY2ggZm9yLlxuJiM0MzsgKiBAdG9rZW5wOiBPdXRwdXQgcGFyYW1ldGVyIGZvciB0aGUgZm91bmQgdG9rZW4uXG4mIzQzOyAqXG4mIzQzOyAqIFNlYXJjaGVzIHRoZSBsaXN0IG9mIHByZXNlcnZlZCBmaWxlcyBpbiBhbiBvdXRnb2luZyBzZXNzaW9uIGZvciBhIG1hdGNoaW5nXG4mIzQzOyAqIGZpbGUgb2JqZWN0LiBJZiBmb3VuZCwgdGhlIGNvcnJlc3BvbmRpbmcgdXNlci1wcm92aWRlZCB0b2tlbiBpcyByZXR1cm5lZC5cbiYjNDM7ICpcbiYjNDM7ICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgaW4ta2VybmVsIGNhbGxlcnMgdGhhdCBuZWVkIHRvIGNvcnJlbGF0ZSBhXG4mIzQzOyAqIGZpbGUgd2l0aCBpdHMgbGl2ZXVwZGF0ZSB0b2tlbi5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkLlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVOT0VOVCBpZiB0aGUgZmlsZSBpcyBub3QgcHJlc2VydmVkIGluIHRoaXMgc2Vzc2lvbi5cbiYjNDM7ICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuJiM0MztcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTtcbiYjNDM7XHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xuJiM0MztcdGludCBlcnIgPSAtRU5PRU5UO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcdTAwMjZmaWxlX3NldC1cdTAwM2VmaWxlc19saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAobHVvX2ZpbGUtXHUwMDNlZmlsZSA9PSBmaWxlKSB7XG4mIzQzO1x0XHRcdGlmICh0b2tlbnApXG4mIzQzO1x0XHRcdFx0KnRva2VucCA9IGx1b19maWxlLVx1MDAzZXRva2VuO1xuJiM0MztcdFx0XHRlcnIgPSAwO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBlcnI7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcgLSBSZXRyaWV2ZXMgYSBwcmVzZXJ2ZWQgZmlsZSBmb3IgaW4ta2VybmVsIHVzZS5cbiYjNDM7ICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbiYjNDM7ICogQHRva2VuOiAgVGhlIHVuaXF1ZSB0b2tlbiBpZGVudGlmeWluZyB0aGUgZmlsZSB0byByZXRyaWV2ZS5cbiYjNDM7ICogQGZpbGVwOiAgT24gc3VjY2VzcywgdGhpcyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGEgcG9pbnRlciB0byB0aGUgcmV0cmlldmVkXG4mIzQzOyAqICAgICAgICAgICYjMzk7c3RydWN0IGZpbGUmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogUHJvdmlkZXMgYSBrZXJuZWwtaW50ZXJuYWwgQVBJIGZvciBvdGhlciBzdWJzeXN0ZW1zIHRvIHJldHJpZXZlIHRoZWlyXG4mIzQzOyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXJcbiYjNDM7ICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0XG4mIzQzOyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJiMzOTtzIGxpZmV0aW1lIGlzIG1hbmFnZWQgYnkgTFVPIGFuZCBhbnkgdXNlcnNwYWNlXG4mIzQzOyAqIGZpbGUgZGVzY3JpcHRvcnMuXG4mIzQzOyAqXG4mIzQzOyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZCBvZiBhIHJlc3RvcmVkIHNlc3Npb24uXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLiBSZXR1cm5zIC1FTk9FTlQgaWYgbm8gZmlsZSB3aXRoIHRoZSBtYXRjaGluZyB0b2tlbiBpc1xuJiM0MzsgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzO2ludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbiYjNDM7XHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBsdW9fcmV0cmlldmVfZmlsZShsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKSxcbiYjNDM7XHRcdFx0XHQgdG9rZW4sIGZpbGVwKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXG5pbmRleCA2NDg3OWZmZTczNzgxYy4uZGFjNjY0NGJmYjE4YWEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcbkBAIC03Nyw2ICYjNDM7NzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcbiBcbiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrO1xuIFxuJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKmx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb247XG4mIzQzO1xuJiM0MztcdHNlc3Npb24gPSBjb250YWluZXJfb2YoZmlsZV9zZXQsIHN0cnVjdCBsdW9fc2Vzc2lvbiwgZmlsZV9zZXQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKilzZXNzaW9uO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHN0cnVjdCBsdW9fZmlsZV9zZXQgKmx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24gPSAoc3RydWN0IGx1b19zZXNzaW9uICopcztcbiYjNDM7XG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZzZXNzaW9uLVx1MDAzZW11dGV4KTtcbiYjNDM7XHRyZXR1cm4gXHUwMDI2c2Vzc2lvbi1cdTAwM2VmaWxlX3NldDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgbHVvX3Nlc3Npb25fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBmaWxlICoqZmlsZXApO1xuIGludCBsdW9fc2Vzc2lvbl9yZXRyaWV2ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcbiB2b2lkIF9faW5pdCBsdW9fc2Vzc2lvbl9zZXR1cF9vdXRnb2luZyh1NjQgKnNlc3Npb25zX3BhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyAmIzM5O3Nlc3Npb24mIzM5OyBmaWVsZCB0byAmIzM5O3N0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyYjMzk7IGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAmIzM5O2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcmIzM5OyBhbmQgJiMzOTtsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyYjMzk7LiBIb3dldmVyLCB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsLCBhbmQgdGhlIG5ldyAmIzM5O3Nlc3Npb24mIzM5OyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVmNzZmYTM3ZTBhYWI5NTIxZDhlZjEzNmQyYzA3YjllY2Q4YThkODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwMjo1MToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgKaW5kZXggNjNlYTU0MTdkZTg0OWEuLjYwNTFhYmMwNjEyY2VlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaApAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IGZpbGU7CiAvKioKICAqIHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAtIEFyZ3VtZW50cyBmb3IgZmlsZSBvcGVyYXRpb24gY2FsbGJhY2tzLgogICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLgomIzQzOyAqIEBzZXNzaW9uOiAgICAgICAgICBUaGUgc2Vzc2lvbiB0aGlzIGZpbGUgYmVsb25ncyB0by4KICAqIEByZXRyaWV2ZV9zdGF0dXM6ICBUaGUgcmV0cmlldmUgc3RhdHVzIGZvciB0aGUgJiMzOTtjYW5fZmluaXNoIC8gZmluaXNoJiMzOTsKICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuCiAgKiAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkLCBhIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHRoZSByZXRyaWV2ZSB3YXMKQEAgLTQ1LDYgJiM0Mzs0Niw3IEBAIHN0cnVjdCBmaWxlOwogICovCiBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgewogCXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjsKJiM0MzsJc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjsKIAlpbnQgcmV0cmlldmVfc3RhdHVzOwogCXN0cnVjdCBmaWxlICpmaWxlOwogCXU2NCBzZXJpYWxpemVkX2RhdGE7CkBAIC0yNDcsNiAmIzQzOzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7CiBpbnQgbGl2ZXVwZGF0ZV9mbGJfZ2V0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiLCB2b2lkICoqb2JqcCk7CiB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7CiAKJiM0MzsvKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sCiYjNDM7CQkJCSBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTsKJiM0MzsKJiM0MzsvKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywKJiM0MzsJCQkJICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApOwomIzQzOwogI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi8KIAogc3RhdGljIGlubGluZSBib29sIGxpdmV1cGRhdGVfZW5hYmxlZCh2b2lkKQpAQCAtMjk5LDUgJiM0MzszMDksMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYikKIHsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywKJiM0MzsJCQkJCSAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApCiYjNDM7ewomIzQzOwlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsCiYjNDM7CQkJCQkJc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKQomIzQzO3sKJiM0MzsJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzO30KJiM0MzsKICNlbmRpZiAvKiBDT05GSUdfTElWRVVQREFURSAqLwogI2VuZGlmIC8qIF9MSU5VWF9MSVZFVVBEQVRFX0ggKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jCmluZGV4IGMzOWY5Njk2MWE4NWJlLi5kYmFlMDcxNTIyMGIxMCAxMDA2NDQKLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jCkBAIC0yODQsNiAmIzQzOzI4NCw3IEBAIGludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpCiAJbXV0ZXhfaW5pdCgmYW1wO2x1b19maWxlLSZndDttdXRleCk7CiAKIAlhcmdzLmhhbmRsZXIgPSBmaDsKJiM0MzsJYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7CiAJYXJncy5maWxlID0gZmlsZTsKIAllcnIgPSBmaC0mZ3Q7b3BzLSZndDtwcmVzZXJ2ZSgmYW1wO2FyZ3MpOwogCWlmIChlcnIpCkBAIC0zNDEsNiAmIzQzOzM0Miw3IEBAIHZvaWQgbHVvX2ZpbGVfdW5wcmVzZXJ2ZV9maWxlcyhzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCkKIAkJCQkJICAgc3RydWN0IGx1b19maWxlLCBsaXN0KTsKIAogCQlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CQlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAkJYXJncy5maWxlID0gbHVvX2ZpbGUtJmd0O2ZpbGU7CiAJCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAkJYXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS0mZ3Q7cHJpdmF0ZV9kYXRhOwpAQCAtMzc0LDYgJiM0MzszNzYsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsCiAJCXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9OwogCiAJCWFyZ3MuaGFuZGxlciA9IGx1b19maWxlLSZndDtmaDsKJiM0MzsJCWFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpOwogCQlhcmdzLmZpbGUgPSBsdW9fZmlsZS0mZ3Q7ZmlsZTsKIAkJYXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS0mZ3Q7c2VyaWFsaXplZF9kYXRhOwogCQlhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLSZndDtwcml2YXRlX2RhdGE7CkBAIC0zOTUsNiAmIzQzOzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwKIAkJc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07CiAKIAkJYXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtJmd0O2ZoOwomIzQzOwkJYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7CiAJCWFyZ3MuZmlsZSA9IGx1b19maWxlLSZndDtmaWxlOwogCQlhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLSZndDtzZXJpYWxpemVkX2RhdGE7CiAJCWFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKQEAgLTU4Nyw2ICYjNDM7NTkxLDcgQEAgaW50IGx1b19yZXRyaWV2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sCiAJfQogCiAJYXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtJmd0O2ZoOwomIzQzOwlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAlhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLSZndDtzZXJpYWxpemVkX2RhdGE7CiAJZXJyID0gbHVvX2ZpbGUtJmd0O2ZoLSZndDtvcHMtJmd0O3JldHJpZXZlKCZhbXA7YXJncyk7CiAJaWYgKGVycikgewpAQCAtNjIwLDYgJiM0Mzs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LAogCQlzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTsKIAogCQlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CQlhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTsKIAkJYXJncy5maWxlID0gbHVvX2ZpbGUtJmd0O2ZpbGU7CiAJCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAkJYXJncy5yZXRyaWV2ZV9zdGF0dXMgPSBsdW9fZmlsZS0mZ3Q7cmV0cmlldmVfc3RhdHVzOwpAQCAtNjM3LDYgJiM0Mzs2NDMsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LAogCWd1YXJkKG11dGV4KSgmYW1wO2x1b19maWxlLSZndDttdXRleCk7CiAKIAlhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS0mZ3Q7Zmg7CiYjNDM7CWFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpOwogCWFyZ3MuZmlsZSA9IGx1b19maWxlLSZndDtmaWxlOwogCWFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtJmd0O3NlcmlhbGl6ZWRfZGF0YTsKIAlhcmdzLnJldHJpZXZlX3N0YXR1cyA9IGx1b19maWxlLSZndDtyZXRyaWV2ZV9zdGF0dXM7CkBAIC05MjYsMyAmIzQzOzkzMyw2NSBAQCB2b2lkIGxpdmV1cGRhdGVfdW5yZWdpc3Rlcl9maWxlX2hhbmRsZXIoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpmaCkKIAlsdW9fZmxiX3VucmVnaXN0ZXJfYWxsKGZoKTsKIAlsaXN0X2RlbCgmYW1wO0FDQ0VTU19QUklWQVRFKGZoLCBsaXN0KSk7CiB9CiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLgomIzQzOyAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uCiYjNDM7ICogQGZpbGU6ICAgVGhlIGZpbGUgb2JqZWN0IHRvIHNlYXJjaCBmb3IuCiYjNDM7ICogQHRva2VucDogT3V0cHV0IHBhcmFtZXRlciBmb3IgdGhlIGZvdW5kIHRva2VuLgomIzQzOyAqCiYjNDM7ICogU2VhcmNoZXMgdGhlIGxpc3Qgb2YgcHJlc2VydmVkIGZpbGVzIGluIGFuIG91dGdvaW5nIHNlc3Npb24gZm9yIGEgbWF0Y2hpbmcKJiM0MzsgKiBmaWxlIG9iamVjdC4gSWYgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIHVzZXItcHJvdmlkZWQgdG9rZW4gaXMgcmV0dXJuZWQuCiYjNDM7ICoKJiM0MzsgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBpbi1rZXJuZWwgY2FsbGVycyB0aGF0IG5lZWQgdG8gY29ycmVsYXRlIGEKJiM0MzsgKiBmaWxlIHdpdGggaXRzIGxpdmV1cGRhdGUgdG9rZW4uCiYjNDM7ICoKJiM0MzsgKiBDb250ZXh0OiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIHNlc3Npb24gbXV0ZXggYWNxdWlyZWQuCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FTk9FTlQgaWYgdGhlIGZpbGUgaXMgbm90IHByZXNlcnZlZCBpbiB0aGlzIHNlc3Npb24uCiYjNDM7ICovCiYjNDM7aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsCiYjNDM7CQkJCSAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTsKJiM0MzsJc3RydWN0IGx1b19maWxlICpsdW9fZmlsZTsKJiM0MzsJaW50IGVyciA9IC1FTk9FTlQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkobHVvX2ZpbGUsICZhbXA7ZmlsZV9zZXQtJmd0O2ZpbGVzX2xpc3QsIGxpc3QpIHsKJiM0MzsJCWlmIChsdW9fZmlsZS0mZ3Q7ZmlsZSA9PSBmaWxlKSB7CiYjNDM7CQkJaWYgKHRva2VucCkKJiM0MzsJCQkJKnRva2VucCA9IGx1b19maWxlLSZndDt0b2tlbjsKJiM0MzsJCQllcnIgPSAwOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKTsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nIC0gUmV0cmlldmVzIGEgcHJlc2VydmVkIGZpbGUgZm9yIGluLWtlcm5lbCB1c2UuCiYjNDM7ICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS4KJiM0MzsgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLgomIzQzOyAqIEBmaWxlcDogIE9uIHN1Y2Nlc3MsIHRoaXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJldHJpZXZlZAomIzQzOyAqICAgICAgICAgICYjMzk7c3RydWN0IGZpbGUmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIFByb3ZpZGVzIGEga2VybmVsLWludGVybmFsIEFQSSBmb3Igb3RoZXIgc3Vic3lzdGVtcyB0byByZXRyaWV2ZSB0aGVpcgomIzQzOyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXIKJiM0MzsgKiBhcm91bmQgbHVvX3JldHJpZXZlX2ZpbGUoKSwgYWxsb3dpbmcgY2FsbGVycyB0byBmaW5kIGEgZmlsZSBieSBpdHMgdG9rZW4uCiYjNDM7ICoKJiM0MzsgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0CiYjNDM7ICogaXMgbm8gbG9uZ2VyIG5lZWRlZC4gVGhlIGZpbGUmIzM5O3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2UKJiM0MzsgKiBmaWxlIGRlc2NyaXB0b3JzLgomIzQzOyAqCiYjNDM7ICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi4KJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gUmV0dXJucyAtRU5PRU5UIGlmIG5vIGZpbGUgd2l0aCB0aGUgbWF0Y2hpbmcgdG9rZW4gaXMKJiM0MzsgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KJiM0MzsgKi8KJiM0MztpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sCiYjNDM7CQkJCSBzdHJ1Y3QgZmlsZSAqKmZpbGVwKQomIzQzO3sKJiM0MzsJcmV0dXJuIGx1b19yZXRyaWV2ZV9maWxlKGx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHMpLAomIzQzOwkJCQkgdG9rZW4sIGZpbGVwKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oCmluZGV4IDY0ODc5ZmZlNzM3ODFjLi5kYWM2NjQ0YmZiMThhYSAxMDA2NDQKLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmgKQEAgLTc3LDYgJiM0Mzs3NywyMyBAQCBzdHJ1Y3QgbHVvX3Nlc3Npb24gewogCiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrOwogCiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uOwomIzQzOwomIzQzOwlzZXNzaW9uID0gY29udGFpbmVyX29mKGZpbGVfc2V0LCBzdHJ1Y3QgbHVvX3Nlc3Npb24sIGZpbGVfc2V0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIChzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICopc2Vzc2lvbjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzKQomIzQzO3sKJiM0MzsJc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uID0gKHN0cnVjdCBsdW9fc2Vzc2lvbiAqKXM7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtzZXNzaW9uLSZndDttdXRleCk7CiYjNDM7CXJldHVybiAmYW1wO3Nlc3Npb24tJmd0O2ZpbGVfc2V0OwomIzQzO30KJiM0MzsKIGludCBsdW9fc2Vzc2lvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7CiBpbnQgbHVvX3Nlc3Npb25fcmV0cmlldmUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7CiB2b2lkIF9faW5pdCBsdW9fc2Vzc2lvbl9zZXR1cF9vdXRnb2luZyh1NjQgKnNlc3Npb25zX3BhKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExpdmUgVXBkYXRlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgc29tZSBuZXcgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGxpdmUgdXBkYXRlcy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIGBzZXNzaW9uYCBmaWVsZCB0byB0aGUgYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2Agc3RydWN0dXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWltZWQgYXQgZW5oYW5jaW5nIHRoZSBjb250cm9sIG9yIHRyYWNraW5nIG9mIGZpbGUgb3BlcmF0aW9ucyBkdXJpbmcgYSBsaXZlIHVwZGF0ZS4gSW50ZXJlc3RpbmcuIEFuZCBpdCYjMzk7cyBpbXBsZW1lbnRpbmcgdHdvIG5ldyBmdW5jdGlvbnM6IGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gSSYjMzk7bSBndWVzc2luZyB0aG9zZSB3aWxsIGhhbmRsZSBmZXRjaGluZyBvciBtYW5hZ2luZyBmaWxlcyBhbmQgdG9rZW5zIHRoYXQgYXJlIGNvbWluZyBpbiBvciBnb2luZyBvdXQgZHVyaW5nIHRoZSB1cGRhdGUgcHJvY2Vzcy4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcGF0Y2ggdG91Y2hlcyBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY2AsIGBpbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaGAsIGFuZCBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGxpdmUgdXBkYXRlIGltcGxlbWVudGF0aW9uLCB0aGUgcHVibGljLWZhY2luZyBoZWFkZXIsIGFuZCBpbnRlcm5hbCBkZWZpbml0aW9ucywgcmVzcGVjdGl2ZWx5LiBNYWtlcyBzZW5zZS4KCkJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiBhY3RpdmUgaW4gb3VyIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0xJVkVVUERBVEVgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC4KCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG1vcmUgZ3JhbnVsYXIuIEkgd2FudCB0byBzZWUgKndoZXJlKiB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AsIGFyZSBhY3R1YWxseSBiZWluZyAqdXNlZCouIFNvLCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHJ1biBhIHNlYXJjaCBmb3IgdGhvc2UgZnVuY3Rpb24gbmFtZXMgYWNyb3NzIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhpcyBuZXcgc2Vzc2lvbiBtYW5hZ2VtZW50IGZpdHMgaW50byB0aGUgYnJvYWRlciBsaXZlIHVwZGF0ZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUwPXZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0yNTItLyoga2VybmVsIGNhbiBpbnRlcm5hbGx5IHJldHJpZXZlIGZpbGVzICovXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTM6aW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU0LVx0XHRcdFx0IHN0cnVjdCBmaWxlICoqZmlsZXApO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMwOD1zdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjMxMjpzdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTMtXHRcdFx0XHRcdCAgICAgICB1NjQgdG9rZW4sIHN0cnVjdCBmaWxlICoqZmlsZXApXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz05NzA9RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTcyLS8qKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5NzM6ICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzQtICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5MC0gKi9cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6OTkxOmludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTkyLVx0XHRcdFx0IHN0cnVjdCBmaWxlICoqZmlsZXApXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05OTYtfVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5OTc6RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBzdWJqZWN0IG1hdHRlcjoKCioqQ2hlY2tpbmcgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIFdoYXQgZXhhY3RseSBpcyBoYXBwZW5pbmcgaW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlPyBJIHNob3VsZCBwcm9iYWJseSBhc3N1bWUgaXQmIzM5O3MgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgdG9rZW4gcmV0cmlldmFsLCBsaWtlbHkgZm9yIG91dGdvaW5nIG5ldHdvcmsgcmVxdWVzdHMg4oCTIHByb2JhYmx5IHJlbGF0aW5nIHRvIGxpdmUgdXBkYXRlcy4gSXMgdGhpcyB0b2tlbiBmb3IgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIG9yIGJvdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgbGl2ZSB1cGRhdGUgd29ya2Zsb3cuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IEtub3dpbmcgdGhhdCB3aWxsIGNsYXJpZnkgaXRzIHJvbGUgaW4gdGhlIHByb2Nlc3MuIElzIHRoZXJlIGEgY2FjaGluZyBtZWNoYW5pc20/IEhvdyBzZWN1cmUgaXMgdGhlIHRva2VuIGdlbmVyYXRpb24gYW5kIHJldHJpZXZhbCBwcm9jZXNzPyBBbmQgYXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocyB0byBsb29rIGF0PyBUaGUgbmFtZSBzdWdnZXN0cyBpdCByZXRyaWV2ZXMgc29tZXRoaW5nLCBhbmQgdGhlICYjMzQ7b3V0Z29pbmcmIzM0OyBwYXJ0IGhpbnRzIHRoYXQgdGhlIHRva2VuIGlzIHVzZWQgd2hlbiBjb250YWN0aW5nIHNvbWUgZXh0ZXJuYWwgZW50aXR5IGZvciB1cGRhdGVzLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGtub3duIHZ1bG5lcmFiaWxpdGllcyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGlmIHRoZXJlIGlzIGFueSBwbGFjZSBmb3IgaW1wcm92ZW1lbnQuIEl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnbyBvdmVyIGFsbCBkb2N1bWVudGF0aW9uIHJlbGF0aW5nIHRvIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBtb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTI1Mz1pbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU2LS8qIEdldCBhIHRva2VuIGZvciBhbiBvdXRnb2luZyBmaWxlLCBvciAtRU5PRU5UIGlmIGZpbGUgaXMgbm90IHByZXNlcnZlZCAqL1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjU3OmludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU4LVx0XHRcdFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMxMj1zdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMzE3LVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MzE4OnN0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTktXHRcdFx0XHRcdFx0c3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9OTI3PXZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTM3LS8qKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5Mzg6ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05MzktICogQHM6ICAgICAgVGhlIG91dGdvaW5nIGxpdmV1cGRhdGUgc2Vzc2lvbi5cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1MS0gKi9cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6OTUyOmludCBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NTMtXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk2OS19XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk3MDpFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjA4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7VGhlc2UgbmV3IGZ1bmN0aW9ucy4uLiB0aGV5JiMzOTtyZSBub3QgZXZlbiAqY2FsbGVkKiBhbnl3aGVyZSBlbHNlIGluIHRoZSBrZXJuZWw/IFRoYXQmIzM5O3MuLi4gdW51c3VhbC4mIzM0OyBCdXQgaG9sZCBvbiwgdGhlIHBsb3QgdGhpY2tlbnMuIEkgc2VlIHRoZXkmIzM5O3ZlIGFsc28gZ29uZSBpbiBhbmQgbW9kaWZpZWQgc29tZSAqZXhpc3RpbmcqIGZ1bmN0aW9uczogYGx1b19wcmVzZXJ2ZV9maWxlYCwgYGx1b19maWxlX3VucHJlc2VydmVfZmlsZXNgLCBhbGwgdGhlIHdheSBkb3duIHRvIGBsdW9fZmlsZV9maW5pc2hfb25lYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBpbnNlcnRpbmcgYGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO2AgaW4gc2V2ZXJhbCBwbGFjZXMgd2l0aGluIHRob3NlLgoKSG1tLCBzbyB0aGV5JiMzOTtyZSB0eWluZyB0aGVzZSBuZXcgY29uY2VwdHMgaW50byB0aGUgZXhpc3RpbmcgbG9naWMuIFRoYXQgbWVhbnMgdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHVzZWQgdHJhbnNpdGl2ZWx5LiBUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgc2VlIGlmIGBsdW9fcHJlc2VydmVfZmlsZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYW55IGV4ZWN1dGlvbiBwYXRoLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgZnVuY3Rpb24gY2FsbHMgdG8gZGV0ZXJtaW5lIGl0cyB1c2FnZS4gQW5kLCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBjaGVjayB0aGUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zLiBJIHNob3VsZCBjaGVjayBpZiBgQ09ORklHX0xJVkVVUERBVEVgIGlzIGRlZmluZWQuIFRoaXMgcGF0Y2ggc2VlbXMgY2xvc2VseSBsaW5rZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsdW9fcHJlc2VydmVfZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTQ2LSAqIDEuIFByZXNlcnZlIChOb3JtYWwgT3BlcmF0aW9uKTogQSB1c2Vyc3BhY2UgYWdlbnQgcHJlc2VydmVzIGZpbGVzIG9uZSBieSBvbmVcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDc6ICogICAgdmlhIGFuIGlvY3RsLiBGb3IgZWFjaCBmaWxlLCBsdW9fcHJlc2VydmVfZmlsZSgpIGZpbmRzIGEgY29tcGF0aWJsZVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy00OC0gKiAgICBoYW5kbGVyLCBjYWxscyBpdHMgLnByZXNlcnZlKCkgb3BlcmF0aW9uLCBhbmQgY3JlYXRlcyBhbiBpbnRlcm5hbCBcdTAwMjZzdHJ1Y3Rcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTExOT1zdGF0aWMgREVGSU5FX1hBUlJBWShsdW9fcHJlc2VydmVkX2ZpbGVzKTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE0OS0gKiBUaGlzIHN0cnVjdHVyZSBpcyB0aGUgY29yZSBpbi1rZXJuZWwgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZmlsZSBiZWluZ1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoxNTA6ICogbWFuYWdlZCB0aHJvdWdoIGEgbGl2ZSB1cGRhdGUuIEFuIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgbHVvX3ByZXNlcnZlX2ZpbGUoKVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0xNTEtICogdG8gbGluayBhICYjMzk7c3RydWN0IGZpbGUmIzM5OyB0byBpdHMgY29ycmVzcG9uZGluZyBoYW5kbGVyLCBhIHVzZXItcHJvdmlkZWQgdG9rZW4sXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0xNzg9c3RhdGljIGJvb2wgbHVvX3Rva2VuX2lzX3VzZWQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbilcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE5MC0vKipcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTkxOiAqIGx1b19wcmVzZXJ2ZV9maWxlIC0gSW5pdGlhdGUgdGhlIHByZXNlcnZhdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci5cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTkyLSAqIEBmaWxlX3NldDogVGhlIGZpbGVfc2V0IHRvIHdoaWNoIHRoZSBwcmVzZXJ2ZWQgZmlsZSB3aWxsIGJlIGFkZGVkLlxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjI5LSAqL1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoyMzA6aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyNy0gKiAgIDMuIFJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlICYjMzk7c3RydWN0IGZpbGUmIzM5OyB0aGF0IHdhcyB0YWtlbiBieVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozMjg6ICogICAgICBsdW9fcHJlc2VydmVfZmlsZSgpIHZpYSBmcHV0KCksIHJldHVybmluZyBvd25lcnNoaXAuXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyOS0gKiAgIDQuIEZyZWVzIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcm5hbCAmIzM5O3N0cnVjdCBsdW9fZmlsZSYjMzk7LlxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYz0yMTE9dm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTI0OS0gKlxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jOjI1MDogKiBDb250ZXh0OiBDYWxsZWQgZnJvbSBsdW9fcHJlc2VydmVfZmlsZSgpXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtMjUxLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg9MTAyPWludCBsdW9fc2Vzc2lvbl9kZXNlcmlhbGl6ZSh2b2lkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwMy1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oOjEwNDppbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwNS12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmM9MjYzPXN0YXRpYyBpbnQgbHVvX3Nlc3Npb25fcHJlc2VydmVfZmQoc3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uLFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtMjY5LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNnNlc3Npb24tXHUwMDNlbXV0ZXgpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYzoyNzA6XHRlcnIgPSBsdW9fcHJlc2VydmVfZmlsZShcdTAwMjZzZXNzaW9uLVx1MDAzZWZpbGVfc2V0LCBhcmdwLVx1MDAzZXRva2VuLCBhcmdwLVx1MDAzZWZkKTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19zZXNzaW9uLmMtMjcxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTgwCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgTGl2ZXVwZGF0ZSBGaWxlIE9wZXJhdGlvbiBQYXRjaCoqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgc2Vzc2lvbmAgZmllbGQgaW50byB0aGUgYGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYSBgc2Vzc2lvbmAgYXJndW1lbnQgdGhhdCBnZXRzIHBhc3NlZCBkb3duIHRvIGVhY2ggb2YgdGhlIGZpbGUgaGFuZGxlciBvcGVyYXRpb25zIOKAkyB0aGUgYHByZXNlcnZlYCwgYHVucHJlc2VydmVgLCBgZnJlZXplYCwgYHVuZnJlZXplYCwgYHJldHJpZXZlYCwgYGNhbl9maW5pc2hgLCBhbmQgYGZpbmlzaGAgZnVuY3Rpb25zLiAKCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gRG9lcyBhbnlvbmUgKmFjdHVhbGx5KiBsZXZlcmFnZSB0aGF0IGBhcmdzLSZndDtzZXNzaW9uYCBkYXRhIHdpdGhpbiB0aGVpciBzcGVjaWZpYyBmaWxlIGhhbmRsZXIgaW1wbGVtZW50YXRpb25zPyYjMzQ7IEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBhbnkgaGFuZGxlciBjdXJyZW50bHkgKnVzZXMqIHRoaXMgbmV3IGBzZXNzaW9uYCBwYXJhbWV0ZXIuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHF1ZXN0aW9uLiBOb3cgSSBuZWVkIHRvIGdvIGxvb2sgdGhyb3VnaCB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWFsLXdvcmxkIHVzZXMgb2YgdGhhdCBzZXNzaW9uIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyZ3MtXHUwMDNlc2Vzc2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZnMvbmZzNHhkci5jPTE4MjM9c3RhdGljIHZvaWQgZW5jb2RlX2JpbmRfY29ubl90b19zZXNzaW9uKHN0cnVjdCB4ZHJfc3RyZWFtICp4ZHIsXG4tLVxuZnMvbmZzL25mczR4ZHIuYy0xODMwLVx0XHRkZWNvZGVfYmluZF9jb25uX3RvX3Nlc3Npb25fbWF4c3osIGhkcik7XG5mcy9uZnMvbmZzNHhkci5jOjE4MzE6XHRlbmNvZGVfb3BhcXVlX2ZpeGVkKHhkciwgYXJncy1cdTAwM2VzZXNzaW9uaWQuZGF0YSwgTkZTNF9NQVhfU0VTU0lPTklEX0xFTik7XG5mcy9uZnMvbmZzNHhkci5jLTE4MzItXHRwID0geGRyX3Jlc2VydmVfc3BhY2UoeGRyLCA4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyOQoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnVzZWQgU2Vzc2lvbiBEYXRhIGluIExpdmV1cGRhdGUgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgYGFyZ3MtJmd0O3Nlc3Npb25gIGlzbiYjMzk7dCBhY3R1YWxseSBiZWluZyBsZXZlcmFnZWQgaW4gYW55IG9mIHRoZSBmaWxlIGhhbmRsZXIgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgaGVhZC1zY3JhdGNoZXIuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgdGhlc2UgbmV3IGZ1bmN0aW9uczogYGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdgIGFuZCBgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdgLiBUaGV5JiMzOTtyZSAqZXhwb3J0ZWQqLCB3aGljaCB1c3VhbGx5IGltcGxpZXMgaW50ZW5kZWQgdXNlIGVsc2V3aGVyZSwgYnV0IEkgY2FuJiMzOTt0IGZpbmQgYSBzaW5nbGUga2VybmVsIG1vZHVsZSBvciBhbnl0aGluZyB0aGF0JiMzOTtzIGFjdHVhbGx5IGNhbGxpbmcgdGhlbS4gTW9yZW92ZXIsIHRoZXkmIzM5O3JlIGFkZGluZyBgc2Vzc2lvbmAgdG8gYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2AgYW5kIHBvcHVsYXRpbmcgaXQsIHdoaWNoIHJhaXNlcyBmbGFncy4gSXQmIzM5O3MgcmVhbGx5IHBvaW50aW5nIHRvIGEgZGVzaWduIGVsZW1lbnQgdGhhdCYjMzk7cyBiZWVuIGltcGxlbWVudGVkIGJ1dCBuZXZlciBmdWxseSBjb25uZWN0ZWQgdG8gdGhlIHJlbGV2YW50IGhhbmRsZXJzLgoKSG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLiBMZXQgbWUgcXVpY2tseSBkbyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBzd2VlcCBmb3IgaW5zdGFuY2VzIG9mIGVpdGhlciBgYXJncy5zZXNzaW9uYCBvciBqdXN0IGBzZXNzaW9uYCB3aXRoaW4gYW55IG9mIHRoZSBvdGhlciBoYW5kbGVyIGZ1bmN0aW9ucy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gV2UgaGF2ZSB0byBjb25zaWRlciB0aGF0IHRoZXJlIG1pZ2h0IGJlIGluZGlyZWN0IHVzZXMgb3IgY2FsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLnNlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTA5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjExMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfS1BST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYGtwcm9iZS5zZXNzaW9uJiM0MztgYCBbI2twbXVsdGldXyAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTExMS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0Mztcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9saWJicGYvcHJvZ3JhbV90eXBlcy5yc3QtMTE5LSYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7LS0tLS0tLS0tLS0mIzQzO1xuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfVVBST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uJiM0MztgYCBbI3VwbXVsXV8gICAgfCAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMS0mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOy0tLS0tLS0tLS0tJiM0MztcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxMjI6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGB1cHJvYmUuc2Vzc2lvbi5zJiM0MztgYCBbI3VwbXVsXV8gIHwgWWVzICAgICAgIHxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMjMtJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzstLS0tLS0tLS0tLSYjNDM7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz02NTE9c3RhdGljIGludCBzZXZfbGF1bmNoX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjc4LVx0c2Vzc2lvbl9ibG9iID0gTlVMTDtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njc5Olx0aWYgKHBhcmFtcy5zZXNzaW9uX3VhZGRyKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjY4MDpcdFx0c2Vzc2lvbl9ibG9iID0gcHNwX2NvcHlfdXNlcl9ibG9iKHBhcmFtcy5zZXNzaW9uX3VhZGRyLCBwYXJhbXMuc2Vzc2lvbl9sZW4pO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02ODEtXHRcdGlmIChJU19FUlIoc2Vzc2lvbl9ibG9iKSkge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg1LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2ODY6XHRcdHN0YXJ0LnNlc3Npb25fYWRkcmVzcyA9IF9fc21lX3NldChfX3BhKHNlc3Npb25fYmxvYikpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2ODc6XHRcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02ODgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNTU3PV9fc2V2X3NlbmRfc3RhcnRfcXVlcnlfc2Vzc2lvbl9sZW5ndGgoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTY2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNTY3Olx0cGFyYW1zLVx1MDAzZXNlc3Npb25fbGVuID0gZGF0YS5zZXNzaW9uX2xlbjtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU2OC1cdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3AtXHUwMDNlZGF0YSksIHBhcmFtcyxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTE1NzU9c3RhdGljIGludCBzZXZfc2VuZF9zdGFydChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1OTAtXHQvKiBpZiBzZXNzaW9uX2xlbiBpcyB6ZXJvLCB1c2Vyc3BhY2Ugd2FudHMgdG8gcXVlcnkgdGhlIHNlc3Npb24gbGVuZ3RoICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTE6XHRpZiAoIXBhcmFtcy5zZXNzaW9uX2xlbilcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Mi1cdFx0cmV0dXJuIF9fc2V2X3NlbmRfc3RhcnRfcXVlcnlfc2Vzc2lvbl9sZW5ndGgoa3ZtLCBhcmdwLFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Ni1cdGlmICghcGFyYW1zLnBkaF9jZXJ0X3VhZGRyIHx8ICFwYXJhbXMucGRoX2NlcnRfbGVuIHx8XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTc6XHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8IHBhcmFtcy5zZXNzaW9uX2xlbiBcdTAwM2UgU0VWX0ZXX0JMT0JfTUFYX1NJWkUpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1OTgtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMC1cdC8qIGFsbG9jYXRlIHRoZSBtZW1vcnkgdG8gaG9sZCB0aGUgc2Vzc2lvbiBkYXRhIGJsb2IgKi9cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTYwMTpcdHNlc3Npb25fZGF0YSA9IGt6YWxsb2MocGFyYW1zLnNlc3Npb25fbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjAyLVx0aWYgKCFzZXNzaW9uX2RhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjM0LVx0ZGF0YS5hbWRfY2VydHNfbGVuID0gcGFyYW1zLmFtZF9jZXJ0c19sZW47XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzU6XHRkYXRhLnNlc3Npb25fYWRkcmVzcyA9IF9fcHNwX3BhKHNlc3Npb25fZGF0YSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzY6XHRkYXRhLnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjM3LVx0ZGF0YS5oYW5kbGUgPSB0b19rdm1fc2V2X2luZm8oa3ZtKS1cdTAwM2VoYW5kbGU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQwLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQxOlx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocGFyYW1zLnNlc3Npb25fdWFkZHIpLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQyOlx0XHRcdHNlc3Npb25fZGF0YSwgcGFyYW1zLnNlc3Npb25fbGVuKSkge1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQzLVx0XHRyZXQgPSAtRUZBVUxUO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTY0Ny1cdHBhcmFtcy5wb2xpY3kgPSBkYXRhLnBvbGljeTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTY0ODpcdHBhcmFtcy5zZXNzaW9uX2xlbiA9IGRhdGEuc2Vzc2lvbl9sZW47XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDktXHRpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihhcmdwLVx1MDAzZWRhdGEpLCBcdTAwMjZwYXJhbXMsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNzg5PXN0YXRpYyBpbnQgc2V2X3JlY2VpdmVfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODA4LVx0aWYgKCFwYXJhbXMucGRoX3VhZGRyIHx8ICFwYXJhbXMucGRoX2xlbiB8fFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODA5Olx0ICAgICFwYXJhbXMuc2Vzc2lvbl91YWRkciB8fCAhcGFyYW1zLnNlc3Npb25fbGVuKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODEwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MTUtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE4MTY6XHRzZXNzaW9uX2RhdGEgPSBwc3BfY29weV91c2VyX2Jsb2IocGFyYW1zLnNlc3Npb25fdWFkZHIsXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE4MTc6XHRcdFx0cGFyYW1zLnNlc3Npb25fbGVuKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTgxOC1cdGlmIChJU19FUlIoc2Vzc2lvbl9kYXRhKSkge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTgyNy1cdHN0YXJ0LnBkaF9jZXJ0X2xlbiA9IHBhcmFtcy5wZGhfbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODI4Olx0c3RhcnQuc2Vzc2lvbl9hZGRyZXNzID0gX19wc3BfcGEoc2Vzc2lvbl9kYXRhKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyOTpcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODMwLVxuLS1cbmJsb2NrL3NlZC1vcGFsLmM9MjkzNz1zdGF0aWMgdm9pZCBvcGFsX2xvY2tfY2hlY2tfZm9yX3NhdmVkX2tleShzdHJ1Y3Qgb3BhbF9kZXYgKmRldixcbi0tXG5ibG9jay9zZWQtb3BhbC5jLTI5NjMtXHRcdFx0XHRpdGVyLVx1MDAzZWxyID09IGxrX3VubGstXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5sciBcdTAwMjZcdTAwMjZcbmJsb2NrL3NlZC1vcGFsLmM6Mjk2NDpcdFx0XHRcdGl0ZXItXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW4gXHUwMDNlIDApIHtcbmJsb2NrL3NlZC1vcGFsLmMtMjk2NS1cdFx0XHRsa191bmxrLVx1MDAzZXNlc3Npb24ub3BhbF9rZXkua2V5X2xlbiA9XG5ibG9jay9zZWQtb3BhbC5jOjI5NjY6XHRcdFx0XHRpdGVyLVx1MDAzZXVubGsuc2Vzc2lvbi5vcGFsX2tleS5rZXlfbGVuO1xuYmxvY2svc2VkLW9wYWwuYy0yOTY3LVx0XHRcdG1lbWNweShsa191bmxrLVx1MDAzZXNlc3Npb24ub3BhbF9rZXkua2V5LFxuYmxvY2svc2VkLW9wYWwuYzoyOTY4Olx0XHRcdFx0aXRlci1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5LFxuYmxvY2svc2VkLW9wYWwuYzoyOTY5Olx0XHRcdFx0aXRlci1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5X2xlbik7XG5ibG9jay9zZWQtb3BhbC5jLTI5NzAtXHRcdFx0YnJlYWs7XG4tLVxuYmxvY2svc2VkLW9wYWwuYz0zMjU5PWJvb2wgb3BhbF91bmxvY2tfZnJvbV9zdXNwZW5kKHN0cnVjdCBvcGFsX2RldiAqZGV2KVxuLS1cbmJsb2NrL3NlZC1vcGFsLmMtMzI4MC1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtGYWlsZWQgdG8gdW5sb2NrIExSICVoaHUgd2l0aCBzdW0gJWRcXG5cJiMzNDssXG5ibG9jay9zZWQtb3BhbC5jOjMyODE6XHRcdFx0XHQgc3VzcGVuZC1cdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkubHIsXG5ibG9jay9zZWQtb3BhbC5jOjMyODI6XHRcdFx0XHQgc3VzcGVuZC1cdTAwM2V1bmxrLnNlc3Npb24uc3VtKTtcbmJsb2NrL3NlZC1vcGFsLmMtMzI4My1cdFx0XHR3YXNfZmFpbHVyZSA9IHRydWU7XG4tLVxuYmxvY2svc2VkLW9wYWwuYy0zMjg2LVx0XHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBPUEFMX0ZMX01CUl9FTkFCTEVEKSB7XG5ibG9jay9zZWQtb3BhbC5jOjMyODc6XHRcdFx0cmV0ID0gX19vcGFsX3NldF9tYnJfZG9uZShkZXYsIFx1MDAyNnN1c3BlbmQtXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5KTtcbmJsb2NrL3NlZC1vcGFsLmMtMzI4OC1cdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYz00Nz1zdGF0aWMgaW50IHN0bTMyX2RiZ19wdGFfb3Blbl9zZXNzaW9uKHUzMiAqaWQpXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jLTYzLVxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jOjY0Olx0KmlkID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy02NS1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM9NzQ9c3RhdGljIGludCBzdG0zMl9kYmdfYnVzX2dyYW50X2FjY2VzcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqY3RybCwgdTMyIGRiZ19wcm9maWxlKVxuLS1cbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy04OC1cdGludl9hcmcuZnVuYyA9IFBUQV9DTURfR1JBTlRfREJHX0FDQ0VTUztcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYzo4OTpcdGludl9hcmcuc2Vzc2lvbiA9IHNlc3Npb25faWQ7XG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtOTAtXHRpbnZfYXJnLm51bV9wYXJhbXMgPSAxO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9NzM9c3RhdGljIHNpemVfdCBnZXRfb3B0ZWVfcm5nX2RhdGEoc3RydWN0IG9wdGVlX3JuZ19wcml2YXRlICpwdnRfZGF0YSxcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTg2LVx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9FTlRST1BZO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzo4NzpcdGludl9hcmcuc2Vzc2lvbiA9IHB2dF9kYXRhLVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTg4LVx0aW52X2FyZy5udW1fcGFyYW1zID0gNDtcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jPTE3Nj1zdGF0aWMgaW50IGdldF9vcHRlZV9ybmdfaW5mbyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODYtXHRpbnZfYXJnLmZ1bmMgPSBUQV9DTURfR0VUX1JOR19JTkZPO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoxODc6XHRpbnZfYXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uX2lkO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODgtXHRpbnZfYXJnLm51bV9wYXJhbXMgPSA0O1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9MjExPXN0YXRpYyBpbnQgb3B0ZWVfcm5nX3Byb2JlKHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZSAqcm5nX2RldmljZSlcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzNi1cdH1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjM3Olx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzOC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1My1vdXRfc2VzczpcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjU0Olx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1NS1vdXRfY3R4OlxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9MjYxPXN0YXRpYyB2b2lkIG9wdGVlX3JuZ19yZW1vdmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yNjIte1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoyNjM6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMjY0LVx0dGVlX2NsaWVudF9jbG9zZV9jb250ZXh0KHB2dF9kYXRhLmN0eCk7XG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM9NDE1NT1zdGF0aWMgaW50IGhhbmRsZV9sYW5fZ2V0X21zZ19yc3Aoc3RydWN0IGlwbWlfc21pICppbnRmLFxuLS1cbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jLTQxNzctXHRsYW5fYWRkci5hZGRyX3R5cGUgPSBJUE1JX0xBTl9BRERSX1RZUEU7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX21zZ2hhbmRsZXIuYzo0MTc4Olx0bGFuX2FkZHIuc2Vzc2lvbl9oYW5kbGUgPSBtc2ctXHUwMDNlcnNwWzRdO1xuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMtNDE3OS1cdGxhbl9hZGRyLnJlbW90ZV9TV0lEID0gbXNnLVx1MDAzZXJzcFs4XTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmM9MjM5PXN0YXRpYyB2b2lkIHRwbV9kZXZfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG0tY2hpcC5jLTI0Ny1cdGtmcmVlKGNoaXAtXHUwMDNld29ya19zcGFjZS5jb250ZXh0X2J1Zik7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmM6MjQ4Olx0a2ZyZWUoY2hpcC1cdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmKTtcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYy0yNDktI2lmZGVmIENPTkZJR19UQ0dfVFBNMl9ITUFDXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9MzA2PWludCB0cG0yX3ByZXBhcmVfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSwgdTggKmNtZCxcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjAtXHQgICAgICAgc2l6ZW9mKHNwYWNlLVx1MDAzZWNvbnRleHRfdGJsKSk7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzozMjE6XHRtZW1jcHkoXHUwMDI2Y2hpcC1cdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fdGJsLCBcdTAwMjZzcGFjZS1cdTAwM2VzZXNzaW9uX3RibCxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTMyMi1cdCAgICAgICBzaXplb2Yoc3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwpKTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjQtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6MzI1Olx0bWVtY3B5KGNoaXAtXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX2J1Ziwgc3BhY2UtXHUwMDNlc2Vzc2lvbl9idWYsXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjYtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jPTU0MD1pbnQgdHBtMl9jb21taXRfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSxcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzAtXHQgICAgICAgc2l6ZW9mKHNwYWNlLVx1MDAzZWNvbnRleHRfdGJsKSk7XG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzo1NzE6XHRtZW1jcHkoXHUwMDI2c3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwsIFx1MDAyNmNoaXAtXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX3RibCxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTU3Mi1cdCAgICAgICBzaXplb2Yoc3BhY2UtXHUwMDNlc2Vzc2lvbl90YmwpKTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzQtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6NTc1Olx0bWVtY3B5KHNwYWNlLVx1MDAzZXNlc3Npb25fYnVmLCBjaGlwLVx1MDAzZXdvcmtfc3BhY2Uuc2Vzc2lvbl9idWYsXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzYtXHQgICAgICAgc3BhY2UtXHUwMDNlYnVmX3NpemUpO1xuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmM9NDU9c3RhdGljIGludCBmdHBtX3RlZV90cG1fb3Bfc2VuZChzdHJ1Y3QgdHBtX2NoaXAgKmNoaXAsIHU4ICpidWYsIHNpemVfdCBidWZzaXosXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy02OS1cdFx0LmZ1bmMgPSBGVFBNX09QVEVFX1RBX1NVQk1JVF9DT01NQU5ELFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYzo3MDpcdFx0LnNlc3Npb24gPSBwdnRfZGF0YS1cdTAwM2VzZXNzaW9uLFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy03MS1cdFx0Lm51bV9wYXJhbXMgPSA0LFxuLS1cbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmM9MTcyPXN0YXRpYyBpbnQgZnRwbV90ZWVfcHJvYmVfZ2VuZXJpYyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMDgtXHR9XG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jOjIwOTpcdHB2dF9kYXRhLVx1MDAzZXNlc3Npb24gPSBzZXNzX2FyZy5zZXNzaW9uO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMTAtXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQwODU9c3RhdGljIGludCBnZW5lcmljX2NyYV9pbml0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxMDYtXHRhdG9taWNfaW5jKFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50KTtcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYzo0MTA3Olx0YXRvbWljX2luYyhcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxMDgtXG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQxOTY9c3RhdGljIHZvaWQgZ2VuZXJpY19jcmFfZXhpdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQxOTcte1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jOjQxOTg6XHRhdG9taWNfZGVjKFx1MDAyNmlwcm9jX3ByaXYuc2Vzc2lvbl9jb3VudCk7XG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDE5OS19XG4tLVxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQzMzc9c3RhdGljIHZvaWQgc3B1X2NvdW50ZXJzX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDM0MS1cbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYzo0MzQyOlx0YXRvbWljX3NldChcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQsIDApO1xuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jLTQzNDMtXHRhdG9taWNfc2V0KFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50LCAwKTtcbi0tXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM9MTA5PXN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19hbGdfc2tjaXBoZXJfaW5pdF9zZXNzaW9uKFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0xNzgtXHRpZiAoZW5jcnlwdClcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoxNzk6XHRcdGN0eC1cdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQgPSBsZTY0X3RvX2NwdShpbnB1dC1cdTAwM2VzZXNzaW9uX2lkKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0xODAtXHRlbHNlXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MTgxOlx0XHRjdHgtXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkID0gbGU2NF90b19jcHUoaW5wdXQtXHUwMDNlc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTgyLVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYz0xOTA9c3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9jbG9zZV9zZXNzaW9uKFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMTctXHRpZiAoZW5jcnlwdClcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMTg6XHRcdGRlc3Ryb3lfc2Vzc2lvbi1cdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVx1MDAzZWVuY19zZXNzX2luZm8uc2Vzc2lvbl9pZCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMjE5LVx0ZWxzZVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjIyMDpcdFx0ZGVzdHJveV9zZXNzaW9uLVx1MDAzZXNlc3Npb25faWQgPSBjcHVfdG9fbGU2NChjdHgtXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMjEtXG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jPTMyMT1fX3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfZG9fcmVxKHN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9yZXF1ZXN0ICp2Y19zeW1fcmVxLFxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0zNjktXHRpZiAodmNfc3ltX3JlcS1cdTAwM2VlbmNyeXB0KSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MzcwOlx0XHRyZXFfZGF0YS1cdTAwM2VoZWFkZXIuc2Vzc2lvbl9pZCA9XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6MzcxOlx0XHRcdGNwdV90b19sZTY0KGN0eC1cdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3Mi1cdFx0cmVxX2RhdGEtXHUwMDNlaGVhZGVyLm9wY29kZSA9XG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3NC1cdH0gZWxzZSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc1Olx0XHRyZXFfZGF0YS1cdTAwM2VoZWFkZXIuc2Vzc2lvbl9pZCA9XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc2Olx0XHRcdGNwdV90b19sZTY0KGN0eC1cdTAwM2VkZWNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3Ny1cdFx0cmVxX2RhdGEtXHUwMDNlaGVhZGVyLm9wY29kZSA9XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MTYwPXN0YXRpYyBpbnQgb3Blbl9zZXNzaW9uKHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICphZ2VudCwgdTMyICp0ZWVfc2Vzc2lvbilcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xNzUtXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxNzY6XHQqdGVlX3Nlc3Npb24gPSBhcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTE3Ny1cbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYz0xODY9c3RhdGljIGludCBnZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICphZ2VudClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xOTgtXHRhcmcuZnVuYyA9IFBUQV9TQ01JX0NNRF9DQVBBQklMSVRJRVM7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxOTk6XHRhcmcuc2Vzc2lvbiA9IHRlZV9zZXNzaW9uO1xuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMjAwLVx0YXJnLm51bV9wYXJhbXMgPSAxO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTIyNT1zdGF0aWMgaW50IGdldF9jaGFubmVsKHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMjM4LVx0YXJnLmZ1bmMgPSBQVEFfU0NNSV9DTURfR0VUX0NIQU5ORUw7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyMzk6XHRhcmcuc2Vzc2lvbiA9IGNoYW5uZWwtXHUwMDNldGVlX3Nlc3Npb247XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNDAtXHRhcmcubnVtX3BhcmFtcyA9IDE7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjYwPXN0YXRpYyBpbnQgaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNjMtXHRcdC5mdW5jID0gUFRBX1NDTUlfQ01EX1BST0NFU1NfU01UX0NIQU5ORUwsXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyNjQ6XHRcdC5zZXNzaW9uID0gY2hhbm5lbC1cdTAwM2V0ZWVfc2Vzc2lvbixcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2NS1cdFx0Lm51bV9wYXJhbXMgPSAxLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTI4Mz1zdGF0aWMgaW50IGludm9rZV9wcm9jZXNzX21zZ19jaGFubmVsKHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwsIHNpemVfdCBtc2dfc2l6ZSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODYtXHRcdC5mdW5jID0gUFRBX1NDTUlfQ01EX1BST0NFU1NfTVNHX0NIQU5ORUwsXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyODc6XHRcdC5zZXNzaW9uID0gY2hhbm5lbC1cdTAwM2V0ZWVfc2Vzc2lvbixcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI4OC1cdFx0Lm51bV9wYXJhbXMgPSAzLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz02Nj1zdGF0aWMgdm9pZCBwcmVwYXJlX2FyZ3MoaW50IGNtZCxcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtNzMtXHRhcmctXHUwMDNlZnVuYyA9IGNtZDtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzo3NDpcdGFyZy1cdTAwM2VzZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy03NS1cdGFyZy1cdTAwM2VudW1fcGFyYW1zID0gTUFYX1RFRV9QQVJBTV9BUlJZX01FTUI7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jPTE4ND1zdGF0aWMgaW50IHRlZV9ibnh0X2Z3X3Byb2JlKHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZSAqYm54dF9kZXZpY2UpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIxMC1cdH1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMTE6XHRwdnRfZGF0YS5zZXNzaW9uX2lkID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMTItXG4tLVxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIyNi1vdXRfc2VzczpcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMjc6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMjgtb3V0X2N0eDpcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MjM0PXN0YXRpYyB2b2lkIHRlZV9ibnh0X2Z3X3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKmJueHRfZGV2aWNlKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMzYtXHR0ZWVfc2htX2ZyZWUocHZ0X2RhdGEuZndfc2htX3Bvb2wpO1xuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jOjIzNzpcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzOC1cdHRlZV9jbGllbnRfY2xvc2VfY29udGV4dChwdnRfZGF0YS5jdHgpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz0yNDI9c3RhdGljIHZvaWQgdGVlX2JueHRfZndfc2h1dGRvd24oc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtMjQ0LVx0dGVlX3NobV9mcmVlKHB2dF9kYXRhLmZ3X3NobV9wb29sKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyNDU6XHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDYtXHR0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQocHZ0X2RhdGEuY3R4KTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jPTUxPXN0YXRpYyBlZmlfc3RhdHVzX3QgdGVlX21tX2NvbW11bmljYXRlKHZvaWQgKmNvbW1fYnVmLCBzaXplX3QgZHNpemUpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy03Ni1cdGFyZy5mdW5jID0gUFRBX1NUTU1fQ01EX0NPTU1VTklDQVRFO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo3NzpcdGFyZy5zZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNzgtXHRhcmcubnVtX3BhcmFtcyA9IDQ7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MTE9c3RhdGljIHZvaWQgdGVlX3N0bW1fZWZpX2Nsb3NlX3Nlc3Npb24odm9pZCAqZGF0YSlcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTEyLXtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6NTEzOlx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbik7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTUxNC19XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MzE9c3RhdGljIGludCB0ZWVfc3RtbV9lZmlfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU0LVx0fVxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo1NTU6XHRwdnRfZGF0YS5zZXNzaW9uID0gc2Vzc19hcmcuc2Vzc2lvbjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU2LVx0cHZ0X2RhdGEuZGV2ID0gZGV2O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNjM1PXN0YXRpYyB2b2lkIHBzcF9wcmVwX3RhX3VubG9hZF9jbWRfYnVmKHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE2MzgtXHRjbWQtXHUwMDNlY21kX2lkID0gR0ZYX0NNRF9JRF9VTkxPQURfVEE7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTYzOTpcdGNtZC1cdTAwM2VjbWQuY21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNjQwLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM9MTczNT1zdGF0aWMgdm9pZCBwc3BfcHJlcF90YV9pbnZva2VfY21kX2J1ZihzdHJ1Y3QgcHNwX2dmeF9jbWRfcmVzcCAqY21kLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNzM5LVx0Y21kLVx1MDAzZWNtZF9pZFx0XHRcdFx0PSBHRlhfQ01EX0lEX0lOVk9LRV9DTUQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTc0MDpcdGNtZC1cdTAwM2VjbWQuY21kX2ludm9rZV9jbWQuc2Vzc2lvbl9pZFx0PSBzZXNzaW9uX2lkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE3NDEtXHRjbWQtXHUwMDNlY21kLmNtZF9pbnZva2VfY21kLnRhX2NtZF9pZFx0PSB0YV9jbWRfaWQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jPTE3NjM9aW50IHBzcF90YV9sb2FkKHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLCBzdHJ1Y3QgdGFfY29udGV4dCAqY29udGV4dClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc4OS1cdGlmICghcmV0KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jOjE3OTA6XHRcdGNvbnRleHQtXHUwMDNlc2Vzc2lvbl9pZCA9IGNtZC1cdTAwM2VyZXNwLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc5MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MjUyPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2NyZWF0ZV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMjc3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjI3ODpcdGhkY3AtXHUwMDNlYXV0aC5pZCA9IGhkY3BfY21kLVx1MDAzZW91dF9tc2cuaGRjcDFfY3JlYXRlX3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGU7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMjc5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz0yOTQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDFfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzA1LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMwNjpcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMV9kZXN0cm95X3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzA3LVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9ERVNUUk9ZX1NFU1NJT047XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTMyOD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV92YWxpZGF0ZV9yeChzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTMzNy1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzozMzg6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZmlyc3RfcGFydF9hdXRoZW50aWNhdGlvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXHUwMDNlYXV0aC5pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTM2OT1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTM4Mi1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzozODM6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzg0LVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9FTkFCTEVfRU5DUllQVElPTjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9Mzk5PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX3ZhbGlkYXRlX2tzdmxpc3RfdnAoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00MDgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDA5Olx0aGRjcF9jbWQtXHUwMDNlaW5fbXNnLmhkY3AxX3NlY29uZF9wYXJ0X2F1dGhlbnRpY2F0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cdTAwM2VhdXRoLmlkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQxMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDQwPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ1Ny1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo0NTg6XHRcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMV9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDU5LVx0XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cdTAwM2VkaXNwbGF5c1tpXS5pbmRleDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDc3PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2xpbmtfbWFpbnRlbmFuY2Uoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00ODctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDg4Olx0aGRjcF9jbWQtXHUwMDNlaW5fbXNnLmhkY3AxX2dldF9lbmNyeXB0aW9uX3N0YXR1cy5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXHUwMDNlYXV0aC5pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00ODktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTUwMz1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTU0My1cdGVsc2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo1NDQ6XHRcdGhkY3AtXHUwMDNlYXV0aC5pZCA9IGhkY3BfY21kLVx1MDAzZW91dF9tc2cuaGRjcDJfY3JlYXRlX3Nlc3Npb25fdjIuc2Vzc2lvbl9oYW5kbGU7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQ1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz01NTA9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjU2MTpcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMl9kZXN0cm95X3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYyLVx0aGRjcF9jbWQtXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMl9ERVNUUk9ZX1NFU1NJT047XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTgzND1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTg0OC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo4NDk6XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDJfc2V0X2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtODUwLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz05MTg9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTM5LVx0XHRoZGNwX2NtZC1cdTAwM2Vpbl9tc2cuaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cdTAwM2VkaXNwbGF5c1tpXS5pbmRleDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYzo5NDA6XHRcdGhkY3BfY21kLVx1MDAzZWluX21zZy5oZGNwMl9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVx1MDAzZWF1dGguaWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTQxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTUyPXN0YXRpYyBpbnQgcmFzX3BzcF9zeW5jX3N5c3RlbV9yYXNfcHNwX3N0YXR1cyhzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNjctXHRcdFx0dGFfY3R4LVx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHN0YXR1cy5pbml0aWFsaXplZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jOjY4Olx0XHRcdHRhX2N0eC1cdTAwM2VzZXNzaW9uX2lkID0gc3RhdHVzLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02OS1cdFx0fVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTI0Mj1zdGF0aWMgaW50IHNlbmRfcHNwX2NtZChzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtMzA4LVx0cmVzcC1cdTAwM2VzdGF0dXMgPSBnZnhfY21kLVx1MDAzZXJlc3Auc3RhdHVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6MzA5Olx0cmVzcC1cdTAwM2VzZXNzaW9uX2lkID0gZ2Z4X2NtZC1cdTAwM2VyZXNwLnNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy0zMTAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9MzU0PXN0YXRpYyBpbnQgc2VuZF9yYXNfdGFfcnVudGltZV9jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5MC1cdGludm9rZV9jbWQudGFfY21kX2lkID0gY21kX2lkO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6MzkxOlx0aW52b2tlX2NtZC5zZXNzaW9uX2lkID0gdGFfY3R4LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy0zOTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9NDY1PXN0YXRpYyBpbnQgc2VuZF9sb2FkX3RhX2Z3X2NtZChzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTMwLVx0XHR0YV9jdHgtXHUwMDNldGFfdmVyc2lvbiA9IGZ3X2hkci1cdTAwM2VpbWFnZV92ZXJzaW9uO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6NTMxOlx0XHR0YV9jdHgtXHUwMDNlc2Vzc2lvbl9pZCA9IHJlc3Auc2Vzc2lvbl9pZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTUzMi1cdFx0dGFfY3R4LVx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHRydWU7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM9NTY3PXN0YXRpYyBpbnQgdW5sb2FkX3Jhc190YV9maXJtd2FyZShzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTc3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmM6NTc4Olx0Y21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gdGFfY3R4LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy01NzktXHRyZXQgPSBzZW5kX3BzcF9jbWQocmFzX2NvcmUsIEdGWF9DTURfSURfVU5MT0FEX1RBLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmM9MzMwPWludCBpbnRlbF9weHBfdGVlX2NtZF9jcmVhdGVfYXJiX3Nlc3Npb24oc3RydWN0IGludGVsX3B4cCAqcHhwLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmMtMzQxLVx0bXNnX2luLnByb3RlY3Rpb25fbW9kZSA9IFBYUDQyX0FSQl9TRVNTSU9OX01PREVfSEVBVlk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jOjM0MjpcdG1zZ19pbi5zZXNzaW9uX2lkID0gYXJiX3Nlc3Npb25faWQ7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jLTM0My1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jPTk3Mz1zdGF0aWMgc3RydWN0IGlzY3NpX3RyYW5zcG9ydCBpc2NzaV9pc2VyX3RyYW5zcG9ydCA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jLTEwMDMtXHQvKiByZWNvdmVyeSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYzoxMDA0Olx0LnNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQgPSBpc2NzaV9zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0LFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYy0xMDA1LVxuLS1cbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jPTIzNDk9c3RhdGljIGludCBfX211c3RfY2hlY2sgaW5pdGlhbGl6ZV96b25lKHN0cnVjdCB2ZG8gKnZkbywgc3RydWN0IGhhc2hfem9uZXMgKnpvbmVzLFxuLS1cbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jLTIzODYtXHRcdGNvbnRleHQtXHUwMDNlcmVxdWVzdC5jYWxsYmFjayA9IGZpbmlzaF9pbmRleF9vcGVyYXRpb247XG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYzoyMzg3Olx0XHRjb250ZXh0LVx1MDAzZXJlcXVlc3Quc2Vzc2lvbiA9IHpvbmVzLVx1MDAzZWluZGV4X3Nlc3Npb247XG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYy0yMzg4LVx0XHRsaXN0X2FkZChcdTAwMjZjb250ZXh0LVx1MDAzZWxpc3RfZW50cnksIFx1MDAyNnpvbmUtXHUwMDNlYXZhaWxhYmxlKTtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz05Mj1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9vcGVuKHN0cnVjdCBpcmlzX2luc3QgKmluc3QpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE0LVx0cGFja2V0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TWVNfU0VTU0lPTl9JTklUO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE1Olx0cGFja2V0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNi1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNy1cdGlmIChpbnN0LVx1MDAzZWRvbWFpbiA9PSBERUNPREVSKVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE4Olx0XHRwYWNrZXQuc2Vzc2lvbl9kb21haW4gPSBIRklfU0VTU0lPTl9UWVBFX0RFQztcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExOS1cdGVsc2VcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjEyMDpcdFx0cGFja2V0LnNlc3Npb25fZG9tYWluID0gSEZJX1NFU1NJT05fVFlQRV9FTkM7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xMjEtXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMjI6XHRwYWNrZXQuc2Vzc2lvbl9jb2RlYyA9IGNvZGVjO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTIzLVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTEzMz1zdGF0aWMgdm9pZCBpcmlzX2hmaV9nZW4xX3BhY2tldF9zZXNzaW9uX2NtZChzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LFxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEzOC1cdHBhY2tldC1cdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IHB0eXBlO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTM5Olx0cGFja2V0LVx1MDAzZXNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTE0MC19XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MTg4PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9zZXNzaW9uX3N0b3Aoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgdTMyIHBsYW5lKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTIwNi1cdFx0XHRmbHVzaF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRkxVU0g7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoyMDc6XHRcdFx0Zmx1c2hfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTIwOC1cdFx0XHRmbHVzaF9wa3QuZmx1c2hfdHlwZSA9IGZsdXNoX3R5cGU7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9Mjc0PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9pbnB1dF9idWZmZXIoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgc3RydWN0IGlyaXNfYnVmZmVyICpidWYpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgxLVx0XHRjb21faXBfcGt0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX0VNUFRZX0JVRkZFUjtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjI4MjpcdFx0Y29tX2lwX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0yODMtXHRcdGNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVx1MDAzZXRpbWVzdGFtcCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjk4LVx0XHR1bmNvbV9pcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6Mjk5Olx0XHR1bmNvbV9pcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzAwLVx0XHR1bmNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVx1MDAzZXRpbWVzdGFtcCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MzE2PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9vdXRwdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTMyMS1cdG9wX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GSUxMX0JVRkZFUjtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjMyMjpcdG9wX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zMjMtXHRvcF9wa3Qub3V0cHV0X3RhZyA9IGJ1Zi1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0zMzk9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3F1ZXVlX2ludGVybmFsX2J1ZmZlcihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCBzdHJ1Y3QgaXJpc19idWZmZXIgKmJ1Zilcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zNTEtXHRpbnRfcGt0LVx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9CVUZGRVJTO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MzUyOlx0aW50X3BrdC1cdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0zNTMtXHRpbnRfcGt0LVx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVx1MDAzZWJ1ZmZlcl9zaXplO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTM5ND1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxMi1cdHBrdC1cdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9SRUxFQVNFX0JVRkZFUlM7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0MTM6XHRwa3QtXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDE0LVx0cGt0LVx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVx1MDAzZWJ1ZmZlcl9zaXplO1xuLS1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTQ1Mz1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9kcmFpbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCB1MzIgcGxhbmUpXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDU5LVx0XHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDYwOlx0XHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDYxLVx0XHRpcF9wa3QuZmxhZ3MgPSBIRklfQlVGRkVSRkxBR19FT1M7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDcxLVx0XHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDcyOlx0XHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cdTAwM2VzZXNzaW9uX2lkO1xuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDczLVx0XHRpcF9wa3QuZmxhZ3MgPSBIRklfQlVGRkVSRkxBR19FT1M7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9NDgzPWlyaXNfaGZpX2dlbjFfcGFja2V0X3Nlc3Npb25fc2V0X3Byb3BlcnR5KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfcHJvcGVydHlfcGt0ICpwYWNrZXQsXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDg5LVx0cGFja2V0LVx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9QUk9QRVJUWTtcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjQ5MDpcdHBhY2tldC1cdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVx1MDAzZXNlc3Npb25faWQ7XG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00OTEtXHRwYWNrZXQtXHUwMDNlbnVtX3Byb3BlcnRpZXMgPSAxO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU0MQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlJlZmluaW5nIHRoZSBTZWFyY2ggU3RyYXRlZ3kqKgoKSG1tLCBJIHNlZSBJIHdhcyBpbml0aWFsbHkgdG9vIGJyb2FkIHdpdGggbXkgc2VhcmNoIGZvciBgXC5zZXNzaW9uYC4gVGhhdCBwYXR0ZXJuLCBvZiBjb3Vyc2UsIHdvdWxkIG1hdGNoIG5vdCBqdXN0IHRoZSBzcGVjaWZpYyB2YXJpYWJsZSBvciBrZXkgSSYjMzk7bSBpbnRlcmVzdGVkIGluLCBidXQgKmFueSogaW5zdGFuY2Ugb2YgYC5zZXNzaW9uYCwgbGlrZSBpbiBzb21ldGhpbmcgd2l0aCBhIGdlbmVyYWwgc3RydWN0dXJlLiBTbyB0aGF0IGluaXRpYWwgc2VhcmNoIG1pZ2h0IGhhdmUgeWllbGRlZCBpcnJlbGV2YW50IHJlc3VsdHMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIExldCYjMzk7cyB0cnkgbmFycm93aW5nIGl0IGRvd24uIE15IG9iamVjdGl2ZSBpcyB0byBmaW5kIGluc3RhbmNlcyB0aGF0IGV4cGxpY2l0bHkgcmVsYXRlIHRvIGBhcmdzLnNlc3Npb25gLCBvciBwZXJoYXBzIGFuIGVxdWl2YWxlbnQgc3RydWN0dXJlIGFjY2Vzc2VkIHdpdGggYC0mZ3Q7YC4gVGhlcmVmb3JlLCBJJiMzOTtsbCByZXZpc2UgbXkgc2VhcmNoIHRvIHNwZWNpZmljYWxseSBsb29rIGZvciBgYXJnc1wuc2Vzc2lvbmAgb3IgYGFyZ3MtJmd0O3Nlc3Npb25gLiBUaGF0IHNob3VsZCBwcm92aWRlIG1vcmUgZm9jdXNlZCBhbmQgcmVsZXZhbnQgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXJnc1xcLnNlc3Npb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmZzL25mczRwcm9jLmM9ODQ1ND1pbnQgbmZzNF9wcm9jX2JpbmRfb25lX2Nvbm5fdG9fc2Vzc2lvbihzdHJ1Y3QgcnBjX2NsbnQgKmNsbnQsXG4tLVxuZnMvbmZzL25mczRwcm9jLmMtODQ4MS1cbmZzL25mcy9uZnM0cHJvYy5jOjg0ODI6XHRuZnM0X2NvcHlfc2Vzc2lvbmlkKFx1MDAyNmFyZ3Muc2Vzc2lvbmlkLCBcdTAwMjZjbHAtXHUwMDNlY2xfc2Vzc2lvbi1cdTAwM2VzZXNzX2lkKTtcbmZzL25mcy9uZnM0cHJvYy5jLTg0ODMtXHRpZiAoIShjbHAtXHUwMDNlY2xfc2Vzc2lvbi1cdTAwM2VmbGFncyBcdTAwMjYgU0VTU0lPTjRfQkFDS19DSEFOKSlcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTIzMD1pbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg2LVx0YXJncy5oYW5kbGVyID0gZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjI4NzpcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0yODgtXHRhcmdzLmZpbGUgPSBmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9MzM0PXZvaWQgbHVvX2ZpbGVfdW5wcmVzZXJ2ZV9maWxlcyhzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldClcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0NC1cdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjM0NTpcdFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0Ni1cdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzgtXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzk6XHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zODAtXHRcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zOTI9c3RhdGljIHZvaWQgbHVvX2ZpbGVfdW5mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDAwLVx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDAxOlx0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDAyLVx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9NTU2PWludCBsdW9fcmV0cmlldmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTkzLVx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU5NDpcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy01OTUtXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI3LVx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI4Olx0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI5LVx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9NjM4PXN0YXRpYyB2b2lkIGx1b19maWxlX2ZpbmlzaF9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy02NDUtXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjQ2Olx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Ny1cdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgJiMzNDtMaXZldXBkYXRlJiMzNDsgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgLiBSaWdodCBub3csIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IG5vbmUgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMgYXJlIGFjdHVhbGx5ICp1c2luZyogZWl0aGVyIGBhcmdzLSZndDtzZXNzaW9uYCBvciBgYXJncy5zZXNzaW9uYC4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIHRoaXMgZmllbGQsIHRoZSBwb3B1bGF0aW9uIHdpdGhpbiBgbHVvX2ZpbGUuY2AsIGFuZCB0aGUgYWRkaXRpb24gb2YgYGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdgIGFuZCBgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdgLCB3aGljaCBhcmUgZXhwb3J0ZWQsIGJ1dCBzZWVtIHVudXNlZC4gU28sIHRoZSBwYXRjaCwgYXQgdGhpcyBwb2ludCwgYXBwZWFycyB0byBiZSBkZWFkIGNvZGUsIG9yIG1heWJlIGFuIEFQSSBob29rIGZvciBzb21lIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbi4gSXQgZG9lc24mIzM5O3QgbW9kaWZ5IGFueSBjdXJyZW50IGJlaGF2aW9yIG9yIGV4ZWN1dGlvbiBmbG93IGluIGFueSB3YXkuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGtlcm5lbCBjb2RlIGZvciBhbnkgZXhpc3RpbmcgZmlsZSBoYW5kbGVycyBhbmQgdGhlaXIgYWNjZXNzIG9mIGEgYHNlc3Npb25gIHZhcmlhYmxlIHdpdGhvdXQgdGhlIGBhcmdzLmAgb3IgYGFyZ3MtJmd0O2Agc2NvcGUgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBzb21lIG90aGVyIGNoYW5nZS4gSSB3YW50IHRvIHJ1bGUgb3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBtaXNzaW5nIGFuIGluZGlyZWN0IHVzYWdlIG9mIHRoZSBuZXcgbWVtYmVyLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhhdCBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBpbiB0aG9zZSBmaWxlIGhhbmRsZXIgZGVmaW5pdGlvbnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTIzPXN0cnVjdCBmaWxlO1xuLS1cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1LS8qKlxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjY6ICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0yNy0gKiBAaGFuZGxlcjogICAgICAgICAgVGhlIGZpbGUgaGFuZGxlciBiZWluZyBjYWxsZWQuXG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDYtICovXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo0NzpzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3Mge1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDgtXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmhhbmRsZXI7XG4tLVxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNzMtICogQWxsIG9wZXJhdGlvbnMgKGV4Y2VwdCBjYW5fcHJlc2VydmUpIHJlY2VpdmUgYSBwb2ludGVyIHRvIGFcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc0OiAqICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGNvbnRleHQuXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03NS0gKi9cbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTc2PXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03OC1cdFx0XHQgICAgIHN0cnVjdCBmaWxlICpmaWxlKTtcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc5Olx0aW50ICgqcHJlc2VydmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MDpcdHZvaWQgKCp1bnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODE6XHRpbnQgKCpmcmVlemUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MjpcdHZvaWQgKCp1bmZyZWV6ZSkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgzOlx0aW50ICgqcmV0cmlldmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4NDpcdGJvb2wgKCpjYW5fZmluaXNoKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODU6XHR2b2lkICgqZmluaXNoKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtODYtXHR1bnNpZ25lZCBsb25nICgqZ2V0X2lkKShzdHJ1Y3QgZmlsZSAqZmlsZSk7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0yMzA9aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MjMyOlx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMy1cdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqZmg7XG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zMzQ9dm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzM4LVx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmZpbGVfc2V0LVx1MDAzZWZpbGVzX2xpc3QpKSB7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMzOTpcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0MC1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzUtXHRpZiAobHVvX2ZpbGUtXHUwMDNlZmgtXHUwMDNlb3BzLVx1MDAzZWZyZWV6ZSkge1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzY6XHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzctXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zOTI9c3RhdGljIHZvaWQgbHVvX2ZpbGVfdW5mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzk3LVx0aWYgKGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2V1bmZyZWV6ZSkge1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozOTg6XHRcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zOTktXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz01NTY9aW50IGx1b19yZXRyaWV2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sXG4tLVxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy01NTgte1xua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo1NTk6XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTYwLVx0c3RydWN0IGx1b19maWxlICpsdW9fZmlsZTtcbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI0LVx0aWYgKGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2VjYW5fZmluaXNoKSB7XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjYyNTpcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTYyNi1cbi0tXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYzOD1zdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuLS1cbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQwLXtcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjQxOlx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Mi1cbi0tXG5tbS9tZW1mZF9sdW8uYz0yMzE9c3RhdGljIHZvaWQgbWVtZmRfbHVvX3VucHJlc2VydmVfZm9saW9zKHN0cnVjdCBraG9fdm1hbGxvYyAqa2hvX3ZtYWxsb2MsXG4tLVxubW0vbWVtZmRfbHVvLmMtMjU3LVxubW0vbWVtZmRfbHVvLmM6MjU4OnN0YXRpYyBpbnQgbWVtZmRfbHVvX3ByZXNlcnZlKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncylcbm1tL21lbWZkX2x1by5jLTI1OS17XG4tLVxubW0vbWVtZmRfbHVvLmMtMzIzLVxubW0vbWVtZmRfbHVvLmM6MzI0OnN0YXRpYyBpbnQgbWVtZmRfbHVvX2ZyZWV6ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy0zMjUte1xuLS1cbm1tL21lbWZkX2x1by5jLTM0MS1cbm1tL21lbWZkX2x1by5jOjM0MjpzdGF0aWMgdm9pZCBtZW1mZF9sdW9fdW5wcmVzZXJ2ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy0zNDMte1xuLS1cbm1tL21lbWZkX2x1by5jPTM2Mj1zdGF0aWMgdm9pZCBtZW1mZF9sdW9fZGlzY2FyZF9mb2xpb3MoY29uc3Qgc3RydWN0IG1lbWZkX2x1b19mb2xpb19zZXIgKmZvbGlvc19zZXIsXG4tLVxubW0vbWVtZmRfbHVvLmMtMzg2LVxubW0vbWVtZmRfbHVvLmM6Mzg3OnN0YXRpYyB2b2lkIG1lbWZkX2x1b19maW5pc2goc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxubW0vbWVtZmRfbHVvLmMtMzg4LXtcbi0tXG5tbS9tZW1mZF9sdW8uYz00MTc9c3RhdGljIGludCBtZW1mZF9sdW9fcmV0cmlldmVfZm9saW9zKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbm1tL21lbWZkX2x1by5jLTUxNy1cbm1tL21lbWZkX2x1by5jOjUxODpzdGF0aWMgaW50IG1lbWZkX2x1b19yZXRyaWV2ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXG5tbS9tZW1mZF9sdW8uYy01MTkte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIwNAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqRGVlcCBEaXZlIGludG8gYG1tL21lbWZkX2x1by5jYCBhbmQgaXRzIENvbm5lY3Rpb24gdG8gU2Vzc2lvbiBBcmd1bWVudHMqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHByZXR0eSBmb2N1c2VkLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgc29sZSBmaWxlIGhhbmRsZXIsIGBtbS9tZW1mZF9sdW8uY2AuIFRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludCwga2VlcHMgdGhlIHNjb3BlIG1hbmFnZWFibGUuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkOiBkb2VzIHRoaXMgaGFuZGxlciwgdGhlIG9uZSBhbmQgb25seSBmb3IgdGhpcyB0YXNrLCBhY3R1YWxseSBsZXZlcmFnZSBgYXJncy0mZ3Q7c2Vzc2lvbmA/IFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiwgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGUuIEl0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nlc3Npb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9tZW1mZF9sdW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDMxCgkJCQkJCQlvdXRwdXQ6IDE0MwoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnVzZWQgQVBJIGluIGEgTGl2ZXVwZGF0ZSBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQmIzM5O3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gSXQgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgYHNlc3Npb25gIGZpZWxkIHRvIHRoZSBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEFsb25nc2lkZSB0aGF0LCB3ZSYjMzk7dmUgZ290IHR3byBuZXcgZnVuY3Rpb25zLCBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIEJvdGggb2YgdGhlc2UgYXJlIGV4cG9ydGVkLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSB0ZWNobmljYWxseSBhdmFpbGFibGUgZm9yIG90aGVyIGtlcm5lbCBtb2R1bGVzIHRvIGNhbGwuIEhvd2V2ZXIsIGFuZCBoZXJlJiMzOTtzIHRoZSBraWNrZXIsICp0aGV5IGFyZW4mIzM5O3QgYWN0dWFsbHkgdXNlZCBhbnl3aGVyZSB3aXRoaW4gdGhlIGtlcm5lbCBjb2RlKi4gTm93aGVyZSEKClRoZSBgc2Vzc2lvbmAgZmllbGQgaXRzZWxmLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpcyBhbHNvIHBvcHVsYXRlZCBidXQgY29tcGxldGVseSBpZ25vcmVkIGJ5IGFueSBvZiB0aGUgZXhpc3RpbmcgZmlsZSBoYW5kbGVycy4gSXQmIzM5O3MganVzdC4uLnRoZXJlLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUgd2VudCB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgYWRkaW5nIGFsbCB0aGlzIG5ldyBBUEkgYW5kIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgYnV0IGNvbXBsZXRlbHkgbmVnbGVjdGVkIHRvICp1c2UqIGFueSBvZiBpdC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIHN1YmplY3QgdG8gZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IGNyZWF0aW5nIHVudXNlZCBBUEkgYW5kIGZpZWxkcy4gU28sIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBmbGFnIHRoaXMgb25lIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCBkb2VzbiYjMzk7dCBwcmVzZW50IGFueSBpbW1lZGlhdGUgYXR0YWNrIHN1cmZhY2Ugb3IgY2hhbmdlIHRvIHRoZSBleGlzdGluZyBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIHRvICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICYjMzk7bGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyYjMzk7IGFuZCAmIzM5O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzOTsuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIHRvICYjMzk7c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJiMzOTsgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICYjMzk7bGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyYjMzk7IGFuZCAmIzM5O2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJiMzOTsuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICYjMzk7c2Vzc2lvbiYjMzk7IGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MTguNDYyMDIzNTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1MjM4MDY0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ3Nlc3Npb24nIGZpZWxkIHRvICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAnbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZycgYW5kICdsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZycuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICdzZXNzaW9uJyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MTguNDYyMDMyMDQ4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg3MzI5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1Zjc2ZmEzN2UwYWFiOTUyMWQ4ZWYxMzZkMmMwN2I5ZWNkOGE4ZDgxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDAyOjUxOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcXG5pbmRleCA2M2VhNTQxN2RlODQ5YS4uNjA1MWFiYzA2MTJjZWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBmaWxlO1xcbiAvKipcXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXFxuICAqIEBoYW5kbGVyOiAgICAgICAgICBUaGUgZmlsZSBoYW5kbGVyIGJlaW5nIGNhbGxlZC5cXG4rICogQHNlc3Npb246ICAgICAgICAgIFRoZSBzZXNzaW9uIHRoaXMgZmlsZSBiZWxvbmdzIHRvLlxcbiAgKiBAcmV0cmlldmVfc3RhdHVzOiAgVGhlIHJldHJpZXZlIHN0YXR1cyBmb3IgdGhlICdjYW5fZmluaXNoIC8gZmluaXNoJ1xcbiAgKiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLiBBIHZhbHVlIG9mIDAgbWVhbnMgdGhlIHJldHJpZXZlIGhhcyBub3QgYmVlblxcbiAgKiAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkLCBhIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHRoZSByZXRyaWV2ZSB3YXNcXG5AQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgZmlsZTtcXG4gICovXFxuIHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyB7XFxuIFxcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfaGFuZGxlciAqaGFuZGxlcjtcXG4rXFx0c3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjtcXG4gXFx0aW50IHJldHJpZXZlX3N0YXR1cztcXG4gXFx0c3RydWN0IGZpbGUgKmZpbGU7XFxuIFxcdHU2NCBzZXJpYWxpemVkX2RhdGE7XFxuQEAgLTI0Nyw2ICsyNDksMTQgQEAgdm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpO1xcbiBpbnQgbGl2ZXVwZGF0ZV9mbGJfZ2V0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiLCB2b2lkICoqb2JqcCk7XFxuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcXG4gXFxuKy8qIGtlcm5lbCBjYW4gaW50ZXJuYWxseSByZXRyaWV2ZSBmaWxlcyAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcXG4rXFxuKy8qIEdldCBhIHRva2VuIGZvciBhbiBvdXRnb2luZyBmaWxlLCBvciAtRU5PRU5UIGlmIGZpbGUgaXMgbm90IHByZXNlcnZlZCAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApO1xcbitcXG4gI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBsaXZldXBkYXRlX2VuYWJsZWQodm9pZClcXG5AQCAtMjk5LDUgKzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxcbiB7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIHU2NCB0b2tlbiwgc3RydWN0IGZpbGUgKipmaWxlcClcXG4re1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4re1xcbitcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK31cXG4rXFxuICNlbmRpZiAvKiBDT05GSUdfTElWRVVQREFURSAqL1xcbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY1xcbmluZGV4IGMzOWY5Njk2MWE4NWJlLi5kYmFlMDcxNTIyMGIxMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXFxuKysrIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY1xcbkBAIC0yODQsNiArMjg0LDcgQEAgaW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2bHVvX2ZpbGUtXFx1MDAzZW11dGV4KTtcXG4gXFxuIFxcdGFyZ3MuaGFuZGxlciA9IGZoO1xcbitcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0YXJncy5maWxlID0gZmlsZTtcXG4gXFx0ZXJyID0gZmgtXFx1MDAzZW9wcy1cXHUwMDNlcHJlc2VydmUoXFx1MDAyNmFyZ3MpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0zNDEsNiArMzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xcbiBcXG4gXFx0XFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbitcXHRcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuIFxcdFxcdGFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtXFx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcXG4gXFx0XFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbkBAIC0zNzQsNiArMzc2LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbiBcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG4gXFxuIFxcdFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdFxcdGFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5AQCAtMzk1LDYgKzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4gXFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxuIFxcbiBcXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxuK1xcdFxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbiBcXHRcXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cXHUwMDNlZmlsZTtcXG4gXFx0XFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xcbiBcXHRcXHRhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuQEAgLTU4Nyw2ICs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4gXFx0fVxcbiBcXG4gXFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbitcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG4gXFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xcbiBcXHRlcnIgPSBsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlcmV0cmlldmUoXFx1MDAyNmFyZ3MpO1xcbiBcXHRpZiAoZXJyKSB7XFxuQEAgLTYyMCw2ICs2MjUsNyBAQCBzdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbiBcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG4gXFxuIFxcdFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdFxcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXFx1MDAzZXJldHJpZXZlX3N0YXR1cztcXG5AQCAtNjM3LDYgKzY0Myw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX2ZpbmlzaF9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuIFxcdGd1YXJkKG11dGV4KShcXHUwMDI2bHVvX2ZpbGUtXFx1MDAzZW11dGV4KTtcXG4gXFxuIFxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG4rXFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxuIFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbiBcXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuIFxcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXFx1MDAzZXJldHJpZXZlX3N0YXR1cztcXG5AQCAtOTI2LDMgKzkzMyw2NSBAQCB2b2lkIGxpdmV1cGRhdGVfdW5yZWdpc3Rlcl9maWxlX2hhbmRsZXIoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpmaClcXG4gXFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xcbiB9XFxuK1xcbisvKipcXG4rICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxcbisgKiBAczogICAgICBUaGUgb3V0Z29pbmcgbGl2ZXVwZGF0ZSBzZXNzaW9uLlxcbisgKiBAZmlsZTogICBUaGUgZmlsZSBvYmplY3QgdG8gc2VhcmNoIGZvci5cXG4rICogQHRva2VucDogT3V0cHV0IHBhcmFtZXRlciBmb3IgdGhlIGZvdW5kIHRva2VuLlxcbisgKlxcbisgKiBTZWFyY2hlcyB0aGUgbGlzdCBvZiBwcmVzZXJ2ZWQgZmlsZXMgaW4gYW4gb3V0Z29pbmcgc2Vzc2lvbiBmb3IgYSBtYXRjaGluZ1xcbisgKiBmaWxlIG9iamVjdC4gSWYgZm91bmQsIHRoZSBjb3JyZXNwb25kaW5nIHVzZXItcHJvdmlkZWQgdG9rZW4gaXMgcmV0dXJuZWQuXFxuKyAqXFxuKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGluLWtlcm5lbCBjYWxsZXJzIHRoYXQgbmVlZCB0byBjb3JyZWxhdGUgYVxcbisgKiBmaWxlIHdpdGggaXRzIGxpdmV1cGRhdGUgdG9rZW4uXFxuKyAqXFxuKyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZC5cXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FTk9FTlQgaWYgdGhlIGZpbGUgaXMgbm90IHByZXNlcnZlZCBpbiB0aGlzIHNlc3Npb24uXFxuKyAqL1xcbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApXFxuK3tcXG4rXFx0c3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQgPSBsdW9fZmlsZV9zZXRfZnJvbV9zZXNzaW9uX2xvY2tlZChzKTtcXG4rXFx0c3RydWN0IGx1b19maWxlICpsdW9fZmlsZTtcXG4rXFx0aW50IGVyciA9IC1FTk9FTlQ7XFxuK1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcXHUwMDI2ZmlsZV9zZXQtXFx1MDAzZWZpbGVzX2xpc3QsIGxpc3QpIHtcXG4rXFx0XFx0aWYgKGx1b19maWxlLVxcdTAwM2VmaWxlID09IGZpbGUpIHtcXG4rXFx0XFx0XFx0aWYgKHRva2VucClcXG4rXFx0XFx0XFx0XFx0KnRva2VucCA9IGx1b19maWxlLVxcdTAwM2V0b2tlbjtcXG4rXFx0XFx0XFx0ZXJyID0gMDtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGVycjtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XFxuK1xcbisvKipcXG4rICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxcbisgKiBAczogICAgICBUaGUgaW5jb21pbmcgbGl2ZXVwZGF0ZSBzZXNzaW9uIChyZXN0b3JlZCBmcm9tIHRoZSBwcmV2aW91cyBrZXJuZWwpLlxcbisgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLlxcbisgKiBAZmlsZXA6ICBPbiBzdWNjZXNzLCB0aGlzIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYSBwb2ludGVyIHRvIHRoZSByZXRyaWV2ZWRcXG4rICogICAgICAgICAgJ3N0cnVjdCBmaWxlJy5cXG4rICpcXG4rICogUHJvdmlkZXMgYSBrZXJuZWwtaW50ZXJuYWwgQVBJIGZvciBvdGhlciBzdWJzeXN0ZW1zIHRvIHJldHJpZXZlIHRoZWlyXFxuKyAqIHByZXNlcnZlZCBmaWxlcyBhZnRlciBhIGxpdmUgdXBkYXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2ltcGxlIHdyYXBwZXJcXG4rICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxcbisgKlxcbisgKiBUaGUgY2FsbGVyIHJlY2VpdmVzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZmlsZSBhbmQgbXVzdCBjYWxsIGZwdXQoKSB3aGVuIGl0XFxuKyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJ3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2VcXG4rICogZmlsZSBkZXNjcmlwdG9ycy5cXG4rICpcXG4rICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi5cXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIFJldHVybnMgLUVOT0VOVCBpZiBubyBmaWxlIHdpdGggdGhlIG1hdGNoaW5nIHRva2VuIGlzXFxuKyAqICAgICAgICAgZm91bmQsIG9yIGFueSBvdGhlciBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbisgKi9cXG4raW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IGZpbGUgKipmaWxlcClcXG4re1xcbitcXHRyZXR1cm4gbHVvX3JldHJpZXZlX2ZpbGUobHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyksXFxuK1xcdFxcdFxcdFxcdCB0b2tlbiwgZmlsZXApO1xcbit9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcpO1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaCBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXFxuaW5kZXggNjQ4NzlmZmU3Mzc4MWMuLmRhYzY2NDRiZmIxOGFhIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXFxuKysrIGIva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcXG5AQCAtNzcsNiArNzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcXG4gXFxuIGV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlIGx1b19yZWdpc3Rlcl9yd2xvY2s7XFxuIFxcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKmx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXFxuK3tcXG4rXFx0c3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uO1xcbitcXG4rXFx0c2Vzc2lvbiA9IGNvbnRhaW5lcl9vZihmaWxlX3NldCwgc3RydWN0IGx1b19zZXNzaW9uLCBmaWxlX3NldCk7XFxuK1xcbitcXHRyZXR1cm4gKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKilzZXNzaW9uO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHN0cnVjdCBsdW9fZmlsZV9zZXQgKmx1b19maWxlX3NldF9mcm9tX3Nlc3Npb25fbG9ja2VkKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMpXFxuK3tcXG4rXFx0c3RydWN0IGx1b19zZXNzaW9uICpzZXNzaW9uID0gKHN0cnVjdCBsdW9fc2Vzc2lvbiAqKXM7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZzZXNzaW9uLVxcdTAwM2VtdXRleCk7XFxuK1xcdHJldHVybiBcXHUwMDI2c2Vzc2lvbi1cXHUwMDNlZmlsZV9zZXQ7XFxuK31cXG4rXFxuIGludCBsdW9fc2Vzc2lvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7XFxuIGludCBsdW9fc2Vzc2lvbl9yZXRyaWV2ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcXG4gdm9pZCBfX2luaXQgbHVvX3Nlc3Npb25fc2V0dXBfb3V0Z29pbmcodTY0ICpzZXNzaW9uc19wYSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjE5LjEyMTU4MzQ2MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU0ODY0MjMzMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3ICdzZXNzaW9uJyBmaWVsZCB0byAnc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzJyBhbmQgdHdvIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMgJ2xpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcnIGFuZCAnbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcnLiBIb3dldmVyLCB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsLCBhbmQgdGhlIG5ldyAnc2Vzc2lvbicgZmllbGQgaXMgcG9wdWxhdGVkIGJ1dCBuZXZlciByZWFkIGJ5IGFueSBmaWxlIGhhbmRsZXIgKGUuZy4sIGluIG1tL21lbWZkX2x1by5jKS4gVGh1cywgdGhlIHBhdGNoIGludHJvZHVjZXMgdW51c2VkIEFQSSBhbmQgZGVhZCBjb2RlLCBtYWtpbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmNzZmYTM3ZTBhYWI5NTIxZDhlZjEzNmQyYzA3YjllY2Q4YThkODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwMjo1MToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oIGIvaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmhcbmluZGV4IDYzZWE1NDE3ZGU4NDlhLi42MDUxYWJjMDYxMmNlZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IGZpbGU7XG4gLyoqXG4gICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXG4gICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxuKyAqIEBzZXNzaW9uOiAgICAgICAgICBUaGUgc2Vzc2lvbiB0aGlzIGZpbGUgYmVsb25ncyB0by5cbiAgKiBAcmV0cmlldmVfc3RhdHVzOiAgVGhlIHJldHJpZXZlIHN0YXR1cyBmb3IgdGhlICdjYW5fZmluaXNoIC8gZmluaXNoJ1xuICAqICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24uIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcmV0cmlldmUgaGFzIG5vdCBiZWVuXG4gICogICAgICAgICAgICAgICAgICAgIGF0dGVtcHRlZCwgYSBwb3NpdGl2ZSB2YWx1ZSBtZWFucyB0aGUgcmV0cmlldmUgd2FzXG5AQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgZmlsZTtcbiAgKi9cbiBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3Mge1xuIFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9oYW5kbGVyICpoYW5kbGVyO1xuK1x0c3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqc2Vzc2lvbjtcbiBcdGludCByZXRyaWV2ZV9zdGF0dXM7XG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZTtcbiBcdHU2NCBzZXJpYWxpemVkX2RhdGE7XG5AQCAtMjQ3LDYgKzI0OSwxNCBAQCB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYik7XG4gaW50IGxpdmV1cGRhdGVfZmxiX2dldF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYiwgdm9pZCAqKm9ianApO1xuIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcbiBcbisvKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4rXHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4rXG4rLyogR2V0IGEgdG9rZW4gZm9yIGFuIG91dGdvaW5nIGZpbGUsIG9yIC1FTk9FTlQgaWYgZmlsZSBpcyBub3QgcHJlc2VydmVkICovXG4raW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXG4rXHRcdFx0XHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucCk7XG4rXG4gI2Vsc2UgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgbGl2ZXVwZGF0ZV9lbmFibGVkKHZvaWQpXG5AQCAtMjk5LDUgKzMwOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKVxuIHtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxuK1x0XHRcdFx0XHQgICAgICAgdTY0IHRva2VuLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKVxuK3tcbitcdHJldHVybiAtRU9QTk9UU1VQUDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbitcdFx0XHRcdFx0XHRzdHJ1Y3QgZmlsZSAqZmlsZSwgdTY0ICp0b2tlbnApXG4re1xuK1x0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK31cbitcbiAjZW5kaWYgLyogQ09ORklHX0xJVkVVUERBVEUgKi9cbiAjZW5kaWYgLyogX0xJTlVYX0xJVkVVUERBVEVfSCAqL1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5pbmRleCBjMzlmOTY5NjFhODViZS4uZGJhZTA3MTUyMjBiMTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG4rKysgYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jXG5AQCAtMjg0LDYgKzI4NCw3IEBAIGludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpXG4gXHRtdXRleF9pbml0KFx1MDAyNmx1b19maWxlLVx1MDAzZW11dGV4KTtcbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLmZpbGUgPSBmaWxlO1xuIFx0ZXJyID0gZmgtXHUwMDNlb3BzLVx1MDAzZXByZXNlcnZlKFx1MDAyNmFyZ3MpO1xuIFx0aWYgKGVycilcbkBAIC0zNDEsNiArMzQyLDcgQEAgdm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbHVvX2ZpbGUsIGxpc3QpO1xuIFxuIFx0XHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cdTAwM2VmaDtcbitcdFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVx1MDAzZWZpbGU7XG4gXHRcdGFyZ3Muc2VyaWFsaXplZF9kYXRhID0gbHVvX2ZpbGUtXHUwMDNlc2VyaWFsaXplZF9kYXRhO1xuIFx0XHRhcmdzLnByaXZhdGVfZGF0YSA9IGx1b19maWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbkBAIC0zNzQsNiArMzc2LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9mcmVlemVfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0XHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcbiBcbiBcdFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXHUwMDNlZmg7XG4rXHRcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xuIFx0XHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0XHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdFx0YXJncy5wcml2YXRlX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5AQCAtMzk1LDYgKzM5OCw3IEBAIHN0YXRpYyB2b2lkIGx1b19maWxlX3VuZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG4gXG4gXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucHJpdmF0ZV9kYXRhID0gbHVvX2ZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuQEAgLTU4Nyw2ICs1OTEsNyBAQCBpbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcbiBcdH1cbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVx1MDAzZXNlcmlhbGl6ZWRfZGF0YTtcbiBcdGVyciA9IGx1b19maWxlLVx1MDAzZWZoLVx1MDAzZW9wcy1cdTAwM2VyZXRyaWV2ZShcdTAwMjZhcmdzKTtcbiBcdGlmIChlcnIpIHtcbkBAIC02MjAsNiArNjI1LDcgQEAgc3RhdGljIGludCBsdW9fZmlsZV9jYW5fZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcbiBcdFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XG4gXG4gXHRcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0XHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcbiBcdFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXHUwMDNlZmlsZTtcbiBcdFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRcdGFyZ3MucmV0cmlldmVfc3RhdHVzID0gbHVvX2ZpbGUtXHUwMDNlcmV0cmlldmVfc3RhdHVzO1xuQEAgLTYzNyw2ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBsdW9fZmlsZV9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxuIFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmx1b19maWxlLVx1MDAzZW11dGV4KTtcbiBcbiBcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVx1MDAzZWZoO1xuK1x0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XG4gXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cdTAwM2VmaWxlO1xuIFx0YXJncy5zZXJpYWxpemVkX2RhdGEgPSBsdW9fZmlsZS1cdTAwM2VzZXJpYWxpemVkX2RhdGE7XG4gXHRhcmdzLnJldHJpZXZlX3N0YXR1cyA9IGx1b19maWxlLVx1MDAzZXJldHJpZXZlX3N0YXR1cztcbkBAIC05MjYsMyArOTMzLDY1IEBAIHZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxuIFx0bHVvX2ZsYl91bnJlZ2lzdGVyX2FsbChmaCk7XG4gXHRsaXN0X2RlbChcdTAwMjZBQ0NFU1NfUFJJVkFURShmaCwgbGlzdCkpO1xuIH1cbitcbisvKipcbisgKiBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyAtIEdldCB0aGUgdG9rZW4gZm9yIGEgcHJlc2VydmVkIGZpbGUuXG4rICogQHM6ICAgICAgVGhlIG91dGdvaW5nIGxpdmV1cGRhdGUgc2Vzc2lvbi5cbisgKiBAZmlsZTogICBUaGUgZmlsZSBvYmplY3QgdG8gc2VhcmNoIGZvci5cbisgKiBAdG9rZW5wOiBPdXRwdXQgcGFyYW1ldGVyIGZvciB0aGUgZm91bmQgdG9rZW4uXG4rICpcbisgKiBTZWFyY2hlcyB0aGUgbGlzdCBvZiBwcmVzZXJ2ZWQgZmlsZXMgaW4gYW4gb3V0Z29pbmcgc2Vzc2lvbiBmb3IgYSBtYXRjaGluZ1xuKyAqIGZpbGUgb2JqZWN0LiBJZiBmb3VuZCwgdGhlIGNvcnJlc3BvbmRpbmcgdXNlci1wcm92aWRlZCB0b2tlbiBpcyByZXR1cm5lZC5cbisgKlxuKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGluLWtlcm5lbCBjYWxsZXJzIHRoYXQgbmVlZCB0byBjb3JyZWxhdGUgYVxuKyAqIGZpbGUgd2l0aCBpdHMgbGl2ZXVwZGF0ZSB0b2tlbi5cbisgKlxuKyAqIENvbnRleHQ6IEl0IG11c3QgYmUgY2FsbGVkIHdpdGggc2Vzc2lvbiBtdXRleCBhY3F1aXJlZC5cbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVOT0VOVCBpZiB0aGUgZmlsZSBpcyBub3QgcHJlc2VydmVkIGluIHRoaXMgc2Vzc2lvbi5cbisgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcbitcdFx0XHRcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKVxuK3tcbitcdHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0ID0gbHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyk7XG4rXHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xuK1x0aW50IGVyciA9IC1FTk9FTlQ7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGx1b19maWxlLCBcdTAwMjZmaWxlX3NldC1cdTAwM2VmaWxlc19saXN0LCBsaXN0KSB7XG4rXHRcdGlmIChsdW9fZmlsZS1cdTAwM2VmaWxlID09IGZpbGUpIHtcbitcdFx0XHRpZiAodG9rZW5wKVxuK1x0XHRcdFx0KnRva2VucCA9IGx1b19maWxlLVx1MDAzZXRva2VuO1xuK1x0XHRcdGVyciA9IDA7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdH1cbitcbitcdHJldHVybiBlcnI7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKTtcbitcbisvKipcbisgKiBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nIC0gUmV0cmlldmVzIGEgcHJlc2VydmVkIGZpbGUgZm9yIGluLWtlcm5lbCB1c2UuXG4rICogQHM6ICAgICAgVGhlIGluY29taW5nIGxpdmV1cGRhdGUgc2Vzc2lvbiAocmVzdG9yZWQgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsKS5cbisgKiBAdG9rZW46ICBUaGUgdW5pcXVlIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBmaWxlIHRvIHJldHJpZXZlLlxuKyAqIEBmaWxlcDogIE9uIHN1Y2Nlc3MsIHRoaXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJldHJpZXZlZFxuKyAqICAgICAgICAgICdzdHJ1Y3QgZmlsZScuXG4rICpcbisgKiBQcm92aWRlcyBhIGtlcm5lbC1pbnRlcm5hbCBBUEkgZm9yIG90aGVyIHN1YnN5c3RlbXMgdG8gcmV0cmlldmUgdGhlaXJcbisgKiBwcmVzZXJ2ZWQgZmlsZXMgYWZ0ZXIgYSBsaXZlIHVwZGF0ZS4gVGhpcyBmdW5jdGlvbiBpcyBhIHNpbXBsZSB3cmFwcGVyXG4rICogYXJvdW5kIGx1b19yZXRyaWV2ZV9maWxlKCksIGFsbG93aW5nIGNhbGxlcnMgdG8gZmluZCBhIGZpbGUgYnkgaXRzIHRva2VuLlxuKyAqXG4rICogVGhlIGNhbGxlciByZWNlaXZlcyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGZpbGUgYW5kIG11c3QgY2FsbCBmcHV0KCkgd2hlbiBpdFxuKyAqIGlzIG5vIGxvbmdlciBuZWVkZWQuIFRoZSBmaWxlJ3MgbGlmZXRpbWUgaXMgbWFuYWdlZCBieSBMVU8gYW5kIGFueSB1c2Vyc3BhY2VcbisgKiBmaWxlIGRlc2NyaXB0b3JzLlxuKyAqXG4rICogQ29udGV4dDogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBzZXNzaW9uIG11dGV4IGFjcXVpcmVkIG9mIGEgcmVzdG9yZWQgc2Vzc2lvbi5cbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gUmV0dXJucyAtRU5PRU5UIGlmIG5vIGZpbGUgd2l0aCB0aGUgbWF0Y2hpbmcgdG9rZW4gaXNcbisgKiAgICAgICAgIGZvdW5kLCBvciBhbnkgb3RoZXIgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS5cbisgKi9cbitpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXG4rXHRcdFx0XHQgc3RydWN0IGZpbGUgKipmaWxlcClcbit7XG4rXHRyZXR1cm4gbHVvX3JldHJpZXZlX2ZpbGUobHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQocyksXG4rXHRcdFx0XHQgdG9rZW4sIGZpbGVwKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmggYi9rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaFxuaW5kZXggNjQ4NzlmZmU3Mzc4MWMuLmRhYzY2NDRiZmIxOGFhIDEwMDY0NFxuLS0tIGEva2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhcbisrKyBiL2tlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oXG5AQCAtNzcsNiArNzcsMjMgQEAgc3RydWN0IGx1b19zZXNzaW9uIHtcbiBcbiBleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSBsdW9fcmVnaXN0ZXJfcndsb2NrO1xuIFxuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldClcbit7XG4rXHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb247XG4rXG4rXHRzZXNzaW9uID0gY29udGFpbmVyX29mKGZpbGVfc2V0LCBzdHJ1Y3QgbHVvX3Nlc3Npb24sIGZpbGVfc2V0KTtcbitcbitcdHJldHVybiAoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqKXNlc3Npb247XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgc3RydWN0IGx1b19maWxlX3NldCAqbHVvX2ZpbGVfc2V0X2Zyb21fc2Vzc2lvbl9sb2NrZWQoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcylcbit7XG4rXHRzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24gPSAoc3RydWN0IGx1b19zZXNzaW9uICopcztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2c2Vzc2lvbi1cdTAwM2VtdXRleCk7XG4rXHRyZXR1cm4gXHUwMDI2c2Vzc2lvbi1cdTAwM2VmaWxlX3NldDtcbit9XG4rXG4gaW50IGx1b19zZXNzaW9uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKTtcbiBpbnQgbHVvX3Nlc3Npb25fcmV0cmlldmUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGUgKipmaWxlcCk7XG4gdm9pZCBfX2luaXQgbHVvX3Nlc3Npb25fc2V0dXBfb3V0Z29pbmcodTY0ICpzZXNzaW9uc19wYSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MToxOS4xMjE1ODU0OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwODIzMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTGl2ZSBVcGRhdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIG5ldyBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gbGl2ZSB1cGRhdGVzLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgIHN0cnVjdHVyZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFpbWVkIGF0IGVuaGFuY2luZyB0aGUgY29udHJvbCBvciB0cmFja2luZyBvZiBmaWxlIG9wZXJhdGlvbnMgZHVyaW5nIGEgbGl2ZSB1cGRhdGUuIEludGVyZXN0aW5nLiBBbmQgaXQncyBpbXBsZW1lbnRpbmcgdHdvIG5ldyBmdW5jdGlvbnM6IGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gSSdtIGd1ZXNzaW5nIHRob3NlIHdpbGwgaGFuZGxlIGZldGNoaW5nIG9yIG1hbmFnaW5nIGZpbGVzIGFuZCB0b2tlbnMgdGhhdCBhcmUgY29taW5nIGluIG9yIGdvaW5nIG91dCBkdXJpbmcgdGhlIHVwZGF0ZSBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgcGF0Y2ggdG91Y2hlcyBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuY2AsIGBpbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaGAsIGFuZCBga2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmhgLiBUaGF0J3MgdGhlIGNvcmUgbGl2ZSB1cGRhdGUgaW1wbGVtZW50YXRpb24sIHRoZSBwdWJsaWMtZmFjaW5nIGhlYWRlciwgYW5kIGludGVybmFsIGRlZmluaXRpb25zLCByZXNwZWN0aXZlbHkuIE1ha2VzIHNlbnNlLlxuXG5CZWZvcmUgSSBkaWcgdG9vIGRlZXAsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gYWN0aXZlIGluIG91ciBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19MSVZFVVBEQVRFYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb24uIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdC5cblxuQWxyaWdodCwgdGltZSB0byBnZXQgbW9yZSBncmFudWxhci4gSSB3YW50IHRvIHNlZSAqd2hlcmUqIHRoZXNlIG5ldyBmdW5jdGlvbnMsIGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCwgYXJlIGFjdHVhbGx5IGJlaW5nICp1c2VkKi4gU28sIEknbGwgdXNlIGBncmVwcGVyYCB0byBydW4gYSBzZWFyY2ggZm9yIHRob3NlIGZ1bmN0aW9uIG5hbWVzIGFjcm9zcyB0aGUgY29kZWJhc2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHNlbnNlIG9mIHRoZSBjYWxsIGdyYXBoIGFuZCB0aGUgb3ZlcmFsbCBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoaXMgbmV3IHNlc3Npb24gbWFuYWdlbWVudCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbGl2ZSB1cGRhdGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjIzLjU1MjQyMjc4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODAzNzc1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUwPXZvaWQgbGl2ZXVwZGF0ZV9mbGJfcHV0X291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX2ZsYiAqZmxiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1Mi0vKiBrZXJuZWwgY2FuIGludGVybmFsbHkgcmV0cmlldmUgZmlsZXMgKi9cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTM6aW50IGxpdmV1cGRhdGVfZ2V0X2ZpbGVfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcywgdTY0IHRva2VuLFxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1NC1cXHRcXHRcXHRcXHQgc3RydWN0IGZpbGUgKipmaWxlcCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaD0zMDg9c3RhdGljIGlubGluZSB2b2lkIGxpdmV1cGRhdGVfZmxiX3B1dF9vdXRnb2luZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9mbGIgKmZsYilcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDozMTI6c3RhdGljIGlubGluZSBpbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLFxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTMxMy1cXHRcXHRcXHRcXHRcXHQgICAgICAgdTY0IHRva2VuLCBzdHJ1Y3QgZmlsZSAqKmZpbGVwKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz05NzA9RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcpO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzItLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5NzM6ICogbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyAtIFJldHJpZXZlcyBhIHByZXNlcnZlZCBmaWxlIGZvciBpbi1rZXJuZWwgdXNlLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTc0LSAqIEBzOiAgICAgIFRoZSBpbmNvbWluZyBsaXZldXBkYXRlIHNlc3Npb24gKHJlc3RvcmVkIGZyb20gdGhlIHByZXZpb3VzIGtlcm5lbCkuXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5MC0gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk5MTppbnQgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyhzdHJ1Y3QgbGl2ZXVwZGF0ZV9zZXNzaW9uICpzLCB1NjQgdG9rZW4sXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05OTItXFx0XFx0XFx0XFx0IHN0cnVjdCBmaWxlICoqZmlsZXApXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk5Ni19XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5OTc6RVhQT1JUX1NZTUJPTF9HUEwobGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjI3LjM1NjIwNjU1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzczOTgzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgd2UncmUgbG9va2luZyBhdCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgc3ViamVjdCBtYXR0ZXI6XG5cbioqQ2hlY2tpbmcgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gV2hhdCBleGFjdGx5IGlzIGhhcHBlbmluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIGNvZGU/IEkgc2hvdWxkIHByb2JhYmx5IGFzc3VtZSBpdCdzIHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHRva2VuIHJldHJpZXZhbCwgbGlrZWx5IGZvciBvdXRnb2luZyBuZXR3b3JrIHJlcXVlc3RzIOKAkyBwcm9iYWJseSByZWxhdGluZyB0byBsaXZlIHVwZGF0ZXMuIElzIHRoaXMgdG9rZW4gZm9yIGF1dGhlbnRpY2F0aW9uLCBhdXRob3JpemF0aW9uLCBvciBib3RoPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxpdmUgdXBkYXRlIHdvcmtmbG93LiBXaGF0J3MgdGhlIGNvbnRleHQ/IFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IEtub3dpbmcgdGhhdCB3aWxsIGNsYXJpZnkgaXRzIHJvbGUgaW4gdGhlIHByb2Nlc3MuIElzIHRoZXJlIGEgY2FjaGluZyBtZWNoYW5pc20/IEhvdyBzZWN1cmUgaXMgdGhlIHRva2VuIGdlbmVyYXRpb24gYW5kIHJldHJpZXZhbCBwcm9jZXNzPyBBbmQgYXJlIHRoZXJlIGFueSBlcnJvciBoYW5kbGluZyBwYXRocyB0byBsb29rIGF0PyBUaGUgbmFtZSBzdWdnZXN0cyBpdCByZXRyaWV2ZXMgc29tZXRoaW5nLCBhbmQgdGhlIFwib3V0Z29pbmdcIiBwYXJ0IGhpbnRzIHRoYXQgdGhlIHRva2VuIGlzIHVzZWQgd2hlbiBjb250YWN0aW5nIHNvbWUgZXh0ZXJuYWwgZW50aXR5IGZvciB1cGRhdGVzLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGtub3duIHZ1bG5lcmFiaWxpdGllcyBvciBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGlmIHRoZXJlIGlzIGFueSBwbGFjZSBmb3IgaW1wcm92ZW1lbnQuIEl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnbyBvdmVyIGFsbCBkb2N1bWVudGF0aW9uIHJlbGF0aW5nIHRvIHRoYXQgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBtb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzc2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6MzAuNjkzNjA3MjE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MzM2Nzk1NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg9MjUzPWludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsIHU2NCB0b2tlbixcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTI1Ni0vKiBHZXQgYSB0b2tlbiBmb3IgYW4gb3V0Z29pbmcgZmlsZSwgb3IgLUVOT0VOVCBpZiBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgKi9cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDoyNTc6aW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjU4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGZpbGUgKmZpbGUsIHU2NCAqdG9rZW5wKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTMxMj1zdGF0aWMgaW5saW5lIGludCBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC0zMTctXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MzE4OnN0YXRpYyBpbmxpbmUgaW50IGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nKHN0cnVjdCBsaXZldXBkYXRlX3Nlc3Npb24gKnMsXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMzE5LVxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9OTI3PXZvaWQgbGl2ZXVwZGF0ZV91bnJlZ2lzdGVyX2ZpbGVfaGFuZGxlcihzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05MzctLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo5Mzg6ICogbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcgLSBHZXQgdGhlIHRva2VuIGZvciBhIHByZXNlcnZlZCBmaWxlLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTM5LSAqIEBzOiAgICAgIFRoZSBvdXRnb2luZyBsaXZldXBkYXRlIHNlc3Npb24uXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1MS0gKi9cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk1MjppbnQgbGl2ZXVwZGF0ZV9nZXRfdG9rZW5fb3V0Z29pbmcoc3RydWN0IGxpdmV1cGRhdGVfc2Vzc2lvbiAqcyxcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTk1My1cXHRcXHRcXHRcXHQgIHN0cnVjdCBmaWxlICpmaWxlLCB1NjQgKnRva2VucClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtOTY5LX1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjk3MDpFWFBPUlRfU1lNQk9MX0dQTChsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZyk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy05NzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjMzLjMyNzI5MDcwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjM2MDE1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiVGhlc2UgbmV3IGZ1bmN0aW9ucy4uLiB0aGV5J3JlIG5vdCBldmVuICpjYWxsZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbD8gVGhhdCdzLi4uIHVudXN1YWwuXCIgQnV0IGhvbGQgb24sIHRoZSBwbG90IHRoaWNrZW5zLiBJIHNlZSB0aGV5J3ZlIGFsc28gZ29uZSBpbiBhbmQgbW9kaWZpZWQgc29tZSAqZXhpc3RpbmcqIGZ1bmN0aW9uczogYGx1b19wcmVzZXJ2ZV9maWxlYCwgYGx1b19maWxlX3VucHJlc2VydmVfZmlsZXNgLCBhbGwgdGhlIHdheSBkb3duIHRvIGBsdW9fZmlsZV9maW5pc2hfb25lYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGluc2VydGluZyBgYXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7YCBpbiBzZXZlcmFsIHBsYWNlcyB3aXRoaW4gdGhvc2UuXG5cbkhtbSwgc28gdGhleSdyZSB0eWluZyB0aGVzZSBuZXcgY29uY2VwdHMgaW50byB0aGUgZXhpc3RpbmcgbG9naWMuIFRoYXQgbWVhbnMgdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHVzZWQgdHJhbnNpdGl2ZWx5LiBUaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgc2VlIGlmIGBsdW9fcHJlc2VydmVfZmlsZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGZyb20gYW55IGV4ZWN1dGlvbiBwYXRoLiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSBmdW5jdGlvbiBjYWxscyB0byBkZXRlcm1pbmUgaXRzIHVzYWdlLiBBbmQsIG9mIGNvdXJzZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGlmIGBDT05GSUdfTElWRVVQREFURWAgaXMgZGVmaW5lZC4gVGhpcyBwYXRjaCBzZWVtcyBjbG9zZWx5IGxpbmtlZCB0byB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjM3LjI1MDg5NDIzMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk0NTg3NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImx1b19wcmVzZXJ2ZV9maWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDYtICogMS4gUHJlc2VydmUgKE5vcm1hbCBPcGVyYXRpb24pOiBBIHVzZXJzcGFjZSBhZ2VudCBwcmVzZXJ2ZXMgZmlsZXMgb25lIGJ5IG9uZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NDc6ICogICAgdmlhIGFuIGlvY3RsLiBGb3IgZWFjaCBmaWxlLCBsdW9fcHJlc2VydmVfZmlsZSgpIGZpbmRzIGEgY29tcGF0aWJsZVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNDgtICogICAgaGFuZGxlciwgY2FsbHMgaXRzIC5wcmVzZXJ2ZSgpIG9wZXJhdGlvbiwgYW5kIGNyZWF0ZXMgYW4gaW50ZXJuYWwgXFx1MDAyNnN0cnVjdFxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0xMTk9c3RhdGljIERFRklORV9YQVJSQVkobHVvX3ByZXNlcnZlZF9maWxlcyk7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE0OS0gKiBUaGlzIHN0cnVjdHVyZSBpcyB0aGUgY29yZSBpbi1rZXJuZWwgcmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZmlsZSBiZWluZ1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6MTUwOiAqIG1hbmFnZWQgdGhyb3VnaCBhIGxpdmUgdXBkYXRlLiBBbiBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGx1b19wcmVzZXJ2ZV9maWxlKClcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTE1MS0gKiB0byBsaW5rIGEgJ3N0cnVjdCBmaWxlJyB0byBpdHMgY29ycmVzcG9uZGluZyBoYW5kbGVyLCBhIHVzZXItcHJvdmlkZWQgdG9rZW4sXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTE3OD1zdGF0aWMgYm9vbCBsdW9fdG9rZW5faXNfdXNlZChzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0xOTAtLyoqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoxOTE6ICogbHVvX3ByZXNlcnZlX2ZpbGUgLSBJbml0aWF0ZSB0aGUgcHJlc2VydmF0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLlxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMTkyLSAqIEBmaWxlX3NldDogVGhlIGZpbGVfc2V0IHRvIHdoaWNoIHRoZSBwcmVzZXJ2ZWQgZmlsZSB3aWxsIGJlIGFkZGVkLlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0yMjktICovXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzoyMzA6aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMS17XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyNy0gKiAgIDMuIFJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlICdzdHJ1Y3QgZmlsZScgdGhhdCB3YXMgdGFrZW4gYnlcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMyODogKiAgICAgIGx1b19wcmVzZXJ2ZV9maWxlKCkgdmlhIGZwdXQoKSwgcmV0dXJuaW5nIG93bmVyc2hpcC5cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTMyOS0gKiAgIDQuIEZyZWVzIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcm5hbCAnc3RydWN0IGx1b19maWxlJy5cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19mbGIuYz0yMTE9dm9pZCBsaXZldXBkYXRlX2ZsYl9wdXRfaW5jb21pbmcoc3RydWN0IGxpdmV1cGRhdGVfZmxiICpmbGIpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmxiLmMtMjQ5LSAqXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jOjI1MDogKiBDb250ZXh0OiBDYWxsZWQgZnJvbSBsdW9fcHJlc2VydmVfZmlsZSgpXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZsYi5jLTI1MS0gKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLlxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg9MTAyPWludCBsdW9fc2Vzc2lvbl9kZXNlcmlhbGl6ZSh2b2lkKTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9faW50ZXJuYWwuaC0xMDMtXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ludGVybmFsLmg6MTA0OmludCBsdW9fcHJlc2VydmVfZmlsZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCwgdTY0IHRva2VuLCBpbnQgZmQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19pbnRlcm5hbC5oLTEwNS12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYz0yNjM9c3RhdGljIGludCBsdW9fc2Vzc2lvbl9wcmVzZXJ2ZV9mZChzdHJ1Y3QgbHVvX3Nlc3Npb24gKnNlc3Npb24sXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jLTI2OS1cXHRndWFyZChtdXRleCkoXFx1MDAyNnNlc3Npb24tXFx1MDAzZW11dGV4KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fc2Vzc2lvbi5jOjI3MDpcXHRlcnIgPSBsdW9fcHJlc2VydmVfZmlsZShcXHUwMDI2c2Vzc2lvbi1cXHUwMDNlZmlsZV9zZXQsIGFyZ3AtXFx1MDAzZXRva2VuLCBhcmdwLVxcdTAwM2VmZCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX3Nlc3Npb24uYy0yNzEtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDAuMDQ1NDg4NzcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzODM2MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIExpdmV1cGRhdGUgRmlsZSBPcGVyYXRpb24gUGF0Y2gqKlxuXG5SaWdodCwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBgc2Vzc2lvbmAgZmllbGQgaW50byB0aGUgYGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEVzc2VudGlhbGx5LCBpdCdzIGFkZGluZyBhIGBzZXNzaW9uYCBhcmd1bWVudCB0aGF0IGdldHMgcGFzc2VkIGRvd24gdG8gZWFjaCBvZiB0aGUgZmlsZSBoYW5kbGVyIG9wZXJhdGlvbnMg4oCTIHRoZSBgcHJlc2VydmVgLCBgdW5wcmVzZXJ2ZWAsIGBmcmVlemVgLCBgdW5mcmVlemVgLCBgcmV0cmlldmVgLCBgY2FuX2ZpbmlzaGAsIGFuZCBgZmluaXNoYCBmdW5jdGlvbnMuIFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gRG9lcyBhbnlvbmUgKmFjdHVhbGx5KiBsZXZlcmFnZSB0aGF0IGBhcmdzLVx1MDAzZXNlc3Npb25gIGRhdGEgd2l0aGluIHRoZWlyIHNwZWNpZmljIGZpbGUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbnM/XCIgSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIGFueSBoYW5kbGVyIGN1cnJlbnRseSAqdXNlcyogdGhpcyBuZXcgYHNlc3Npb25gIHBhcmFtZXRlci4gVGhhdCdzIGEgY3J1Y2lhbCBxdWVzdGlvbi4gTm93IEkgbmVlZCB0byBnbyBsb29rIHRocm91Z2ggdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVhbC13b3JsZCB1c2VzIG9mIHRoYXQgc2Vzc2lvbiBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTgwLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDMuMTgzODU0MzEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzcxNjc4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyZ3MtXFx1MDAzZXNlc3Npb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmZzL25mczR4ZHIuYz0xODIzPXN0YXRpYyB2b2lkIGVuY29kZV9iaW5kX2Nvbm5fdG9fc2Vzc2lvbihzdHJ1Y3QgeGRyX3N0cmVhbSAqeGRyLFxcbi0tXFxuZnMvbmZzL25mczR4ZHIuYy0xODMwLVxcdFxcdGRlY29kZV9iaW5kX2Nvbm5fdG9fc2Vzc2lvbl9tYXhzeiwgaGRyKTtcXG5mcy9uZnMvbmZzNHhkci5jOjE4MzE6XFx0ZW5jb2RlX29wYXF1ZV9maXhlZCh4ZHIsIGFyZ3MtXFx1MDAzZXNlc3Npb25pZC5kYXRhLCBORlM0X01BWF9TRVNTSU9OSURfTEVOKTtcXG5mcy9uZnMvbmZzNHhkci5jLTE4MzItXFx0cCA9IHhkcl9yZXNlcnZlX3NwYWNlKHhkciwgOCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjQ1LjU1NTU0MTgwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM4NTM0OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVudXNlZCBTZXNzaW9uIERhdGEgaW4gTGl2ZXVwZGF0ZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIHBhdGNoIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBgYXJncy1cdTAwM2VzZXNzaW9uYCBpc24ndCBhY3R1YWxseSBiZWluZyBsZXZlcmFnZWQgaW4gYW55IG9mIHRoZSBmaWxlIGhhbmRsZXIgZnVuY3Rpb25zLiBUaGF0J3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AuIFRoZXkncmUgKmV4cG9ydGVkKiwgd2hpY2ggdXN1YWxseSBpbXBsaWVzIGludGVuZGVkIHVzZSBlbHNld2hlcmUsIGJ1dCBJIGNhbid0IGZpbmQgYSBzaW5nbGUga2VybmVsIG1vZHVsZSBvciBhbnl0aGluZyB0aGF0J3MgYWN0dWFsbHkgY2FsbGluZyB0aGVtLiBNb3Jlb3ZlciwgdGhleSdyZSBhZGRpbmcgYHNlc3Npb25gIHRvIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgIGFuZCBwb3B1bGF0aW5nIGl0LCB3aGljaCByYWlzZXMgZmxhZ3MuIEl0J3MgcmVhbGx5IHBvaW50aW5nIHRvIGEgZGVzaWduIGVsZW1lbnQgdGhhdCdzIGJlZW4gaW1wbGVtZW50ZWQgYnV0IG5ldmVyIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgcmVsZXZhbnQgaGFuZGxlcnMuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBoZXJlLiBMZXQgbWUgcXVpY2tseSBkbyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBzd2VlcCBmb3IgaW5zdGFuY2VzIG9mIGVpdGhlciBgYXJncy5zZXNzaW9uYCBvciBqdXN0IGBzZXNzaW9uYCB3aXRoaW4gYW55IG9mIHRoZSBvdGhlciBoYW5kbGVyIGZ1bmN0aW9ucy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gV2UgaGF2ZSB0byBjb25zaWRlciB0aGF0IHRoZXJlIG1pZ2h0IGJlIGluZGlyZWN0IHVzZXMgb3IgY2FsbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MjksIk91dHB1dFRva2VucyI6MTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NDkuMTk0MDc5NDc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNDk4MDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwuc2Vzc2lvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNzcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdD0xOD1kZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGZvb3Rub3Rlcy5cXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMDktKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdDoxMTA6fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgQlBGX1RSQUNFX0tQUk9CRV9TRVNTSU9OYGAgICAgICAgICAgIHwgYGBrcHJvYmUuc2Vzc2lvbitgYCBbI2twbXVsdGldXyAgfCAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vYnBmL2xpYmJwZi9wcm9ncmFtX3R5cGVzLnJzdC0xMTEtKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tK1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTExOS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMDp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBCUEZfVFJBQ0VfVVBST0JFX1NFU1NJT05gYCAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uK2BgIFsjdXBtdWxdXyAgICB8ICAgICAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0OjEyMjp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHVwcm9iZS5zZXNzaW9uLnMrYGAgWyN1cG11bF1fICB8IFllcyAgICAgICB8XFxuRG9jdW1lbnRhdGlvbi9icGYvbGliYnBmL3Byb2dyYW1fdHlwZXMucnN0LTEyMy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTY1MT1zdGF0aWMgaW50IHNldl9sYXVuY2hfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTY3OC1cXHRzZXNzaW9uX2Jsb2IgPSBOVUxMO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njc5OlxcdGlmIChwYXJhbXMuc2Vzc2lvbl91YWRkcikge1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjgwOlxcdFxcdHNlc3Npb25fYmxvYiA9IHBzcF9jb3B5X3VzZXJfYmxvYihwYXJhbXMuc2Vzc2lvbl91YWRkciwgcGFyYW1zLnNlc3Npb25fbGVuKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTY4MS1cXHRcXHRpZiAoSVNfRVJSKHNlc3Npb25fYmxvYikpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg1LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njg2OlxcdFxcdHN0YXJ0LnNlc3Npb25fYWRkcmVzcyA9IF9fc21lX3NldChfX3BhKHNlc3Npb25fYmxvYikpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6Njg3OlxcdFxcdHN0YXJ0LnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjg4LVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MTU1Nz1fX3Nldl9zZW5kX3N0YXJ0X3F1ZXJ5X3Nlc3Npb25fbGVuZ3RoKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTY2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTU2NzpcXHRwYXJhbXMtXFx1MDAzZXNlc3Npb25fbGVuID0gZGF0YS5zZXNzaW9uX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE1NjgtXFx0aWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoYXJncC1cXHUwMDNlZGF0YSksIHBhcmFtcyxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MTU3NT1zdGF0aWMgaW50IHNldl9zZW5kX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTkwLVxcdC8qIGlmIHNlc3Npb25fbGVuIGlzIHplcm8sIHVzZXJzcGFjZSB3YW50cyB0byBxdWVyeSB0aGUgc2Vzc2lvbiBsZW5ndGggKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE1OTE6XFx0aWYgKCFwYXJhbXMuc2Vzc2lvbl9sZW4pXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNTkyLVxcdFxcdHJldHVybiBfX3Nldl9zZW5kX3N0YXJ0X3F1ZXJ5X3Nlc3Npb25fbGVuZ3RoKGt2bSwgYXJncCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5Ni1cXHRpZiAoIXBhcmFtcy5wZGhfY2VydF91YWRkciB8fCAhcGFyYW1zLnBkaF9jZXJ0X2xlbiB8fFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTU5NzpcXHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8IHBhcmFtcy5zZXNzaW9uX2xlbiBcXHUwMDNlIFNFVl9GV19CTE9CX01BWF9TSVpFKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTU5OC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMC1cXHQvKiBhbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIGhvbGQgdGhlIHNlc3Npb24gZGF0YSBibG9iICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjAxOlxcdHNlc3Npb25fZGF0YSA9IGt6YWxsb2MocGFyYW1zLnNlc3Npb25fbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYwMi1cXHRpZiAoIXNlc3Npb25fZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYzNC1cXHRkYXRhLmFtZF9jZXJ0c19sZW4gPSBwYXJhbXMuYW1kX2NlcnRzX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjE2MzU6XFx0ZGF0YS5zZXNzaW9uX2FkZHJlc3MgPSBfX3BzcF9wYShzZXNzaW9uX2RhdGEpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTYzNjpcXHRkYXRhLnNlc3Npb25fbGVuID0gcGFyYW1zLnNlc3Npb25fbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTYzNy1cXHRkYXRhLmhhbmRsZSA9IHRvX2t2bV9zZXZfaW5mbyhrdm0pLVxcdTAwM2VoYW5kbGU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDAtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQxOlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocGFyYW1zLnNlc3Npb25fdWFkZHIpLFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTY0MjpcXHRcXHRcXHRzZXNzaW9uX2RhdGEsIHBhcmFtcy5zZXNzaW9uX2xlbikpIHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE2NDMtXFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMTY0Ny1cXHRwYXJhbXMucG9saWN5ID0gZGF0YS5wb2xpY3k7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxNjQ4OlxcdHBhcmFtcy5zZXNzaW9uX2xlbiA9IGRhdGEuc2Vzc2lvbl9sZW47XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xNjQ5LVxcdGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3AtXFx1MDAzZWRhdGEpLCBcXHUwMDI2cGFyYW1zLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0xNzg5PXN0YXRpYyBpbnQgc2V2X3JlY2VpdmVfc3RhcnQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MDgtXFx0aWYgKCFwYXJhbXMucGRoX3VhZGRyIHx8ICFwYXJhbXMucGRoX2xlbiB8fFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgwOTpcXHQgICAgIXBhcmFtcy5zZXNzaW9uX3VhZGRyIHx8ICFwYXJhbXMuc2Vzc2lvbl9sZW4pXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODEwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODE1LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgxNjpcXHRzZXNzaW9uX2RhdGEgPSBwc3BfY29weV91c2VyX2Jsb2IocGFyYW1zLnNlc3Npb25fdWFkZHIsXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoxODE3OlxcdFxcdFxcdHBhcmFtcy5zZXNzaW9uX2xlbik7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODE4LVxcdGlmIChJU19FUlIoc2Vzc2lvbl9kYXRhKSkge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0xODI3LVxcdHN0YXJ0LnBkaF9jZXJ0X2xlbiA9IHBhcmFtcy5wZGhfbGVuO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyODpcXHRzdGFydC5zZXNzaW9uX2FkZHJlc3MgPSBfX3BzcF9wYShzZXNzaW9uX2RhdGEpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MTgyOTpcXHRzdGFydC5zZXNzaW9uX2xlbiA9IHBhcmFtcy5zZXNzaW9uX2xlbjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTE4MzAtXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jPTI5Mzc9c3RhdGljIHZvaWQgb3BhbF9sb2NrX2NoZWNrX2Zvcl9zYXZlZF9rZXkoc3RydWN0IG9wYWxfZGV2ICpkZXYsXFxuLS1cXG5ibG9jay9zZWQtb3BhbC5jLTI5NjMtXFx0XFx0XFx0XFx0aXRlci1cXHUwMDNlbHIgPT0gbGtfdW5say1cXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5sciBcXHUwMDI2XFx1MDAyNlxcbmJsb2NrL3NlZC1vcGFsLmM6Mjk2NDpcXHRcXHRcXHRcXHRpdGVyLVxcdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkua2V5X2xlbiBcXHUwMDNlIDApIHtcXG5ibG9jay9zZWQtb3BhbC5jLTI5NjUtXFx0XFx0XFx0bGtfdW5say1cXHUwMDNlc2Vzc2lvbi5vcGFsX2tleS5rZXlfbGVuID1cXG5ibG9jay9zZWQtb3BhbC5jOjI5NjY6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW47XFxuYmxvY2svc2VkLW9wYWwuYy0yOTY3LVxcdFxcdFxcdG1lbWNweShsa191bmxrLVxcdTAwM2VzZXNzaW9uLm9wYWxfa2V5LmtleSxcXG5ibG9jay9zZWQtb3BhbC5jOjI5Njg6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleSxcXG5ibG9jay9zZWQtb3BhbC5jOjI5Njk6XFx0XFx0XFx0XFx0aXRlci1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmtleV9sZW4pO1xcbmJsb2NrL3NlZC1vcGFsLmMtMjk3MC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmM9MzI1OT1ib29sIG9wYWxfdW5sb2NrX2Zyb21fc3VzcGVuZChzdHJ1Y3Qgb3BhbF9kZXYgKmRldilcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzI4MC1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRmFpbGVkIHRvIHVubG9jayBMUiAlaGh1IHdpdGggc3VtICVkXFxcXG5cXFwiLFxcbmJsb2NrL3NlZC1vcGFsLmM6MzI4MTpcXHRcXHRcXHRcXHQgc3VzcGVuZC1cXHUwMDNldW5say5zZXNzaW9uLm9wYWxfa2V5LmxyLFxcbmJsb2NrL3NlZC1vcGFsLmM6MzI4MjpcXHRcXHRcXHRcXHQgc3VzcGVuZC1cXHUwMDNldW5say5zZXNzaW9uLnN1bSk7XFxuYmxvY2svc2VkLW9wYWwuYy0zMjgzLVxcdFxcdFxcdHdhc19mYWlsdXJlID0gdHJ1ZTtcXG4tLVxcbmJsb2NrL3NlZC1vcGFsLmMtMzI4Ni1cXHRcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IE9QQUxfRkxfTUJSX0VOQUJMRUQpIHtcXG5ibG9jay9zZWQtb3BhbC5jOjMyODc6XFx0XFx0XFx0cmV0ID0gX19vcGFsX3NldF9tYnJfZG9uZShkZXYsIFxcdTAwMjZzdXNwZW5kLVxcdTAwM2V1bmxrLnNlc3Npb24ub3BhbF9rZXkpO1xcbmJsb2NrL3NlZC1vcGFsLmMtMzI4OC1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jPTQ3PXN0YXRpYyBpbnQgc3RtMzJfZGJnX3B0YV9vcGVuX3Nlc3Npb24odTMyICppZClcXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX2RiZ19idXMuYy02My1cXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM6NjQ6XFx0KmlkID0gc2Vzc19hcmcuc2Vzc2lvbjtcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM9NzQ9c3RhdGljIGludCBzdG0zMl9kYmdfYnVzX2dyYW50X2FjY2VzcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqY3RybCwgdTMyIGRiZ19wcm9maWxlKVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfZGJnX2J1cy5jLTg4LVxcdGludl9hcmcuZnVuYyA9IFBUQV9DTURfR1JBTlRfREJHX0FDQ0VTUztcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmM6ODk6XFx0aW52X2FyZy5zZXNzaW9uID0gc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2J1cy9zdG0zMl9kYmdfYnVzLmMtOTAtXFx0aW52X2FyZy5udW1fcGFyYW1zID0gMTtcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM9NzM9c3RhdGljIHNpemVfdCBnZXRfb3B0ZWVfcm5nX2RhdGEoc3RydWN0IG9wdGVlX3JuZ19wcml2YXRlICpwdnRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtODYtXFx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9FTlRST1BZO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6ODc6XFx0aW52X2FyZy5zZXNzaW9uID0gcHZ0X2RhdGEtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy04OC1cXHRpbnZfYXJnLm51bV9wYXJhbXMgPSA0O1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYz0xNzY9c3RhdGljIGludCBnZXRfb3B0ZWVfcm5nX2luZm8oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0xODYtXFx0aW52X2FyZy5mdW5jID0gVEFfQ01EX0dFVF9STkdfSU5GTztcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jOjE4NzpcXHRpbnZfYXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMTg4LVxcdGludl9hcmcubnVtX3BhcmFtcyA9IDQ7XFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jPTIxMT1zdGF0aWMgaW50IG9wdGVlX3JuZ19wcm9iZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKnJuZ19kZXZpY2UpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTIzNi1cXHR9XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYzoyMzc6XFx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yMzgtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1My1vdXRfc2VzczpcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jOjI1NDpcXHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jLTI1NS1vdXRfY3R4Olxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYz0yNjE9c3RhdGljIHZvaWQgb3B0ZWVfcm5nX3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKnRlZV9kZXYpXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vcHRlZS1ybmcuYy0yNjIte1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmM6MjYzOlxcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb3B0ZWUtcm5nLmMtMjY0LVxcdHRlZV9jbGllbnRfY2xvc2VfY29udGV4dChwdnRfZGF0YS5jdHgpO1xcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM9NDE1NT1zdGF0aWMgaW50IGhhbmRsZV9sYW5fZ2V0X21zZ19yc3Aoc3RydWN0IGlwbWlfc21pICppbnRmLFxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMtNDE3Ny1cXHRsYW5fYWRkci5hZGRyX3R5cGUgPSBJUE1JX0xBTl9BRERSX1RZUEU7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmM6NDE3ODpcXHRsYW5fYWRkci5zZXNzaW9uX2hhbmRsZSA9IG1zZy1cXHUwMDNlcnNwWzRdO1xcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jLTQxNzktXFx0bGFuX2FkZHIucmVtb3RlX1NXSUQgPSBtc2ctXFx1MDAzZXJzcFs4XTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYz0yMzk9c3RhdGljIHZvaWQgdHBtX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtLWNoaXAuYy0yNDctXFx0a2ZyZWUoY2hpcC1cXHUwMDNld29ya19zcGFjZS5jb250ZXh0X2J1Zik7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0tY2hpcC5jOjI0ODpcXHRrZnJlZShjaGlwLVxcdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmKTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbS1jaGlwLmMtMjQ5LSNpZmRlZiBDT05GSUdfVENHX1RQTTJfSE1BQ1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9MzA2PWludCB0cG0yX3ByZXBhcmVfc3BhY2Uoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBzdHJ1Y3QgdHBtX3NwYWNlICpzcGFjZSwgdTggKmNtZCxcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTMyMC1cXHQgICAgICAgc2l6ZW9mKHNwYWNlLVxcdTAwM2Vjb250ZXh0X3RibCkpO1xcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jOjMyMTpcXHRtZW1jcHkoXFx1MDAyNmNoaXAtXFx1MDAzZXdvcmtfc3BhY2Uuc2Vzc2lvbl90YmwsIFxcdTAwMjZzcGFjZS1cXHUwMDNlc2Vzc2lvbl90YmwsXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtMzIyLVxcdCAgICAgICBzaXplb2Yoc3BhY2UtXFx1MDAzZXNlc3Npb25fdGJsKSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy0zMjQtXFx0ICAgICAgIHNwYWNlLVxcdTAwM2VidWZfc2l6ZSk7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6MzI1OlxcdG1lbWNweShjaGlwLVxcdTAwM2V3b3JrX3NwYWNlLnNlc3Npb25fYnVmLCBzcGFjZS1cXHUwMDNlc2Vzc2lvbl9idWYsXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtMzI2LVxcdCAgICAgICBzcGFjZS1cXHUwMDNlYnVmX3NpemUpO1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM9NTQwPWludCB0cG0yX2NvbW1pdF9zcGFjZShzdHJ1Y3QgdHBtX2NoaXAgKmNoaXAsIHN0cnVjdCB0cG1fc3BhY2UgKnNwYWNlLFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmMtNTcwLVxcdCAgICAgICBzaXplb2Yoc3BhY2UtXFx1MDAzZWNvbnRleHRfdGJsKSk7XFxuZHJpdmVycy9jaGFyL3RwbS90cG0yLXNwYWNlLmM6NTcxOlxcdG1lbWNweShcXHUwMDI2c3BhY2UtXFx1MDAzZXNlc3Npb25fdGJsLCBcXHUwMDI2Y2hpcC1cXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX3RibCxcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzItXFx0ICAgICAgIHNpemVvZihzcGFjZS1cXHUwMDNlc2Vzc2lvbl90YmwpKTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtMi1zcGFjZS5jLTU3NC1cXHQgICAgICAgc3BhY2UtXFx1MDAzZWJ1Zl9zaXplKTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYzo1NzU6XFx0bWVtY3B5KHNwYWNlLVxcdTAwM2VzZXNzaW9uX2J1ZiwgY2hpcC1cXHUwMDNld29ya19zcGFjZS5zZXNzaW9uX2J1ZixcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbTItc3BhY2UuYy01NzYtXFx0ICAgICAgIHNwYWNlLVxcdTAwM2VidWZfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jPTQ1PXN0YXRpYyBpbnQgZnRwbV90ZWVfdHBtX29wX3NlbmQoc3RydWN0IHRwbV9jaGlwICpjaGlwLCB1OCAqYnVmLCBzaXplX3QgYnVmc2l6LFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy02OS1cXHRcXHQuZnVuYyA9IEZUUE1fT1BURUVfVEFfU1VCTUlUX0NPTU1BTkQsXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYzo3MDpcXHRcXHQuc2Vzc2lvbiA9IHB2dF9kYXRhLVxcdTAwM2VzZXNzaW9uLFxcbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmMtNzEtXFx0XFx0Lm51bV9wYXJhbXMgPSA0LFxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYz0xNzI9c3RhdGljIGludCBmdHBtX3RlZV9wcm9iZV9nZW5lcmljKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX2Z0cG1fdGVlLmMtMjA4LVxcdH1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9mdHBtX3RlZS5jOjIwOTpcXHRwdnRfZGF0YS1cXHUwMDNlc2Vzc2lvbiA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9jaGFyL3RwbS90cG1fZnRwbV90ZWUuYy0yMTAtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM9NDA4NT1zdGF0aWMgaW50IGdlbmVyaWNfY3JhX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTA2LVxcdGF0b21pY19pbmMoXFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50KTtcXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDEwNzpcXHRhdG9taWNfaW5jKFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTA4LVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYmNtL2NpcGhlci5jPTQxOTY9c3RhdGljIHZvaWQgZ2VuZXJpY19jcmFfZXhpdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTk3LXtcXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDE5ODpcXHRhdG9taWNfZGVjKFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQpO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MTk5LX1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYz00MzM3PXN0YXRpYyB2b2lkIHNwdV9jb3VudGVyc19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmMtNDM0MS1cXG5kcml2ZXJzL2NyeXB0by9iY20vY2lwaGVyLmM6NDM0MjpcXHRhdG9taWNfc2V0KFxcdTAwMjZpcHJvY19wcml2LnNlc3Npb25fY291bnQsIDApO1xcbmRyaXZlcnMvY3J5cHRvL2JjbS9jaXBoZXIuYy00MzQzLVxcdGF0b21pY19zZXQoXFx1MDAyNmlwcm9jX3ByaXYuc3RyZWFtX2NvdW50LCAwKTtcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYz0xMDk9c3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9pbml0X3Nlc3Npb24oXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTc4LVxcdGlmIChlbmNyeXB0KVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoxNzk6XFx0XFx0Y3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQgPSBsZTY0X3RvX2NwdShpbnB1dC1cXHUwMDNlc2Vzc2lvbl9pZCk7XFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTE4MC1cXHRlbHNlXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjE4MTpcXHRcXHRjdHgtXFx1MDAzZWRlY19zZXNzX2luZm8uc2Vzc2lvbl9pZCA9IGxlNjRfdG9fY3B1KGlucHV0LVxcdTAwM2VzZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jPTE5MD1zdGF0aWMgaW50IHZpcnRpb19jcnlwdG9fYWxnX3NrY2lwaGVyX2Nsb3NlX3Nlc3Npb24oXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMjE3LVxcdGlmIChlbmNyeXB0KVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMTg6XFx0XFx0ZGVzdHJveV9zZXNzaW9uLVxcdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMTktXFx0ZWxzZVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzoyMjA6XFx0XFx0ZGVzdHJveV9zZXNzaW9uLVxcdTAwM2VzZXNzaW9uX2lkID0gY3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VkZWNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0yMjEtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM9MzIxPV9fdmlydGlvX2NyeXB0b19za2NpcGhlcl9kb19yZXEoc3RydWN0IHZpcnRpb19jcnlwdG9fc3ltX3JlcXVlc3QgKnZjX3N5bV9yZXEsXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMzY5LVxcdGlmICh2Y19zeW1fcmVxLVxcdTAwM2VlbmNyeXB0KSB7XFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jOjM3MDpcXHRcXHRyZXFfZGF0YS1cXHUwMDNlaGVhZGVyLnNlc3Npb25faWQgPVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzozNzE6XFx0XFx0XFx0Y3B1X3RvX2xlNjQoY3R4LVxcdTAwM2VlbmNfc2Vzc19pbmZvLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYy0zNzItXFx0XFx0cmVxX2RhdGEtXFx1MDAzZWhlYWRlci5vcGNvZGUgPVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jLTM3NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX3NrY2lwaGVyX2FsZ3MuYzozNzU6XFx0XFx0cmVxX2RhdGEtXFx1MDAzZWhlYWRlci5zZXNzaW9uX2lkID1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmM6Mzc2OlxcdFxcdFxcdGNwdV90b19sZTY0KGN0eC1cXHUwMDNlZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19za2NpcGhlcl9hbGdzLmMtMzc3LVxcdFxcdHJlcV9kYXRhLVxcdTAwM2VoZWFkZXIub3Bjb2RlID1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTE2MD1zdGF0aWMgaW50IG9wZW5fc2Vzc2lvbihzdHJ1Y3Qgc2NtaV9vcHRlZV9hZ2VudCAqYWdlbnQsIHUzMiAqdGVlX3Nlc3Npb24pXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0xNzUtXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM6MTc2OlxcdCp0ZWVfc2Vzc2lvbiA9IGFyZy5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTE3Ny1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jPTE4Nj1zdGF0aWMgaW50IGdldF9jYXBhYmlsaXRpZXMoc3RydWN0IHNjbWlfb3B0ZWVfYWdlbnQgKmFnZW50KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmMtMTk4LVxcdGFyZy5mdW5jID0gUFRBX1NDTUlfQ01EX0NBUEFCSUxJVElFUztcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoxOTk6XFx0YXJnLnNlc3Npb24gPSB0ZWVfc2Vzc2lvbjtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yMDAtXFx0YXJnLm51bV9wYXJhbXMgPSAxO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjI1PXN0YXRpYyBpbnQgZ2V0X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTIzOC1cXHRhcmcuZnVuYyA9IFBUQV9TQ01JX0NNRF9HRVRfQ0hBTk5FTDtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyMzk6XFx0YXJnLnNlc3Npb24gPSBjaGFubmVsLVxcdTAwM2V0ZWVfc2Vzc2lvbjtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yNDAtXFx0YXJnLm51bV9wYXJhbXMgPSAxO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS90cmFuc3BvcnRzL29wdGVlLmM9MjYwPXN0YXRpYyBpbnQgaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2My1cXHRcXHQuZnVuYyA9IFBUQV9TQ01JX0NNRF9QUk9DRVNTX1NNVF9DSEFOTkVMLFxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jOjI2NDpcXHRcXHQuc2Vzc2lvbiA9IGNoYW5uZWwtXFx1MDAzZXRlZV9zZXNzaW9uLFxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvdHJhbnNwb3J0cy9vcHRlZS5jLTI2NS1cXHRcXHQubnVtX3BhcmFtcyA9IDEsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYz0yODM9c3RhdGljIGludCBpbnZva2VfcHJvY2Vzc19tc2dfY2hhbm5lbChzdHJ1Y3Qgc2NtaV9vcHRlZV9jaGFubmVsICpjaGFubmVsLCBzaXplX3QgbXNnX3NpemUpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODYtXFx0XFx0LmZ1bmMgPSBQVEFfU0NNSV9DTURfUFJPQ0VTU19NU0dfQ0hBTk5FTCxcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYzoyODc6XFx0XFx0LnNlc3Npb24gPSBjaGFubmVsLVxcdTAwM2V0ZWVfc2Vzc2lvbixcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL3RyYW5zcG9ydHMvb3B0ZWUuYy0yODgtXFx0XFx0Lm51bV9wYXJhbXMgPSAzLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jPTY2PXN0YXRpYyB2b2lkIHByZXBhcmVfYXJncyhpbnQgY21kLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTczLVxcdGFyZy1cXHUwMDNlZnVuYyA9IGNtZDtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM6NzQ6XFx0YXJnLVxcdTAwM2VzZXNzaW9uID0gcHZ0X2RhdGEuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtNzUtXFx0YXJnLVxcdTAwM2VudW1fcGFyYW1zID0gTUFYX1RFRV9QQVJBTV9BUlJZX01FTUI7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MTg0PXN0YXRpYyBpbnQgdGVlX2JueHRfZndfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMTAtXFx0fVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMTE6XFx0cHZ0X2RhdGEuc2Vzc2lvbl9pZCA9IHNlc3NfYXJnLnNlc3Npb247XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIxMi1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yMjYtb3V0X3Nlc3M6XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jOjIyNzpcXHR0ZWVfY2xpZW50X2Nsb3NlX3Nlc3Npb24ocHZ0X2RhdGEuY3R4LCBwdnRfZGF0YS5zZXNzaW9uX2lkKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmMtMjI4LW91dF9jdHg6XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM9MjM0PXN0YXRpYyB2b2lkIHRlZV9ibnh0X2Z3X3JlbW92ZShzdHJ1Y3QgdGVlX2NsaWVudF9kZXZpY2UgKmJueHRfZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzNi1cXHR0ZWVfc2htX2ZyZWUocHZ0X2RhdGEuZndfc2htX3Bvb2wpO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYzoyMzc6XFx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbl9pZCk7XFxuZHJpdmVycy9maXJtd2FyZS9icm9hZGNvbS90ZWVfYm54dF9mdy5jLTIzOC1cXHR0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQocHZ0X2RhdGEuY3R4KTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYz0yNDI9c3RhdGljIHZvaWQgdGVlX2JueHRfZndfc2h1dGRvd24oc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICpibnh0X2RldmljZSlcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDQtXFx0dGVlX3NobV9mcmVlKHB2dF9kYXRhLmZ3X3NobV9wb29sKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2Jyb2FkY29tL3RlZV9ibnh0X2Z3LmM6MjQ1OlxcdHRlZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbihwdnRfZGF0YS5jdHgsIHB2dF9kYXRhLnNlc3Npb25faWQpO1xcbmRyaXZlcnMvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuYy0yNDYtXFx0dGVlX2NsaWVudF9jbG9zZV9jb250ZXh0KHB2dF9kYXRhLmN0eCk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jPTUxPXN0YXRpYyBlZmlfc3RhdHVzX3QgdGVlX21tX2NvbW11bmljYXRlKHZvaWQgKmNvbW1fYnVmLCBzaXplX3QgZHNpemUpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTc2LVxcdGFyZy5mdW5jID0gUFRBX1NUTU1fQ01EX0NPTU1VTklDQVRFO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6Nzc6XFx0YXJnLnNlc3Npb24gPSBwdnRfZGF0YS5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNzgtXFx0YXJnLm51bV9wYXJhbXMgPSA0O1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MTE9c3RhdGljIHZvaWQgdGVlX3N0bW1fZWZpX2Nsb3NlX3Nlc3Npb24odm9pZCAqZGF0YSlcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9zdG1tL3RlZV9zdG1tX2VmaS5jLTUxMi17XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYzo1MTM6XFx0dGVlX2NsaWVudF9jbG9zZV9zZXNzaW9uKHB2dF9kYXRhLmN0eCwgcHZ0X2RhdGEuc2Vzc2lvbik7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy01MTQtfVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYz01MzE9c3RhdGljIGludCB0ZWVfc3RtbV9lZmlfcHJvYmUoc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlICp0ZWVfZGV2KVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvc3RtbS90ZWVfc3RtbV9lZmkuYy01NTQtXFx0fVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmM6NTU1OlxcdHB2dF9kYXRhLnNlc3Npb24gPSBzZXNzX2FyZy5zZXNzaW9uO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3N0bW0vdGVlX3N0bW1fZWZpLmMtNTU2LVxcdHB2dF9kYXRhLmRldiA9IGRldjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNjM1PXN0YXRpYyB2b2lkIHBzcF9wcmVwX3RhX3VubG9hZF9jbWRfYnVmKHN0cnVjdCBwc3BfZ2Z4X2NtZF9yZXNwICpjbWQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTYzOC1cXHRjbWQtXFx1MDAzZWNtZF9pZCA9IEdGWF9DTURfSURfVU5MT0FEX1RBO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYzoxNjM5OlxcdGNtZC1cXHUwMDNlY21kLmNtZF91bmxvYWRfdGEuc2Vzc2lvbl9pZCA9IHNlc3Npb25faWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE2NDAtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jPTE3MzU9c3RhdGljIHZvaWQgcHNwX3ByZXBfdGFfaW52b2tlX2NtZF9idWYoc3RydWN0IHBzcF9nZnhfY21kX3Jlc3AgKmNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYy0xNzM5LVxcdGNtZC1cXHUwMDNlY21kX2lkXFx0XFx0XFx0XFx0PSBHRlhfQ01EX0lEX0lOVk9LRV9DTUQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jOjE3NDA6XFx0Y21kLVxcdTAwM2VjbWQuY21kX2ludm9rZV9jbWQuc2Vzc2lvbl9pZFxcdD0gc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc0MS1cXHRjbWQtXFx1MDAzZWNtZC5jbWRfaW52b2tlX2NtZC50YV9jbWRfaWRcXHQ9IHRhX2NtZF9pZDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYz0xNzYzPWludCBwc3BfdGFfbG9hZChzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwgc3RydWN0IHRhX2NvbnRleHQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmMtMTc4OS1cXHRpZiAoIXJldClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHNwLmM6MTc5MDpcXHRcXHRjb250ZXh0LVxcdTAwM2VzZXNzaW9uX2lkID0gY21kLVxcdTAwM2VyZXNwLnNlc3Npb25faWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jLTE3OTEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MjUyPWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2NyZWF0ZV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0yNzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjI3ODpcXHRoZGNwLVxcdTAwM2VhdXRoLmlkID0gaGRjcF9jbWQtXFx1MDAzZW91dF9tc2cuaGRjcDFfY3JlYXRlX3Nlc3Npb24uc2Vzc2lvbl9oYW5kbGU7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz0yOTQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDFfZGVzdHJveV9zZXNzaW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMDUtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMwNjpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2Rlc3Ryb3lfc2Vzc2lvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXFx1MDAzZWF1dGguaWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTMwNy1cXHRoZGNwX2NtZC1cXHUwMDNlY21kX2lkID0gVEFfSERDUF9DT01NQU5EX19IRENQMV9ERVNUUk9ZX1NFU1NJT047XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MzI4PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX3ZhbGlkYXRlX3J4KHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjMzODpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2ZpcnN0X3BhcnRfYXV0aGVudGljYXRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVxcdTAwM2VhdXRoLmlkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zMzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9MzY5PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy0zODItXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjM4MzpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX2VuYWJsZV9lbmNyeXB0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtMzg0LVxcdGhkY3BfY21kLVxcdTAwM2VjbWRfaWQgPSBUQV9IRENQX0NPTU1BTkRfX0hEQ1AxX0VOQUJMRV9FTkNSWVBUSU9OO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTM5OT1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV92YWxpZGF0ZV9rc3ZsaXN0X3ZwKHN0cnVjdCBtb2RfaGRjcCAqaGRjcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy00MDgtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjQwOTpcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AxX3NlY29uZF9wYXJ0X2F1dGhlbnRpY2F0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDEwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTQ0MD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMV9lbmFibGVfZHBfc3RyZWFtX2VuY3J5cHRpb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDU4OlxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDU5LVxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cXHUwMDNlZGlzcGxheXNbaV0uaW5kZXg7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9NDc3PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AxX2xpbmtfbWFpbnRlbmFuY2Uoc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTQ4Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NDg4OlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDFfZ2V0X2VuY3J5cHRpb25fc3RhdHVzLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNDg5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTUwMz1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9jcmVhdGVfc2Vzc2lvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQzLVxcdGVsc2VcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NTQ0OlxcdFxcdGhkY3AtXFx1MDAzZWF1dGguaWQgPSBoZGNwX2NtZC1cXHUwMDNlb3V0X21zZy5oZGNwMl9jcmVhdGVfc2Vzc2lvbl92Mi5zZXNzaW9uX2hhbmRsZTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTQ1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jPTU1MD1lbnVtIG1vZF9oZGNwX3N0YXR1cyBtb2RfaGRjcF9oZGNwMl9kZXN0cm95X3Nlc3Npb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTU2MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6NTYxOlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfZGVzdHJveV9zZXNzaW9uLnNlc3Npb25faGFuZGxlID0gaGRjcC1cXHUwMDNlYXV0aC5pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtNTYyLVxcdGhkY3BfY21kLVxcdTAwM2VjbWRfaWQgPSBUQV9IRENQX0NPTU1BTkRfX0hEQ1AyX0RFU1RST1lfU0VTU0lPTjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYz04MzQ9ZW51bSBtb2RfaGRjcF9zdGF0dXMgbW9kX2hkY3BfaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IG1vZF9oZGNwICpoZGNwKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTg0OC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM6ODQ5OlxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfc2V0X2VuY3J5cHRpb24uc2Vzc2lvbl9oYW5kbGUgPSBoZGNwLVxcdTAwM2VhdXRoLmlkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2hkY3AvaGRjcF9wc3AuYy04NTAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmM9OTE4PWVudW0gbW9kX2hkY3Bfc3RhdHVzIG1vZF9oZGNwX2hkY3AyX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbihzdHJ1Y3QgbW9kX2hkY3AgKmhkY3ApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9oZGNwL2hkY3BfcHNwLmMtOTM5LVxcdFxcdGhkY3BfY21kLVxcdTAwM2Vpbl9tc2cuaGRjcDJfZW5hYmxlX2RwX3N0cmVhbV9lbmNyeXB0aW9uLmRpc3BsYXlfaGFuZGxlID0gaGRjcC1cXHUwMDNlZGlzcGxheXNbaV0uaW5kZXg7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jOjk0MDpcXHRcXHRoZGNwX2NtZC1cXHUwMDNlaW5fbXNnLmhkY3AyX2VuYWJsZV9kcF9zdHJlYW1fZW5jcnlwdGlvbi5zZXNzaW9uX2hhbmRsZSA9IGhkY3AtXFx1MDAzZWF1dGguaWQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvaGRjcC9oZGNwX3BzcC5jLTk0MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTUyPXN0YXRpYyBpbnQgcmFzX3BzcF9zeW5jX3N5c3RlbV9yYXNfcHNwX3N0YXR1cyhzdHJ1Y3QgcmFzX2NvcmVfY29udGV4dCAqcmFzX2NvcmUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02Ny1cXHRcXHRcXHR0YV9jdHgtXFx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHN0YXR1cy5pbml0aWFsaXplZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo2ODpcXHRcXHRcXHR0YV9jdHgtXFx1MDAzZXNlc3Npb25faWQgPSBzdGF0dXMuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYy02OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYz0yNDI9c3RhdGljIGludCBzZW5kX3BzcF9jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtMzA4LVxcdHJlc3AtXFx1MDAzZXN0YXR1cyA9IGdmeF9jbWQtXFx1MDAzZXJlc3Auc3RhdHVzO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jOjMwOTpcXHRyZXNwLVxcdTAwM2VzZXNzaW9uX2lkID0gZ2Z4X2NtZC1cXHUwMDNlcmVzcC5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTMxMC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTM1ND1zdGF0aWMgaW50IHNlbmRfcmFzX3RhX3J1bnRpbWVfY21kKHN0cnVjdCByYXNfY29yZV9jb250ZXh0ICpyYXNfY29yZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5MC1cXHRpbnZva2VfY21kLnRhX2NtZF9pZCA9IGNtZF9pZDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzozOTE6XFx0aW52b2tlX2NtZC5zZXNzaW9uX2lkID0gdGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTM5Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jPTQ2NT1zdGF0aWMgaW50IHNlbmRfbG9hZF90YV9md19jbWQoc3RydWN0IHJhc19jb3JlX2NvbnRleHQgKnJhc19jb3JlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9yYXMvcmFzY29yZS9yYXNfcHNwLmMtNTMwLVxcdFxcdHRhX2N0eC1cXHUwMDNldGFfdmVyc2lvbiA9IGZ3X2hkci1cXHUwMDNlaW1hZ2VfdmVyc2lvbjtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo1MzE6XFx0XFx0dGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkID0gcmVzcC5zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTUzMi1cXHRcXHR0YV9jdHgtXFx1MDAzZXJhc190YV9pbml0aWFsaXplZCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYz01Njc9c3RhdGljIGludCB1bmxvYWRfcmFzX3RhX2Zpcm13YXJlKHN0cnVjdCByYXNfY29yZV9jb250ZXh0ICpyYXNfY29yZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTU3Ny1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL3Jhcy9yYXNjb3JlL3Jhc19wc3AuYzo1Nzg6XFx0Y21kX3VubG9hZF90YS5zZXNzaW9uX2lkID0gdGFfY3R4LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvcmFzL3Jhc2NvcmUvcmFzX3BzcC5jLTU3OS1cXHRyZXQgPSBzZW5kX3BzcF9jbWQocmFzX2NvcmUsIEdGWF9DTURfSURfVU5MT0FEX1RBLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvcHhwL2ludGVsX3B4cF90ZWUuYz0zMzA9aW50IGludGVsX3B4cF90ZWVfY21kX2NyZWF0ZV9hcmJfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfcHhwICpweHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jLTM0MS1cXHRtc2dfaW4ucHJvdGVjdGlvbl9tb2RlID0gUFhQNDJfQVJCX1NFU1NJT05fTU9ERV9IRUFWWTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9weHAvaW50ZWxfcHhwX3RlZS5jOjM0MjpcXHRtc2dfaW4uc2Vzc2lvbl9pZCA9IGFyYl9zZXNzaW9uX2lkO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L3B4cC9pbnRlbF9weHBfdGVlLmMtMzQzLVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuYz05NzM9c3RhdGljIHN0cnVjdCBpc2NzaV90cmFuc3BvcnQgaXNjc2lfaXNlcl90cmFuc3BvcnQgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jLTEwMDMtXFx0LyogcmVjb3ZlcnkgKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5jOjEwMDQ6XFx0LnNlc3Npb25fcmVjb3ZlcnlfdGltZWRvdXQgPSBpc2NzaV9zZXNzaW9uX3JlY292ZXJ5X3RpbWVkb3V0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmMtMTAwNS1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jPTIzNDk9c3RhdGljIGludCBfX211c3RfY2hlY2sgaW5pdGlhbGl6ZV96b25lKHN0cnVjdCB2ZG8gKnZkbywgc3RydWN0IGhhc2hfem9uZXMgKnpvbmVzLFxcbi0tXFxuZHJpdmVycy9tZC9kbS12ZG8vZGVkdXBlLmMtMjM4Ni1cXHRcXHRjb250ZXh0LVxcdTAwM2VyZXF1ZXN0LmNhbGxiYWNrID0gZmluaXNoX2luZGV4X29wZXJhdGlvbjtcXG5kcml2ZXJzL21kL2RtLXZkby9kZWR1cGUuYzoyMzg3OlxcdFxcdGNvbnRleHQtXFx1MDAzZXJlcXVlc3Quc2Vzc2lvbiA9IHpvbmVzLVxcdTAwM2VpbmRleF9zZXNzaW9uO1xcbmRyaXZlcnMvbWQvZG0tdmRvL2RlZHVwZS5jLTIzODgtXFx0XFx0bGlzdF9hZGQoXFx1MDAyNmNvbnRleHQtXFx1MDAzZWxpc3RfZW50cnksIFxcdTAwMjZ6b25lLVxcdTAwM2VhdmFpbGFibGUpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9OTI9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3Nlc3Npb25fb3BlbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0KVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE0LVxcdHBhY2tldC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU1lTX1NFU1NJT05fSU5JVDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMTU6XFx0cGFja2V0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMTE2LVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExNy1cXHRpZiAoaW5zdC1cXHUwMDNlZG9tYWluID09IERFQ09ERVIpXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTE4OlxcdFxcdHBhY2tldC5zZXNzaW9uX2RvbWFpbiA9IEhGSV9TRVNTSU9OX1RZUEVfREVDO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTExOS1cXHRlbHNlXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTIwOlxcdFxcdHBhY2tldC5zZXNzaW9uX2RvbWFpbiA9IEhGSV9TRVNTSU9OX1RZUEVfRU5DO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEyMS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoxMjI6XFx0cGFja2V0LnNlc3Npb25fY29kZWMgPSBjb2RlYztcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xMjMtXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0xMzM9c3RhdGljIHZvaWQgaXJpc19oZmlfZ2VuMV9wYWNrZXRfc2Vzc2lvbl9jbWQoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTEzOC1cXHRwYWNrZXQtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gcHR5cGU7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6MTM5OlxcdHBhY2tldC1cXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy0xNDAtfVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MTg4PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9zZXNzaW9uX3N0b3Aoc3RydWN0IGlyaXNfaW5zdCAqaW5zdCwgdTMyIHBsYW5lKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjA2LVxcdFxcdFxcdGZsdXNoX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GTFVTSDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzoyMDc6XFx0XFx0XFx0Zmx1c2hfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjA4LVxcdFxcdFxcdGZsdXNoX3BrdC5mbHVzaF90eXBlID0gZmx1c2hfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTI3ND1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfcXVldWVfaW5wdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgxLVxcdFxcdGNvbV9pcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjI4MjpcXHRcXHRjb21faXBfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjgzLVxcdFxcdGNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVxcdTAwM2V0aW1lc3RhbXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMjk4LVxcdFxcdHVuY29tX2lwX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9FTVBUWV9CVUZGRVI7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6Mjk5OlxcdFxcdHVuY29tX2lwX3BrdC5zaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTMwMC1cXHRcXHR1bmNvbV9pcF9wa3QudGltZV9zdGFtcF9oaSA9IHVwcGVyXzMyX2JpdHMoYnVmLVxcdTAwM2V0aW1lc3RhbXApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9MzE2PXN0YXRpYyBpbnQgaXJpc19oZmlfZ2VuMV9xdWV1ZV9vdXRwdXRfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzIxLVxcdG9wX3BrdC5zaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9GSUxMX0JVRkZFUjtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzozMjI6XFx0b3BfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzIzLVxcdG9wX3BrdC5vdXRwdXRfdGFnID0gYnVmLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTMzOT1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfcXVldWVfaW50ZXJuYWxfYnVmZmVyKHN0cnVjdCBpcmlzX2luc3QgKmluc3QsIHN0cnVjdCBpcmlzX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtMzUxLVxcdGludF9wa3QtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1NFVF9CVUZGRVJTO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjM1MjpcXHRpbnRfcGt0LVxcdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTM1My1cXHRpbnRfcGt0LVxcdTAwM2VidWZmZXJfc2l6ZSA9IGJ1Zi1cXHUwMDNlYnVmZmVyX3NpemU7XFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYz0zOTQ9c3RhdGljIGludCBpcmlzX2hmaV9nZW4xX3Nlc3Npb25fdW5zZXRfYnVmZmVycyhzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCBzdHJ1Y3QgaXJpc19idWZmZXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxMi1cXHRwa3QtXFx1MDAzZXNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX1JFTEVBU0VfQlVGRkVSUztcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0MTM6XFx0cGt0LVxcdTAwM2VzaGRyLnNlc3Npb25faWQgPSBpbnN0LVxcdTAwM2VzZXNzaW9uX2lkO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQxNC1cXHRwa3QtXFx1MDAzZWJ1ZmZlcl9zaXplID0gYnVmLVxcdTAwM2VidWZmZXJfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jPTQ1Mz1zdGF0aWMgaW50IGlyaXNfaGZpX2dlbjFfc2Vzc2lvbl9kcmFpbihzdHJ1Y3QgaXJpc19pbnN0ICppbnN0LCB1MzIgcGxhbmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00NTktXFx0XFx0aXBfcGt0LnNoZHIuaGRyLnBrdF90eXBlID0gSEZJX0NNRF9TRVNTSU9OX0VNUFRZX0JVRkZFUjtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYzo0NjA6XFx0XFx0aXBfcGt0LnNoZHIuc2Vzc2lvbl9pZCA9IGluc3QtXFx1MDAzZXNlc3Npb25faWQ7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmMtNDYxLVxcdFxcdGlwX3BrdC5mbGFncyA9IEhGSV9CVUZGRVJGTEFHX0VPUztcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jLTQ3MS1cXHRcXHRpcF9wa3Quc2hkci5oZHIucGt0X3R5cGUgPSBIRklfQ01EX1NFU1NJT05fRU1QVFlfQlVGRkVSO1xcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzL2lyaXNfaGZpX2dlbjFfY29tbWFuZC5jOjQ3MjpcXHRcXHRpcF9wa3Quc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00NzMtXFx0XFx0aXBfcGt0LmZsYWdzID0gSEZJX0JVRkZFUkZMQUdfRU9TO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM9NDgzPWlyaXNfaGZpX2dlbjFfcGFja2V0X3Nlc3Npb25fc2V0X3Byb3BlcnR5KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfcHJvcGVydHlfcGt0ICpwYWNrZXQsXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00ODktXFx0cGFja2V0LVxcdTAwM2VzaGRyLmhkci5wa3RfdHlwZSA9IEhGSV9DTURfU0VTU0lPTl9TRVRfUFJPUEVSVFk7XFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL2lyaXMvaXJpc19oZmlfZ2VuMV9jb21tYW5kLmM6NDkwOlxcdHBhY2tldC1cXHUwMDNlc2hkci5zZXNzaW9uX2lkID0gaW5zdC1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vaXJpcy9pcmlzX2hmaV9nZW4xX2NvbW1hbmQuYy00OTEtXFx0cGFja2V0LVxcdTAwM2VudW1fcHJvcGVydGllcyA9IDE7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NTEuNzY3NTgzMjE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTgxMjQ5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlJlZmluaW5nIHRoZSBTZWFyY2ggU3RyYXRlZ3kqKlxuXG5IbW0sIEkgc2VlIEkgd2FzIGluaXRpYWxseSB0b28gYnJvYWQgd2l0aCBteSBzZWFyY2ggZm9yIGBcXC5zZXNzaW9uYC4gVGhhdCBwYXR0ZXJuLCBvZiBjb3Vyc2UsIHdvdWxkIG1hdGNoIG5vdCBqdXN0IHRoZSBzcGVjaWZpYyB2YXJpYWJsZSBvciBrZXkgSSdtIGludGVyZXN0ZWQgaW4sIGJ1dCAqYW55KiBpbnN0YW5jZSBvZiBgLnNlc3Npb25gLCBsaWtlIGluIHNvbWV0aGluZyB3aXRoIGEgZ2VuZXJhbCBzdHJ1Y3R1cmUuIFNvIHRoYXQgaW5pdGlhbCBzZWFyY2ggbWlnaHQgaGF2ZSB5aWVsZGVkIGlycmVsZXZhbnQgcmVzdWx0cy4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZS4gTGV0J3MgdHJ5IG5hcnJvd2luZyBpdCBkb3duLiBNeSBvYmplY3RpdmUgaXMgdG8gZmluZCBpbnN0YW5jZXMgdGhhdCBleHBsaWNpdGx5IHJlbGF0ZSB0byBgYXJncy5zZXNzaW9uYCwgb3IgcGVyaGFwcyBhbiBlcXVpdmFsZW50IHN0cnVjdHVyZSBhY2Nlc3NlZCB3aXRoIGAtXHUwMDNlYC4gVGhlcmVmb3JlLCBJJ2xsIHJldmlzZSBteSBzZWFyY2ggdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGBhcmdzXFwuc2Vzc2lvbmAgb3IgYGFyZ3MtXHUwMDNlc2Vzc2lvbmAuIFRoYXQgc2hvdWxkIHByb3ZpZGUgbW9yZSBmb2N1c2VkIGFuZCByZWxldmFudCByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU0MSwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUxOjU1LjI2NTcxMTAyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjIxOTQzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcmdzXFxcXC5zZXNzaW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL25mcy9uZnM0cHJvYy5jPTg0NTQ9aW50IG5mczRfcHJvY19iaW5kX29uZV9jb25uX3RvX3Nlc3Npb24oc3RydWN0IHJwY19jbG50ICpjbG50LFxcbi0tXFxuZnMvbmZzL25mczRwcm9jLmMtODQ4MS1cXG5mcy9uZnMvbmZzNHByb2MuYzo4NDgyOlxcdG5mczRfY29weV9zZXNzaW9uaWQoXFx1MDAyNmFyZ3Muc2Vzc2lvbmlkLCBcXHUwMDI2Y2xwLVxcdTAwM2VjbF9zZXNzaW9uLVxcdTAwM2VzZXNzX2lkKTtcXG5mcy9uZnMvbmZzNHByb2MuYy04NDgzLVxcdGlmICghKGNscC1cXHUwMDNlY2xfc2Vzc2lvbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBTRVNTSU9ONF9CQUNLX0NIQU4pKVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0yMzA9aW50IGx1b19wcmVzZXJ2ZV9maWxlKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LCB1NjQgdG9rZW4sIGludCBmZClcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg2LVxcdGFyZ3MuaGFuZGxlciA9IGZoO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6Mjg3OlxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjg4LVxcdGFyZ3MuZmlsZSA9IGZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTMzND12b2lkIGx1b19maWxlX3VucHJlc2VydmVfZmlsZXMoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQpXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0NC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNDU6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNDYtXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM2OD1zdGF0aWMgaW50IGx1b19maWxlX2ZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM3OC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzk6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zODAtXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM5Mj1zdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTQwMC1cXHRcXHRhcmdzLmhhbmRsZXIgPSBsdW9fZmlsZS1cXHUwMDNlZmg7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzo0MDE6XFx0XFx0YXJncy5zZXNzaW9uID0gbHVvX3Nlc3Npb25fZnJvbV9maWxlX3NldChmaWxlX3NldCk7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy00MDItXFx0XFx0YXJncy5maWxlID0gbHVvX2ZpbGUtXFx1MDAzZWZpbGU7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTU1Nj1pbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTkzLVxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU5NDpcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTU5NS1cXHRhcmdzLnNlcmlhbGl6ZWRfZGF0YSA9IGx1b19maWxlLVxcdTAwM2VzZXJpYWxpemVkX2RhdGE7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTYxNz1zdGF0aWMgaW50IGx1b19maWxlX2Nhbl9maW5pc2hfb25lKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0LFxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy02MjctXFx0XFx0YXJncy5oYW5kbGVyID0gbHVvX2ZpbGUtXFx1MDAzZWZoO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI4OlxcdFxcdGFyZ3Muc2Vzc2lvbiA9IGx1b19zZXNzaW9uX2Zyb21fZmlsZV9zZXQoZmlsZV9zZXQpO1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI5LVxcdFxcdGFyZ3MuZmlsZSA9IGx1b19maWxlLVxcdTAwM2VmaWxlO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02Mzg9c3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQ1LVxcdGFyZ3MuaGFuZGxlciA9IGx1b19maWxlLVxcdTAwM2VmaDtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjY0NjpcXHRhcmdzLnNlc3Npb24gPSBsdW9fc2Vzc2lvbl9mcm9tX2ZpbGVfc2V0KGZpbGVfc2V0KTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Ny1cXHRhcmdzLmZpbGUgPSBsdW9fZmlsZS1cXHUwMDNlZmlsZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDI6NTE6NTguMTE3OTM2OTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NDY0MzM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFwiTGl2ZXVwZGF0ZVwiIFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgc2Vzc2lvbmAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3NgLiBSaWdodCBub3csIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IG5vbmUgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMgYXJlIGFjdHVhbGx5ICp1c2luZyogZWl0aGVyIGBhcmdzLVx1MDAzZXNlc3Npb25gIG9yIGBhcmdzLnNlc3Npb25gLiBJIHNlZSB0aGUgYWRkaXRpb24gb2YgdGhpcyBmaWVsZCwgdGhlIHBvcHVsYXRpb24gd2l0aGluIGBsdW9fZmlsZS5jYCwgYW5kIHRoZSBhZGRpdGlvbiBvZiBgbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZ2AgYW5kIGBsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZ2AsIHdoaWNoIGFyZSBleHBvcnRlZCwgYnV0IHNlZW0gdW51c2VkLiBTbywgdGhlIHBhdGNoLCBhdCB0aGlzIHBvaW50LCBhcHBlYXJzIHRvIGJlIGRlYWQgY29kZSwgb3IgbWF5YmUgYW4gQVBJIGhvb2sgZm9yIHNvbWUgZnV0dXJlIGltcGxlbWVudGF0aW9uLiBJdCBkb2Vzbid0IG1vZGlmeSBhbnkgY3VycmVudCBiZWhhdmlvciBvciBleGVjdXRpb24gZmxvdyBpbiBhbnkgd2F5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUga2VybmVsIGNvZGUgZm9yIGFueSBleGlzdGluZyBmaWxlIGhhbmRsZXJzIGFuZCB0aGVpciBhY2Nlc3Mgb2YgYSBgc2Vzc2lvbmAgdmFyaWFibGUgd2l0aG91dCB0aGUgYGFyZ3MuYCBvciBgYXJncy1cdTAwM2VgIHNjb3BlIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gc29tZSBvdGhlciBjaGFuZ2UuIEkgd2FudCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgbWlzc2luZyBhbiBpbmRpcmVjdCB1c2FnZSBvZiB0aGUgbmV3IG1lbWJlci4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoYXQgYHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJnc2Agc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGluIHRob3NlIGZpbGUgaGFuZGxlciBkZWZpbml0aW9ucy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg5NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MjowMi44MTI1ODI1MThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDg1NTkzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTIzPXN0cnVjdCBmaWxlO1xcbi0tXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjUtLyoqXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6MjY6ICogc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIC0gQXJndW1lbnRzIGZvciBmaWxlIG9wZXJhdGlvbiBjYWxsYmFja3MuXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtMjctICogQGhhbmRsZXI6ICAgICAgICAgIFRoZSBmaWxlIGhhbmRsZXIgYmVpbmcgY2FsbGVkLlxcbi0tXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmgtNDYtICovXFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6NDc6c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIHtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC00OC1cXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmhhbmRsZXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC03My0gKiBBbGwgb3BlcmF0aW9ucyAoZXhjZXB0IGNhbl9wcmVzZXJ2ZSkgcmVjZWl2ZSBhIHBvaW50ZXIgdG8gYVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc0OiAqICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGNvbnRhaW5pbmcgdGhlIG5lY2Vzc2FyeSBjb250ZXh0LlxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTc1LSAqL1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oPTc2PXN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oLTc4LVxcdFxcdFxcdCAgICAgc3RydWN0IGZpbGUgKmZpbGUpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjc5OlxcdGludCAoKnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgwOlxcdHZvaWQgKCp1bnByZXNlcnZlKShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbGl2ZXVwZGF0ZS5oOjgxOlxcdGludCAoKmZyZWV6ZSkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaDo4MjpcXHR2b2lkICgqdW5mcmVlemUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODM6XFx0aW50ICgqcmV0cmlldmUpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODQ6XFx0Ym9vbCAoKmNhbl9maW5pc2gpKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9saXZldXBkYXRlLmg6ODU6XFx0dm9pZCAoKmZpbmlzaCkoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKTtcXG5pbmNsdWRlL2xpbnV4L2xpdmV1cGRhdGUuaC04Ni1cXHR1bnNpZ25lZCBsb25nICgqZ2V0X2lkKShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTIzMD1pbnQgbHVvX3ByZXNlcnZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbiwgaW50IGZkKVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMjMxLXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjIzMjpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTIzMy1cXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX2hhbmRsZXIgKmZoO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz0zMzQ9dm9pZCBsdW9fZmlsZV91bnByZXNlcnZlX2ZpbGVzKHN0cnVjdCBsdW9fZmlsZV9zZXQgKmZpbGVfc2V0KVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zMzgtXFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZmaWxlX3NldC1cXHUwMDNlZmlsZXNfbGlzdCkpIHtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjMzOTpcXHRcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM0MC1cXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM9MzY4PXN0YXRpYyBpbnQgbHVvX2ZpbGVfZnJlZXplX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtMzc1LVxcdGlmIChsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlZnJlZXplKSB7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozNzY6XFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zNzctXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTM5Mj1zdGF0aWMgdm9pZCBsdW9fZmlsZV91bmZyZWV6ZV9vbmUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTM5Ny1cXHRpZiAobHVvX2ZpbGUtXFx1MDAzZWZoLVxcdTAwM2VvcHMtXFx1MDAzZXVuZnJlZXplKSB7XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYzozOTg6XFx0XFx0c3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzIGFyZ3MgPSB7MH07XFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYy0zOTktXFxuLS1cXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jPTU1Nj1pbnQgbHVvX3JldHJpZXZlX2ZpbGUoc3RydWN0IGx1b19maWxlX3NldCAqZmlsZV9zZXQsIHU2NCB0b2tlbixcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNTU4LXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjU1OTpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTU2MC1cXHRzdHJ1Y3QgbHVvX2ZpbGUgKmx1b19maWxlO1xcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02MTc9c3RhdGljIGludCBsdW9fZmlsZV9jYW5fZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI0LVxcdGlmIChsdW9fZmlsZS1cXHUwMDNlZmgtXFx1MDAzZW9wcy1cXHUwMDNlY2FuX2ZpbmlzaCkge1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmM6NjI1OlxcdFxcdHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyBhcmdzID0gezB9O1xcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjI2LVxcbi0tXFxua2VybmVsL2xpdmV1cGRhdGUvbHVvX2ZpbGUuYz02Mzg9c3RhdGljIHZvaWQgbHVvX2ZpbGVfZmluaXNoX29uZShzdHJ1Y3QgbHVvX2ZpbGVfc2V0ICpmaWxlX3NldCxcXG4tLVxcbmtlcm5lbC9saXZldXBkYXRlL2x1b19maWxlLmMtNjQwLXtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jOjY0MTpcXHRzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgYXJncyA9IHswfTtcXG5rZXJuZWwvbGl2ZXVwZGF0ZS9sdW9fZmlsZS5jLTY0Mi1cXG4tLVxcbm1tL21lbWZkX2x1by5jPTIzMT1zdGF0aWMgdm9pZCBtZW1mZF9sdW9fdW5wcmVzZXJ2ZV9mb2xpb3Moc3RydWN0IGtob192bWFsbG9jICpraG9fdm1hbGxvYyxcXG4tLVxcbm1tL21lbWZkX2x1by5jLTI1Ny1cXG5tbS9tZW1mZF9sdW8uYzoyNTg6c3RhdGljIGludCBtZW1mZF9sdW9fcHJlc2VydmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTI1OS17XFxuLS1cXG5tbS9tZW1mZF9sdW8uYy0zMjMtXFxubW0vbWVtZmRfbHVvLmM6MzI0OnN0YXRpYyBpbnQgbWVtZmRfbHVvX2ZyZWV6ZShzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MgKmFyZ3MpXFxubW0vbWVtZmRfbHVvLmMtMzI1LXtcXG4tLVxcbm1tL21lbWZkX2x1by5jLTM0MS1cXG5tbS9tZW1mZF9sdW8uYzozNDI6c3RhdGljIHZvaWQgbWVtZmRfbHVvX3VucHJlc2VydmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTM0My17XFxuLS1cXG5tbS9tZW1mZF9sdW8uYz0zNjI9c3RhdGljIHZvaWQgbWVtZmRfbHVvX2Rpc2NhcmRfZm9saW9zKGNvbnN0IHN0cnVjdCBtZW1mZF9sdW9fZm9saW9fc2VyICpmb2xpb3Nfc2VyLFxcbi0tXFxubW0vbWVtZmRfbHVvLmMtMzg2LVxcbm1tL21lbWZkX2x1by5jOjM4NzpzdGF0aWMgdm9pZCBtZW1mZF9sdW9fZmluaXNoKHN0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncyAqYXJncylcXG5tbS9tZW1mZF9sdW8uYy0zODgte1xcbi0tXFxubW0vbWVtZmRfbHVvLmM9NDE3PXN0YXRpYyBpbnQgbWVtZmRfbHVvX3JldHJpZXZlX2ZvbGlvcyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbm1tL21lbWZkX2x1by5jLTUxNy1cXG5tbS9tZW1mZF9sdW8uYzo1MTg6c3RhdGljIGludCBtZW1mZF9sdW9fcmV0cmlldmUoc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzICphcmdzKVxcbm1tL21lbWZkX2x1by5jLTUxOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjA1LjYyMTE0NjIwMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTIwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQuXG5cbioqRGVlcCBEaXZlIGludG8gYG1tL21lbWZkX2x1by5jYCBhbmQgaXRzIENvbm5lY3Rpb24gdG8gU2Vzc2lvbiBBcmd1bWVudHMqKlxuXG5BbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGhlcmUgaXMgcHJldHR5IGZvY3VzZWQuIFdlJ3JlIGxvb2tpbmcgYXQgdGhlIHNvbGUgZmlsZSBoYW5kbGVyLCBgbW0vbWVtZmRfbHVvLmNgLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGtlZXBzIHRoZSBzY29wZSBtYW5hZ2VhYmxlLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZDogZG9lcyB0aGlzIGhhbmRsZXIsIHRoZSBvbmUgYW5kIG9ubHkgZm9yIHRoaXMgdGFzaywgYWN0dWFsbHkgbGV2ZXJhZ2UgYGFyZ3MtXHUwMDNlc2Vzc2lvbmA/IFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIHdlJ3JlIGludGVyZXN0ZWQgaW4sIHRoZSBjZW50cmFsIHBpZWNlIG9mIHRoaXMgcHV6emxlLiBJdCdzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gSSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjIwNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjA4LjkzNjY3MTIwMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTAyNTI3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXNzaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbWZkX2x1by5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwMjo1MjowOS4wNjAxODQ2NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyNTU2MzE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnVzZWQgQVBJIGluIGEgTGl2ZXVwZGF0ZSBDb250ZXh0KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGZyYW5rbHksIGl0J3MgYSBiaXQgb2YgYSBoZWFkLXNjcmF0Y2hlci4gSXQgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgYHNlc3Npb25gIGZpZWxkIHRvIHRoZSBgc3RydWN0IGxpdmV1cGRhdGVfZmlsZV9vcF9hcmdzYCBzdHJ1Y3R1cmUuIEFsb25nc2lkZSB0aGF0LCB3ZSd2ZSBnb3QgdHdvIG5ldyBmdW5jdGlvbnMsIGBsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nYCBhbmQgYGxpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nYC4gQm90aCBvZiB0aGVzZSBhcmUgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIHRoZXkncmUgdGVjaG5pY2FsbHkgYXZhaWxhYmxlIGZvciBvdGhlciBrZXJuZWwgbW9kdWxlcyB0byBjYWxsLiBIb3dldmVyLCBhbmQgaGVyZSdzIHRoZSBraWNrZXIsICp0aGV5IGFyZW4ndCBhY3R1YWxseSB1c2VkIGFueXdoZXJlIHdpdGhpbiB0aGUga2VybmVsIGNvZGUqLiBOb3doZXJlIVxuXG5UaGUgYHNlc3Npb25gIGZpZWxkIGl0c2VsZiwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgYWxzbyBwb3B1bGF0ZWQgYnV0IGNvbXBsZXRlbHkgaWdub3JlZCBieSBhbnkgb2YgdGhlIGV4aXN0aW5nIGZpbGUgaGFuZGxlcnMuIEl0J3MganVzdC4uLnRoZXJlLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUgd2VudCB0aHJvdWdoIHRoZSBlZmZvcnQgb2YgYWRkaW5nIGFsbCB0aGlzIG5ldyBBUEkgYW5kIGRhdGEgc3RydWN0dXJlIG1vZGlmaWNhdGlvbiwgYnV0IGNvbXBsZXRlbHkgbmVnbGVjdGVkIHRvICp1c2UqIGFueSBvZiBpdC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIG15IHByb2Zlc3Npb25hbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWxpdHkgdGhhdCdzIHN1YmplY3QgdG8gZnV6emluZy4gSXQncyBzaW1wbHkgY3JlYXRpbmcgdW51c2VkIEFQSSBhbmQgZmllbGRzLiBTbywgSSdtIGdvaW5nIHRvIGhhdmUgdG8gZmxhZyB0aGlzIG9uZSBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgZG9lc24ndCBwcmVzZW50IGFueSBpbW1lZGlhdGUgYXR0YWNrIHN1cmZhY2Ugb3IgY2hhbmdlIHRvIHRoZSBleGlzdGluZyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MzEsIk91dHB1dFRva2VucyI6MTQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDAyOjUyOjEzLjk4NTc1MDY4MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgJ3Nlc3Npb24nIGZpZWxkIHRvICdzdHJ1Y3QgbGl2ZXVwZGF0ZV9maWxlX29wX2FyZ3MnIGFuZCB0d28gbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyAnbGl2ZXVwZGF0ZV9nZXRfZmlsZV9pbmNvbWluZycgYW5kICdsaXZldXBkYXRlX2dldF90b2tlbl9vdXRnb2luZycuIEhvd2V2ZXIsIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwsIGFuZCB0aGUgbmV3ICdzZXNzaW9uJyBmaWVsZCBpcyBwb3B1bGF0ZWQgYnV0IG5ldmVyIHJlYWQgYnkgYW55IGZpbGUgaGFuZGxlciAoZS5nLiwgaW4gbW0vbWVtZmRfbHVvLmMpLiBUaHVzLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bnVzZWQgQVBJIGFuZCBkZWFkIGNvZGUsIG1ha2luZyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyAnc2Vzc2lvbicgZmllbGQgdG8gJ3N0cnVjdCBsaXZldXBkYXRlX2ZpbGVfb3BfYXJncycgYW5kIHR3byBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zICdsaXZldXBkYXRlX2dldF9maWxlX2luY29taW5nJyBhbmQgJ2xpdmV1cGRhdGVfZ2V0X3Rva2VuX291dGdvaW5nJy4gSG93ZXZlciwgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCwgYW5kIHRoZSBuZXcgJ3Nlc3Npb24nIGZpZWxkIGlzIHBvcHVsYXRlZCBidXQgbmV2ZXIgcmVhZCBieSBhbnkgZmlsZSBoYW5kbGVyIChlLmcuLCBpbiBtbS9tZW1mZF9sdW8uYykuIFRodXMsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVudXNlZCBBUEkgYW5kIGRlYWQgY29kZSwgbWFraW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow98gkq[1] Phase: Running StartedAt: 2026-07-25 02:52:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gkq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 02:52:37 +0000 UTC FinishedAt: 2026-07-25 02:52:42 +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,}