Name: series-workflowgwkj8 Phase: Failed StartedAt: 2026-08-14 16:17:05 +0000 UTC FinishedAt: 2026-08-14 16:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgwkj8[0] Phase: Succeeded StartedAt: 2026-08-14 16:17:05 +0000 UTC FinishedAt: 2026-08-14 16:21:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgwkj8[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 16:17:05 +0000 UTC FinishedAt: 2026-08-14 16:21:17 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDliMjBiOWRlOGExMDcwYzFlZDY2NTY4NWY3OGRlNzYxODc2ODk0NTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNjoxOToyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcbmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuQEAgLTIwLDI5ICYjNDM7MjAsMzAgQEBcbiAjaW5jbHVkZSBcJiMzNDtkcGxsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyZWdzLmhcJiMzNDtcbiBcbi0jZGVmaW5lIFpMX0NISVBfSU5GTyhfaWQsIF9uY2hhbm5lbHMsIF9mbGFncylcdFx0XHRcdFxcXG4tXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XG4mIzQzOyNkZWZpbmUgWkxfQ0hJUF9JTkZPKF9pZCwgX25jaGFubmVscywgX2ZsYWdzLCBfbWluX2ZyZXEpXHRcdFxcXG4mIzQzO1x0eyAuaWQgPSAoX2lkKSwgLm51bV9jaGFubmVscyA9IChfbmNoYW5uZWxzKSwgLmZsYWdzID0gKF9mbGFncyksXHRcXFxuJiM0MztcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHtcbi1cdFpMX0NISVBfSU5GTygweDBFMzAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTQsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTcsIDUsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFGNjAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDJFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDNGQzQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEUzMCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDBFOTMsIDEsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEU5NCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDBFOTYsIDQsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEU5NywgNSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDFFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MUU5NSwgMywgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDFFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MUY2MCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDJFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MkU5NSwgMywgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDJFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4M0ZDNCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiB9O1xuIFxuICNkZWZpbmUgWkxfUkFOR0VfT0ZGU0VUXHRcdDB4ODBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmggYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmhcbmluZGV4IDc4ZGMyMDhmM2VlYTIuLjUxMDE0NDYzMzc3MzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuQEAgLTQyLDExICYjNDM7NDIsMTMgQEAgZW51bSB6bDMwNzN4X2ZsYWdzIHtcbiAgKiBAaWQ6IGNoaXAgSURcbiAgKiBAbnVtX2NoYW5uZWxzOiBudW1iZXIgb2YgRFBMTCBjaGFubmVscyBzdXBwb3J0ZWQgYnkgdGhpcyB2YXJpYW50XG4gICogQGZsYWdzOiBjaGlwIHZhcmlhbnQgZmxhZ3NcbiYjNDM7ICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6XG4gICovXG4gc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHtcbiBcdHUxNlx0XHRpZDtcbiBcdHU4XHRcdG51bV9jaGFubmVscztcbiBcdHVuc2lnbmVkIGxvbmdcdGZsYWdzO1xuJiM0MztcdHUzMlx0XHRtaW5fcmVmX2ZyZXE7XG4gfTtcbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbmluZGV4IDgzYmQzMDI3ZGJhYTEuLmVlMDc3YzNlNjhkYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuQEAgLTI4MSw3ICYjNDM7MjgxLDggQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0c3luY19mcmVxID0gemwzMDczeF9yZWZfZnJlcV9nZXQoc3luY19yZWYpO1xuIFxuIFx0XHQvKiBTeW5jIHNpZ25hbCBtdXN0IGJlIDgga0h6IG9yIGxlc3MgYW5kIGNsb2NrIHJlZmVyZW5jZVxuLVx0XHQgKiBtdXN0IGJlIDEga0h6IG9yIG1vcmUgYW5kIGhpZ2hlciB0aGFuIHRoZSBzeW5jIHNpZ25hbC5cbiYjNDM7XHRcdCAqIG11c3QgbWVldCB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGZyZXF1ZW5jeSByZXF1aXJlbWVudCBhbmQgYmVcbiYjNDM7XHRcdCAqIGhpZ2hlciB0aGFuIHRoZSBzeW5jIHNpZ25hbC5cbiBcdFx0ICovXG4gXHRcdGlmIChzeW5jX2ZyZXEgXHUwMDNlIDgwMDApIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG5AQCAtMjg5LDkgJiM0MzsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyAxMDAwKSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuLVx0XHRcdFx0ICAgICAgIFwmIzM0O2Nsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlIDEga0h6IG9yIG1vcmVcJiMzNDspO1xuJiM0MztcdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19GTVQoZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0ICAgXCYjMzQ7Y2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgJXUgSHogb3IgbW9yZVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxKTtcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbmluZGV4IGFjOWQ0MWQwZjk3OGUuLmNkY2VkZGNmMzUzZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuY1xuQEAgLTIwLDkgJiM0MzsyMCw5IEBAXG4gICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVja1xuICAqXG4gICogVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLiBGb3IgaW5wdXRcbi0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2Vcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcbi0gKiBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4mIzQzOyAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBpcyBhYm92ZSB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGFuZCBjYW4gYmVcbiYjNDM7ICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XG4mIzQzOyAqIHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWQgc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxuICAqXG4gICogUmV0dXJuOiB0cnVlIGlmIHRoZSBmcmVxdWVuY3kgaXMgdmFsaWQsIGZhbHNlIGlmIG5vdC5cbiAgKi9cbkBAIC0zNiw2ICYjNDM7MzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsXG4gXHRpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVCkge1xuIFx0XHRpbnQgcmM7XG4gXG4mIzQzO1x0XHQvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqL1xuJiM0MztcdFx0aWYgKGZyZXEgXHUwMDNjIHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxKVxuJiM0MztcdFx0XHRnb3RvIGVycl9pbnZfZnJlcTtcbiYjNDM7XG4gXHRcdC8qIENoZWNrIGlmIHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgKi9cbiBcdFx0cmMgPSB6bDMwNzN4X3JlZl9mcmVxX2ZhY3Rvcml6ZShmcmVxLCBOVUxMLCBOVUxMKTtcbiBcdFx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIEkyQy9TUEkgaGFyZHdhcmUgZHJpdmVyLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW4gRFBMTCBuZXRsaW5rIGNhbGxiYWNrcykgYXJlIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkZXZpY2Ugc3VjY2Vzc2Z1bGx5IHByb2Jlcywgd2hpY2ggcmVxdWlyZXMgcmVhZGluZyBhIHZhbGlkIGNoaXAgSUQgZnJvbSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWIyMGI5ZGU4YTEwNzBjMWVkNjY1Njg1Zjc4ZGU3NjE4NzY4OTQ1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE2OjE5OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jCmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMKQEAgLTIwLDI5ICYjNDM7MjAsMzAgQEAKICNpbmNsdWRlICYjMzQ7ZHBsbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmVncy5oJiMzNDsKIAotI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MpCQkJCVwKLQl7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9CiYjNDM7I2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MsIF9taW5fZnJlcSkJCVwKJiM0MzsJeyAuaWQgPSAoX2lkKSwgLm51bV9jaGFubmVscyA9IChfbmNoYW5uZWxzKSwgLmZsYWdzID0gKF9mbGFncyksCVwKJiM0MzsJICAubWluX3JlZl9mcmVxID0gKF9taW5fZnJlcSkgfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHsKLQlaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDBFM0IsIDMsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksCi0JWkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSwKLQlaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDBFOTUsIDMsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksCi0JWkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSwKLQlaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDFFOTMsIDEsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAotCVpMX0NISVBfSU5GTygweDFFOTYsIDQsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDJFOTMsIDEsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAotCVpMX0NISVBfSU5GTygweDJFOTYsIDQsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAogfTsKIAogI2RlZmluZSBaTF9SQU5HRV9PRkZTRVQJCTB4ODAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaAppbmRleCA3OGRjMjA4ZjNlZWEyLi41MTAxNDQ2MzM3NzM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oCkBAIC00MiwxMSAmIzQzOzQyLDEzIEBAIGVudW0gemwzMDczeF9mbGFncyB7CiAgKiBAaWQ6IGNoaXAgSUQKICAqIEBudW1fY2hhbm5lbHM6IG51bWJlciBvZiBEUExMIGNoYW5uZWxzIHN1cHBvcnRlZCBieSB0aGlzIHZhcmlhbnQKICAqIEBmbGFnczogY2hpcCB2YXJpYW50IGZsYWdzCiYjNDM7ICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6CiAgKi8KIHN0cnVjdCB6bDMwNzN4X2NoaXBfaW5mbyB7CiAJdTE2CQlpZDsKIAl1OAkJbnVtX2NoYW5uZWxzOwogCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CiYjNDM7CXUzMgkJbWluX3JlZl9mcmVxOwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYwpAQCAtMjgxLDcgJiM0MzsyODEsOCBAQCB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldChjb25zdCBzdHJ1Y3QgZHBsbF9waW4gKmRwbGxfcGluLAogCQlzeW5jX2ZyZXEgPSB6bDMwNzN4X3JlZl9mcmVxX2dldChzeW5jX3JlZik7CiAKIAkJLyogU3luYyBzaWduYWwgbXVzdCBiZSA4IGtIeiBvciBsZXNzIGFuZCBjbG9jayByZWZlcmVuY2UKLQkJICogbXVzdCBiZSAxIGtIeiBvciBtb3JlIGFuZCBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuCiYjNDM7CQkgKiBtdXN0IG1lZXQgdGhlIGNoaXAmIzM5O3MgbWluaW11bSBmcmVxdWVuY3kgcmVxdWlyZW1lbnQgYW5kIGJlCiYjNDM7CQkgKiBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuCiAJCSAqLwogCQlpZiAoc3luY19mcmVxICZndDsgODAwMCkgewogCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLApAQCAtMjg5LDkgJiM0MzsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbiwKIAkJCXJjID0gLUVJTlZBTDsKIAkJCWdvdG8gdW5sb2NrOwogCQl9Ci0JCWlmIChyZWZfZnJlcSAmbHQ7IDEwMDApIHsKLQkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKLQkJCQkgICAgICAgJiMzNDtjbG9jayBmcmVxdWVuY3kgbXVzdCBiZSAxIGtIeiBvciBtb3JlJiMzNDspOwomIzQzOwkJaWYgKHJlZl9mcmVxICZsdDsgemxkZXYtJmd0O2luZm8tJmd0O21pbl9yZWZfZnJlcSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssCiYjNDM7CQkJCQkgICAmIzM0O2Nsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlICV1IEh6IG9yIG1vcmUmIzM0OywKJiM0MzsJCQkJCSAgIHpsZGV2LSZndDtpbmZvLSZndDttaW5fcmVmX2ZyZXEpOwogCQkJcmMgPSAtRUlOVkFMOwogCQkJZ290byB1bmxvY2s7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuYwppbmRleCBhYzlkNDFkMGY5NzhlLi5jZGNlZGRjZjM1M2U0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jCkBAIC0yMCw5ICYjNDM7MjAsOSBAQAogICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVjawogICoKICAqIFRoZSBmdW5jdGlvbiBjaGVja3MgdGhlIGdpdmVuIGZyZXF1ZW5jeSBpcyB2YWxpZCBmb3IgdGhlIGRldmljZS4gRm9yIGlucHV0Ci0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2UKLSAqIGZyZXF1ZW5jaWVzLiBGb3Igb3V0cHV0IHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBkaXZpZGVzIGNvbm5lY3RlZAotICogc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLgomIzQzOyAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBpcyBhYm92ZSB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGFuZCBjYW4gYmUKJiM0MzsgKiBmYWN0b3JpemVkIHVzaW5nIHN1cHBvcnRlZCBiYXNlIGZyZXF1ZW5jaWVzLiBGb3Igb3V0cHV0IHBpbnMgaXQgY2hlY2tzIHRoYXQKJiM0MzsgKiB0aGUgZnJlcXVlbmN5IGRpdmlkZXMgY29ubmVjdGVkIHN5bnRoIGZyZXF1ZW5jeSB3aXRob3V0IHJlbWFpbmRlci4KICAqCiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LgogICovCkBAIC0zNiw2ICYjNDM7MzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsCiAJaWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQpIHsKIAkJaW50IHJjOwogCiYjNDM7CQkvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqLwomIzQzOwkJaWYgKGZyZXEgJmx0OyB6bGRldi0mZ3Q7aW5mby0mZ3Q7bWluX3JlZl9mcmVxKQomIzQzOwkJCWdvdG8gZXJyX2ludl9mcmVxOwomIzQzOwogCQkvKiBDaGVjayBpZiB0aGUgZnJlcXVlbmN5IGNhbiBiZSBmYWN0b3JpemVkICovCiAJCXJjID0gemwzMDczeF9yZWZfZnJlcV9mYWN0b3JpemUoZnJlcSwgTlVMTCwgTlVMTCk7CiAJCWlmIChyYykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIERQTEwgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGB6bDMwNzN4YCBEUExMIGRyaXZlci4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgYG1pbl9yZWZfZnJlcWAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm9gLCBhbmQgdGhlbiBwb3B1bGF0aW5nIHRoYXQgZmllbGQgd2l0aGluIHRoZSBgemwzMDczeF9jaGlwX2lkc2AgYXJyYXksIHNwZWNpZmljYWxseSBmb3IgZWFjaCBaTDMwNzN4IGNoaXAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IC0gYWRkaW5nIGNoaXAtc3BlY2lmaWMgcGFyYW1ldGVycyBpcyBnZW5lcmFsbHkgYSBzb3VuZCBhcHByb2FjaCBmb3IgaGFyZHdhcmUgZHJpdmVycywgYWxsb3dpbmcgZm9yIG1vcmUgcHJlY2lzZSBjb250cm9sIGFuZCBjb25maWd1cmF0aW9uLiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIGFuZCBgemwzMDczeF9waW5fY2hlY2tfZnJlcWAgYXJlIHRoZSByZWFsIG1lYXQuIFJlcGxhY2luZyBhIGhhcmRjb2RlZCByZWZlcmVuY2UgZnJlcXVlbmN5IG9mIGAxMDAwYCB3aXRoIGB6bGRldi0mZ3Q7aW5mby0mZ3Q7bWluX3JlZl9mcmVxYCBpcyBjbGVhbmVyIGFuZCB0aGUgZnJlcXVlbmN5IGNoZWNrIGJhc2VkIG9uIHRoaXMgcGFyYW1ldGVyIGlzLCBsb2dpY2FsbHksIHRoZSByaWdodCB0aGluZyB0byBkby4gVGhpcyBjbGVhbnMgdXAgdGhlIGRyaXZlciB0byBtYWtlIGl0IG1vcmUgYWRhcHRhYmxlLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMuIEl0JiMzOTtzIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGFuIEkyQyBvciBTUEkgaW50ZXJmYWNlIHRvIHNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIGlzIHRoYXQgdGhlc2Uga2luZHMgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBhcmUgKnJhcmVseSogZW11bGF0ZWQgcmVhbGlzdGljYWxseSBpbiBRRU1VLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZSB3aXRoIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMuIEhvd2V2ZXIuLi4gd2FpdCBhIHNlY29uZCEgVGhlIHJlZmVyZW5jZSBtZW50aW9ucyB0aGUgRFBMTCBzdWJzeXN0ZW0gYW5kIHRoYXQgaXQgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGlzIGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyISBJIGtub3cgdGhhdCBzb21lIG9mIHRoZXNlIERQTEwgZnVuY3Rpb25zIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggbmV0bGluay4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AgYW5kIGBkcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNgLiBJZiBJIGNhbiBzb21laG93IHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zIHVzaW5nIG5ldGxpbmsgd2l0aG91dCBuZWVkaW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgSSBtaWdodCBoYXZlIGEgZ29vZCBzaG90IGF0IHNpbXVsYXRpbmcgYW5kIGRlYnVnZ2luZyB0aGlzLiBUaGF0IGlzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jPTI1MT1zdGF0aWMgaW50XG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM6MjUyOnpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMjUzLVx0XHRcdFx0ICAgIHZvaWQgKnBpbl9wcml2LFxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0xNTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fb3BzID0ge1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYy0xNTg3LVx0LnJlZl9zeW5jX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfZ2V0LFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jOjE1ODg6XHQucmVmX3N5bmNfc2V0ID0gemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQsXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTU4OS1cdC5zdGF0ZV9vbl9kcGxsX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fc3RhdGVfb25fZHBsbF9nZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFpMMzA3M1ggRFBMTCBQcm9iZSBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjbGVhcmx5IGEgY29tcG9uZW50IG9mIHRoZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBBbmQgdGhvc2Ugb3BlcmF0aW9ucywgdGhlIHdob2xlIGBkcGxsX3Bpbl9vcHNgIHRoaW5nLCBhcmUsIG9yIHNob3VsZCBiZSwgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEUExMIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYXJjaGl0ZWN0dXJlLgoKQnV0IHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOiB0aG9zZSBvcHMsIHRoZSB3aG9sZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIGNhbiYjMzk7dCBiZSByZWdpc3RlcmVkIHVubGVzcyB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSBwcm9iZXMuIFNvLCB0aGUgcHJvYmUgc3VjY2VzcyBpcyBhIHByZXJlcXVpc2l0ZS4gQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhlIGB6bDMwNzN4YCBkcml2ZXImIzM5O3MgcHJvYmluZyBpcyBpbXBsZW1lbnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBmbG93IG5vdy4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCB3b3Jrcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBaTDMwNzN4IFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFpMMzA3M3ggZGV2aWNlIGlzIGluaXRpYWxpemVkLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGRyaXZlciBkaXNjb3ZlcnMgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlLiBTbywgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGZvciB0aGlzIERQTEwsIGFuZCBzcGVjaWZpY2FsbHksIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHByb2JlIHJvdXRpbmVzIHdpdGhpbiB0aGF0IGZpbGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz04MTY9aW50IHpsMzA3M3hfZGV2X3N0YXJ0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIGJvb2wgZnVsbClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYwLVx0XHRpZiAocmMpIHtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo4NjE6XHRcdFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg2Mi1cdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBEUExMJXVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3MC1cdGlmIChyYykge1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjg3MTpcdFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3Mi1cdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdCBmaW5lIHBoYXNlIGNvcnJlY3Rpb25cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05MzktXHRcdGlmIChJU19FUlIoemxkcGxsKSkge1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk0MDpcdFx0XHRkZXZfZXJyX3Byb2JlKHpsZGV2LVx1MDAzZWRldiwgUFRSX0VSUih6bGRwbGwpLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk0MS1cdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBhbGxvYyBEUExMJXVcXG5cJiMzNDssIGkpO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NjAtXHRpZiAocmMpIHtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NjE6XHRcdGRldl9lcnJfcHJvYmUoemxkZXYtXHUwMDNlZGV2LCByYywgXCYjMzQ7RmFpbGVkIHRvIHN0YXJ0IGRldmljZVxcblwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTYyLVx0XHRnb3RvIGVycm9yO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzQtLyoqXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTc1OiAqIHpsMzA3M3hfZGV2X3Byb2JlIC0gaW5pdGlhbGl6ZSB6bDMwNzN4IGRldmljZVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgxLSAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODMte1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDAwLVx0aWYgKGkgPT0gQVJSQVlfU0laRSh6bDMwNzN4X2NoaXBfaWRzKSlcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDAxOlx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwMi1cdFx0XHRcdCAgICAgXCYjMzQ7VW5rbm93biBjaGlwIElEOiAweCUwNHhcXG5cJiMzNDssIGlkKTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAzOC1cdGlmIChyYylcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDM5Olx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNDAtXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIG11dGV4XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA0OS1cdGlmIChyYylcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDUwOlx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTEtXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZsaW5rIGluc3RhbmNlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXCYjMzQ7WkwzMDczWFwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqUHJvYmluZyB0aGUgUHJvYmU6IFVucmF2ZWxpbmcgdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBgemwzMDczeF9kZXZfcHJvYmVgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gTXkgam9iLCByaWdodCBub3csIGlzIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGF0IGNhbGwgb3JpZ2luYXRlcy4gVGhpcyBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgY2hhaW4uIElzIGl0IGEgZGlyZWN0IGNhbGwgZnJvbSBhIGRyaXZlciBjb3JlIGZ1bmN0aW9uLCBvciBpcyB0aGVyZSBzb21lIG90aGVyIGludGVybWVkaWFyeT8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGRldGVjdGlvbiwgZGV2aWNlIGVudW1lcmF0aW9uLCBvciBwZXJoYXBzIGEgc3BlY2lmaWMgdXNlci1zcGFjZSBpbnRlcmFjdGlvbj8gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGUgY2FsbCBpcyBrZXkuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gZGlnIGluLiBJJiMzOTtsbCBzdGFydCB3aXRoIGNyb3NzLXJlZmVyZW5jaW5nIGFuZCBzZWUgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbiBnaXZlIG1lIHNvbWUgY2x1ZXMgYWJvdXQgZnVuY3Rpb24gcG9pbnRlcnMsIG9yIGNhbGxzIHRvIHRoaXMgcHJvYmUgaW4gb3RoZXIgYXJlYXMgb2YgY29kZS4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4X2Rldl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTI3PXpsMzA3M3hfZGV2bV9kcGxsX2luaXQoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk3NTogKiB6bDMwNzN4X2Rldl9wcm9iZSAtIGluaXRpYWxpemUgemwzMDczeCBkZXZpY2VcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzYtICogQHpsZGV2OiBwb2ludGVyIHRvIHpsMzA3M3ggZGV2aWNlXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4MS0gKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5ODI6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXCYjMzQ7WkwzMDczWFwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9OTg9c3RydWN0IHpsMzA3M3hfZGV2ICp6bDMwNzN4X2Rldm1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaDo5OTppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmgtMTAwLVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jPTExPXN0YXRpYyBpbnQgemwzMDczeF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYy0yNC1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jOjI1Olx0cmV0dXJuIHpsMzA3M3hfZGV2X3Byb2JlKHpsZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jLTI2LX1cbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYz0xMT1zdGF0aWMgaW50IHpsMzA3M3hfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3BpLmMtMjQtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYzoyNTpcdHJldHVybiB6bDMwNzN4X2Rldl9wcm9iZSh6bGRldik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYy0yNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGB6bDMwNzN4YCBEZXZpY2UgYW5kIFN5emthbGxlciYjMzk7cyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSYjMzk7cmUgcHJvYmluZyB0aGlzIGB6bDMwNzN4YCBkZXZpY2UsIHNwZWNpZmljYWxseSB0aHJvdWdoIGB6bDMwNzN4X2kyY19wcm9iZWAgYW5kIGB6bDMwNzN4X3NwaV9wcm9iZWAuIFRoZSBjaGFsbGVuZ2UsIGFzIGFsd2F5cywgaXMgUUVNVSBlbXVsYXRpb24uIEkga25vdyB0aGF0IGVtdWxhdGluZyBJMkMgYW5kIFNQSSBpbiBRRU1VIGlzIGEgcGFpbiB1bmxlc3Mgd2UgaGF2ZSBhIHNwZWNpYWxpemVkIGVtdWxhdG9yIG9yIHJlc29ydCB0byBhIGR1bW15IGRyaXZlci4gQnV0IHN5emthbGxlci4uLiBhaCwgc3l6a2FsbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5qZWN0IEkyQyB0cmFmZmljIGRpcmVjdGx5IHRocm91Z2ggYC9kZXYvaTJjLSpgIGlmIGl0IGNhbiBhY3R1YWxseSBicmluZyB0aGUgZGV2aWNlIHRvIGxpZmUuCgpOb3csIHRoZSB0cmlja3kgcGFydCBpcyBnZXR0aW5nIHN5emthbGxlciB0byBpbnN0YW50aWF0ZSB0aGlzIGFyYml0cmFyeSBJMkMvU1BJIGRldmljZS4gSXQgdXN1YWxseSBkb2VzbiYjMzk7dCBkbyB0aGF0IHVubGVzcyBpdCYjMzk7cyBiYWtlZCBpbnRvIHRoZSBkZWZhdWx0IGRldmljZSB0cmVlIG9yIGhhcyBzcGVjaWZpYyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkZXZpY2UuIEhtbSwgd2FpdCBhIG1pbnV0ZSwgSSB0aGluayBzeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBiYXNpYyBJMkMvU1BJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuLi4gYnV0IGl0IHJlcXVpcmVzIHRoZSBkZXZpY2UgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gcHJvYmVkLgoKTGV0IG1lIHJldGhpbmsgdGhhdC4gQ2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB3aXRoIHRoaW5ncyBsaWtlIGBpb2N0bChJMkNfU0xBVkUpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIEkmIzM5O20gcHJldHR5IHN1cmUgSTJDIGRldmljZXMgYXJlIGJyb3VnaHQgdG8gbGlmZSB0aHJvdWdoIHRoZSBzeXNmcyBgbmV3X2RldmljZWAgZW50cnkgb3IgdmlhIHRoZSBkZXZpY2UgdHJlZS4gUmlnaHQsIEkgcmVjYWxsLCBzeXprYWxsZXIgKmNhbiogd3JpdGUgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHRvIGNyZWF0ZSBhbiBJMkMgZGV2aWNlLgoKU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBEb2VzIHN5emthbGxlciBhbHJlYWR5IGhhdmUgdGhlIG5lY2Vzc2FyeSBkZXNjcmlwdGlvbnMgZm9yIHRoZSBgemwzMDczeGA/IFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyB3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMgZGV2aWNlIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgZGF0YWJhc2UuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjEyCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiB0aGUgV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgY2FuJiMzOTt0IGRpcmVjdGx5IHNlYXJjaCBzeXprYWxsZXItc3BlY2lmaWMgc3R1ZmYgKGBzeXMvKmAgb3IgZXhwcmVzc2lvbnMgd2l0aCAmIzM0O3N5el8mIzM0OykuIEZpbmUsIG5vdGVkLiBBbmQgSSBkb24mIzM5O3Qgc2VlIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgIGluIG15IGF2YWlsYWJsZSB0b29scy4gVGhhdCYjMzk7cyBhIGNvbnN0cmFpbnQsIGJ1dCBJIGhhdmUgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBubyBkaXJlY3QgYWNjZXNzIHRvIHRob3NlIHNwZWMgZmlsZXMgZm9yIG5vdy4KCkJ1dCBsZXQmIzM5O3MgcmVmb2N1cyBvbiB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM6IFVTQiBnYWRnZXRzLCBtYWM4MDIxMV9od3NpbSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gd2F0Y2ggb3V0IGZvci4KClRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGlzIGB6bDMwNzN4YCBkcml2ZXIgaXMgYSBwcm9ibGVtLiBJdCYjMzk7cyBhbiBJMkMvU1BJIGRyaXZlciBmb3IgYSBNaWNyb2NoaXAgWkwzMDczeCBEUExMLiBIbW0sIGRvZXMgaXQgbmVlZCBhIHBoeXNpY2FsIGNhcmQ/IENhbiBpdCBiZSB0ZXN0ZWQgaW4gUUVNVT8KCklmIHN5emthbGxlciB3cml0ZXMgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgIHdpdGggJiMzNDt6bDMwNzN4JiMzNDssIEkmIzM5O20gdGhpbmtpbmcgdGhlIEkyQyBjb3JlIHdpbGwgY3JlYXRlIHRoZSBkZXZpY2UgYW5kIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFNvLCB0aGUga2V5IGlzIHdoYXQgaGFwcGVucyBpbnNpZGUgYHpsMzA3M3hfZGV2X3Byb2JlYC4gRG9lcyBpdCB0cnkgdG8gYWNjZXNzIHRoZSBoYXJkd2FyZSBkaXJlY3RseT8gRG9lcyBpdCBjaGVjayBmb3IgdGhlIGhhcmR3YXJlJiMzOTtzIHByZXNlbmNlIGFuZCBmYWlsIGdyYWNlZnVsbHk/IEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB0aGF0IHByb2JlIGZ1bmN0aW9uIHRvIGZpbmQgb3V0LCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kZXZfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTkyNz16bDMwNzN4X2Rldm1fZHBsbF9pbml0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3NC0vKipcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc2LSAqIEB6bGRldjogcG9pbnRlciB0byB6bDMwNzN4IGRldmljZVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTgyOmludCB6bDMwNzN4X2Rldl9wcm9iZShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4My17XG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTQtfVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFwmIzM0O1pMMzA3M1hcJiMzNDspO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgemwzMDczeF9kZXZfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgWkwzMDczeCBkZXZpY2UgaXMgYWN0dWFsbHkgYnJvdWdodCBvbmxpbmUgd2l0aGluIHRoZSBkcml2ZXIuIFRpbWUgdG8gZGlnIGludG8gYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhhdCBgemwzMDczeF9kZXZfcHJvYmVgIGZ1bmN0aW9uLiBJIGV4cGVjdCB0aGlzIGlzIHdoZXJlIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBlcmhhcHMgc29tZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbWFnaWMgaGFwcGVucy4gSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcGxhdGZvcm0gZGV2aWNlLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IHRoZSBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGFueSBzcGVjaWZpYyBjbG9jayBzb3VyY2Ugc2VsZWN0aW9uIG9yIFBMTCBpbml0aWFsaXphdGlvbiBpcyBwZXJmb3JtZWQgaGVyZSwgYXMgdGhhdCYjMzk7cyBvZnRlbiBhIGNydWNpYWwgcGFydCBvZiB0aGVzZSBkcml2ZXJzLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5ODA6XHQgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIFx1MDAzYzAgb24gZXJyb3JcbiA5ODE6XHQgKi9cbiA5ODI6XHRpbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbiA5ODM6XHR7XG4gOTg0Olx0XHR1MTYgaWQsIHJldmlzaW9uLCBmd192ZXI7XG4gOTg1Olx0XHR1bnNpZ25lZCBpbnQgaTtcbiA5ODY6XHRcdHUzMiBjZmdfdmVyO1xuIDk4NzpcdFx0aW50IHJjO1xuIDk4ODpcdFxuIDk4OTpcdFx0LyogUmVhZCBjaGlwIElEICovXG4gOTkwOlx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19JRCwgXHUwMDI2aWQpO1xuIDk5MTpcdFx0aWYgKHJjKVxuIDk5MjpcdFx0XHRyZXR1cm4gcmM7XG4gOTkzOlx0XG4gOTk0Olx0XHQvKiBEZXRlY3QgY2hpcCB2YXJpYW50ICovXG4gOTk1Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHpsMzA3M3hfY2hpcF9pZHMpOyBpJiM0MzsmIzQzOykge1xuIDk5NjpcdFx0XHRpZiAoemwzMDczeF9jaGlwX2lkc1tpXS5pZCA9PSBpZClcbiA5OTc6XHRcdFx0XHRicmVhaztcbiA5OTg6XHRcdH1cbiA5OTk6XHRcbjEwMDA6XHRcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXG4xMDAxOlx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHpsZGV2LVx1MDAzZWRldiwgLUVOT0RFVixcbjEwMDI6XHRcdFx0XHRcdCAgICAgXCYjMzQ7VW5rbm93biBjaGlwIElEOiAweCUwNHhcXG5cJiMzNDssIGlkKTtcbjEwMDM6XHRcbjEwMDQ6XHRcdHpsZGV2LVx1MDAzZWluZm8gPSBcdTAwMjZ6bDMwNzN4X2NoaXBfaWRzW2ldO1xuMTAwNTpcdFxuMTAwNjpcdFx0LyogUmVhZCByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiBhbmQgY3VzdG9tIGNvbmZpZyB2ZXJzaW9uICovXG4xMDA3Olx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuMTAwODpcdFx0aWYgKHJjKVxuMTAwOTpcdFx0XHRyZXR1cm4gcmM7XG4xMDEwOlx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19GV19WRVIsIFx1MDAyNmZ3X3Zlcik7XG4xMDExOlx0XHRpZiAocmMpXG4xMDEyOlx0XHRcdHJldHVybiByYztcbjEwMTM6XHRcdHJjID0gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX0NVU1RPTV9DT05GSUdfVkVSLCBcdTAwMjZjZmdfdmVyKTtcbjEwMTQ6XHRcdGlmIChyYylcbjEwMTU6XHRcdFx0cmV0dXJuIHJjO1xuMTAxNjpcdFxuMTAxNzpcdFx0ZGV2X2RiZyh6bGRldi1cdTAwM2VkZXYsIFwmIzM0O0NoaXBJRCglWCksIENoaXBSZXYoJVgpLCBGd1ZlcigldSlcXG5cJiMzNDssIGlkLFxuMTAxODpcdFx0XHRyZXZpc2lvbiwgZndfdmVyKTtcbjEwMTk6XHRcdGRldl9kYmcoemxkZXYtXHUwMDNlZGV2LCBcJiMzNDtDdXN0b20gY29uZmlnIHZlcnNpb246ICVsdS4lbHUuJWx1LiVsdVxcblwmIzM0OyxcbjEwMjA6XHRcdFx0RklFTERfR0VUKEdFTk1BU0soMzEsIDI0KSwgY2ZnX3ZlciksXG4xMDIxOlx0XHRcdEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGNmZ192ZXIpLFxuMTAyMjpcdFx0XHRGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGNmZ192ZXIpLFxuMTAyMzpcdFx0XHRGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgY2ZnX3ZlcikpO1xuMTAyNDpcdFxuMTAyNTpcdFx0LyogR2VuZXJhdGUgcmFuZG9tIGNsb2NrIElEIGFzIHRoZSBkZXZpY2UgaGFzIG5vdCBzdWNoIHByb3BlcnR5IHRoYXRcbjEwMjY6XHRcdCAqIGNvdWxkIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4gQSB1c2VyIGNhbiBsYXRlciBjaGFuZ2UgdGhpcyB2YWx1ZVxuMTAyNzpcdFx0ICogdXNpbmcgZGV2bGluay5cbjEwMjg6XHRcdCAqL1xuMTAyOTpcdFx0emxkZXYtXHUwMDNlY2xvY2tfaWQgPSBnZXRfcmFuZG9tX3U2NCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFpMMzA3M3ggUHJvYmUgRmFpbHVyZSoqCgpPa2F5LCBzbyB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgZmFpbGluZyB0byBpZGVudGlmeSB0aGUgWkwzMDczeCBjaGlwIGluIHRoZSBRRU1VIGVudmlyb25tZW50LiBJdCB1c2VzIGB6bDMwNzN4X3JlYWRfdTE2YCB0byBmZXRjaCB0aGUgY2hpcCBJRCwgc3BlY2lmaWNhbGx5IHJlYWRpbmcgZnJvbSB0aGUgYFpMX1JFR19JRGAgcmVnaXN0ZXIuIElmIHRoZSByZWFkIGZhaWxzIG9yIHRoZSByZXR1cm5lZCBJRCBpc24mIzM5O3QgaW4gdGhlIGxpc3Qgb2YgdmFsaWQgSURzIGluIGB6bDMwNzN4X2NoaXBfaWRzYCwgdGhlIHByb2JlIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbiBRRU1VLCB3aXRob3V0IGVtdWxhdGluZyB0aGUgaGFyZHdhcmUsIHRoZSBJMkMgcmVhZCBpcyBnb2luZyB0byBmYWxsIGZsYXQsIGxpa2VseSByZXR1cm5pbmcgYW4gZXJyb3Igb3Igc29tZSBnYXJiYWdlIHZhbHVlIHRoYXQgd29uJiMzOTt0IG1hdGNoIGFueSB2YWxpZCBjaGlwIElEIGxpa2UgYDB4MEUzMGAgb3IgYDB4MEUzQmAuCgpCdXQgd2FpdOKApiBjYW4gc3l6a2FsbGVyIGhlbHAgaGVyZT8gV2UgY2FuIG1vY2sgVVNCIGRldmljZXMgd2l0aCBgL2Rldi92aGNpYCBhbmQgV2lGaSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFyZSB0aGVyZSBzaW1pbGFyIG1lY2hhbmlzbXMgZm9yIEkyQz8gSSByZW1lbWJlciBzZWVpbmcgYW4gYGkyYy1zdHViYCwgYnV0IEkgcmVjYWxsIGl0IG5lZWRpbmcgc29tZSBzcGVjaWZpYyBzZXR1cCwgYW5kIEkmIzM5O20gbm90IHN1cmUgaWYgaXQmIzM5O3MgZ2VuZXJhbGx5IHVzZWQgZm9yIGp1c3QgYW55IEkyQyBoYXJkd2FyZS4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzdWFsbHkgbW9jayBhcmJpdHJhcnkgSTJDIGhhcmR3YXJlIHJlZ2lzdGVycyB1bmxlc3MgYSBzcGVjaWZpYyBmdXp6ZXIgaXMgZGVzaWduZWQgZm9yIGl0LCBzbyBteSBpbml0aWFsIHRob3VnaHQgaXMgbm8uCgpIb3dldmVyLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGVyZSAqaXMqIHRoYXQgSTJDIHN0dWIgZHJpdmVyLCBgZHJpdmVycy9pMmMvaTJjLXN0dWIuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgdXNlIHRoYXQgdG8gZW11bGF0ZSBJMkMgY2hpcHMsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgbGltaXRlZCB0byBzaW1wbGUgU01CdXMgY29tbWFuZHMsIGFuZCB5b3UgaGF2ZSB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIGNoaXAgYWRkcmVzc2VzLgoKUmlnaHQsIHRoaXMgbGVhZHMgdG8gdGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBgemwzMDczeGAgZHJpdmVyIHVzZSBhIHJlZ21hcD8gSWYgaXQgZG9lcywgdGhlcmUmIzM5O3MgYSBiZXR0ZXIgY2hhbmNlIG9mIGludGVyYWN0aW5nIHdpdGggaXQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIGZvciBgemwzMDczeF9yZWFkX3UxNmAgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHVuZGVybmVhdGguIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRvIGdldCB0aGlzIHByb2JlIHdvcmtpbmcgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4X3JlYWRfdTE2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz0xODA9aW50IHpsMzA3M3hfd3JpdGVfdTgoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTggdmFsKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODUtLyoqXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTg2OiAqIHpsMzA3M3hfcmVhZF91MTYgLSByZWFkIHZhbHVlIGZyb20gMTZiaXQgcmVnaXN0ZXJcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODctICogQHpsZGV2OiB6bDMwNzN4IGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTE5NC0gKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxOTU6aW50IHpsMzA3M3hfcmVhZF91MTYoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTk2LXtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTgyPWludCB6bDMwNzN4X2Rldl9wcm9iZShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODktXHQvKiBSZWFkIGNoaXAgSUQgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5OTA6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19JRCwgXHUwMDI2aWQpO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk5MS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwNi1cdC8qIFJlYWQgcmV2aXNpb24sIGZpcm13YXJlIHZlcnNpb24gYW5kIGN1c3RvbSBjb25maWcgdmVyc2lvbiAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMDc6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMDgtXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwOS1cdFx0cmV0dXJuIHJjO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMTA6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19GV19WRVIsIFx1MDAyNmZ3X3Zlcik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAxMS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9MTQxPWludCB6bDMwNzN4X3JlYWRfdTgoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTggKnZhbCk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg6MTQyOmludCB6bDMwNzN4X3JlYWRfdTE2KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHUxNiAqdmFsKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xNDMtaW50IHpsMzA3M3hfcmVhZF91MzIoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTMyICp2YWwpO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYz0yNT16bDMwNzN4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTMzLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jOjM0Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFx1MDAyNmlkKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy0zNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmMtNDQtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NDU6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTQ2LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01NS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYzo1NjpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXHUwMDI2ZndfdmVyKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01Ny1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM9MTI1Nz16bDMwNzN4X2RwbGxfdGVtcF9nZXQoY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsLCB2b2lkICpkcGxsX3ByaXYsXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTEyNjYtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM6MTI2NzpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0RJRV9URU1QX1NUQVRVUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYy0xMjY4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jPTc5PWludCB6bDMwNzN4X3JlZl9zdGF0ZV9mZXRjaChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1OCBpbmRleClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTUtXHQvKiBSZWFkIGZyZXF1ZW5jeSByZWxhdGVkIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTE2Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVGX0ZSRVFfQkFTRSwgXHUwMDI2cmVmLVx1MDAzZWZyZXFfYmFzZSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTctXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTgtXHRcdHJldHVybiByYztcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjExOTpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9GUkVRX01VTFQsIFx1MDAyNnJlZi1cdTAwM2VmcmVxX211bHQpO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIwLVx0aWYgKHJjKVxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIxLVx0XHRyZXR1cm4gcmM7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYzoxMjI6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRUZfUkFUSU9fTSwgXHUwMDI2cmVmLVx1MDAzZWZyZXFfcmF0aW9fbSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjMtXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjQtXHRcdHJldHVybiByYztcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjEyNTpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9SQVRJT19OLCBcdTAwMjZyZWYtXHUwMDNlZnJlcV9yYXRpb19uKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNi1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jPTIzPWludCB6bDMwNzN4X3N5bnRoX3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNDUtXHQgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmM6NDY6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19TWU5USF9GUkVRX0JBU0UsIFx1MDAyNnN5bnRoLVx1MDAzZWZyZXFfYmFzZSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jLTQ3LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTMtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU0Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfU1lOVEhfRlJFUV9NLCBcdTAwMjZzeW50aC1cdTAwM2VmcmVxX20pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01NS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jLTU3LVxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYzo1ODpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTiwgXHUwMDI2c3ludGgtXHUwMDNlZnJlcV9uKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTktXHRpZiAocmMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzA4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgemwzMDczeF9yZWFkX3UxNmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBJZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcmVzZW50LCB0aGUgcmVhZCBmYWlscywgbmF0dXJhbGx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGV0aGVyIHN5emthbGxlciBjYW4gbW9jayB0aGUgYHJlZ21hcGAgaW50ZXJmYWNlLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzZSBga3VuaXRgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCByZWxpZXMgb24gc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCB0byBtb2NrIEkyQyBkZXZpY2VzLiBIb3dldmVyLCBgaTJjLXN0dWJgIGhhcyBrbm93biBsaW1pdGF0aW9ucyBpbiB0ZXJtcyBvZiByZWdpc3RlciBhbmQgdmFsdWUgc3VwcG9ydC4KClVzdWFsbHksIHN5emthbGxlciBhdm9pZHMgdGhlc2Uga2luZHMgb2Ygc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyB2aXJ0dWFsaXplZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgdGhlIG90aGVycy4gQW5kIHRoZW4gdGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuIFdoaWxlIHRoaXMgaXMgYW4gSTJDL1NQSSBkcml2ZXIsIG5vdCBQQ0llLCB0aGUgY29yZSBwcmluY2lwbGUgaXMgdGhlIHNhbWUuIEl0IG5lZWRzIHRoZSBNaWNyb2NoaXAgWkwzMDczeCBEUExMIGNoaXAgdG8gZnVuY3Rpb24uCgpTbywgaXMgdGhlcmUgKmFueSogd2F5IHRvIHJlYWNoIGB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldGAgd2l0aG91dCB0aGUgaGFyZHdhcmU/IE5vLCB0aGF0IGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgdmlhIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHNlcXVlbmNlLiBUaGUgRFBMTCBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBzdGFydGluZyBmcm9tIGB6bDMwNzN4X2Rldl9wcm9iZWAsIHdoaWNoIGNhbGxzIGB6bDMwNzN4X2Rldm1fZHBsbF9pbml0YCwgd2hpY2ggdGhlbiBjYWxscyBgZHBsbF9kZXZpY2VfcmVnaXN0ZXJgLiBJZiBgemwzMDczeF9kZXZfcHJvYmVgIGZhaWxzLCBzdWNoIGFzIGR1cmluZyB0aGUgY2hpcCBJRCByZWFkLCB0aGUgRFBMTCBkZXZpY2UgaXMgKm5ldmVyKiByZWdpc3RlcmVkIGFuZCB0aHVzIHRob3NlIG5ldGxpbmsgY2FsbGJhY2tzIGNhbiYjMzk7dCBiZSByZWFjaGVkLiBUaGF0IG1lYW5zIEkgY2FuJiMzOTt0IGV2ZW4gdG91Y2ggdGhlIHJlbGV2YW50IGNvZGUuIEp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYHpsMzA3M3hfZGV2bV9kcGxsX2luaXRgIGlzbiYjMzk7dCBjYWxsZWQgYW55d2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kZXZtX2RwbGxfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTI2PXN0YXRpYyBpbnRcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5Mjc6emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTkyOC17XG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTk4Mj1pbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA0Mi1cdC8qIFJlZ2lzdGVyIERQTEwgY2hhbm5lbHMgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDQzOlx0cmMgPSB6bDMwNzN4X2Rldm1fZHBsbF9pbml0KHpsZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ0LVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBaTDMwNzN4IENvZGUgRXhlY3V0aW9uKioKCk9rYXksIHNvIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBhbmQgYHpsMzA3M3hfcGluX2NoZWNrX2ZyZXFgIGNvZGUsIGlzIG9ubHkgZXZlciBlbnRlcmVkIHRocm91Z2ggdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEFuZCB0aGF0IHByb2JlIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgSTJDIG9yIFNQSSBwcm9iZSBmdW5jdGlvbnMsIGFzc3VtaW5nIHRoZSBaTDMwNzN4IGRldmljZSBpcyBwcmVzZW50IGFuZCBjb3JyZWN0bHkgaWRlbnRpZmllZC4KClRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSwgYXMgZmFyIGFzIEkga25vdyDigJMgYW5kIEkmIzM5O3ZlIGJlZW4gYXJvdW5kIHRoZSBibG9jaywg4oCTIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGlzIHNwZWNpZmljIE1pY3JvY2hpcCBEUExMIGNoaXAsIHRoZSBaTDMwNzN4LiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB0eXBpY2FsIHNldHVwIG9mIEdDRSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkZXZpY2UgcHJvYmUgaXMgZ29pbmcgdG8gZmxhdCBvdXQgZmFpbC4gV2hpY2ggbWVhbnMgdGhlIGNvZGUgSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQsIHRoZSBtb2RpZmllZCBiaXRzLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBzaW11bGF0ZWQgZW52aXJvbm1lbnRzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhvdWdoLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgdG8gc2VlIGlmIGFueW9uZSBoYXMgd3JpdHRlbiBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGlzLiBZb3UgbmV2ZXIga25vdy4gSXQgd291bGQgYmUgZ29vZCB0byBoYXZlIGFuIGFuc3dlciB0byBteSBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pMmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJMkMgRW11bGF0aW9uIOKAkyBBIFJvYWRibG9jayoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGVzaWduLCBhbmQgdGhlIGVsZXBoYW50IGluIHRoZSByb29tIGp1c3Qgc2xhcHBlZCBtZS4gTm8gSTJDIGVtdWxhdGlvbi4gKkRhbW4uKiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2UgdGhhdCBmb3IgY29uZmlndXJhdGlvbiBhbmQgbWF5YmUgZXZlbiBzb21lIGJhc2ljIGRhdGEgdHJhbnNmZXIgaWYgd2Ugd2VyZSBpbiBhIGJpbmQuIEJ1dCBub3BlLCBpdCYjMzk7cyBub3Qgc3VwcG9ydGVkLiBUaGlzIGltbWVkaWF0ZWx5IGNoYW5nZXMgbXkgYXBwcm9hY2gsIGxpa2VseSBhZGRpbmcgc2lnbmlmaWNhbnQgY29tcGxleGl0eS4gVGhpcyB3aWxsIHJlcXVpcmUgYSBkZWVwZXIgZGl2ZSB0byBmaWd1cmUgb3V0IHdoYXQgYWx0ZXJuYXRpdmUgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgYXJlIGF2YWlsYWJsZSwgb3IgcGVyaGFwcyBJJiMzOTtsbCBuZWVkIHRvIGRlc2lnbiBhIGN1c3RvbSBzb2x1dGlvbiBpZiBhbGwgZWxzZSBmYWlscy4gTm90IGlkZWFsLCBidXQgd2UgaGF2ZSB0byB3b3JrIHdpdGhpbiB0aGUgY29uc3RyYWludHMuIFRoaXMmIzM5O2xsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3psMzA3M3gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU4NgoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGVtdWxhdGUgU1BJIGZvciB0aGlzIGRyaXZlci4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IGEgZHJpdmVyIGZvciBhIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgY2hpcC4gSSBrbm93IG15IGZpZWxkIC0gc3RhbmRhcmQgUUVNVSBqdXN0IGRvZXNuJiMzOTt0IGN1dCBpdCBmb3IgdGhpcyB0eXBlIG9mIHRoaW5nLiBUaGlzIGlzIGhhcmR3YXJlIHRoYXQgeW91IG5lZWQgdGhlIGFjdHVhbCBwaHlzaWNhbCBjYXJkIGZvci4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCBpdCYjMzk7cyBjbGVhcjogJiMzNDtDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIHZlbmRvci1zcGVjaWZpYy4uLiBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIE5haWxlZCBpdC4gVGhpcyBpcyBleGFjdGx5IHdoYXQgd2UgaGF2ZSBoZXJlLiBUaGUgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbCBoYXJkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdHJ5aW5nIHRvIHJlYWQgdGhlIGNoaXAgSUQsIGFuZCB0aGF0IERQTEwgbmV0bGluayBpbnRlcmZhY2UgaXMgbm90IGdvaW5nIHRvIHJlZ2lzdGVyLiBUaGUgcGF0Y2hlZCBjb2RlIGlzIHVucmVhY2hhYmxlLgoKVGhlcmVmb3JlLCBJJiMzOTttIHVzaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCBiZSBzdXJlIHRvIGFkZCBhIGNvbmNpc2UgcmVhc29uaW5nIHRvIGVuc3VyZSB3ZSYjMzk7cmUgY2xlYXIgb24gdGhlIGp1c3RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjI5Ljg5OTY0NzUxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0OTc3Njg1NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MjkuODk5NjUzODcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjI1MzAwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5YjIwYjlkZThhMTA3MGMxZWQ2NjU2ODVmNzhkZTc2MTg3Njg5NDU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDE2OjE5OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xcbmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXFxuQEAgLTIwLDI5ICsyMCwzMCBAQFxcbiAjaW5jbHVkZSBcXFwiZHBsbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicmVncy5oXFxcIlxcbiBcXG4tI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XFxuKyNkZWZpbmUgWkxfQ0hJUF9JTkZPKF9pZCwgX25jaGFubmVscywgX2ZsYWdzLCBfbWluX2ZyZXEpXFx0XFx0XFxcXFxcbitcXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSxcXHRcXFxcXFxuK1xcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm8gemwzMDczeF9jaGlwX2lkc1tdID0ge1xcbi1cXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbiB9O1xcbiBcXG4gI2RlZmluZSBaTF9SQU5HRV9PRkZTRVRcXHRcXHQweDgwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxcbmluZGV4IDc4ZGMyMDhmM2VlYTIuLjUxMDE0NDYzMzc3MzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXFxuQEAgLTQyLDExICs0MiwxMyBAQCBlbnVtIHpsMzA3M3hfZmxhZ3Mge1xcbiAgKiBAaWQ6IGNoaXAgSURcXG4gICogQG51bV9jaGFubmVsczogbnVtYmVyIG9mIERQTEwgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoaXMgdmFyaWFudFxcbiAgKiBAZmxhZ3M6IGNoaXAgdmFyaWFudCBmbGFnc1xcbisgKiBAbWluX3JlZl9mcmVxOiBtaW5pbXVtIGlucHV0IHJlZmVyZW5jZSBmcmVxdWVuY3kgaW4gSHpcXG4gICovXFxuIHN0cnVjdCB6bDMwNzN4X2NoaXBfaW5mbyB7XFxuIFxcdHUxNlxcdFxcdGlkO1xcbiBcXHR1OFxcdFxcdG51bV9jaGFubmVscztcXG4gXFx0dW5zaWduZWQgbG9uZ1xcdGZsYWdzO1xcbitcXHR1MzJcXHRcXHRtaW5fcmVmX2ZyZXE7XFxuIH07XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXFxuaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG5AQCAtMjgxLDcgKzI4MSw4IEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXFxuIFxcdFxcdHN5bmNfZnJlcSA9IHpsMzA3M3hfcmVmX2ZyZXFfZ2V0KHN5bmNfcmVmKTtcXG4gXFxuIFxcdFxcdC8qIFN5bmMgc2lnbmFsIG11c3QgYmUgOCBrSHogb3IgbGVzcyBhbmQgY2xvY2sgcmVmZXJlbmNlXFxuLVxcdFxcdCAqIG11c3QgYmUgMSBrSHogb3IgbW9yZSBhbmQgaGlnaGVyIHRoYW4gdGhlIHN5bmMgc2lnbmFsLlxcbitcXHRcXHQgKiBtdXN0IG1lZXQgdGhlIGNoaXAncyBtaW5pbXVtIGZyZXF1ZW5jeSByZXF1aXJlbWVudCBhbmQgYmVcXG4rXFx0XFx0ICogaGlnaGVyIHRoYW4gdGhlIHN5bmMgc2lnbmFsLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHN5bmNfZnJlcSBcXHUwMDNlIDgwMDApIHtcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbkBAIC0yODksOSArMjkwLDEwIEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXFxuIFxcdFxcdFxcdHJjID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKHJlZl9mcmVxIFxcdTAwM2MgMTAwMCkge1xcbi1cXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuLVxcdFxcdFxcdFxcdCAgICAgICBcXFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgMSBrSHogb3IgbW9yZVxcXCIpO1xcbitcXHRcXHRpZiAocmVmX2ZyZXEgXFx1MDAzYyB6bGRldi1cXHUwMDNlaW5mby1cXHUwMDNlbWluX3JlZl9mcmVxKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJjbG9jayBmcmVxdWVuY3kgbXVzdCBiZSAldSBIeiBvciBtb3JlXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgemxkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW1pbl9yZWZfZnJlcSk7XFxuIFxcdFxcdFxcdHJjID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXFxuaW5kZXggYWM5ZDQxZDBmOTc4ZS4uY2RjZWRkY2YzNTNlNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcXG5AQCAtMjAsOSArMjAsOSBAQFxcbiAgKiBAZnJlcTogZnJlcXVlbmN5IHRvIGNoZWNrXFxuICAqXFxuICAqIFRoZSBmdW5jdGlvbiBjaGVja3MgdGhlIGdpdmVuIGZyZXF1ZW5jeSBpcyB2YWxpZCBmb3IgdGhlIGRldmljZS4gRm9yIGlucHV0XFxuLSAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBjYW4gYmUgZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZVxcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcXG4tICogc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxcbisgKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgaXMgYWJvdmUgdGhlIGNoaXAncyBtaW5pbXVtIGFuZCBjYW4gYmVcXG4rICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XFxuKyAqIHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWQgc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxcbiAgKlxcbiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LlxcbiAgKi9cXG5AQCAtMzYsNiArMzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsXFxuIFxcdGlmIChkaXIgPT0gRFBMTF9QSU5fRElSRUNUSU9OX0lOUFVUKSB7XFxuIFxcdFxcdGludCByYztcXG4gXFxuK1xcdFxcdC8qIENoZWNrIG1pbmltdW0gZnJlcXVlbmN5ICovXFxuK1xcdFxcdGlmIChmcmVxIFxcdTAwM2MgemxkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW1pbl9yZWZfZnJlcSlcXG4rXFx0XFx0XFx0Z290byBlcnJfaW52X2ZyZXE7XFxuK1xcbiBcXHRcXHQvKiBDaGVjayBpZiB0aGUgZnJlcXVlbmN5IGNhbiBiZSBmYWN0b3JpemVkICovXFxuIFxcdFxcdHJjID0gemwzMDczeF9yZWZfZnJlcV9mYWN0b3JpemUoZnJlcSwgTlVMTCwgTlVMTCk7XFxuIFxcdFxcdGlmIChyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MzAuNDYzMDM1MzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTQ0MTQyNzk0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgWkwzMDczeCBEUExMIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgSTJDL1NQSSBoYXJkd2FyZSBkcml2ZXIuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbiBEUExMIG5ldGxpbmsgY2FsbGJhY2tzKSBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIGRldmljZSBzdWNjZXNzZnVsbHkgcHJvYmVzLCB3aGljaCByZXF1aXJlcyByZWFkaW5nIGEgdmFsaWQgY2hpcCBJRCBmcm9tIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDliMjBiOWRlOGExMDcwYzFlZDY2NTY4NWY3OGRlNzYxODc2ODk0NTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNjoxOToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuaW5kZXggNWIyZDc3ZjJjMjI4OC4uYzBiM2IwZDU3OWQ1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXG5AQCAtMjAsMjkgKzIwLDMwIEBAXG4gI2luY2x1ZGUgXCJkcGxsLmhcIlxuICNpbmNsdWRlIFwicmVncy5oXCJcbiBcbi0jZGVmaW5lIFpMX0NISVBfSU5GTyhfaWQsIF9uY2hhbm5lbHMsIF9mbGFncylcdFx0XHRcdFxcXG4tXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XG4rI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MsIF9taW5fZnJlcSlcdFx0XFxcbitcdHsgLmlkID0gKF9pZCksIC5udW1fY2hhbm5lbHMgPSAoX25jaGFubmVscyksIC5mbGFncyA9IChfZmxhZ3MpLFx0XFxcbitcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHtcbi1cdFpMX0NISVBfSU5GTygweDBFMzAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTQsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTcsIDUsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFGNjAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDJFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDNGQzQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4rXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MEUzQiwgMywgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxMDAwKSxcbitcdFpMX0NISVBfSU5GTygweDBFOTMsIDEsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MEU5NSwgMywgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDBFOTYsIDQsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MUU5MywgMSwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDFFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MUU5NiwgNCwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDFFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MkU5MywgMSwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDJFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MkU5NiwgNCwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDJFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuIH07XG4gXG4gI2RlZmluZSBaTF9SQU5HRV9PRkZTRVRcdFx0MHg4MFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuaW5kZXggNzhkYzIwOGYzZWVhMi4uNTEwMTQ0NjMzNzczNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXG5AQCAtNDIsMTEgKzQyLDEzIEBAIGVudW0gemwzMDczeF9mbGFncyB7XG4gICogQGlkOiBjaGlwIElEXG4gICogQG51bV9jaGFubmVsczogbnVtYmVyIG9mIERQTEwgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoaXMgdmFyaWFudFxuICAqIEBmbGFnczogY2hpcCB2YXJpYW50IGZsYWdzXG4rICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6XG4gICovXG4gc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHtcbiBcdHUxNlx0XHRpZDtcbiBcdHU4XHRcdG51bV9jaGFubmVscztcbiBcdHVuc2lnbmVkIGxvbmdcdGZsYWdzO1xuK1x0dTMyXHRcdG1pbl9yZWZfZnJlcTtcbiB9O1xuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5AQCAtMjgxLDcgKzI4MSw4IEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXG4gXHRcdHN5bmNfZnJlcSA9IHpsMzA3M3hfcmVmX2ZyZXFfZ2V0KHN5bmNfcmVmKTtcbiBcbiBcdFx0LyogU3luYyBzaWduYWwgbXVzdCBiZSA4IGtIeiBvciBsZXNzIGFuZCBjbG9jayByZWZlcmVuY2Vcbi1cdFx0ICogbXVzdCBiZSAxIGtIeiBvciBtb3JlIGFuZCBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuXG4rXHRcdCAqIG11c3QgbWVldCB0aGUgY2hpcCdzIG1pbmltdW0gZnJlcXVlbmN5IHJlcXVpcmVtZW50IGFuZCBiZVxuK1x0XHQgKiBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuXG4gXHRcdCAqL1xuIFx0XHRpZiAoc3luY19mcmVxIFx1MDAzZSA4MDAwKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuQEAgLTI4OSw5ICsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyAxMDAwKSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuLVx0XHRcdFx0ICAgICAgIFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgMSBrSHogb3IgbW9yZVwiKTtcbitcdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXG4rXHRcdFx0XHRcdCAgIFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgJXUgSHogb3IgbW9yZVwiLFxuK1x0XHRcdFx0XHQgICB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSk7XG4gXHRcdFx0cmMgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXG5pbmRleCBhYzlkNDFkMGY5NzhlLi5jZGNlZGRjZjM1M2U0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbkBAIC0yMCw5ICsyMCw5IEBAXG4gICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVja1xuICAqXG4gICogVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLiBGb3IgaW5wdXRcbi0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2Vcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcbi0gKiBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4rICogcGlucyBpdCBjaGVja3MgdGhhdCB0aGUgZnJlcXVlbmN5IGlzIGFib3ZlIHRoZSBjaGlwJ3MgbWluaW11bSBhbmQgY2FuIGJlXG4rICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XG4rICogdGhlIGZyZXF1ZW5jeSBkaXZpZGVzIGNvbm5lY3RlZCBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4gICpcbiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LlxuICAqL1xuQEAgLTM2LDYgKzM2LDEwIEBAIHpsMzA3M3hfcGluX2NoZWNrX2ZyZXEoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgZW51bSBkcGxsX3Bpbl9kaXJlY3Rpb24gZGlyLFxuIFx0aWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQpIHtcbiBcdFx0aW50IHJjO1xuIFxuK1x0XHQvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqL1xuK1x0XHRpZiAoZnJlcSBcdTAwM2MgemxkZXYtXHUwMDNlaW5mby1cdTAwM2VtaW5fcmVmX2ZyZXEpXG4rXHRcdFx0Z290byBlcnJfaW52X2ZyZXE7XG4rXG4gXHRcdC8qIENoZWNrIGlmIHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgKi9cbiBcdFx0cmMgPSB6bDMwNzN4X3JlZl9mcmVxX2ZhY3Rvcml6ZShmcmVxLCBOVUxMLCBOVUxMKTtcbiBcdFx0aWYgKHJjKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MzAuNDYzMDM2NjczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExOTA5ODE3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUExMIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGB6bDMwNzN4YCBEUExMIGRyaXZlci4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgYG1pbl9yZWZfZnJlcWAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm9gLCBhbmQgdGhlbiBwb3B1bGF0aW5nIHRoYXQgZmllbGQgd2l0aGluIHRoZSBgemwzMDczeF9jaGlwX2lkc2AgYXJyYXksIHNwZWNpZmljYWxseSBmb3IgZWFjaCBaTDMwNzN4IGNoaXAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgLSBhZGRpbmcgY2hpcC1zcGVjaWZpYyBwYXJhbWV0ZXJzIGlzIGdlbmVyYWxseSBhIHNvdW5kIGFwcHJvYWNoIGZvciBoYXJkd2FyZSBkcml2ZXJzLCBhbGxvd2luZyBmb3IgbW9yZSBwcmVjaXNlIGNvbnRyb2wgYW5kIGNvbmZpZ3VyYXRpb24uIFRoZSBtb2RpZmljYXRpb25zIHRvIGB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldGAgYW5kIGB6bDMwNzN4X3Bpbl9jaGVja19mcmVxYCBhcmUgdGhlIHJlYWwgbWVhdC4gUmVwbGFjaW5nIGEgaGFyZGNvZGVkIHJlZmVyZW5jZSBmcmVxdWVuY3kgb2YgYDEwMDBgIHdpdGggYHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxYCBpcyBjbGVhbmVyIGFuZCB0aGUgZnJlcXVlbmN5IGNoZWNrIGJhc2VkIG9uIHRoaXMgcGFyYW1ldGVyIGlzLCBsb2dpY2FsbHksIHRoZSByaWdodCB0aGluZyB0byBkby4gVGhpcyBjbGVhbnMgdXAgdGhlIGRyaXZlciB0byBtYWtlIGl0IG1vcmUgYWRhcHRhYmxlLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGFjdHVhbGx5IHRlc3QgdGhpcy4gSXQncyBhIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwsIHdoaWNoIHR5cGljYWxseSBtZWFucyBhbiBJMkMgb3IgU1BJIGludGVyZmFjZSB0byBzcGVjaWZpYyBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSBpcyB0aGF0IHRoZXNlIGtpbmRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgYXJlICpyYXJlbHkqIGVtdWxhdGVkIHJlYWxpc3RpY2FsbHkgaW4gUUVNVS4gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZSB3aXRoIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMuIEhvd2V2ZXIuLi4gd2FpdCBhIHNlY29uZCEgVGhlIHJlZmVyZW5jZSBtZW50aW9ucyB0aGUgRFBMTCBzdWJzeXN0ZW0gYW5kIHRoYXQgaXQgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGlzIGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyISBJIGtub3cgdGhhdCBzb21lIG9mIHRoZXNlIERQTEwgZnVuY3Rpb25zIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggbmV0bGluay5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBpbnZlc3RpZ2F0ZSBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYCBhbmQgYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AuIElmIEkgY2FuIHNvbWVob3cgdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMgdXNpbmcgbmV0bGluayB3aXRob3V0IG5lZWRpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBJIG1pZ2h0IGhhdmUgYSBnb29kIHNob3QgYXQgc2ltdWxhdGluZyBhbmQgZGVidWdnaW5nIHRoaXMuIFRoYXQgaXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjQxLjY1NDAyMjIyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA4NDM1NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0yNTE9c3RhdGljIGludFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYzoyNTI6emwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMjUzLVxcdFxcdFxcdFxcdCAgICB2b2lkICpwaW5fcHJpdixcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0xNTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTE1ODctXFx0LnJlZl9zeW5jX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfZ2V0LFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYzoxNTg4OlxcdC5yZWZfc3luY19zZXQgPSB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldCxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTU4OS1cXHQuc3RhdGVfb25fZHBsbF9nZXQgPSB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3N0YXRlX29uX2RwbGxfZ2V0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoxOTo0My45NjI0NjQ5NzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY2OTI2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpMMzA3M1ggRFBMTCBQcm9iZSBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IGEgY29tcG9uZW50IG9mIHRoZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBBbmQgdGhvc2Ugb3BlcmF0aW9ucywgdGhlIHdob2xlIGBkcGxsX3Bpbl9vcHNgIHRoaW5nLCBhcmUsIG9yIHNob3VsZCBiZSwgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEUExMIHN1YnN5c3RlbS4gVGhhdCdzIHRoZSBleHBlY3RlZCBhcmNoaXRlY3R1cmUuXG5cbkJ1dCB0aGVyZSdzIGEgZGVwZW5kZW5jeSBoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOiB0aG9zZSBvcHMsIHRoZSB3aG9sZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIGNhbid0IGJlIHJlZ2lzdGVyZWQgdW5sZXNzIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHByb2Jlcy4gU28sIHRoZSBwcm9iZSBzdWNjZXNzIGlzIGEgcHJlcmVxdWlzaXRlLiBBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIGhvdyB0aGUgYHpsMzA3M3hgIGRyaXZlcidzIHByb2JpbmcgaXMgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxvdyBub3cuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODMzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NDcuNDI5Mzk0ODE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjg1ODc4MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjQ5Ljc1Nzk5MDMzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDkxNjY5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBaTDMwNzN4IFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgWkwzMDczeCBkZXZpY2UgaXMgaW5pdGlhbGl6ZWQuIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBwcm9iZSBmdW5jdGlvbiwgd2hpY2ggaXMgdXN1YWxseSB3aGVyZSB0aGUgZHJpdmVyIGRpc2NvdmVycyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUuIFNvLCBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBEUExMLCBhbmQgc3BlY2lmaWNhbGx5LCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBwcm9iZSByb3V0aW5lcyB3aXRoaW4gdGhhdCBmaWxlLiBJJ20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NTMuNTY3MTYwNDQxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNDEwMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9ODE2PWludCB6bDMwNzN4X2Rldl9zdGFydChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBib29sIGZ1bGwpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYwLVxcdFxcdGlmIChyYykge1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo4NjE6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCByYyxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYyLVxcdFxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgRFBMTCV1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3MC1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6ODcxOlxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgcmMsXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3Mi1cXHRcXHRcXHQgICAgICBcXFwiRmFpbGVkIHRvIGluaXQgZmluZSBwaGFzZSBjb3JyZWN0aW9uXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTkzOS1cXHRcXHRpZiAoSVNfRVJSKHpsZHBsbCkpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTQwOlxcdFxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgUFRSX0VSUih6bGRwbGwpLFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NDEtXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBhbGxvYyBEUExMJXVcXFxcblxcXCIsIGkpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk2MC1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTYxOlxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgcmMsIFxcXCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTYyLVxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDAwLVxcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMDE6XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwMi1cXHRcXHRcXHRcXHQgICAgIFxcXCJVbmtub3duIGNoaXAgSUQ6IDB4JTA0eFxcXFxuXFxcIiwgaWQpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMzgtXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDM5OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHpsZGV2LVxcdTAwM2VkZXYsIHJjLFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQwLVxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIG11dGV4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ5LVxcdGlmIChyYylcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1MDpcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCByYyxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1MS1cXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bGluayBpbnN0YW5jZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFxcXCJaTDMwNzNYXFxcIik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjUzLjY1ODU3NTAwMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTYwMzMyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqUHJvYmluZyB0aGUgUHJvYmU6IFVucmF2ZWxpbmcgdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgQ2FsbCBDaGFpbioqXG5cbk9rYXksIHNvIGB6bDMwNzN4X2Rldl9wcm9iZWAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuIE15IGpvYiwgcmlnaHQgbm93LCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhhdCBjYWxsIG9yaWdpbmF0ZXMuIFRoaXMgaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBJcyBpdCBhIGRpcmVjdCBjYWxsIGZyb20gYSBkcml2ZXIgY29yZSBmdW5jdGlvbiwgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBpbnRlcm1lZGlhcnk/IElzIGl0IHRyaWdnZXJlZCBieSBoYXJkd2FyZSBkZXRlY3Rpb24sIGRldmljZSBlbnVtZXJhdGlvbiwgb3IgcGVyaGFwcyBhIHNwZWNpZmljIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgaXMga2V5LiBMZXQncyBzZWUuLi4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byBkaWcgaW4uIEknbGwgc3RhcnQgd2l0aCBjcm9zcy1yZWZlcmVuY2luZyBhbmQgc2VlIGlmIHRoZSBzb3VyY2UgY29kZSBjYW4gZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzLCBvciBjYWxscyB0byB0aGlzIHByb2JlIGluIG90aGVyIGFyZWFzIG9mIGNvZGUuIExldCdzIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTA5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NTYuNjU0NjExMDIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA4NjQ5MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfZGV2X3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3NC0vKipcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTc1OiAqIHpsMzA3M3hfZGV2X3Byb2JlIC0gaW5pdGlhbGl6ZSB6bDMwNzN4IGRldmljZVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzYtICogQHpsZGV2OiBwb2ludGVyIHRvIHpsMzA3M3ggZGV2aWNlXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgxLSAqL1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5ODI6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4My17XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFxcXCJaTDMwNzNYXFxcIik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9OTg9c3RydWN0IHpsMzA3M3hfZGV2ICp6bDMwNzN4X2Rldm1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg6OTk6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xMDAtXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYz0xMT1zdGF0aWMgaW50IHpsMzA3M3hfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYy0yNC1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYzoyNTpcXHRyZXR1cm4gemwzMDczeF9kZXZfcHJvYmUoemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jLTI2LX1cXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jPTExPXN0YXRpYyBpbnQgemwzMDczeF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jLTI0LVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jOjI1OlxcdHJldHVybiB6bDMwNzN4X2Rldl9wcm9iZSh6bGRldik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3BpLmMtMjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoxOTo1OS4wNjMyNjYwMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk5NDg2NTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHpsMzA3M3hgIERldmljZSBhbmQgU3l6a2FsbGVyJ3MgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlJ3JlIHByb2JpbmcgdGhpcyBgemwzMDczeGAgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgemwzMDczeF9pMmNfcHJvYmVgIGFuZCBgemwzMDczeF9zcGlfcHJvYmVgLiBUaGUgY2hhbGxlbmdlLCBhcyBhbHdheXMsIGlzIFFFTVUgZW11bGF0aW9uLiBJIGtub3cgdGhhdCBlbXVsYXRpbmcgSTJDIGFuZCBTUEkgaW4gUUVNVSBpcyBhIHBhaW4gdW5sZXNzIHdlIGhhdmUgYSBzcGVjaWFsaXplZCBlbXVsYXRvciBvciByZXNvcnQgdG8gYSBkdW1teSBkcml2ZXIuIEJ1dCBzeXprYWxsZXIuLi4gYWgsIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGluamVjdCBJMkMgdHJhZmZpYyBkaXJlY3RseSB0aHJvdWdoIGAvZGV2L2kyYy0qYCBpZiBpdCBjYW4gYWN0dWFsbHkgYnJpbmcgdGhlIGRldmljZSB0byBsaWZlLlxuXG5Ob3csIHRoZSB0cmlja3kgcGFydCBpcyBnZXR0aW5nIHN5emthbGxlciB0byBpbnN0YW50aWF0ZSB0aGlzIGFyYml0cmFyeSBJMkMvU1BJIGRldmljZS4gSXQgdXN1YWxseSBkb2Vzbid0IGRvIHRoYXQgdW5sZXNzIGl0J3MgYmFrZWQgaW50byB0aGUgZGVmYXVsdCBkZXZpY2UgdHJlZSBvciBoYXMgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciB0aGUgZGV2aWNlLiBIbW0sIHdhaXQgYSBtaW51dGUsIEkgdGhpbmsgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgYmFzaWMgSTJDL1NQSSBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLi4uIGJ1dCBpdCByZXF1aXJlcyB0aGUgZGV2aWNlIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHByb2JlZC5cblxuTGV0IG1lIHJldGhpbmsgdGhhdC4gQ2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB3aXRoIHRoaW5ncyBsaWtlIGBpb2N0bChJMkNfU0xBVkUpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIEknbSBwcmV0dHkgc3VyZSBJMkMgZGV2aWNlcyBhcmUgYnJvdWdodCB0byBsaWZlIHRocm91Z2ggdGhlIHN5c2ZzIGBuZXdfZGV2aWNlYCBlbnRyeSBvciB2aWEgdGhlIGRldmljZSB0cmVlLiBSaWdodCwgSSByZWNhbGwsIHN5emthbGxlciAqY2FuKiB3cml0ZSB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgdG8gY3JlYXRlIGFuIEkyQyBkZXZpY2UuXG5cblNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyBzeXprYWxsZXIgYWxyZWFkeSBoYXZlIHRoZSBuZWNlc3NhcnkgZGVzY3JpcHRpb25zIGZvciB0aGUgYHpsMzA3M3hgPyBUaGF0J3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyB3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMgZGV2aWNlIHdpdGhpbiBzeXprYWxsZXIncyBkYXRhYmFzZS4gVGhhdCB3aWxsIGJlIG15IG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDowNi4wNTgxMzI5OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ5NTcyMDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MDYuMTUzMDk2NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQwMTU0NDc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gdGhlIFdvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgY2FuJ3QgZGlyZWN0bHkgc2VhcmNoIHN5emthbGxlci1zcGVjaWZpYyBzdHVmZiAoYHN5cy8qYCBvciBleHByZXNzaW9ucyB3aXRoIFwic3l6X1wiKS4gRmluZSwgbm90ZWQuIEFuZCBJIGRvbid0IHNlZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCBpbiBteSBhdmFpbGFibGUgdG9vbHMuIFRoYXQncyBhIGNvbnN0cmFpbnQsIGJ1dCBJIGhhdmUgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBubyBkaXJlY3QgYWNjZXNzIHRvIHRob3NlIHNwZWMgZmlsZXMgZm9yIG5vdy5cblxuQnV0IGxldCdzIHJlZm9jdXMgb24gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFNwZWNpZmljYWxseSwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOiBVU0IgZ2FkZ2V0cywgbWFjODAyMTFfaHdzaW0sIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gd2F0Y2ggb3V0IGZvci5cblxuVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoaXMgYHpsMzA3M3hgIGRyaXZlciBpcyBhIHByb2JsZW0uIEl0J3MgYW4gSTJDL1NQSSBkcml2ZXIgZm9yIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTC4gSG1tLCBkb2VzIGl0IG5lZWQgYSBwaHlzaWNhbCBjYXJkPyBDYW4gaXQgYmUgdGVzdGVkIGluIFFFTVU/XG5cbklmIHN5emthbGxlciB3cml0ZXMgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgIHdpdGggXCJ6bDMwNzN4XCIsIEknbSB0aGlua2luZyB0aGUgSTJDIGNvcmUgd2lsbCBjcmVhdGUgdGhlIGRldmljZSBhbmQgdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbi4gU28sIHRoZSBrZXkgaXMgd2hhdCBoYXBwZW5zIGluc2lkZSBgemwzMDczeF9kZXZfcHJvYmVgLiBEb2VzIGl0IHRyeSB0byBhY2Nlc3MgdGhlIGhhcmR3YXJlIGRpcmVjdGx5PyBEb2VzIGl0IGNoZWNrIGZvciB0aGUgaGFyZHdhcmUncyBwcmVzZW5jZSBhbmQgZmFpbCBncmFjZWZ1bGx5PyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB0aGF0IHByb2JlIGZ1bmN0aW9uIHRvIGZpbmQgb3V0LCByaWdodD9cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxMiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoxMi41NTQ2NDQyNDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjk0NjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X2Rldl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTkyNz16bDMwNzN4X2Rldm1fZHBsbF9pbml0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDU0LX1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXFxcIlpMMzA3M1hcXFwiKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MTIuNjU3NTk0Nzc4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjg4MDIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYHpsMzA3M3hfZGV2X3Byb2JlYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBaTDMwNzN4IGRldmljZSBpcyBhY3R1YWxseSBicm91Z2h0IG9ubGluZSB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGF0IGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEkgZXhwZWN0IHRoaXMgaXMgd2hlcmUgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcGVyaGFwcyBzb21lIGluaXRpYWwgY29uZmlndXJhdGlvbiBtYWdpYyBoYXBwZW5zLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIHBsYXRmb3JtIGRldmljZSwgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycywgYW5kIGhvdyB0aGUgZGV2aWNlIGRhdGEgc3RydWN0dXJlIGlzIHBvcHVsYXRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGFueSBzcGVjaWZpYyBjbG9jayBzb3VyY2Ugc2VsZWN0aW9uIG9yIFBMTCBpbml0aWFsaXphdGlvbiBpcyBwZXJmb3JtZWQgaGVyZSwgYXMgdGhhdCdzIG9mdGVuIGEgY3J1Y2lhbCBwYXJ0IG9mIHRoZXNlIGRyaXZlcnMuIFRpbWUgdG8gc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAzOTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoxNi42ODY0MDAwMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODA6XFx0ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBcXHUwMDNjMCBvbiBlcnJvclxcbiA5ODE6XFx0ICovXFxuIDk4MjpcXHRpbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG4gOTgzOlxcdHtcXG4gOTg0OlxcdFxcdHUxNiBpZCwgcmV2aXNpb24sIGZ3X3ZlcjtcXG4gOTg1OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiA5ODY6XFx0XFx0dTMyIGNmZ192ZXI7XFxuIDk4NzpcXHRcXHRpbnQgcmM7XFxuIDk4ODpcXHRcXG4gOTg5OlxcdFxcdC8qIFJlYWQgY2hpcCBJRCAqL1xcbiA5OTA6XFx0XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuIDk5MTpcXHRcXHRpZiAocmMpXFxuIDk5MjpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIDk5MzpcXHRcXG4gOTk0OlxcdFxcdC8qIERldGVjdCBjaGlwIHZhcmlhbnQgKi9cXG4gOTk1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHpsMzA3M3hfY2hpcF9pZHMpOyBpKyspIHtcXG4gOTk2OlxcdFxcdFxcdGlmICh6bDMwNzN4X2NoaXBfaWRzW2ldLmlkID09IGlkKVxcbiA5OTc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk5ODpcXHRcXHR9XFxuIDk5OTpcXHRcXG4xMDAwOlxcdFxcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXFxuMTAwMTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbjEwMDI6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiVW5rbm93biBjaGlwIElEOiAweCUwNHhcXFxcblxcXCIsIGlkKTtcXG4xMDAzOlxcdFxcbjEwMDQ6XFx0XFx0emxkZXYtXFx1MDAzZWluZm8gPSBcXHUwMDI2emwzMDczeF9jaGlwX2lkc1tpXTtcXG4xMDA1OlxcdFxcbjEwMDY6XFx0XFx0LyogUmVhZCByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiBhbmQgY3VzdG9tIGNvbmZpZyB2ZXJzaW9uICovXFxuMTAwNzpcXHRcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXFx1MDAyNnJldmlzaW9uKTtcXG4xMDA4OlxcdFxcdGlmIChyYylcXG4xMDA5OlxcdFxcdFxcdHJldHVybiByYztcXG4xMDEwOlxcdFxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXFx1MDAyNmZ3X3Zlcik7XFxuMTAxMTpcXHRcXHRpZiAocmMpXFxuMTAxMjpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMTAxMzpcXHRcXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19DVVNUT01fQ09ORklHX1ZFUiwgXFx1MDAyNmNmZ192ZXIpO1xcbjEwMTQ6XFx0XFx0aWYgKHJjKVxcbjEwMTU6XFx0XFx0XFx0cmV0dXJuIHJjO1xcbjEwMTY6XFx0XFxuMTAxNzpcXHRcXHRkZXZfZGJnKHpsZGV2LVxcdTAwM2VkZXYsIFxcXCJDaGlwSUQoJVgpLCBDaGlwUmV2KCVYKSwgRndWZXIoJXUpXFxcXG5cXFwiLCBpZCxcXG4xMDE4OlxcdFxcdFxcdHJldmlzaW9uLCBmd192ZXIpO1xcbjEwMTk6XFx0XFx0ZGV2X2RiZyh6bGRldi1cXHUwMDNlZGV2LCBcXFwiQ3VzdG9tIGNvbmZpZyB2ZXJzaW9uOiAlbHUuJWx1LiVsdS4lbHVcXFxcblxcXCIsXFxuMTAyMDpcXHRcXHRcXHRGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCBjZmdfdmVyKSxcXG4xMDIxOlxcdFxcdFxcdEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGNmZ192ZXIpLFxcbjEwMjI6XFx0XFx0XFx0RklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBjZmdfdmVyKSxcXG4xMDIzOlxcdFxcdFxcdEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBjZmdfdmVyKSk7XFxuMTAyNDpcXHRcXG4xMDI1OlxcdFxcdC8qIEdlbmVyYXRlIHJhbmRvbSBjbG9jayBJRCBhcyB0aGUgZGV2aWNlIGhhcyBub3Qgc3VjaCBwcm9wZXJ0eSB0aGF0XFxuMTAyNjpcXHRcXHQgKiBjb3VsZCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIEEgdXNlciBjYW4gbGF0ZXIgY2hhbmdlIHRoaXMgdmFsdWVcXG4xMDI3OlxcdFxcdCAqIHVzaW5nIGRldmxpbmsuXFxuMTAyODpcXHRcXHQgKi9cXG4xMDI5OlxcdFxcdHpsZGV2LVxcdTAwM2VjbG9ja19pZCA9IGdldF9yYW5kb21fdTY0KCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjE2LjY4NjU4Mjc2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTE5MDA2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gWkwzMDczeCBQcm9iZSBGYWlsdXJlKipcblxuT2theSwgc28gdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGZhaWxpbmcgdG8gaWRlbnRpZnkgdGhlIFpMMzA3M3ggY2hpcCBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudC4gSXQgdXNlcyBgemwzMDczeF9yZWFkX3UxNmAgdG8gZmV0Y2ggdGhlIGNoaXAgSUQsIHNwZWNpZmljYWxseSByZWFkaW5nIGZyb20gdGhlIGBaTF9SRUdfSURgIHJlZ2lzdGVyLiBJZiB0aGUgcmVhZCBmYWlscyBvciB0aGUgcmV0dXJuZWQgSUQgaXNuJ3QgaW4gdGhlIGxpc3Qgb2YgdmFsaWQgSURzIGluIGB6bDMwNzN4X2NoaXBfaWRzYCwgdGhlIHByb2JlIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbiBRRU1VLCB3aXRob3V0IGVtdWxhdGluZyB0aGUgaGFyZHdhcmUsIHRoZSBJMkMgcmVhZCBpcyBnb2luZyB0byBmYWxsIGZsYXQsIGxpa2VseSByZXR1cm5pbmcgYW4gZXJyb3Igb3Igc29tZSBnYXJiYWdlIHZhbHVlIHRoYXQgd29uJ3QgbWF0Y2ggYW55IHZhbGlkIGNoaXAgSUQgbGlrZSBgMHgwRTMwYCBvciBgMHgwRTNCYC5cblxuQnV0IHdhaXTigKYgY2FuIHN5emthbGxlciBoZWxwIGhlcmU/IFdlIGNhbiBtb2NrIFVTQiBkZXZpY2VzIHdpdGggYC9kZXYvdmhjaWAgYW5kIFdpRmkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBzbyBhcmUgdGhlcmUgc2ltaWxhciBtZWNoYW5pc21zIGZvciBJMkM/IEkgcmVtZW1iZXIgc2VlaW5nIGFuIGBpMmMtc3R1YmAsIGJ1dCBJIHJlY2FsbCBpdCBuZWVkaW5nIHNvbWUgc3BlY2lmaWMgc2V0dXAsIGFuZCBJJ20gbm90IHN1cmUgaWYgaXQncyBnZW5lcmFsbHkgdXNlZCBmb3IganVzdCBhbnkgSTJDIGhhcmR3YXJlLiBTeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IG1vY2sgYXJiaXRyYXJ5IEkyQyBoYXJkd2FyZSByZWdpc3RlcnMgdW5sZXNzIGEgc3BlY2lmaWMgZnV6emVyIGlzIGRlc2lnbmVkIGZvciBpdCwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLlxuXG5Ib3dldmVyLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGVyZSAqaXMqIHRoYXQgSTJDIHN0dWIgZHJpdmVyLCBgZHJpdmVycy9pMmMvaTJjLXN0dWIuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgdXNlIHRoYXQgdG8gZW11bGF0ZSBJMkMgY2hpcHMsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBsaW1pdGVkIHRvIHNpbXBsZSBTTUJ1cyBjb21tYW5kcywgYW5kIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgY2hpcCBhZGRyZXNzZXMuXG5cblJpZ2h0LCB0aGlzIGxlYWRzIHRvIHRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgYHpsMzA3M3hgIGRyaXZlciB1c2UgYSByZWdtYXA/IElmIGl0IGRvZXMsIHRoZXJlJ3MgYSBiZXR0ZXIgY2hhbmNlIG9mIGludGVyYWN0aW5nIHdpdGggaXQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIGZvciBgemwzMDczeF9yZWFkX3UxNmAgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXJuZWF0aC4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0byBnZXQgdGhpcyBwcm9iZSB3b3JraW5nIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NzQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoyNS42MDU1OTE4NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjE0NzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X3JlYWRfdTE2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9MTgwPWludCB6bDMwNzN4X3dyaXRlX3U4KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHU4IHZhbClcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODUtLyoqXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjE4NjogKiB6bDMwNzN4X3JlYWRfdTE2IC0gcmVhZCB2YWx1ZSBmcm9tIDE2Yml0IHJlZ2lzdGVyXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTE4Ny0gKiBAemxkZXY6IHpsMzA3M3ggZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xOTQtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjE5NTppbnQgemwzMDczeF9yZWFkX3UxNihzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1bnNpZ25lZCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTk2LXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05ODI9aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTg5LVxcdC8qIFJlYWQgY2hpcCBJRCAqL1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5OTA6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk5MS1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwNi1cXHQvKiBSZWFkIHJldmlzaW9uLCBmaXJtd2FyZSB2ZXJzaW9uIGFuZCBjdXN0b20gY29uZmlnIHZlcnNpb24gKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTAwNzpcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXFx1MDAyNnJldmlzaW9uKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwOC1cXHRpZiAocmMpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMDktXFx0XFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDEwOlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXFx1MDAyNmZ3X3Zlcik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMTEtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oPTE0MT1pbnQgemwzMDczeF9yZWFkX3U4KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHU4ICp2YWwpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaDoxNDI6aW50IHpsMzA3M3hfcmVhZF91MTYoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTE2ICp2YWwpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xNDMtaW50IHpsMzA3M3hfcmVhZF91MzIoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTMyICp2YWwpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jPTI1PXpsMzA3M3hfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy0zMy1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6MzQ6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTM1LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy00NC1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NDU6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVWSVNJT04sIFxcdTAwMjZyZXZpc2lvbik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTQ2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01NS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NTY6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfRldfVkVSLCBcXHUwMDI2ZndfdmVyKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmMtNTctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jPTEyNTc9emwzMDczeF9kcGxsX3RlbXBfZ2V0KGNvbnN0IHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwgdm9pZCAqZHBsbF9wcml2LFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTEyNjYtXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jOjEyNjc6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfRElFX1RFTVBfU1RBVFVTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTI2OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYz03OT1pbnQgemwzMDczeF9yZWZfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTUtXFx0LyogUmVhZCBmcmVxdWVuY3kgcmVsYXRlZCByZWdpc3RlcnMgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYzoxMTY6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVGX0ZSRVFfQkFTRSwgXFx1MDAyNnJlZi1cXHUwMDNlZnJlcV9iYXNlKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTctXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTExOC1cXHRcXHRyZXR1cm4gcmM7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTE5OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9GUkVRX01VTFQsIFxcdTAwMjZyZWYtXFx1MDAzZWZyZXFfbXVsdCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIwLVxcdGlmIChyYylcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjEtXFx0XFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjEyMjpcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRUZfUkFUSU9fTSwgXFx1MDAyNnJlZi1cXHUwMDNlZnJlcV9yYXRpb19tKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjMtXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNC1cXHRcXHRyZXR1cm4gcmM7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTI1OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9SQVRJT19OLCBcXHUwMDI2cmVmLVxcdTAwM2VmcmVxX3JhdGlvX24pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNi1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jPTIzPWludCB6bDMwNzN4X3N5bnRoX3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy00NS1cXHQgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjQ2OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfQkFTRSwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX2Jhc2UpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNDctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01My1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU0OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTSwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX20pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01Ny1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU4OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTiwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX24pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTktXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoyNS44NDE3NDU4MTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQyNjE5ODIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB6bDMwNzN4X3JlYWRfdTE2YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIElmIHRoZSBkZXZpY2UgaXNuJ3QgcHJlc2VudCwgdGhlIHJlYWQgZmFpbHMsIG5hdHVyYWxseS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hldGhlciBzeXprYWxsZXIgY2FuIG1vY2sgdGhlIGByZWdtYXBgIGludGVyZmFjZSwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IHN5emthbGxlciBkb2Vzbid0IHVzZSBga3VuaXRgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCByZWxpZXMgb24gc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCB0byBtb2NrIEkyQyBkZXZpY2VzLiBIb3dldmVyLCBgaTJjLXN0dWJgIGhhcyBrbm93biBsaW1pdGF0aW9ucyBpbiB0ZXJtcyBvZiByZWdpc3RlciBhbmQgdmFsdWUgc3VwcG9ydC5cblxuVXN1YWxseSwgc3l6a2FsbGVyIGF2b2lkcyB0aGVzZSBraW5kcyBvZiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCB1bmxlc3MgdGhlIGhhcmR3YXJlIGlzIHZpcnR1YWxpemVkLCBsaWtlIHdpdGggYG1hYzgwMjExX2h3c2ltYCBvciB0aGUgb3RoZXJzLiBBbmQgdGhlbiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gV2hpbGUgdGhpcyBpcyBhbiBJMkMvU1BJIGRyaXZlciwgbm90IFBDSWUsIHRoZSBjb3JlIHByaW5jaXBsZSBpcyB0aGUgc2FtZS4gSXQgbmVlZHMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgY2hpcCB0byBmdW5jdGlvbi5cblxuU28sIGlzIHRoZXJlICphbnkqIHdheSB0byByZWFjaCBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBObywgdGhhdCBmdW5jdGlvbiBpcyByZWdpc3RlcmVkIHZpYSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZS4gVGhlIERQTEwgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgc3RhcnRpbmcgZnJvbSBgemwzMDczeF9kZXZfcHJvYmVgLCB3aGljaCBjYWxscyBgemwzMDczeF9kZXZtX2RwbGxfaW5pdGAsIHdoaWNoIHRoZW4gY2FsbHMgYGRwbGxfZGV2aWNlX3JlZ2lzdGVyYC4gSWYgYHpsMzA3M3hfZGV2X3Byb2JlYCBmYWlscywgc3VjaCBhcyBkdXJpbmcgdGhlIGNoaXAgSUQgcmVhZCwgdGhlIERQTEwgZGV2aWNlIGlzICpuZXZlciogcmVnaXN0ZXJlZCBhbmQgdGh1cyB0aG9zZSBuZXRsaW5rIGNhbGxiYWNrcyBjYW4ndCBiZSByZWFjaGVkLiBUaGF0IG1lYW5zIEkgY2FuJ3QgZXZlbiB0b3VjaCB0aGUgcmVsZXZhbnQgY29kZS4gSnVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgemwzMDczeF9kZXZtX2RwbGxfaW5pdGAgaXNuJ3QgY2FsbGVkIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzA4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjM1LjI2Nzk0NjQyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5MTA2MjMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X2Rldm1fZHBsbF9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05MjY9c3RhdGljIGludFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5Mjc6emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05Mjgte1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTk4Mj1pbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQyLVxcdC8qIFJlZ2lzdGVyIERQTEwgY2hhbm5lbHMgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA0MzpcXHRyYyA9IHpsMzA3M3hfZGV2bV9kcGxsX2luaXQoemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ0LVxcdGlmIChyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MzcuOTU5MDE0MzU2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMzg5NzY1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWkwzMDczeCBDb2RlIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBhbmQgYHpsMzA3M3hfcGluX2NoZWNrX2ZyZXFgIGNvZGUsIGlzIG9ubHkgZXZlciBlbnRlcmVkIHRocm91Z2ggdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEFuZCB0aGF0IHByb2JlIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgSTJDIG9yIFNQSSBwcm9iZSBmdW5jdGlvbnMsIGFzc3VtaW5nIHRoZSBaTDMwNzN4IGRldmljZSBpcyBwcmVzZW50IGFuZCBjb3JyZWN0bHkgaWRlbnRpZmllZC5cblxuVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlLCBhcyBmYXIgYXMgSSBrbm93IOKAkyBhbmQgSSd2ZSBiZWVuIGFyb3VuZCB0aGUgYmxvY2ssIOKAkyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGlzIHNwZWNpZmljIE1pY3JvY2hpcCBEUExMIGNoaXAsIHRoZSBaTDMwNzN4LiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB0eXBpY2FsIHNldHVwIG9mIEdDRSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkZXZpY2UgcHJvYmUgaXMgZ29pbmcgdG8gZmxhdCBvdXQgZmFpbC4gV2hpY2ggbWVhbnMgdGhlIGNvZGUgSSdtIGNvbmNlcm5lZCBhYm91dCwgdGhlIG1vZGlmaWVkIGJpdHMsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRob3VnaCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQga2VybmVsIHRvIHNlZSBpZiBhbnlvbmUgaGFzIHdyaXR0ZW4gYSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcy4gWW91IG5ldmVyIGtub3cuIEl0IHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSBhbiBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjQ1LjI5Nzk5NDc1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMzAyNTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pMmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDo0NS4zNjkyMzIyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNDgxNTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSTJDIEVtdWxhdGlvbiDigJMgQSBSb2FkYmxvY2sqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZXNpZ24sIGFuZCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20ganVzdCBzbGFwcGVkIG1lLiBObyBJMkMgZW11bGF0aW9uLiAqRGFtbi4qIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZvciBjb25maWd1cmF0aW9uIGFuZCBtYXliZSBldmVuIHNvbWUgYmFzaWMgZGF0YSB0cmFuc2ZlciBpZiB3ZSB3ZXJlIGluIGEgYmluZC4gQnV0IG5vcGUsIGl0J3Mgbm90IHN1cHBvcnRlZC4gVGhpcyBpbW1lZGlhdGVseSBjaGFuZ2VzIG15IGFwcHJvYWNoLCBsaWtlbHkgYWRkaW5nIHNpZ25pZmljYW50IGNvbXBsZXhpdHkuIFRoaXMgd2lsbCByZXF1aXJlIGEgZGVlcGVyIGRpdmUgdG8gZmlndXJlIG91dCB3aGF0IGFsdGVybmF0aXZlIGNvbW11bmljYXRpb24gcHJvdG9jb2xzIGFyZSBhdmFpbGFibGUsIG9yIHBlcmhhcHMgSSdsbCBuZWVkIHRvIGRlc2lnbiBhIGN1c3RvbSBzb2x1dGlvbiBpZiBhbGwgZWxzZSBmYWlscy4gTm90IGlkZWFsLCBidXQgd2UgaGF2ZSB0byB3b3JrIHdpdGhpbiB0aGUgY29uc3RyYWludHMuIFRoaXMnbGwgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDo1MC4xNDE3MTU4OTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTIzODExOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemwzMDczeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3NwaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjUwLjI1Mjk2MDU3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDYyNDMwNzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIGVtdWxhdGUgU1BJIGZvciB0aGlzIGRyaXZlci4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgYSBkcml2ZXIgZm9yIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCBjaGlwLiBJIGtub3cgbXkgZmllbGQgLSBzdGFuZGFyZCBRRU1VIGp1c3QgZG9lc24ndCBjdXQgaXQgZm9yIHRoaXMgdHlwZSBvZiB0aGluZy4gVGhpcyBpcyBoYXJkd2FyZSB0aGF0IHlvdSBuZWVkIHRoZSBhY3R1YWwgcGh5c2ljYWwgY2FyZCBmb3IuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCBpdCdzIGNsZWFyOiBcIkNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gdmVuZG9yLXNwZWNpZmljLi4uIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gTmFpbGVkIGl0LiBUaGlzIGlzIGV4YWN0bHkgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoZSBwcm9iZSBmdW5jdGlvbiBpcyBnb2luZyB0byBmYWlsIGhhcmQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0cnlpbmcgdG8gcmVhZCB0aGUgY2hpcCBJRCwgYW5kIHRoYXQgRFBMTCBuZXRsaW5rIGludGVyZmFjZSBpcyBub3QgZ29pbmcgdG8gcmVnaXN0ZXIuIFRoZSBwYXRjaGVkIGNvZGUgaXMgdW5yZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgSSdtIHVzaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIGJlIHN1cmUgdG8gYWRkIGEgY29uY2lzZSByZWFzb25pbmcgdG8gZW5zdXJlIHdlJ3JlIGNsZWFyIG9uIHRoZSBqdXN0aWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU4NiwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjE6MDQuODc3MjcwOTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjE6MDQuODc3MzE3MzU1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgwkj8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 16:17:05 +0000 UTC FinishedAt: 2026-08-14 16:21:06 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDliMjBiOWRlOGExMDcwYzFlZDY2NTY4NWY3OGRlNzYxODc2ODk0NTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNjoxOToyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcbmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuQEAgLTIwLDI5ICYjNDM7MjAsMzAgQEBcbiAjaW5jbHVkZSBcJiMzNDtkcGxsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyZWdzLmhcJiMzNDtcbiBcbi0jZGVmaW5lIFpMX0NISVBfSU5GTyhfaWQsIF9uY2hhbm5lbHMsIF9mbGFncylcdFx0XHRcdFxcXG4tXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XG4mIzQzOyNkZWZpbmUgWkxfQ0hJUF9JTkZPKF9pZCwgX25jaGFubmVscywgX2ZsYWdzLCBfbWluX2ZyZXEpXHRcdFxcXG4mIzQzO1x0eyAuaWQgPSAoX2lkKSwgLm51bV9jaGFubmVscyA9IChfbmNoYW5uZWxzKSwgLmZsYWdzID0gKF9mbGFncyksXHRcXFxuJiM0MztcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHtcbi1cdFpMX0NISVBfSU5GTygweDBFMzAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTQsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTcsIDUsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFGNjAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDJFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDNGQzQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEUzMCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDBFOTMsIDEsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEU5NCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDBFOTYsIDQsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MEU5NywgNSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDFFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MUU5NSwgMywgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDFFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MUY2MCwgMiwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDJFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4MkU5NSwgMywgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiYjNDM7XHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuJiM0MztcdFpMX0NISVBfSU5GTygweDJFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4mIzQzO1x0WkxfQ0hJUF9JTkZPKDB4M0ZDNCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbiB9O1xuIFxuICNkZWZpbmUgWkxfUkFOR0VfT0ZGU0VUXHRcdDB4ODBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmggYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmhcbmluZGV4IDc4ZGMyMDhmM2VlYTIuLjUxMDE0NDYzMzc3MzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuQEAgLTQyLDExICYjNDM7NDIsMTMgQEAgZW51bSB6bDMwNzN4X2ZsYWdzIHtcbiAgKiBAaWQ6IGNoaXAgSURcbiAgKiBAbnVtX2NoYW5uZWxzOiBudW1iZXIgb2YgRFBMTCBjaGFubmVscyBzdXBwb3J0ZWQgYnkgdGhpcyB2YXJpYW50XG4gICogQGZsYWdzOiBjaGlwIHZhcmlhbnQgZmxhZ3NcbiYjNDM7ICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6XG4gICovXG4gc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHtcbiBcdHUxNlx0XHRpZDtcbiBcdHU4XHRcdG51bV9jaGFubmVscztcbiBcdHVuc2lnbmVkIGxvbmdcdGZsYWdzO1xuJiM0MztcdHUzMlx0XHRtaW5fcmVmX2ZyZXE7XG4gfTtcbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbmluZGV4IDgzYmQzMDI3ZGJhYTEuLmVlMDc3YzNlNjhkYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuQEAgLTI4MSw3ICYjNDM7MjgxLDggQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0c3luY19mcmVxID0gemwzMDczeF9yZWZfZnJlcV9nZXQoc3luY19yZWYpO1xuIFxuIFx0XHQvKiBTeW5jIHNpZ25hbCBtdXN0IGJlIDgga0h6IG9yIGxlc3MgYW5kIGNsb2NrIHJlZmVyZW5jZVxuLVx0XHQgKiBtdXN0IGJlIDEga0h6IG9yIG1vcmUgYW5kIGhpZ2hlciB0aGFuIHRoZSBzeW5jIHNpZ25hbC5cbiYjNDM7XHRcdCAqIG11c3QgbWVldCB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGZyZXF1ZW5jeSByZXF1aXJlbWVudCBhbmQgYmVcbiYjNDM7XHRcdCAqIGhpZ2hlciB0aGFuIHRoZSBzeW5jIHNpZ25hbC5cbiBcdFx0ICovXG4gXHRcdGlmIChzeW5jX2ZyZXEgXHUwMDNlIDgwMDApIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG5AQCAtMjg5LDkgJiM0MzsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyAxMDAwKSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuLVx0XHRcdFx0ICAgICAgIFwmIzM0O2Nsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlIDEga0h6IG9yIG1vcmVcJiMzNDspO1xuJiM0MztcdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19GTVQoZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0ICAgXCYjMzQ7Y2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgJXUgSHogb3IgbW9yZVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxKTtcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbmluZGV4IGFjOWQ0MWQwZjk3OGUuLmNkY2VkZGNmMzUzZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuY1xuQEAgLTIwLDkgJiM0MzsyMCw5IEBAXG4gICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVja1xuICAqXG4gICogVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLiBGb3IgaW5wdXRcbi0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2Vcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcbi0gKiBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4mIzQzOyAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBpcyBhYm92ZSB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGFuZCBjYW4gYmVcbiYjNDM7ICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XG4mIzQzOyAqIHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWQgc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxuICAqXG4gICogUmV0dXJuOiB0cnVlIGlmIHRoZSBmcmVxdWVuY3kgaXMgdmFsaWQsIGZhbHNlIGlmIG5vdC5cbiAgKi9cbkBAIC0zNiw2ICYjNDM7MzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsXG4gXHRpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVCkge1xuIFx0XHRpbnQgcmM7XG4gXG4mIzQzO1x0XHQvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqL1xuJiM0MztcdFx0aWYgKGZyZXEgXHUwMDNjIHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxKVxuJiM0MztcdFx0XHRnb3RvIGVycl9pbnZfZnJlcTtcbiYjNDM7XG4gXHRcdC8qIENoZWNrIGlmIHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgKi9cbiBcdFx0cmMgPSB6bDMwNzN4X3JlZl9mcmVxX2ZhY3Rvcml6ZShmcmVxLCBOVUxMLCBOVUxMKTtcbiBcdFx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIEkyQy9TUEkgaGFyZHdhcmUgZHJpdmVyLiBUaGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW4gRFBMTCBuZXRsaW5rIGNhbGxiYWNrcykgYXJlIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkZXZpY2Ugc3VjY2Vzc2Z1bGx5IHByb2Jlcywgd2hpY2ggcmVxdWlyZXMgcmVhZGluZyBhIHZhbGlkIGNoaXAgSUQgZnJvbSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWIyMGI5ZGU4YTEwNzBjMWVkNjY1Njg1Zjc4ZGU3NjE4NzY4OTQ1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE2OjE5OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jCmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMKQEAgLTIwLDI5ICYjNDM7MjAsMzAgQEAKICNpbmNsdWRlICYjMzQ7ZHBsbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmVncy5oJiMzNDsKIAotI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MpCQkJCVwKLQl7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9CiYjNDM7I2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MsIF9taW5fZnJlcSkJCVwKJiM0MzsJeyAuaWQgPSAoX2lkKSwgLm51bV9jaGFubmVscyA9IChfbmNoYW5uZWxzKSwgLmZsYWdzID0gKF9mbGFncyksCVwKJiM0MzsJICAubWluX3JlZl9mcmVxID0gKF9taW5fZnJlcSkgfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHsKLQlaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDBFM0IsIDMsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksCi0JWkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSwKLQlaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDBFOTUsIDMsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksCi0JWkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSwKLQlaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDFFOTMsIDEsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAotCVpMX0NISVBfSU5GTygweDFFOTYsIDQsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLAotCVpMX0NISVBfSU5GTygweDJFOTMsIDEsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAotCVpMX0NISVBfSU5GTygweDJFOTYsIDQsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksCi0JWkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSwKLQlaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAomIzQzOwlaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLAogfTsKIAogI2RlZmluZSBaTF9SQU5HRV9PRkZTRVQJCTB4ODAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaAppbmRleCA3OGRjMjA4ZjNlZWEyLi41MTAxNDQ2MzM3NzM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oCkBAIC00MiwxMSAmIzQzOzQyLDEzIEBAIGVudW0gemwzMDczeF9mbGFncyB7CiAgKiBAaWQ6IGNoaXAgSUQKICAqIEBudW1fY2hhbm5lbHM6IG51bWJlciBvZiBEUExMIGNoYW5uZWxzIHN1cHBvcnRlZCBieSB0aGlzIHZhcmlhbnQKICAqIEBmbGFnczogY2hpcCB2YXJpYW50IGZsYWdzCiYjNDM7ICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6CiAgKi8KIHN0cnVjdCB6bDMwNzN4X2NoaXBfaW5mbyB7CiAJdTE2CQlpZDsKIAl1OAkJbnVtX2NoYW5uZWxzOwogCXVuc2lnbmVkIGxvbmcJZmxhZ3M7CiYjNDM7CXUzMgkJbWluX3JlZl9mcmVxOwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMKaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYwpAQCAtMjgxLDcgJiM0MzsyODEsOCBAQCB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldChjb25zdCBzdHJ1Y3QgZHBsbF9waW4gKmRwbGxfcGluLAogCQlzeW5jX2ZyZXEgPSB6bDMwNzN4X3JlZl9mcmVxX2dldChzeW5jX3JlZik7CiAKIAkJLyogU3luYyBzaWduYWwgbXVzdCBiZSA4IGtIeiBvciBsZXNzIGFuZCBjbG9jayByZWZlcmVuY2UKLQkJICogbXVzdCBiZSAxIGtIeiBvciBtb3JlIGFuZCBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuCiYjNDM7CQkgKiBtdXN0IG1lZXQgdGhlIGNoaXAmIzM5O3MgbWluaW11bSBmcmVxdWVuY3kgcmVxdWlyZW1lbnQgYW5kIGJlCiYjNDM7CQkgKiBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuCiAJCSAqLwogCQlpZiAoc3luY19mcmVxICZndDsgODAwMCkgewogCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLApAQCAtMjg5LDkgJiM0MzsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbiwKIAkJCXJjID0gLUVJTlZBTDsKIAkJCWdvdG8gdW5sb2NrOwogCQl9Ci0JCWlmIChyZWZfZnJlcSAmbHQ7IDEwMDApIHsKLQkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKLQkJCQkgICAgICAgJiMzNDtjbG9jayBmcmVxdWVuY3kgbXVzdCBiZSAxIGtIeiBvciBtb3JlJiMzNDspOwomIzQzOwkJaWYgKHJlZl9mcmVxICZsdDsgemxkZXYtJmd0O2luZm8tJmd0O21pbl9yZWZfZnJlcSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssCiYjNDM7CQkJCQkgICAmIzM0O2Nsb2NrIGZyZXF1ZW5jeSBtdXN0IGJlICV1IEh6IG9yIG1vcmUmIzM0OywKJiM0MzsJCQkJCSAgIHpsZGV2LSZndDtpbmZvLSZndDttaW5fcmVmX2ZyZXEpOwogCQkJcmMgPSAtRUlOVkFMOwogCQkJZ290byB1bmxvY2s7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L3Byb3AuYwppbmRleCBhYzlkNDFkMGY5NzhlLi5jZGNlZGRjZjM1M2U0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jCkBAIC0yMCw5ICYjNDM7MjAsOSBAQAogICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVjawogICoKICAqIFRoZSBmdW5jdGlvbiBjaGVja3MgdGhlIGdpdmVuIGZyZXF1ZW5jeSBpcyB2YWxpZCBmb3IgdGhlIGRldmljZS4gRm9yIGlucHV0Ci0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2UKLSAqIGZyZXF1ZW5jaWVzLiBGb3Igb3V0cHV0IHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBkaXZpZGVzIGNvbm5lY3RlZAotICogc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLgomIzQzOyAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBpcyBhYm92ZSB0aGUgY2hpcCYjMzk7cyBtaW5pbXVtIGFuZCBjYW4gYmUKJiM0MzsgKiBmYWN0b3JpemVkIHVzaW5nIHN1cHBvcnRlZCBiYXNlIGZyZXF1ZW5jaWVzLiBGb3Igb3V0cHV0IHBpbnMgaXQgY2hlY2tzIHRoYXQKJiM0MzsgKiB0aGUgZnJlcXVlbmN5IGRpdmlkZXMgY29ubmVjdGVkIHN5bnRoIGZyZXF1ZW5jeSB3aXRob3V0IHJlbWFpbmRlci4KICAqCiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LgogICovCkBAIC0zNiw2ICYjNDM7MzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsCiAJaWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQpIHsKIAkJaW50IHJjOwogCiYjNDM7CQkvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqLwomIzQzOwkJaWYgKGZyZXEgJmx0OyB6bGRldi0mZ3Q7aW5mby0mZ3Q7bWluX3JlZl9mcmVxKQomIzQzOwkJCWdvdG8gZXJyX2ludl9mcmVxOwomIzQzOwogCQkvKiBDaGVjayBpZiB0aGUgZnJlcXVlbmN5IGNhbiBiZSBmYWN0b3JpemVkICovCiAJCXJjID0gemwzMDczeF9yZWZfZnJlcV9mYWN0b3JpemUoZnJlcSwgTlVMTCwgTlVMTCk7CiAJCWlmIChyYykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIERQTEwgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGB6bDMwNzN4YCBEUExMIGRyaXZlci4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgYG1pbl9yZWZfZnJlcWAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm9gLCBhbmQgdGhlbiBwb3B1bGF0aW5nIHRoYXQgZmllbGQgd2l0aGluIHRoZSBgemwzMDczeF9jaGlwX2lkc2AgYXJyYXksIHNwZWNpZmljYWxseSBmb3IgZWFjaCBaTDMwNzN4IGNoaXAuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IC0gYWRkaW5nIGNoaXAtc3BlY2lmaWMgcGFyYW1ldGVycyBpcyBnZW5lcmFsbHkgYSBzb3VuZCBhcHByb2FjaCBmb3IgaGFyZHdhcmUgZHJpdmVycywgYWxsb3dpbmcgZm9yIG1vcmUgcHJlY2lzZSBjb250cm9sIGFuZCBjb25maWd1cmF0aW9uLiBUaGUgbW9kaWZpY2F0aW9ucyB0byBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIGFuZCBgemwzMDczeF9waW5fY2hlY2tfZnJlcWAgYXJlIHRoZSByZWFsIG1lYXQuIFJlcGxhY2luZyBhIGhhcmRjb2RlZCByZWZlcmVuY2UgZnJlcXVlbmN5IG9mIGAxMDAwYCB3aXRoIGB6bGRldi0mZ3Q7aW5mby0mZ3Q7bWluX3JlZl9mcmVxYCBpcyBjbGVhbmVyIGFuZCB0aGUgZnJlcXVlbmN5IGNoZWNrIGJhc2VkIG9uIHRoaXMgcGFyYW1ldGVyIGlzLCBsb2dpY2FsbHksIHRoZSByaWdodCB0aGluZyB0byBkby4gVGhpcyBjbGVhbnMgdXAgdGhlIGRyaXZlciB0byBtYWtlIGl0IG1vcmUgYWRhcHRhYmxlLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBhY3R1YWxseSB0ZXN0IHRoaXMuIEl0JiMzOTtzIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCwgd2hpY2ggdHlwaWNhbGx5IG1lYW5zIGFuIEkyQyBvciBTUEkgaW50ZXJmYWNlIHRvIHNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIGlzIHRoYXQgdGhlc2Uga2luZHMgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBhcmUgKnJhcmVseSogZW11bGF0ZWQgcmVhbGlzdGljYWxseSBpbiBRRU1VLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZSB3aXRoIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMuIEhvd2V2ZXIuLi4gd2FpdCBhIHNlY29uZCEgVGhlIHJlZmVyZW5jZSBtZW50aW9ucyB0aGUgRFBMTCBzdWJzeXN0ZW0gYW5kIHRoYXQgaXQgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGlzIGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyISBJIGtub3cgdGhhdCBzb21lIG9mIHRoZXNlIERQTEwgZnVuY3Rpb25zIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggbmV0bGluay4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AgYW5kIGBkcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNgLiBJZiBJIGNhbiBzb21laG93IHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zIHVzaW5nIG5ldGxpbmsgd2l0aG91dCBuZWVkaW5nIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgSSBtaWdodCBoYXZlIGEgZ29vZCBzaG90IGF0IHNpbXVsYXRpbmcgYW5kIGRlYnVnZ2luZyB0aGlzLiBUaGF0IGlzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jPTI1MT1zdGF0aWMgaW50XG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM6MjUyOnpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMjUzLVx0XHRcdFx0ICAgIHZvaWQgKnBpbl9wcml2LFxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0xNTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fb3BzID0ge1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYy0xNTg3LVx0LnJlZl9zeW5jX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfZ2V0LFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jOjE1ODg6XHQucmVmX3N5bmNfc2V0ID0gemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQsXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTU4OS1cdC5zdGF0ZV9vbl9kcGxsX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fc3RhdGVfb25fZHBsbF9nZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFpMMzA3M1ggRFBMTCBQcm9iZSBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjbGVhcmx5IGEgY29tcG9uZW50IG9mIHRoZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBBbmQgdGhvc2Ugb3BlcmF0aW9ucywgdGhlIHdob2xlIGBkcGxsX3Bpbl9vcHNgIHRoaW5nLCBhcmUsIG9yIHNob3VsZCBiZSwgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEUExMIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYXJjaGl0ZWN0dXJlLgoKQnV0IHRoZXJlJiMzOTtzIGEgZGVwZW5kZW5jeSBoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOiB0aG9zZSBvcHMsIHRoZSB3aG9sZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIGNhbiYjMzk7dCBiZSByZWdpc3RlcmVkIHVubGVzcyB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSBwcm9iZXMuIFNvLCB0aGUgcHJvYmUgc3VjY2VzcyBpcyBhIHByZXJlcXVpc2l0ZS4gQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhlIGB6bDMwNzN4YCBkcml2ZXImIzM5O3MgcHJvYmluZyBpcyBpbXBsZW1lbnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBmbG93IG5vdy4gTGV0JiMzOTtzIHNlZSBob3cgdGhhdCB3b3Jrcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBaTDMwNzN4IFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIFpMMzA3M3ggZGV2aWNlIGlzIGluaXRpYWxpemVkLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGRyaXZlciBkaXNjb3ZlcnMgYW5kIGNvbmZpZ3VyZXMgdGhlIGhhcmR3YXJlLiBTbywgSSYjMzk7bSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGZvciB0aGlzIERQTEwsIGFuZCBzcGVjaWZpY2FsbHksIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHByb2JlIHJvdXRpbmVzIHdpdGhpbiB0aGF0IGZpbGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz04MTY9aW50IHpsMzA3M3hfZGV2X3N0YXJ0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIGJvb2wgZnVsbClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYwLVx0XHRpZiAocmMpIHtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo4NjE6XHRcdFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg2Mi1cdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBEUExMJXVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3MC1cdGlmIChyYykge1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjg3MTpcdFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3Mi1cdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdCBmaW5lIHBoYXNlIGNvcnJlY3Rpb25cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05MzktXHRcdGlmIChJU19FUlIoemxkcGxsKSkge1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk0MDpcdFx0XHRkZXZfZXJyX3Byb2JlKHpsZGV2LVx1MDAzZWRldiwgUFRSX0VSUih6bGRwbGwpLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk0MS1cdFx0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBhbGxvYyBEUExMJXVcXG5cJiMzNDssIGkpO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NjAtXHRpZiAocmMpIHtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NjE6XHRcdGRldl9lcnJfcHJvYmUoemxkZXYtXHUwMDNlZGV2LCByYywgXCYjMzQ7RmFpbGVkIHRvIHN0YXJ0IGRldmljZVxcblwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTYyLVx0XHRnb3RvIGVycm9yO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzQtLyoqXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTc1OiAqIHpsMzA3M3hfZGV2X3Byb2JlIC0gaW5pdGlhbGl6ZSB6bDMwNzN4IGRldmljZVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgxLSAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODMte1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDAwLVx0aWYgKGkgPT0gQVJSQVlfU0laRSh6bDMwNzN4X2NoaXBfaWRzKSlcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDAxOlx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIC1FTk9ERVYsXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwMi1cdFx0XHRcdCAgICAgXCYjMzQ7VW5rbm93biBjaGlwIElEOiAweCUwNHhcXG5cJiMzNDssIGlkKTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAzOC1cdGlmIChyYylcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDM5Olx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNDAtXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIG11dGV4XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA0OS1cdGlmIChyYylcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDUwOlx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cdTAwM2VkZXYsIHJjLFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTEtXHRcdFx0XHQgICAgIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBkZXZsaW5rIGluc3RhbmNlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXCYjMzQ7WkwzMDczWFwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqUHJvYmluZyB0aGUgUHJvYmU6IFVucmF2ZWxpbmcgdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgQ2FsbCBDaGFpbioqCgpPa2F5LCBzbyBgemwzMDczeF9kZXZfcHJvYmVgIGlzIGV4cG9ydGVkLCBtZWFuaW5nIGl0JiMzOTtzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gTXkgam9iLCByaWdodCBub3csIGlzIHRvIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGF0IGNhbGwgb3JpZ2luYXRlcy4gVGhpcyBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgY2hhaW4uIElzIGl0IGEgZGlyZWN0IGNhbGwgZnJvbSBhIGRyaXZlciBjb3JlIGZ1bmN0aW9uLCBvciBpcyB0aGVyZSBzb21lIG90aGVyIGludGVybWVkaWFyeT8gSXMgaXQgdHJpZ2dlcmVkIGJ5IGhhcmR3YXJlIGRldGVjdGlvbiwgZGV2aWNlIGVudW1lcmF0aW9uLCBvciBwZXJoYXBzIGEgc3BlY2lmaWMgdXNlci1zcGFjZSBpbnRlcmFjdGlvbj8gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGUgY2FsbCBpcyBrZXkuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gZGlnIGluLiBJJiMzOTtsbCBzdGFydCB3aXRoIGNyb3NzLXJlZmVyZW5jaW5nIGFuZCBzZWUgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbiBnaXZlIG1lIHNvbWUgY2x1ZXMgYWJvdXQgZnVuY3Rpb24gcG9pbnRlcnMsIG9yIGNhbGxzIHRvIHRoaXMgcHJvYmUgaW4gb3RoZXIgYXJlYXMgb2YgY29kZS4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4X2Rldl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTI3PXpsMzA3M3hfZGV2bV9kcGxsX2luaXQoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk3NTogKiB6bDMwNzN4X2Rldl9wcm9iZSAtIGluaXRpYWxpemUgemwzMDczeCBkZXZpY2VcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzYtICogQHpsZGV2OiBwb2ludGVyIHRvIHpsMzA3M3ggZGV2aWNlXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4MS0gKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5ODI6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXCYjMzQ7WkwzMDczWFwmIzM0Oyk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9OTg9c3RydWN0IHpsMzA3M3hfZGV2ICp6bDMwNzN4X2Rldm1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaDo5OTppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmgtMTAwLVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jPTExPXN0YXRpYyBpbnQgemwzMDczeF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYy0yNC1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jOjI1Olx0cmV0dXJuIHpsMzA3M3hfZGV2X3Byb2JlKHpsZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jLTI2LX1cbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYz0xMT1zdGF0aWMgaW50IHpsMzA3M3hfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3BpLmMtMjQtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYzoyNTpcdHJldHVybiB6bDMwNzN4X2Rldl9wcm9iZSh6bGRldik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9zcGkuYy0yNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGB6bDMwNzN4YCBEZXZpY2UgYW5kIFN5emthbGxlciYjMzk7cyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB3ZSYjMzk7cmUgcHJvYmluZyB0aGlzIGB6bDMwNzN4YCBkZXZpY2UsIHNwZWNpZmljYWxseSB0aHJvdWdoIGB6bDMwNzN4X2kyY19wcm9iZWAgYW5kIGB6bDMwNzN4X3NwaV9wcm9iZWAuIFRoZSBjaGFsbGVuZ2UsIGFzIGFsd2F5cywgaXMgUUVNVSBlbXVsYXRpb24uIEkga25vdyB0aGF0IGVtdWxhdGluZyBJMkMgYW5kIFNQSSBpbiBRRU1VIGlzIGEgcGFpbiB1bmxlc3Mgd2UgaGF2ZSBhIHNwZWNpYWxpemVkIGVtdWxhdG9yIG9yIHJlc29ydCB0byBhIGR1bW15IGRyaXZlci4gQnV0IHN5emthbGxlci4uLiBhaCwgc3l6a2FsbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5qZWN0IEkyQyB0cmFmZmljIGRpcmVjdGx5IHRocm91Z2ggYC9kZXYvaTJjLSpgIGlmIGl0IGNhbiBhY3R1YWxseSBicmluZyB0aGUgZGV2aWNlIHRvIGxpZmUuCgpOb3csIHRoZSB0cmlja3kgcGFydCBpcyBnZXR0aW5nIHN5emthbGxlciB0byBpbnN0YW50aWF0ZSB0aGlzIGFyYml0cmFyeSBJMkMvU1BJIGRldmljZS4gSXQgdXN1YWxseSBkb2VzbiYjMzk7dCBkbyB0aGF0IHVubGVzcyBpdCYjMzk7cyBiYWtlZCBpbnRvIHRoZSBkZWZhdWx0IGRldmljZSB0cmVlIG9yIGhhcyBzcGVjaWZpYyBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkZXZpY2UuIEhtbSwgd2FpdCBhIG1pbnV0ZSwgSSB0aGluayBzeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBiYXNpYyBJMkMvU1BJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuLi4gYnV0IGl0IHJlcXVpcmVzIHRoZSBkZXZpY2UgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gcHJvYmVkLgoKTGV0IG1lIHJldGhpbmsgdGhhdC4gQ2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB3aXRoIHRoaW5ncyBsaWtlIGBpb2N0bChJMkNfU0xBVkUpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIEkmIzM5O20gcHJldHR5IHN1cmUgSTJDIGRldmljZXMgYXJlIGJyb3VnaHQgdG8gbGlmZSB0aHJvdWdoIHRoZSBzeXNmcyBgbmV3X2RldmljZWAgZW50cnkgb3IgdmlhIHRoZSBkZXZpY2UgdHJlZS4gUmlnaHQsIEkgcmVjYWxsLCBzeXprYWxsZXIgKmNhbiogd3JpdGUgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0qL25ld19kZXZpY2VgIHRvIGNyZWF0ZSBhbiBJMkMgZGV2aWNlLgoKU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBEb2VzIHN5emthbGxlciBhbHJlYWR5IGhhdmUgdGhlIG5lY2Vzc2FyeSBkZXNjcmlwdGlvbnMgZm9yIHRoZSBgemwzMDczeGA/IFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyB3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMgZGV2aWNlIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgZGF0YWJhc2UuIFRoYXQgd2lsbCBiZSBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjEyCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiB0aGUgV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgY2FuJiMzOTt0IGRpcmVjdGx5IHNlYXJjaCBzeXprYWxsZXItc3BlY2lmaWMgc3R1ZmYgKGBzeXMvKmAgb3IgZXhwcmVzc2lvbnMgd2l0aCAmIzM0O3N5el8mIzM0OykuIEZpbmUsIG5vdGVkLiBBbmQgSSBkb24mIzM5O3Qgc2VlIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgIGluIG15IGF2YWlsYWJsZSB0b29scy4gVGhhdCYjMzk7cyBhIGNvbnN0cmFpbnQsIGJ1dCBJIGhhdmUgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBubyBkaXJlY3QgYWNjZXNzIHRvIHRob3NlIHNwZWMgZmlsZXMgZm9yIG5vdy4KCkJ1dCBsZXQmIzM5O3MgcmVmb2N1cyBvbiB0aGUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM6IFVTQiBnYWRnZXRzLCBtYWM4MDIxMV9od3NpbSwgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gd2F0Y2ggb3V0IGZvci4KClRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciB0aGlzIGB6bDMwNzN4YCBkcml2ZXIgaXMgYSBwcm9ibGVtLiBJdCYjMzk7cyBhbiBJMkMvU1BJIGRyaXZlciBmb3IgYSBNaWNyb2NoaXAgWkwzMDczeCBEUExMLiBIbW0sIGRvZXMgaXQgbmVlZCBhIHBoeXNpY2FsIGNhcmQ/IENhbiBpdCBiZSB0ZXN0ZWQgaW4gUUVNVT8KCklmIHN5emthbGxlciB3cml0ZXMgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgIHdpdGggJiMzNDt6bDMwNzN4JiMzNDssIEkmIzM5O20gdGhpbmtpbmcgdGhlIEkyQyBjb3JlIHdpbGwgY3JlYXRlIHRoZSBkZXZpY2UgYW5kIHRyaWdnZXIgdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFNvLCB0aGUga2V5IGlzIHdoYXQgaGFwcGVucyBpbnNpZGUgYHpsMzA3M3hfZGV2X3Byb2JlYC4gRG9lcyBpdCB0cnkgdG8gYWNjZXNzIHRoZSBoYXJkd2FyZSBkaXJlY3RseT8gRG9lcyBpdCBjaGVjayBmb3IgdGhlIGhhcmR3YXJlJiMzOTtzIHByZXNlbmNlIGFuZCBmYWlsIGdyYWNlZnVsbHk/IEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB0aGF0IHByb2JlIGZ1bmN0aW9uIHRvIGZpbmQgb3V0LCByaWdodD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kZXZfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTkyNz16bDMwNzN4X2Rldm1fZHBsbF9pbml0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3NC0vKipcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc2LSAqIEB6bGRldjogcG9pbnRlciB0byB6bDMwNzN4IGRldmljZVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTgyOmludCB6bDMwNzN4X2Rldl9wcm9iZShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4My17XG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTQtfVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFwmIzM0O1pMMzA3M1hcJiMzNDspO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgemwzMDczeF9kZXZfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgWkwzMDczeCBkZXZpY2UgaXMgYWN0dWFsbHkgYnJvdWdodCBvbmxpbmUgd2l0aGluIHRoZSBkcml2ZXIuIFRpbWUgdG8gZGlnIGludG8gYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AgYW5kIHNwZWNpZmljYWxseSwgdGhhdCBgemwzMDczeF9kZXZfcHJvYmVgIGZ1bmN0aW9uLiBJIGV4cGVjdCB0aGlzIGlzIHdoZXJlIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBlcmhhcHMgc29tZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gbWFnaWMgaGFwcGVucy4gSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcGxhdGZvcm0gZGV2aWNlLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaG93IHRoZSBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmUgaXMgcG9wdWxhdGVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGFueSBzcGVjaWZpYyBjbG9jayBzb3VyY2Ugc2VsZWN0aW9uIG9yIFBMTCBpbml0aWFsaXphdGlvbiBpcyBwZXJmb3JtZWQgaGVyZSwgYXMgdGhhdCYjMzk7cyBvZnRlbiBhIGNydWNpYWwgcGFydCBvZiB0aGVzZSBkcml2ZXJzLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5ODA6XHQgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIFx1MDAzYzAgb24gZXJyb3JcbiA5ODE6XHQgKi9cbiA5ODI6XHRpbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbiA5ODM6XHR7XG4gOTg0Olx0XHR1MTYgaWQsIHJldmlzaW9uLCBmd192ZXI7XG4gOTg1Olx0XHR1bnNpZ25lZCBpbnQgaTtcbiA5ODY6XHRcdHUzMiBjZmdfdmVyO1xuIDk4NzpcdFx0aW50IHJjO1xuIDk4ODpcdFxuIDk4OTpcdFx0LyogUmVhZCBjaGlwIElEICovXG4gOTkwOlx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19JRCwgXHUwMDI2aWQpO1xuIDk5MTpcdFx0aWYgKHJjKVxuIDk5MjpcdFx0XHRyZXR1cm4gcmM7XG4gOTkzOlx0XG4gOTk0Olx0XHQvKiBEZXRlY3QgY2hpcCB2YXJpYW50ICovXG4gOTk1Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHpsMzA3M3hfY2hpcF9pZHMpOyBpJiM0MzsmIzQzOykge1xuIDk5NjpcdFx0XHRpZiAoemwzMDczeF9jaGlwX2lkc1tpXS5pZCA9PSBpZClcbiA5OTc6XHRcdFx0XHRicmVhaztcbiA5OTg6XHRcdH1cbiA5OTk6XHRcbjEwMDA6XHRcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXG4xMDAxOlx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKHpsZGV2LVx1MDAzZWRldiwgLUVOT0RFVixcbjEwMDI6XHRcdFx0XHRcdCAgICAgXCYjMzQ7VW5rbm93biBjaGlwIElEOiAweCUwNHhcXG5cJiMzNDssIGlkKTtcbjEwMDM6XHRcbjEwMDQ6XHRcdHpsZGV2LVx1MDAzZWluZm8gPSBcdTAwMjZ6bDMwNzN4X2NoaXBfaWRzW2ldO1xuMTAwNTpcdFxuMTAwNjpcdFx0LyogUmVhZCByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiBhbmQgY3VzdG9tIGNvbmZpZyB2ZXJzaW9uICovXG4xMDA3Olx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuMTAwODpcdFx0aWYgKHJjKVxuMTAwOTpcdFx0XHRyZXR1cm4gcmM7XG4xMDEwOlx0XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19GV19WRVIsIFx1MDAyNmZ3X3Zlcik7XG4xMDExOlx0XHRpZiAocmMpXG4xMDEyOlx0XHRcdHJldHVybiByYztcbjEwMTM6XHRcdHJjID0gemwzMDczeF9yZWFkX3UzMih6bGRldiwgWkxfUkVHX0NVU1RPTV9DT05GSUdfVkVSLCBcdTAwMjZjZmdfdmVyKTtcbjEwMTQ6XHRcdGlmIChyYylcbjEwMTU6XHRcdFx0cmV0dXJuIHJjO1xuMTAxNjpcdFxuMTAxNzpcdFx0ZGV2X2RiZyh6bGRldi1cdTAwM2VkZXYsIFwmIzM0O0NoaXBJRCglWCksIENoaXBSZXYoJVgpLCBGd1ZlcigldSlcXG5cJiMzNDssIGlkLFxuMTAxODpcdFx0XHRyZXZpc2lvbiwgZndfdmVyKTtcbjEwMTk6XHRcdGRldl9kYmcoemxkZXYtXHUwMDNlZGV2LCBcJiMzNDtDdXN0b20gY29uZmlnIHZlcnNpb246ICVsdS4lbHUuJWx1LiVsdVxcblwmIzM0OyxcbjEwMjA6XHRcdFx0RklFTERfR0VUKEdFTk1BU0soMzEsIDI0KSwgY2ZnX3ZlciksXG4xMDIxOlx0XHRcdEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGNmZ192ZXIpLFxuMTAyMjpcdFx0XHRGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIGNmZ192ZXIpLFxuMTAyMzpcdFx0XHRGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgY2ZnX3ZlcikpO1xuMTAyNDpcdFxuMTAyNTpcdFx0LyogR2VuZXJhdGUgcmFuZG9tIGNsb2NrIElEIGFzIHRoZSBkZXZpY2UgaGFzIG5vdCBzdWNoIHByb3BlcnR5IHRoYXRcbjEwMjY6XHRcdCAqIGNvdWxkIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4gQSB1c2VyIGNhbiBsYXRlciBjaGFuZ2UgdGhpcyB2YWx1ZVxuMTAyNzpcdFx0ICogdXNpbmcgZGV2bGluay5cbjEwMjg6XHRcdCAqL1xuMTAyOTpcdFx0emxkZXYtXHUwMDNlY2xvY2tfaWQgPSBnZXRfcmFuZG9tX3U2NCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIFpMMzA3M3ggUHJvYmUgRmFpbHVyZSoqCgpPa2F5LCBzbyB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgZmFpbGluZyB0byBpZGVudGlmeSB0aGUgWkwzMDczeCBjaGlwIGluIHRoZSBRRU1VIGVudmlyb25tZW50LiBJdCB1c2VzIGB6bDMwNzN4X3JlYWRfdTE2YCB0byBmZXRjaCB0aGUgY2hpcCBJRCwgc3BlY2lmaWNhbGx5IHJlYWRpbmcgZnJvbSB0aGUgYFpMX1JFR19JRGAgcmVnaXN0ZXIuIElmIHRoZSByZWFkIGZhaWxzIG9yIHRoZSByZXR1cm5lZCBJRCBpc24mIzM5O3QgaW4gdGhlIGxpc3Qgb2YgdmFsaWQgSURzIGluIGB6bDMwNzN4X2NoaXBfaWRzYCwgdGhlIHByb2JlIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbiBRRU1VLCB3aXRob3V0IGVtdWxhdGluZyB0aGUgaGFyZHdhcmUsIHRoZSBJMkMgcmVhZCBpcyBnb2luZyB0byBmYWxsIGZsYXQsIGxpa2VseSByZXR1cm5pbmcgYW4gZXJyb3Igb3Igc29tZSBnYXJiYWdlIHZhbHVlIHRoYXQgd29uJiMzOTt0IG1hdGNoIGFueSB2YWxpZCBjaGlwIElEIGxpa2UgYDB4MEUzMGAgb3IgYDB4MEUzQmAuCgpCdXQgd2FpdOKApiBjYW4gc3l6a2FsbGVyIGhlbHAgaGVyZT8gV2UgY2FuIG1vY2sgVVNCIGRldmljZXMgd2l0aCBgL2Rldi92aGNpYCBhbmQgV2lGaSB3aXRoIGBtYWM4MDIxMV9od3NpbWAsIHNvIGFyZSB0aGVyZSBzaW1pbGFyIG1lY2hhbmlzbXMgZm9yIEkyQz8gSSByZW1lbWJlciBzZWVpbmcgYW4gYGkyYy1zdHViYCwgYnV0IEkgcmVjYWxsIGl0IG5lZWRpbmcgc29tZSBzcGVjaWZpYyBzZXR1cCwgYW5kIEkmIzM5O20gbm90IHN1cmUgaWYgaXQmIzM5O3MgZ2VuZXJhbGx5IHVzZWQgZm9yIGp1c3QgYW55IEkyQyBoYXJkd2FyZS4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzdWFsbHkgbW9jayBhcmJpdHJhcnkgSTJDIGhhcmR3YXJlIHJlZ2lzdGVycyB1bmxlc3MgYSBzcGVjaWZpYyBmdXp6ZXIgaXMgZGVzaWduZWQgZm9yIGl0LCBzbyBteSBpbml0aWFsIHRob3VnaHQgaXMgbm8uCgpIb3dldmVyLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGVyZSAqaXMqIHRoYXQgSTJDIHN0dWIgZHJpdmVyLCBgZHJpdmVycy9pMmMvaTJjLXN0dWIuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgdXNlIHRoYXQgdG8gZW11bGF0ZSBJMkMgY2hpcHMsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgbGltaXRlZCB0byBzaW1wbGUgU01CdXMgY29tbWFuZHMsIGFuZCB5b3UgaGF2ZSB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIGNoaXAgYWRkcmVzc2VzLgoKUmlnaHQsIHRoaXMgbGVhZHMgdG8gdGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBgemwzMDczeGAgZHJpdmVyIHVzZSBhIHJlZ21hcD8gSWYgaXQgZG9lcywgdGhlcmUmIzM5O3MgYSBiZXR0ZXIgY2hhbmNlIG9mIGludGVyYWN0aW5nIHdpdGggaXQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIGZvciBgemwzMDczeF9yZWFkX3UxNmAgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHVuZGVybmVhdGguIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHRvIGdldCB0aGlzIHByb2JlIHdvcmtpbmcgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4X3JlYWRfdTE2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kcGxsL3psMzA3M3gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz0xODA9aW50IHpsMzA3M3hfd3JpdGVfdTgoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTggdmFsKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODUtLyoqXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTg2OiAqIHpsMzA3M3hfcmVhZF91MTYgLSByZWFkIHZhbHVlIGZyb20gMTZiaXQgcmVnaXN0ZXJcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODctICogQHpsZGV2OiB6bDMwNzN4IGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTE5NC0gKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxOTU6aW50IHpsMzA3M3hfcmVhZF91MTYoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTE2ICp2YWwpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTk2LXtcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTgyPWludCB6bDMwNzN4X2Rldl9wcm9iZShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODktXHQvKiBSZWFkIGNoaXAgSUQgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5OTA6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19JRCwgXHUwMDI2aWQpO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk5MS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwNi1cdC8qIFJlYWQgcmV2aXNpb24sIGZpcm13YXJlIHZlcnNpb24gYW5kIGN1c3RvbSBjb25maWcgdmVyc2lvbiAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMDc6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMDgtXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwOS1cdFx0cmV0dXJuIHJjO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMTA6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19GV19WRVIsIFx1MDAyNmZ3X3Zlcik7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAxMS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9MTQxPWludCB6bDMwNzN4X3JlYWRfdTgoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTggKnZhbCk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg6MTQyOmludCB6bDMwNzN4X3JlYWRfdTE2KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHUxNiAqdmFsKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xNDMtaW50IHpsMzA3M3hfcmVhZF91MzIoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTMyICp2YWwpO1xuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYz0yNT16bDMwNzN4X2RldmxpbmtfaW5mb19nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHN0cnVjdCBkZXZsaW5rX2luZm9fcmVxICpyZXEsXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTMzLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jOjM0Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFx1MDAyNmlkKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy0zNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmMtNDQtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NDU6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXHUwMDI2cmV2aXNpb24pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTQ2LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01NS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYzo1NjpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXHUwMDI2ZndfdmVyKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01Ny1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM9MTI1Nz16bDMwNzN4X2RwbGxfdGVtcF9nZXQoY29uc3Qgc3RydWN0IGRwbGxfZGV2aWNlICpkcGxsLCB2b2lkICpkcGxsX3ByaXYsXG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTEyNjYtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmM6MTI2NzpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0RJRV9URU1QX1NUQVRVUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYy0xMjY4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jPTc5PWludCB6bDMwNzN4X3JlZl9zdGF0ZV9mZXRjaChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1OCBpbmRleClcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTUtXHQvKiBSZWFkIGZyZXF1ZW5jeSByZWxhdGVkIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTE2Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVGX0ZSRVFfQkFTRSwgXHUwMDI2cmVmLVx1MDAzZWZyZXFfYmFzZSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTctXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTgtXHRcdHJldHVybiByYztcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjExOTpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9GUkVRX01VTFQsIFx1MDAyNnJlZi1cdTAwM2VmcmVxX211bHQpO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIwLVx0aWYgKHJjKVxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIxLVx0XHRyZXR1cm4gcmM7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYzoxMjI6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRUZfUkFUSU9fTSwgXHUwMDI2cmVmLVx1MDAzZWZyZXFfcmF0aW9fbSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjMtXHRpZiAocmMpXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjQtXHRcdHJldHVybiByYztcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjEyNTpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9SQVRJT19OLCBcdTAwMjZyZWYtXHUwMDNlZnJlcV9yYXRpb19uKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNi1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jPTIzPWludCB6bDMwNzN4X3N5bnRoX3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNDUtXHQgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmM6NDY6XHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19TWU5USF9GUkVRX0JBU0UsIFx1MDAyNnN5bnRoLVx1MDAzZWZyZXFfYmFzZSk7XG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jLTQ3LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTMtXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU0Olx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfU1lOVEhfRlJFUV9NLCBcdTAwMjZzeW50aC1cdTAwM2VmcmVxX20pO1xuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01NS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jLTU3LVxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYzo1ODpcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTiwgXHUwMDI2c3ludGgtXHUwMDNlZnJlcV9uKTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTktXHRpZiAocmMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzA4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgemwzMDczeF9yZWFkX3UxNmAgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBJZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcmVzZW50LCB0aGUgcmVhZCBmYWlscywgbmF0dXJhbGx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGV0aGVyIHN5emthbGxlciBjYW4gbW9jayB0aGUgYHJlZ21hcGAgaW50ZXJmYWNlLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzZSBga3VuaXRgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCByZWxpZXMgb24gc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCB0byBtb2NrIEkyQyBkZXZpY2VzLiBIb3dldmVyLCBgaTJjLXN0dWJgIGhhcyBrbm93biBsaW1pdGF0aW9ucyBpbiB0ZXJtcyBvZiByZWdpc3RlciBhbmQgdmFsdWUgc3VwcG9ydC4KClVzdWFsbHksIHN5emthbGxlciBhdm9pZHMgdGhlc2Uga2luZHMgb2Ygc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycywgdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyB2aXJ0dWFsaXplZCwgbGlrZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgdGhlIG90aGVycy4gQW5kIHRoZW4gdGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGZvciB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuIFdoaWxlIHRoaXMgaXMgYW4gSTJDL1NQSSBkcml2ZXIsIG5vdCBQQ0llLCB0aGUgY29yZSBwcmluY2lwbGUgaXMgdGhlIHNhbWUuIEl0IG5lZWRzIHRoZSBNaWNyb2NoaXAgWkwzMDczeCBEUExMIGNoaXAgdG8gZnVuY3Rpb24uCgpTbywgaXMgdGhlcmUgKmFueSogd2F5IHRvIHJlYWNoIGB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldGAgd2l0aG91dCB0aGUgaGFyZHdhcmU/IE5vLCB0aGF0IGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgdmlhIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHNlcXVlbmNlLiBUaGUgRFBMTCBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBzdGFydGluZyBmcm9tIGB6bDMwNzN4X2Rldl9wcm9iZWAsIHdoaWNoIGNhbGxzIGB6bDMwNzN4X2Rldm1fZHBsbF9pbml0YCwgd2hpY2ggdGhlbiBjYWxscyBgZHBsbF9kZXZpY2VfcmVnaXN0ZXJgLiBJZiBgemwzMDczeF9kZXZfcHJvYmVgIGZhaWxzLCBzdWNoIGFzIGR1cmluZyB0aGUgY2hpcCBJRCByZWFkLCB0aGUgRFBMTCBkZXZpY2UgaXMgKm5ldmVyKiByZWdpc3RlcmVkIGFuZCB0aHVzIHRob3NlIG5ldGxpbmsgY2FsbGJhY2tzIGNhbiYjMzk7dCBiZSByZWFjaGVkLiBUaGF0IG1lYW5zIEkgY2FuJiMzOTt0IGV2ZW4gdG91Y2ggdGhlIHJlbGV2YW50IGNvZGUuIEp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYHpsMzA3M3hfZGV2bV9kcGxsX2luaXRgIGlzbiYjMzk7dCBjYWxsZWQgYW55d2hlcmUgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emwzMDczeF9kZXZtX2RwbGxfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9OTI2PXN0YXRpYyBpbnRcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5Mjc6emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTkyOC17XG4tLVxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTk4Mj1pbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcbi0tXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA0Mi1cdC8qIFJlZ2lzdGVyIERQTEwgY2hhbm5lbHMgKi9cbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDQzOlx0cmMgPSB6bDMwNzN4X2Rldm1fZHBsbF9pbml0KHpsZGV2KTtcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ0LVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBaTDMwNzN4IENvZGUgRXhlY3V0aW9uKioKCk9rYXksIHNvIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBhbmQgYHpsMzA3M3hfcGluX2NoZWNrX2ZyZXFgIGNvZGUsIGlzIG9ubHkgZXZlciBlbnRlcmVkIHRocm91Z2ggdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEFuZCB0aGF0IHByb2JlIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgSTJDIG9yIFNQSSBwcm9iZSBmdW5jdGlvbnMsIGFzc3VtaW5nIHRoZSBaTDMwNzN4IGRldmljZSBpcyBwcmVzZW50IGFuZCBjb3JyZWN0bHkgaWRlbnRpZmllZC4KClRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSwgYXMgZmFyIGFzIEkga25vdyDigJMgYW5kIEkmIzM5O3ZlIGJlZW4gYXJvdW5kIHRoZSBibG9jaywg4oCTIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGlzIHNwZWNpZmljIE1pY3JvY2hpcCBEUExMIGNoaXAsIHRoZSBaTDMwNzN4LiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB0eXBpY2FsIHNldHVwIG9mIEdDRSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkZXZpY2UgcHJvYmUgaXMgZ29pbmcgdG8gZmxhdCBvdXQgZmFpbC4gV2hpY2ggbWVhbnMgdGhlIGNvZGUgSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQsIHRoZSBtb2RpZmllZCBiaXRzLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGVzZSBzaW11bGF0ZWQgZW52aXJvbm1lbnRzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhvdWdoLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgdG8gc2VlIGlmIGFueW9uZSBoYXMgd3JpdHRlbiBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGlzLiBZb3UgbmV2ZXIga25vdy4gSXQgd291bGQgYmUgZ29vZCB0byBoYXZlIGFuIGFuc3dlciB0byBteSBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6bDMwNzN4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pMmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYzNzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJMkMgRW11bGF0aW9uIOKAkyBBIFJvYWRibG9jayoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGVzaWduLCBhbmQgdGhlIGVsZXBoYW50IGluIHRoZSByb29tIGp1c3Qgc2xhcHBlZCBtZS4gTm8gSTJDIGVtdWxhdGlvbi4gKkRhbW4uKiBJIHdhcyBob3BpbmcgdG8gbGV2ZXJhZ2UgdGhhdCBmb3IgY29uZmlndXJhdGlvbiBhbmQgbWF5YmUgZXZlbiBzb21lIGJhc2ljIGRhdGEgdHJhbnNmZXIgaWYgd2Ugd2VyZSBpbiBhIGJpbmQuIEJ1dCBub3BlLCBpdCYjMzk7cyBub3Qgc3VwcG9ydGVkLiBUaGlzIGltbWVkaWF0ZWx5IGNoYW5nZXMgbXkgYXBwcm9hY2gsIGxpa2VseSBhZGRpbmcgc2lnbmlmaWNhbnQgY29tcGxleGl0eS4gVGhpcyB3aWxsIHJlcXVpcmUgYSBkZWVwZXIgZGl2ZSB0byBmaWd1cmUgb3V0IHdoYXQgYWx0ZXJuYXRpdmUgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgYXJlIGF2YWlsYWJsZSwgb3IgcGVyaGFwcyBJJiMzOTtsbCBuZWVkIHRvIGRlc2lnbiBhIGN1c3RvbSBzb2x1dGlvbiBpZiBhbGwgZWxzZSBmYWlscy4gTm90IGlkZWFsLCBidXQgd2UgaGF2ZSB0byB3b3JrIHdpdGhpbiB0aGUgY29uc3RyYWludHMuIFRoaXMmIzM5O2xsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3psMzA3M3gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NwaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU4NgoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAyNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGVtdWxhdGUgU1BJIGZvciB0aGlzIGRyaXZlci4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IGEgZHJpdmVyIGZvciBhIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgY2hpcC4gSSBrbm93IG15IGZpZWxkIC0gc3RhbmRhcmQgUUVNVSBqdXN0IGRvZXNuJiMzOTt0IGN1dCBpdCBmb3IgdGhpcyB0eXBlIG9mIHRoaW5nLiBUaGlzIGlzIGhhcmR3YXJlIHRoYXQgeW91IG5lZWQgdGhlIGFjdHVhbCBwaHlzaWNhbCBjYXJkIGZvci4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCBpdCYjMzk7cyBjbGVhcjogJiMzNDtDb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIHZlbmRvci1zcGVjaWZpYy4uLiBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuIE5haWxlZCBpdC4gVGhpcyBpcyBleGFjdGx5IHdoYXQgd2UgaGF2ZSBoZXJlLiBUaGUgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbCBoYXJkIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdHJ5aW5nIHRvIHJlYWQgdGhlIGNoaXAgSUQsIGFuZCB0aGF0IERQTEwgbmV0bGluayBpbnRlcmZhY2UgaXMgbm90IGdvaW5nIHRvIHJlZ2lzdGVyLiBUaGUgcGF0Y2hlZCBjb2RlIGlzIHVucmVhY2hhYmxlLgoKVGhlcmVmb3JlLCBJJiMzOTttIHVzaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCBiZSBzdXJlIHRvIGFkZCBhIGNvbmNpc2UgcmVhc29uaW5nIHRvIGVuc3VyZSB3ZSYjMzk7cmUgY2xlYXIgb24gdGhlIGp1c3RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE2OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTY6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjI5Ljg5OTY0NzUxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0OTc3Njg1NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MjkuODk5NjUzODcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjI1MzAwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5YjIwYjlkZThhMTA3MGMxZWQ2NjU2ODVmNzhkZTc2MTg3Njg5NDU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDE2OjE5OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xcbmluZGV4IDViMmQ3N2YyYzIyODguLmMwYjNiMGQ1NzlkNTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXFxuQEAgLTIwLDI5ICsyMCwzMCBAQFxcbiAjaW5jbHVkZSBcXFwiZHBsbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicmVncy5oXFxcIlxcbiBcXG4tI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XFxuKyNkZWZpbmUgWkxfQ0hJUF9JTkZPKF9pZCwgX25jaGFubmVscywgX2ZsYWdzLCBfbWluX2ZyZXEpXFx0XFx0XFxcXFxcbitcXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSxcXHRcXFxcXFxuK1xcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm8gemwzMDczeF9jaGlwX2lkc1tdID0ge1xcbi1cXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbi1cXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEwMDApLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTkzLCAxLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk2LCA0LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgyRTk3LCA1LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbitcXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxcbiB9O1xcbiBcXG4gI2RlZmluZSBaTF9SQU5HRV9PRkZTRVRcXHRcXHQweDgwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxcbmluZGV4IDc4ZGMyMDhmM2VlYTIuLjUxMDE0NDYzMzc3MzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXFxuQEAgLTQyLDExICs0MiwxMyBAQCBlbnVtIHpsMzA3M3hfZmxhZ3Mge1xcbiAgKiBAaWQ6IGNoaXAgSURcXG4gICogQG51bV9jaGFubmVsczogbnVtYmVyIG9mIERQTEwgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoaXMgdmFyaWFudFxcbiAgKiBAZmxhZ3M6IGNoaXAgdmFyaWFudCBmbGFnc1xcbisgKiBAbWluX3JlZl9mcmVxOiBtaW5pbXVtIGlucHV0IHJlZmVyZW5jZSBmcmVxdWVuY3kgaW4gSHpcXG4gICovXFxuIHN0cnVjdCB6bDMwNzN4X2NoaXBfaW5mbyB7XFxuIFxcdHUxNlxcdFxcdGlkO1xcbiBcXHR1OFxcdFxcdG51bV9jaGFubmVscztcXG4gXFx0dW5zaWduZWQgbG9uZ1xcdGZsYWdzO1xcbitcXHR1MzJcXHRcXHRtaW5fcmVmX2ZyZXE7XFxuIH07XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXFxuaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmNcXG5AQCAtMjgxLDcgKzI4MSw4IEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXFxuIFxcdFxcdHN5bmNfZnJlcSA9IHpsMzA3M3hfcmVmX2ZyZXFfZ2V0KHN5bmNfcmVmKTtcXG4gXFxuIFxcdFxcdC8qIFN5bmMgc2lnbmFsIG11c3QgYmUgOCBrSHogb3IgbGVzcyBhbmQgY2xvY2sgcmVmZXJlbmNlXFxuLVxcdFxcdCAqIG11c3QgYmUgMSBrSHogb3IgbW9yZSBhbmQgaGlnaGVyIHRoYW4gdGhlIHN5bmMgc2lnbmFsLlxcbitcXHRcXHQgKiBtdXN0IG1lZXQgdGhlIGNoaXAncyBtaW5pbXVtIGZyZXF1ZW5jeSByZXF1aXJlbWVudCBhbmQgYmVcXG4rXFx0XFx0ICogaGlnaGVyIHRoYW4gdGhlIHN5bmMgc2lnbmFsLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHN5bmNfZnJlcSBcXHUwMDNlIDgwMDApIHtcXG4gXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbkBAIC0yODksOSArMjkwLDEwIEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXFxuIFxcdFxcdFxcdHJjID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKHJlZl9mcmVxIFxcdTAwM2MgMTAwMCkge1xcbi1cXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuLVxcdFxcdFxcdFxcdCAgICAgICBcXFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgMSBrSHogb3IgbW9yZVxcXCIpO1xcbitcXHRcXHRpZiAocmVmX2ZyZXEgXFx1MDAzYyB6bGRldi1cXHUwMDNlaW5mby1cXHUwMDNlbWluX3JlZl9mcmVxKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJjbG9jayBmcmVxdWVuY3kgbXVzdCBiZSAldSBIeiBvciBtb3JlXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgemxkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW1pbl9yZWZfZnJlcSk7XFxuIFxcdFxcdFxcdHJjID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXFxuaW5kZXggYWM5ZDQxZDBmOTc4ZS4uY2RjZWRkY2YzNTNlNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcXG5AQCAtMjAsOSArMjAsOSBAQFxcbiAgKiBAZnJlcTogZnJlcXVlbmN5IHRvIGNoZWNrXFxuICAqXFxuICAqIFRoZSBmdW5jdGlvbiBjaGVja3MgdGhlIGdpdmVuIGZyZXF1ZW5jeSBpcyB2YWxpZCBmb3IgdGhlIGRldmljZS4gRm9yIGlucHV0XFxuLSAqIHBpbnMgaXQgY2hlY2tzIHRoYXQgdGhlIGZyZXF1ZW5jeSBjYW4gYmUgZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZVxcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcXG4tICogc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxcbisgKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgaXMgYWJvdmUgdGhlIGNoaXAncyBtaW5pbXVtIGFuZCBjYW4gYmVcXG4rICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XFxuKyAqIHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWQgc3ludGggZnJlcXVlbmN5IHdpdGhvdXQgcmVtYWluZGVyLlxcbiAgKlxcbiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LlxcbiAgKi9cXG5AQCAtMzYsNiArMzYsMTAgQEAgemwzMDczeF9waW5fY2hlY2tfZnJlcShzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsXFxuIFxcdGlmIChkaXIgPT0gRFBMTF9QSU5fRElSRUNUSU9OX0lOUFVUKSB7XFxuIFxcdFxcdGludCByYztcXG4gXFxuK1xcdFxcdC8qIENoZWNrIG1pbmltdW0gZnJlcXVlbmN5ICovXFxuK1xcdFxcdGlmIChmcmVxIFxcdTAwM2MgemxkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW1pbl9yZWZfZnJlcSlcXG4rXFx0XFx0XFx0Z290byBlcnJfaW52X2ZyZXE7XFxuK1xcbiBcXHRcXHQvKiBDaGVjayBpZiB0aGUgZnJlcXVlbmN5IGNhbiBiZSBmYWN0b3JpemVkICovXFxuIFxcdFxcdHJjID0gemwzMDczeF9yZWZfZnJlcV9mYWN0b3JpemUoZnJlcSwgTlVMTCwgTlVMTCk7XFxuIFxcdFxcdGlmIChyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MzAuNDYzMDM1MzEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTQ0MTQyNzk0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgWkwzMDczeCBEUExMIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgSTJDL1NQSSBoYXJkd2FyZSBkcml2ZXIuIFRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbiBEUExMIG5ldGxpbmsgY2FsbGJhY2tzKSBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIGRldmljZSBzdWNjZXNzZnVsbHkgcHJvYmVzLCB3aGljaCByZXF1aXJlcyByZWFkaW5nIGEgdmFsaWQgY2hpcCBJRCBmcm9tIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDliMjBiOWRlOGExMDcwYzFlZDY2NTY4NWY3OGRlNzYxODc2ODk0NTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNjoxOToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuaW5kZXggNWIyZDc3ZjJjMjI4OC4uYzBiM2IwZDU3OWQ1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1xuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jXG5AQCAtMjAsMjkgKzIwLDMwIEBAXG4gI2luY2x1ZGUgXCJkcGxsLmhcIlxuICNpbmNsdWRlIFwicmVncy5oXCJcbiBcbi0jZGVmaW5lIFpMX0NISVBfSU5GTyhfaWQsIF9uY2hhbm5lbHMsIF9mbGFncylcdFx0XHRcdFxcXG4tXHR7IC5pZCA9IChfaWQpLCAubnVtX2NoYW5uZWxzID0gKF9uY2hhbm5lbHMpLCAuZmxhZ3MgPSAoX2ZsYWdzKSB9XG4rI2RlZmluZSBaTF9DSElQX0lORk8oX2lkLCBfbmNoYW5uZWxzLCBfZmxhZ3MsIF9taW5fZnJlcSlcdFx0XFxcbitcdHsgLmlkID0gKF9pZCksIC5udW1fY2hhbm5lbHMgPSAoX25jaGFubmVscyksIC5mbGFncyA9IChfZmxhZ3MpLFx0XFxcbitcdCAgLm1pbl9yZWZfZnJlcSA9IChfbWluX2ZyZXEpIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHpsMzA3M3hfY2hpcF9pZHNbXSA9IHtcbi1cdFpMX0NISVBfSU5GTygweDBFMzAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTNCLCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5MywgMSwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTQsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgwRTk1LCAzLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIpLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MEU5NiwgNCwgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyKSxcbi1cdFpMX0NISVBfSU5GTygweDBFOTcsIDUsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgxRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgxRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MUU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDFGNjAsIDIsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiksXG4tXHRaTF9DSElQX0lORk8oMHgyRTkzLCAxLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NCwgMiwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDJFOTUsIDMsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4tXHRaTF9DSElQX0lORk8oMHgyRTk2LCA0LCBaTDMwNzNYX0ZMQUdfRElFX1RFTVApLFxuLVx0WkxfQ0hJUF9JTkZPKDB4MkU5NywgNSwgWkwzMDczWF9GTEFHX0RJRV9URU1QKSxcbi1cdFpMX0NISVBfSU5GTygweDNGQzQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCksXG4rXHRaTF9DSElQX0lORk8oMHgwRTMwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MEUzQiwgMywgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxMDAwKSxcbitcdFpMX0NISVBfSU5GTygweDBFOTMsIDEsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgwRTk0LCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MEU5NSwgMywgWkwzMDczWF9GTEFHX1JFRl9QSEFTRV9DT01QXzMyLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDBFOTYsIDQsIFpMMzA3M1hfRkxBR19SRUZfUEhBU0VfQ09NUF8zMiwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgwRTk3LCA1LCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MUU5MywgMSwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDFFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgxRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MUU5NiwgNCwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDFFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgxRjYwLCAyLCBaTDMwNzNYX0ZMQUdfUkVGX1BIQVNFX0NPTVBfMzIsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MkU5MywgMSwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDJFOTQsIDIsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgyRTk1LCAzLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuK1x0WkxfQ0hJUF9JTkZPKDB4MkU5NiwgNCwgWkwzMDczWF9GTEFHX0RJRV9URU1QLCAxKSxcbitcdFpMX0NISVBfSU5GTygweDJFOTcsIDUsIFpMMzA3M1hfRkxBR19ESUVfVEVNUCwgMSksXG4rXHRaTF9DSElQX0lORk8oMHgzRkM0LCAyLCBaTDMwNzNYX0ZMQUdfRElFX1RFTVAsIDEpLFxuIH07XG4gXG4gI2RlZmluZSBaTF9SQU5HRV9PRkZTRVRcdFx0MHg4MFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuaW5kZXggNzhkYzIwOGYzZWVhMi4uNTEwMTQ0NjMzNzczNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaFxuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oXG5AQCAtNDIsMTEgKzQyLDEzIEBAIGVudW0gemwzMDczeF9mbGFncyB7XG4gICogQGlkOiBjaGlwIElEXG4gICogQG51bV9jaGFubmVsczogbnVtYmVyIG9mIERQTEwgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoaXMgdmFyaWFudFxuICAqIEBmbGFnczogY2hpcCB2YXJpYW50IGZsYWdzXG4rICogQG1pbl9yZWZfZnJlcTogbWluaW11bSBpbnB1dCByZWZlcmVuY2UgZnJlcXVlbmN5IGluIEh6XG4gICovXG4gc3RydWN0IHpsMzA3M3hfY2hpcF9pbmZvIHtcbiBcdHUxNlx0XHRpZDtcbiBcdHU4XHRcdG51bV9jaGFubmVscztcbiBcdHVuc2lnbmVkIGxvbmdcdGZsYWdzO1xuK1x0dTMyXHRcdG1pbl9yZWZfZnJlcTtcbiB9O1xuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuaW5kZXggODNiZDMwMjdkYmFhMS4uZWUwNzdjM2U2OGRhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY1xuKysrIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jXG5AQCAtMjgxLDcgKzI4MSw4IEBAIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0KGNvbnN0IHN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW4sXG4gXHRcdHN5bmNfZnJlcSA9IHpsMzA3M3hfcmVmX2ZyZXFfZ2V0KHN5bmNfcmVmKTtcbiBcbiBcdFx0LyogU3luYyBzaWduYWwgbXVzdCBiZSA4IGtIeiBvciBsZXNzIGFuZCBjbG9jayByZWZlcmVuY2Vcbi1cdFx0ICogbXVzdCBiZSAxIGtIeiBvciBtb3JlIGFuZCBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuXG4rXHRcdCAqIG11c3QgbWVldCB0aGUgY2hpcCdzIG1pbmltdW0gZnJlcXVlbmN5IHJlcXVpcmVtZW50IGFuZCBiZVxuK1x0XHQgKiBoaWdoZXIgdGhhbiB0aGUgc3luYyBzaWduYWwuXG4gXHRcdCAqL1xuIFx0XHRpZiAoc3luY19mcmVxIFx1MDAzZSA4MDAwKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuQEAgLTI4OSw5ICsyOTAsMTAgQEAgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcbiBcdFx0XHRyYyA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byB1bmxvY2s7XG4gXHRcdH1cbi1cdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyAxMDAwKSB7XG4tXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxuLVx0XHRcdFx0ICAgICAgIFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgMSBrSHogb3IgbW9yZVwiKTtcbitcdFx0aWYgKHJlZl9mcmVxIFx1MDAzYyB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX0ZNVChleHRhY2ssXG4rXHRcdFx0XHRcdCAgIFwiY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUgJXUgSHogb3IgbW9yZVwiLFxuK1x0XHRcdFx0XHQgICB6bGRldi1cdTAwM2VpbmZvLVx1MDAzZW1pbl9yZWZfZnJlcSk7XG4gXHRcdFx0cmMgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gdW5sb2NrO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jIGIvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXG5pbmRleCBhYzlkNDFkMGY5NzhlLi5jZGNlZGRjZjM1M2U0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kcGxsL3psMzA3M3gvcHJvcC5jXG4rKysgYi9kcml2ZXJzL2RwbGwvemwzMDczeC9wcm9wLmNcbkBAIC0yMCw5ICsyMCw5IEBAXG4gICogQGZyZXE6IGZyZXF1ZW5jeSB0byBjaGVja1xuICAqXG4gICogVGhlIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGlzIHZhbGlkIGZvciB0aGUgZGV2aWNlLiBGb3IgaW5wdXRcbi0gKiBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgdXNpbmcgc3VwcG9ydGVkIGJhc2Vcbi0gKiBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0IHRoZSBmcmVxdWVuY3kgZGl2aWRlcyBjb25uZWN0ZWRcbi0gKiBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4rICogcGlucyBpdCBjaGVja3MgdGhhdCB0aGUgZnJlcXVlbmN5IGlzIGFib3ZlIHRoZSBjaGlwJ3MgbWluaW11bSBhbmQgY2FuIGJlXG4rICogZmFjdG9yaXplZCB1c2luZyBzdXBwb3J0ZWQgYmFzZSBmcmVxdWVuY2llcy4gRm9yIG91dHB1dCBwaW5zIGl0IGNoZWNrcyB0aGF0XG4rICogdGhlIGZyZXF1ZW5jeSBkaXZpZGVzIGNvbm5lY3RlZCBzeW50aCBmcmVxdWVuY3kgd2l0aG91dCByZW1haW5kZXIuXG4gICpcbiAgKiBSZXR1cm46IHRydWUgaWYgdGhlIGZyZXF1ZW5jeSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LlxuICAqL1xuQEAgLTM2LDYgKzM2LDEwIEBAIHpsMzA3M3hfcGluX2NoZWNrX2ZyZXEoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgZW51bSBkcGxsX3Bpbl9kaXJlY3Rpb24gZGlyLFxuIFx0aWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQpIHtcbiBcdFx0aW50IHJjO1xuIFxuK1x0XHQvKiBDaGVjayBtaW5pbXVtIGZyZXF1ZW5jeSAqL1xuK1x0XHRpZiAoZnJlcSBcdTAwM2MgemxkZXYtXHUwMDNlaW5mby1cdTAwM2VtaW5fcmVmX2ZyZXEpXG4rXHRcdFx0Z290byBlcnJfaW52X2ZyZXE7XG4rXG4gXHRcdC8qIENoZWNrIGlmIHRoZSBmcmVxdWVuY3kgY2FuIGJlIGZhY3Rvcml6ZWQgKi9cbiBcdFx0cmMgPSB6bDMwNzN4X3JlZl9mcmVxX2ZhY3Rvcml6ZShmcmVxLCBOVUxMLCBOVUxMKTtcbiBcdFx0aWYgKHJjKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6MzAuNDYzMDM2NjczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExOTA5ODE3MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEUExMIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGB6bDMwNzN4YCBEUExMIGRyaXZlci4gVGhlIGtleSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGEgYG1pbl9yZWZfZnJlcWAgZmllbGQgdG8gdGhlIGBzdHJ1Y3QgemwzMDczeF9jaGlwX2luZm9gLCBhbmQgdGhlbiBwb3B1bGF0aW5nIHRoYXQgZmllbGQgd2l0aGluIHRoZSBgemwzMDczeF9jaGlwX2lkc2AgYXJyYXksIHNwZWNpZmljYWxseSBmb3IgZWFjaCBaTDMwNzN4IGNoaXAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgLSBhZGRpbmcgY2hpcC1zcGVjaWZpYyBwYXJhbWV0ZXJzIGlzIGdlbmVyYWxseSBhIHNvdW5kIGFwcHJvYWNoIGZvciBoYXJkd2FyZSBkcml2ZXJzLCBhbGxvd2luZyBmb3IgbW9yZSBwcmVjaXNlIGNvbnRyb2wgYW5kIGNvbmZpZ3VyYXRpb24uIFRoZSBtb2RpZmljYXRpb25zIHRvIGB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldGAgYW5kIGB6bDMwNzN4X3Bpbl9jaGVja19mcmVxYCBhcmUgdGhlIHJlYWwgbWVhdC4gUmVwbGFjaW5nIGEgaGFyZGNvZGVkIHJlZmVyZW5jZSBmcmVxdWVuY3kgb2YgYDEwMDBgIHdpdGggYHpsZGV2LVx1MDAzZWluZm8tXHUwMDNlbWluX3JlZl9mcmVxYCBpcyBjbGVhbmVyIGFuZCB0aGUgZnJlcXVlbmN5IGNoZWNrIGJhc2VkIG9uIHRoaXMgcGFyYW1ldGVyIGlzLCBsb2dpY2FsbHksIHRoZSByaWdodCB0aGluZyB0byBkby4gVGhpcyBjbGVhbnMgdXAgdGhlIGRyaXZlciB0byBtYWtlIGl0IG1vcmUgYWRhcHRhYmxlLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGFjdHVhbGx5IHRlc3QgdGhpcy4gSXQncyBhIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwsIHdoaWNoIHR5cGljYWxseSBtZWFucyBhbiBJMkMgb3IgU1BJIGludGVyZmFjZSB0byBzcGVjaWZpYyBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSBpcyB0aGF0IHRoZXNlIGtpbmRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgYXJlICpyYXJlbHkqIGVtdWxhdGVkIHJlYWxpc3RpY2FsbHkgaW4gUUVNVS4gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZSB3aXRoIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMuIEhvd2V2ZXIuLi4gd2FpdCBhIHNlY29uZCEgVGhlIHJlZmVyZW5jZSBtZW50aW9ucyB0aGUgRFBMTCBzdWJzeXN0ZW0gYW5kIHRoYXQgaXQgKm1pZ2h0KiBiZSBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGlzIGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyISBJIGtub3cgdGhhdCBzb21lIG9mIHRoZXNlIERQTEwgZnVuY3Rpb25zIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggbmV0bGluay5cblxuU28sIHRoZSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBpbnZlc3RpZ2F0ZSBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYCBhbmQgYGRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuY2AuIElmIEkgY2FuIHNvbWVob3cgdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMgdXNpbmcgbmV0bGluayB3aXRob3V0IG5lZWRpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBJIG1pZ2h0IGhhdmUgYSBnb29kIHNob3QgYXQgc2ltdWxhdGluZyBhbmQgZGVidWdnaW5nIHRoaXMuIFRoYXQgaXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjQxLjY1NDAyMjIyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA4NDM1NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0yNTE9c3RhdGljIGludFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYzoyNTI6emwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpkcGxsX3BpbixcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMjUzLVxcdFxcdFxcdFxcdCAgICB2b2lkICpwaW5fcHJpdixcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYz0xNTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzIHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTE1ODctXFx0LnJlZl9zeW5jX2dldCA9IHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfZ2V0LFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RwbGwuYzoxNTg4OlxcdC5yZWZfc3luY19zZXQgPSB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3JlZl9zeW5jX3NldCxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTU4OS1cXHQuc3RhdGVfb25fZHBsbF9nZXQgPSB6bDMwNzN4X2RwbGxfaW5wdXRfcGluX3N0YXRlX29uX2RwbGxfZ2V0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoxOTo0My45NjI0NjQ5NzVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY2OTI2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFpMMzA3M1ggRFBMTCBQcm9iZSBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IGEgY29tcG9uZW50IG9mIHRoZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIHJpZ2h0PyBBbmQgdGhvc2Ugb3BlcmF0aW9ucywgdGhlIHdob2xlIGBkcGxsX3Bpbl9vcHNgIHRoaW5nLCBhcmUsIG9yIHNob3VsZCBiZSwgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEUExMIHN1YnN5c3RlbS4gVGhhdCdzIHRoZSBleHBlY3RlZCBhcmNoaXRlY3R1cmUuXG5cbkJ1dCB0aGVyZSdzIGEgZGVwZW5kZW5jeSBoZXJlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mOiB0aG9zZSBvcHMsIHRoZSB3aG9sZSBgZHBsbF9waW5fb3BzYCBzdHJ1Y3R1cmUsIGNhbid0IGJlIHJlZ2lzdGVyZWQgdW5sZXNzIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHByb2Jlcy4gU28sIHRoZSBwcm9iZSBzdWNjZXNzIGlzIGEgcHJlcmVxdWlzaXRlLiBBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIGhvdyB0aGUgYHpsMzA3M3hgIGRyaXZlcidzIHByb2JpbmcgaXMgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxvdyBub3cuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODMzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NDcuNDI5Mzk0ODE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjg1ODc4MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjQ5Ljc1Nzk5MDMzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDkxNjY5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBaTDMwNzN4IFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgWkwzMDczeCBkZXZpY2UgaXMgaW5pdGlhbGl6ZWQuIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBwcm9iZSBmdW5jdGlvbiwgd2hpY2ggaXMgdXN1YWxseSB3aGVyZSB0aGUgZHJpdmVyIGRpc2NvdmVycyBhbmQgY29uZmlndXJlcyB0aGUgaGFyZHdhcmUuIFNvLCBJJ20gZ29pbmcgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gYGRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBEUExMLCBhbmQgc3BlY2lmaWNhbGx5LCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBwcm9iZSByb3V0aW5lcyB3aXRoaW4gdGhhdCBmaWxlLiBJJ20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NTMuNTY3MTYwNDQxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNDEwMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9ODE2PWludCB6bDMwNzN4X2Rldl9zdGFydChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCBib29sIGZ1bGwpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYwLVxcdFxcdGlmIChyYykge1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo4NjE6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCByYyxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtODYyLVxcdFxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgRFBMTCV1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3MC1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6ODcxOlxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgcmMsXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTg3Mi1cXHRcXHRcXHQgICAgICBcXFwiRmFpbGVkIHRvIGluaXQgZmluZSBwaGFzZSBjb3JyZWN0aW9uXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTkzOS1cXHRcXHRpZiAoSVNfRVJSKHpsZHBsbCkpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTQwOlxcdFxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgUFRSX0VSUih6bGRwbGwpLFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NDEtXFx0XFx0XFx0XFx0ICAgICAgXFxcIkZhaWxlZCB0byBhbGxvYyBEUExMJXVcXFxcblxcXCIsIGkpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk2MC1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTYxOlxcdFxcdGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgcmMsIFxcXCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTYyLVxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDAwLVxcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwMDE6XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoemxkZXYtXFx1MDAzZWRldiwgLUVOT0RFVixcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwMi1cXHRcXHRcXHRcXHQgICAgIFxcXCJVbmtub3duIGNoaXAgSUQ6IDB4JTA0eFxcXFxuXFxcIiwgaWQpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMzgtXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDM5OlxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKHpsZGV2LVxcdTAwM2VkZXYsIHJjLFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQwLVxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIG11dGV4XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ5LVxcdGlmIChyYylcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1MDpcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCByYyxcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1MS1cXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgZGV2bGluayBpbnN0YW5jZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFxcXCJaTDMwNzNYXFxcIik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjE5OjUzLjY1ODU3NTAwMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTYwMzMyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqUHJvYmluZyB0aGUgUHJvYmU6IFVucmF2ZWxpbmcgdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgQ2FsbCBDaGFpbioqXG5cbk9rYXksIHNvIGB6bDMwNzN4X2Rldl9wcm9iZWAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuIE15IGpvYiwgcmlnaHQgbm93LCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhhdCBjYWxsIG9yaWdpbmF0ZXMuIFRoaXMgaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBJcyBpdCBhIGRpcmVjdCBjYWxsIGZyb20gYSBkcml2ZXIgY29yZSBmdW5jdGlvbiwgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBpbnRlcm1lZGlhcnk/IElzIGl0IHRyaWdnZXJlZCBieSBoYXJkd2FyZSBkZXRlY3Rpb24sIGRldmljZSBlbnVtZXJhdGlvbiwgb3IgcGVyaGFwcyBhIHNwZWNpZmljIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgaXMga2V5LiBMZXQncyBzZWUuLi4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byBkaWcgaW4uIEknbGwgc3RhcnQgd2l0aCBjcm9zcy1yZWZlcmVuY2luZyBhbmQgc2VlIGlmIHRoZSBzb3VyY2UgY29kZSBjYW4gZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzLCBvciBjYWxscyB0byB0aGlzIHByb2JlIGluIG90aGVyIGFyZWFzIG9mIGNvZGUuIExldCdzIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTA5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MTk6NTYuNjU0NjExMDIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA4NjQ5MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hfZGV2X3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05Mjc9emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3NC0vKipcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6OTc1OiAqIHpsMzA3M3hfZGV2X3Byb2JlIC0gaW5pdGlhbGl6ZSB6bDMwNzN4IGRldmljZVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05NzYtICogQHpsZGV2OiBwb2ludGVyIHRvIHpsMzA3M3ggZGV2aWNlXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgxLSAqL1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5ODI6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk4My17XFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1NC19XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjEwNTU6RVhQT1JUX1NZTUJPTF9OU19HUEwoemwzMDczeF9kZXZfcHJvYmUsIFxcXCJaTDMwNzNYXFxcIik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwNTYtXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg9OTg9c3RydWN0IHpsMzA3M3hfZGV2ICp6bDMwNzN4X2Rldm1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmg6OTk6aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xMDAtXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYz0xMT1zdGF0aWMgaW50IHpsMzA3M3hfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYy0yNC1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9pMmMuYzoyNTpcXHRyZXR1cm4gemwzMDczeF9kZXZfcHJvYmUoemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2kyYy5jLTI2LX1cXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jPTExPXN0YXRpYyBpbnQgemwzMDczeF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jLTI0LVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3NwaS5jOjI1OlxcdHJldHVybiB6bDMwNzN4X2Rldl9wcm9iZSh6bGRldik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3BpLmMtMjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoxOTo1OS4wNjMyNjYwMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk5NDg2NTAxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHpsMzA3M3hgIERldmljZSBhbmQgU3l6a2FsbGVyJ3MgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlJ3JlIHByb2JpbmcgdGhpcyBgemwzMDczeGAgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgemwzMDczeF9pMmNfcHJvYmVgIGFuZCBgemwzMDczeF9zcGlfcHJvYmVgLiBUaGUgY2hhbGxlbmdlLCBhcyBhbHdheXMsIGlzIFFFTVUgZW11bGF0aW9uLiBJIGtub3cgdGhhdCBlbXVsYXRpbmcgSTJDIGFuZCBTUEkgaW4gUUVNVSBpcyBhIHBhaW4gdW5sZXNzIHdlIGhhdmUgYSBzcGVjaWFsaXplZCBlbXVsYXRvciBvciByZXNvcnQgdG8gYSBkdW1teSBkcml2ZXIuIEJ1dCBzeXprYWxsZXIuLi4gYWgsIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGluamVjdCBJMkMgdHJhZmZpYyBkaXJlY3RseSB0aHJvdWdoIGAvZGV2L2kyYy0qYCBpZiBpdCBjYW4gYWN0dWFsbHkgYnJpbmcgdGhlIGRldmljZSB0byBsaWZlLlxuXG5Ob3csIHRoZSB0cmlja3kgcGFydCBpcyBnZXR0aW5nIHN5emthbGxlciB0byBpbnN0YW50aWF0ZSB0aGlzIGFyYml0cmFyeSBJMkMvU1BJIGRldmljZS4gSXQgdXN1YWxseSBkb2Vzbid0IGRvIHRoYXQgdW5sZXNzIGl0J3MgYmFrZWQgaW50byB0aGUgZGVmYXVsdCBkZXZpY2UgdHJlZSBvciBoYXMgc3BlY2lmaWMgZGVzY3JpcHRpb25zIGZvciB0aGUgZGV2aWNlLiBIbW0sIHdhaXQgYSBtaW51dGUsIEkgdGhpbmsgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgYmFzaWMgSTJDL1NQSSBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLi4uIGJ1dCBpdCByZXF1aXJlcyB0aGUgZGV2aWNlIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHByb2JlZC5cblxuTGV0IG1lIHJldGhpbmsgdGhhdC4gQ2FuIHN5emthbGxlciBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB3aXRoIHRoaW5ncyBsaWtlIGBpb2N0bChJMkNfU0xBVkUpYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8sIEknbSBwcmV0dHkgc3VyZSBJMkMgZGV2aWNlcyBhcmUgYnJvdWdodCB0byBsaWZlIHRocm91Z2ggdGhlIHN5c2ZzIGBuZXdfZGV2aWNlYCBlbnRyeSBvciB2aWEgdGhlIGRldmljZSB0cmVlLiBSaWdodCwgSSByZWNhbGwsIHN5emthbGxlciAqY2FuKiB3cml0ZSB0byBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgdG8gY3JlYXRlIGFuIEkyQyBkZXZpY2UuXG5cblNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyBzeXprYWxsZXIgYWxyZWFkeSBoYXZlIHRoZSBuZWNlc3NhcnkgZGVzY3JpcHRpb25zIGZvciB0aGUgYHpsMzA3M3hgPyBUaGF0J3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyB3b3JrLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBleGlzdGluZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMgZGV2aWNlIHdpdGhpbiBzeXprYWxsZXIncyBkYXRhYmFzZS4gVGhhdCB3aWxsIGJlIG15IG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDowNi4wNTgxMzI5OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ5NTcyMDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MDYuMTUzMDk2NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQwMTU0NDc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gdGhlIFdvcnRoRnV6emluZyBEZWNpc2lvbioqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgY2xlYXI6IEkgY2FuJ3QgZGlyZWN0bHkgc2VhcmNoIHN5emthbGxlci1zcGVjaWZpYyBzdHVmZiAoYHN5cy8qYCBvciBleHByZXNzaW9ucyB3aXRoIFwic3l6X1wiKS4gRmluZSwgbm90ZWQuIEFuZCBJIGRvbid0IHNlZSBgcmVhZC1zeXotc3BlY2Agb3IgYHN5ei1ncmVwcGVyYCBpbiBteSBhdmFpbGFibGUgdG9vbHMuIFRoYXQncyBhIGNvbnN0cmFpbnQsIGJ1dCBJIGhhdmUgYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuIFNvLCBubyBkaXJlY3QgYWNjZXNzIHRvIHRob3NlIHNwZWMgZmlsZXMgZm9yIG5vdy5cblxuQnV0IGxldCdzIHJlZm9jdXMgb24gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEuIFNwZWNpZmljYWxseSwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzOiBVU0IgZ2FkZ2V0cywgbWFjODAyMTFfaHdzaW0sIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gd2F0Y2ggb3V0IGZvci5cblxuVGhlIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoaXMgYHpsMzA3M3hgIGRyaXZlciBpcyBhIHByb2JsZW0uIEl0J3MgYW4gSTJDL1NQSSBkcml2ZXIgZm9yIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTC4gSG1tLCBkb2VzIGl0IG5lZWQgYSBwaHlzaWNhbCBjYXJkPyBDYW4gaXQgYmUgdGVzdGVkIGluIFFFTVU/XG5cbklmIHN5emthbGxlciB3cml0ZXMgdG8gYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2VgIHdpdGggXCJ6bDMwNzN4XCIsIEknbSB0aGlua2luZyB0aGUgSTJDIGNvcmUgd2lsbCBjcmVhdGUgdGhlIGRldmljZSBhbmQgdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbi4gU28sIHRoZSBrZXkgaXMgd2hhdCBoYXBwZW5zIGluc2lkZSBgemwzMDczeF9kZXZfcHJvYmVgLiBEb2VzIGl0IHRyeSB0byBhY2Nlc3MgdGhlIGhhcmR3YXJlIGRpcmVjdGx5PyBEb2VzIGl0IGNoZWNrIGZvciB0aGUgaGFyZHdhcmUncyBwcmVzZW5jZSBhbmQgZmFpbCBncmFjZWZ1bGx5PyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB0aGF0IHByb2JlIGZ1bmN0aW9uIHRvIGZpbmQgb3V0LCByaWdodD9cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxMiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoxMi41NTQ2NDQyNDlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjk0NjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X2Rldl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTkyNz16bDMwNzN4X2Rldm1fZHBsbF9pbml0KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTc0LS8qKlxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5NzU6ICogemwzMDczeF9kZXZfcHJvYmUgLSBpbml0aWFsaXplIHpsMzA3M3ggZGV2aWNlXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk3Ni0gKiBAemxkZXY6IHBvaW50ZXIgdG8gemwzMDczeCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05ODEtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjk4MjppbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTgzLXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDU0LX1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA1NTpFWFBPUlRfU1lNQk9MX05TX0dQTCh6bDMwNzN4X2Rldl9wcm9iZSwgXFxcIlpMMzA3M1hcXFwiKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTA1Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MTIuNjU3NTk0Nzc4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjg4MDIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYHpsMzA3M3hfZGV2X3Byb2JlYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBaTDMwNzN4IGRldmljZSBpcyBhY3R1YWxseSBicm91Z2h0IG9ubGluZSB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5LCB0aGF0IGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEkgZXhwZWN0IHRoaXMgaXMgd2hlcmUgdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgcGVyaGFwcyBzb21lIGluaXRpYWwgY29uZmlndXJhdGlvbiBtYWdpYyBoYXBwZW5zLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIHBsYXRmb3JtIGRldmljZSwgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycywgYW5kIGhvdyB0aGUgZGV2aWNlIGRhdGEgc3RydWN0dXJlIGlzIHBvcHVsYXRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGFueSBzcGVjaWZpYyBjbG9jayBzb3VyY2Ugc2VsZWN0aW9uIG9yIFBMTCBpbml0aWFsaXphdGlvbiBpcyBwZXJmb3JtZWQgaGVyZSwgYXMgdGhhdCdzIG9mdGVuIGEgY3J1Y2lhbCBwYXJ0IG9mIHRoZXNlIGRyaXZlcnMuIFRpbWUgdG8gc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAzOTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoxNi42ODY0MDAwMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODA6XFx0ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBcXHUwMDNjMCBvbiBlcnJvclxcbiA5ODE6XFx0ICovXFxuIDk4MjpcXHRpbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG4gOTgzOlxcdHtcXG4gOTg0OlxcdFxcdHUxNiBpZCwgcmV2aXNpb24sIGZ3X3ZlcjtcXG4gOTg1OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiA5ODY6XFx0XFx0dTMyIGNmZ192ZXI7XFxuIDk4NzpcXHRcXHRpbnQgcmM7XFxuIDk4ODpcXHRcXG4gOTg5OlxcdFxcdC8qIFJlYWQgY2hpcCBJRCAqL1xcbiA5OTA6XFx0XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuIDk5MTpcXHRcXHRpZiAocmMpXFxuIDk5MjpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIDk5MzpcXHRcXG4gOTk0OlxcdFxcdC8qIERldGVjdCBjaGlwIHZhcmlhbnQgKi9cXG4gOTk1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHpsMzA3M3hfY2hpcF9pZHMpOyBpKyspIHtcXG4gOTk2OlxcdFxcdFxcdGlmICh6bDMwNzN4X2NoaXBfaWRzW2ldLmlkID09IGlkKVxcbiA5OTc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk5ODpcXHRcXHR9XFxuIDk5OTpcXHRcXG4xMDAwOlxcdFxcdGlmIChpID09IEFSUkFZX1NJWkUoemwzMDczeF9jaGlwX2lkcykpXFxuMTAwMTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZSh6bGRldi1cXHUwMDNlZGV2LCAtRU5PREVWLFxcbjEwMDI6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiVW5rbm93biBjaGlwIElEOiAweCUwNHhcXFxcblxcXCIsIGlkKTtcXG4xMDAzOlxcdFxcbjEwMDQ6XFx0XFx0emxkZXYtXFx1MDAzZWluZm8gPSBcXHUwMDI2emwzMDczeF9jaGlwX2lkc1tpXTtcXG4xMDA1OlxcdFxcbjEwMDY6XFx0XFx0LyogUmVhZCByZXZpc2lvbiwgZmlybXdhcmUgdmVyc2lvbiBhbmQgY3VzdG9tIGNvbmZpZyB2ZXJzaW9uICovXFxuMTAwNzpcXHRcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXFx1MDAyNnJldmlzaW9uKTtcXG4xMDA4OlxcdFxcdGlmIChyYylcXG4xMDA5OlxcdFxcdFxcdHJldHVybiByYztcXG4xMDEwOlxcdFxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXFx1MDAyNmZ3X3Zlcik7XFxuMTAxMTpcXHRcXHRpZiAocmMpXFxuMTAxMjpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMTAxMzpcXHRcXHRyYyA9IHpsMzA3M3hfcmVhZF91MzIoemxkZXYsIFpMX1JFR19DVVNUT01fQ09ORklHX1ZFUiwgXFx1MDAyNmNmZ192ZXIpO1xcbjEwMTQ6XFx0XFx0aWYgKHJjKVxcbjEwMTU6XFx0XFx0XFx0cmV0dXJuIHJjO1xcbjEwMTY6XFx0XFxuMTAxNzpcXHRcXHRkZXZfZGJnKHpsZGV2LVxcdTAwM2VkZXYsIFxcXCJDaGlwSUQoJVgpLCBDaGlwUmV2KCVYKSwgRndWZXIoJXUpXFxcXG5cXFwiLCBpZCxcXG4xMDE4OlxcdFxcdFxcdHJldmlzaW9uLCBmd192ZXIpO1xcbjEwMTk6XFx0XFx0ZGV2X2RiZyh6bGRldi1cXHUwMDNlZGV2LCBcXFwiQ3VzdG9tIGNvbmZpZyB2ZXJzaW9uOiAlbHUuJWx1LiVsdS4lbHVcXFxcblxcXCIsXFxuMTAyMDpcXHRcXHRcXHRGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCBjZmdfdmVyKSxcXG4xMDIxOlxcdFxcdFxcdEZJRUxEX0dFVChHRU5NQVNLKDIzLCAxNiksIGNmZ192ZXIpLFxcbjEwMjI6XFx0XFx0XFx0RklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCBjZmdfdmVyKSxcXG4xMDIzOlxcdFxcdFxcdEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCBjZmdfdmVyKSk7XFxuMTAyNDpcXHRcXG4xMDI1OlxcdFxcdC8qIEdlbmVyYXRlIHJhbmRvbSBjbG9jayBJRCBhcyB0aGUgZGV2aWNlIGhhcyBub3Qgc3VjaCBwcm9wZXJ0eSB0aGF0XFxuMTAyNjpcXHRcXHQgKiBjb3VsZCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIEEgdXNlciBjYW4gbGF0ZXIgY2hhbmdlIHRoaXMgdmFsdWVcXG4xMDI3OlxcdFxcdCAqIHVzaW5nIGRldmxpbmsuXFxuMTAyODpcXHRcXHQgKi9cXG4xMDI5OlxcdFxcdHpsZGV2LVxcdTAwM2VjbG9ja19pZCA9IGdldF9yYW5kb21fdTY0KCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjE2LjY4NjU4Mjc2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTE5MDA2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gWkwzMDczeCBQcm9iZSBGYWlsdXJlKipcblxuT2theSwgc28gdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGZhaWxpbmcgdG8gaWRlbnRpZnkgdGhlIFpMMzA3M3ggY2hpcCBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudC4gSXQgdXNlcyBgemwzMDczeF9yZWFkX3UxNmAgdG8gZmV0Y2ggdGhlIGNoaXAgSUQsIHNwZWNpZmljYWxseSByZWFkaW5nIGZyb20gdGhlIGBaTF9SRUdfSURgIHJlZ2lzdGVyLiBJZiB0aGUgcmVhZCBmYWlscyBvciB0aGUgcmV0dXJuZWQgSUQgaXNuJ3QgaW4gdGhlIGxpc3Qgb2YgdmFsaWQgSURzIGluIGB6bDMwNzN4X2NoaXBfaWRzYCwgdGhlIHByb2JlIHJldHVybnMgYC1FTk9ERVZgLiBUaGF0IG1ha2VzIHNlbnNlOyBpbiBRRU1VLCB3aXRob3V0IGVtdWxhdGluZyB0aGUgaGFyZHdhcmUsIHRoZSBJMkMgcmVhZCBpcyBnb2luZyB0byBmYWxsIGZsYXQsIGxpa2VseSByZXR1cm5pbmcgYW4gZXJyb3Igb3Igc29tZSBnYXJiYWdlIHZhbHVlIHRoYXQgd29uJ3QgbWF0Y2ggYW55IHZhbGlkIGNoaXAgSUQgbGlrZSBgMHgwRTMwYCBvciBgMHgwRTNCYC5cblxuQnV0IHdhaXTigKYgY2FuIHN5emthbGxlciBoZWxwIGhlcmU/IFdlIGNhbiBtb2NrIFVTQiBkZXZpY2VzIHdpdGggYC9kZXYvdmhjaWAgYW5kIFdpRmkgd2l0aCBgbWFjODAyMTFfaHdzaW1gLCBzbyBhcmUgdGhlcmUgc2ltaWxhciBtZWNoYW5pc21zIGZvciBJMkM/IEkgcmVtZW1iZXIgc2VlaW5nIGFuIGBpMmMtc3R1YmAsIGJ1dCBJIHJlY2FsbCBpdCBuZWVkaW5nIHNvbWUgc3BlY2lmaWMgc2V0dXAsIGFuZCBJJ20gbm90IHN1cmUgaWYgaXQncyBnZW5lcmFsbHkgdXNlZCBmb3IganVzdCBhbnkgSTJDIGhhcmR3YXJlLiBTeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IG1vY2sgYXJiaXRyYXJ5IEkyQyBoYXJkd2FyZSByZWdpc3RlcnMgdW5sZXNzIGEgc3BlY2lmaWMgZnV6emVyIGlzIGRlc2lnbmVkIGZvciBpdCwgc28gbXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLlxuXG5Ib3dldmVyLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGVyZSAqaXMqIHRoYXQgSTJDIHN0dWIgZHJpdmVyLCBgZHJpdmVycy9pMmMvaTJjLXN0dWIuY2AuIFdlICpjb3VsZCogcG90ZW50aWFsbHkgdXNlIHRoYXQgdG8gZW11bGF0ZSBJMkMgY2hpcHMsIGJ1dCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBsaW1pdGVkIHRvIHNpbXBsZSBTTUJ1cyBjb21tYW5kcywgYW5kIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgY2hpcCBhZGRyZXNzZXMuXG5cblJpZ2h0LCB0aGlzIGxlYWRzIHRvIHRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgYHpsMzA3M3hgIGRyaXZlciB1c2UgYSByZWdtYXA/IElmIGl0IGRvZXMsIHRoZXJlJ3MgYSBiZXR0ZXIgY2hhbmNlIG9mIGludGVyYWN0aW5nIHdpdGggaXQuIEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBjb2RlIGZvciBgemwzMDczeF9yZWFkX3UxNmAgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gdW5kZXJuZWF0aC4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0byBnZXQgdGhpcyBwcm9iZSB3b3JraW5nIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NzQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoyNS42MDU1OTE4NTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjE0NzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X3JlYWRfdTE2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM9MTgwPWludCB6bDMwNzN4X3dyaXRlX3U4KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHU4IHZhbClcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xODUtLyoqXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjE4NjogKiB6bDMwNzN4X3JlYWRfdTE2IC0gcmVhZCB2YWx1ZSBmcm9tIDE2Yml0IHJlZ2lzdGVyXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTE4Ny0gKiBAemxkZXY6IHpsMzA3M3ggZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xOTQtICovXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jOjE5NTppbnQgemwzMDczeF9yZWFkX3UxNihzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2LCB1bnNpZ25lZCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTk2LXtcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05ODI9aW50IHpsMzA3M3hfZGV2X3Byb2JlKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtOTg5LVxcdC8qIFJlYWQgY2hpcCBJRCAqL1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5OTA6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTk5MS1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwNi1cXHQvKiBSZWFkIHJldmlzaW9uLCBmaXJtd2FyZSB2ZXJzaW9uIGFuZCBjdXN0b20gY29uZmlnIHZlcnNpb24gKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTAwNzpcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRVZJU0lPTiwgXFx1MDAyNnJldmlzaW9uKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmMtMTAwOC1cXHRpZiAocmMpXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMDktXFx0XFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzoxMDEwOlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX0ZXX1ZFUiwgXFx1MDAyNmZ3X3Zlcik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jLTEwMTEtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5oPTE0MT1pbnQgemwzMDczeF9yZWFkX3U4KHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHVuc2lnbmVkIGludCByZWcsIHU4ICp2YWwpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaDoxNDI6aW50IHpsMzA3M3hfcmVhZF91MTYoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTE2ICp2YWwpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuaC0xNDMtaW50IHpsMzA3M3hfcmVhZF91MzIoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdW5zaWduZWQgaW50IHJlZywgdTMyICp2YWwpO1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jPTI1PXpsMzA3M3hfZGV2bGlua19pbmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy0zMy1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6MzQ6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfSUQsIFxcdTAwMjZpZCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTM1LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy00NC1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NDU6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVWSVNJT04sIFxcdTAwMjZyZXZpc2lvbik7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZGV2bGluay5jLTQ2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2RldmxpbmsuYy01NS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmM6NTY6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfRldfVkVSLCBcXHUwMDI2ZndfdmVyKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kZXZsaW5rLmMtNTctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jPTEyNTc9emwzMDczeF9kcGxsX3RlbXBfZ2V0KGNvbnN0IHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwgdm9pZCAqZHBsbF9wcml2LFxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jLTEyNjYtXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvZHBsbC5jOjEyNjc6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfRElFX1RFTVBfU1RBVFVTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9kcGxsLmMtMTI2OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYz03OT1pbnQgemwzMDczeF9yZWZfc3RhdGVfZmV0Y2goc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldiwgdTggaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTUtXFx0LyogUmVhZCBmcmVxdWVuY3kgcmVsYXRlZCByZWdpc3RlcnMgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYzoxMTY6XFx0cmMgPSB6bDMwNzN4X3JlYWRfdTE2KHpsZGV2LCBaTF9SRUdfUkVGX0ZSRVFfQkFTRSwgXFx1MDAyNnJlZi1cXHUwMDNlZnJlcV9iYXNlKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMTctXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTExOC1cXHRcXHRyZXR1cm4gcmM7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTE5OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9GUkVRX01VTFQsIFxcdTAwMjZyZWYtXFx1MDAzZWZyZXFfbXVsdCk7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmMtMTIwLVxcdGlmIChyYylcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjEtXFx0XFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jOjEyMjpcXHRyYyA9IHpsMzA3M3hfcmVhZF91MTYoemxkZXYsIFpMX1JFR19SRUZfUkFUSU9fTSwgXFx1MDAyNnJlZi1cXHUwMDNlZnJlcV9yYXRpb19tKTtcXG5kcml2ZXJzL2RwbGwvemwzMDczeC9yZWYuYy0xMjMtXFx0aWYgKHJjKVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNC1cXHRcXHRyZXR1cm4gcmM7XFxuZHJpdmVycy9kcGxsL3psMzA3M3gvcmVmLmM6MTI1OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1JFRl9SQVRJT19OLCBcXHUwMDI2cmVmLVxcdTAwM2VmcmVxX3JhdGlvX24pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3JlZi5jLTEyNi1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jPTIzPWludCB6bDMwNzN4X3N5bnRoX3N0YXRlX2ZldGNoKHN0cnVjdCB6bDMwNzN4X2RldiAqemxkZXYsIHU4IGluZGV4KVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy00NS1cXHQgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjQ2OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfQkFTRSwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX2Jhc2UpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNDctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01My1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU0OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTSwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX20pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvc3ludGguYy01Ny1cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9zeW50aC5jOjU4OlxcdHJjID0gemwzMDczeF9yZWFkX3UxNih6bGRldiwgWkxfUkVHX1NZTlRIX0ZSRVFfTiwgXFx1MDAyNnN5bnRoLVxcdTAwM2VmcmVxX24pO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L3N5bnRoLmMtNTktXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDoyNS44NDE3NDU4MTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQyNjE5ODIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB6bDMwNzN4X3JlYWRfdTE2YCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIElmIHRoZSBkZXZpY2UgaXNuJ3QgcHJlc2VudCwgdGhlIHJlYWQgZmFpbHMsIG5hdHVyYWxseS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hldGhlciBzeXprYWxsZXIgY2FuIG1vY2sgdGhlIGByZWdtYXBgIGludGVyZmFjZSwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IHN5emthbGxlciBkb2Vzbid0IHVzZSBga3VuaXRgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCByZWxpZXMgb24gc29tZXRoaW5nIGxpa2UgYGkyYy1zdHViYCB0byBtb2NrIEkyQyBkZXZpY2VzLiBIb3dldmVyLCBgaTJjLXN0dWJgIGhhcyBrbm93biBsaW1pdGF0aW9ucyBpbiB0ZXJtcyBvZiByZWdpc3RlciBhbmQgdmFsdWUgc3VwcG9ydC5cblxuVXN1YWxseSwgc3l6a2FsbGVyIGF2b2lkcyB0aGVzZSBraW5kcyBvZiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCB1bmxlc3MgdGhlIGhhcmR3YXJlIGlzIHZpcnR1YWxpemVkLCBsaWtlIHdpdGggYG1hYzgwMjExX2h3c2ltYCBvciB0aGUgb3RoZXJzLiBBbmQgdGhlbiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gV2hpbGUgdGhpcyBpcyBhbiBJMkMvU1BJIGRyaXZlciwgbm90IFBDSWUsIHRoZSBjb3JlIHByaW5jaXBsZSBpcyB0aGUgc2FtZS4gSXQgbmVlZHMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgY2hpcCB0byBmdW5jdGlvbi5cblxuU28sIGlzIHRoZXJlICphbnkqIHdheSB0byByZWFjaCBgemwzMDczeF9kcGxsX2lucHV0X3Bpbl9yZWZfc3luY19zZXRgIHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBObywgdGhhdCBmdW5jdGlvbiBpcyByZWdpc3RlcmVkIHZpYSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZS4gVGhlIERQTEwgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgc3RhcnRpbmcgZnJvbSBgemwzMDczeF9kZXZfcHJvYmVgLCB3aGljaCBjYWxscyBgemwzMDczeF9kZXZtX2RwbGxfaW5pdGAsIHdoaWNoIHRoZW4gY2FsbHMgYGRwbGxfZGV2aWNlX3JlZ2lzdGVyYC4gSWYgYHpsMzA3M3hfZGV2X3Byb2JlYCBmYWlscywgc3VjaCBhcyBkdXJpbmcgdGhlIGNoaXAgSUQgcmVhZCwgdGhlIERQTEwgZGV2aWNlIGlzICpuZXZlciogcmVnaXN0ZXJlZCBhbmQgdGh1cyB0aG9zZSBuZXRsaW5rIGNhbGxiYWNrcyBjYW4ndCBiZSByZWFjaGVkLiBUaGF0IG1lYW5zIEkgY2FuJ3QgZXZlbiB0b3VjaCB0aGUgcmVsZXZhbnQgY29kZS4gSnVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgemwzMDczeF9kZXZtX2RwbGxfaW5pdGAgaXNuJ3QgY2FsbGVkIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzA4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjM1LjI2Nzk0NjQyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5MTA2MjMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6bDMwNzN4X2Rldm1fZHBsbF9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYz05MjY9c3RhdGljIGludFxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYzo5Mjc6emwzMDczeF9kZXZtX2RwbGxfaW5pdChzdHJ1Y3QgemwzMDczeF9kZXYgKnpsZGV2KVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy05Mjgte1xcbi0tXFxuZHJpdmVycy9kcGxsL3psMzA3M3gvY29yZS5jPTk4Mj1pbnQgemwzMDczeF9kZXZfcHJvYmUoc3RydWN0IHpsMzA3M3hfZGV2ICp6bGRldilcXG4tLVxcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQyLVxcdC8qIFJlZ2lzdGVyIERQTEwgY2hhbm5lbHMgKi9cXG5kcml2ZXJzL2RwbGwvemwzMDczeC9jb3JlLmM6MTA0MzpcXHRyYyA9IHpsMzA3M3hfZGV2bV9kcGxsX2luaXQoemxkZXYpO1xcbmRyaXZlcnMvZHBsbC96bDMwNzN4L2NvcmUuYy0xMDQ0LVxcdGlmIChyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjA6MzcuOTU5MDE0MzU2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMzg5NzY1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWkwzMDczeCBDb2RlIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgYHpsMzA3M3hfZHBsbF9pbnB1dF9waW5fcmVmX3N5bmNfc2V0YCBhbmQgYHpsMzA3M3hfcGluX2NoZWNrX2ZyZXFgIGNvZGUsIGlzIG9ubHkgZXZlciBlbnRlcmVkIHRocm91Z2ggdGhlIGB6bDMwNzN4X2Rldl9wcm9iZWAgZnVuY3Rpb24uIEFuZCB0aGF0IHByb2JlIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBieSB0aGUgSTJDIG9yIFNQSSBwcm9iZSBmdW5jdGlvbnMsIGFzc3VtaW5nIHRoZSBaTDMwNzN4IGRldmljZSBpcyBwcmVzZW50IGFuZCBjb3JyZWN0bHkgaWRlbnRpZmllZC5cblxuVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlLCBhcyBmYXIgYXMgSSBrbm93IOKAkyBhbmQgSSd2ZSBiZWVuIGFyb3VuZCB0aGUgYmxvY2ssIOKAkyBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGlzIHNwZWNpZmljIE1pY3JvY2hpcCBEUExMIGNoaXAsIHRoZSBaTDMwNzN4LiBUaGVyZWZvcmUsIGdpdmVuIHRoZSB0eXBpY2FsIHNldHVwIG9mIEdDRSBvciBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZSBkZXZpY2UgcHJvYmUgaXMgZ29pbmcgdG8gZmxhdCBvdXQgZmFpbC4gV2hpY2ggbWVhbnMgdGhlIGNvZGUgSSdtIGNvbmNlcm5lZCBhYm91dCwgdGhlIG1vZGlmaWVkIGJpdHMsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRob3VnaCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQga2VybmVsIHRvIHNlZSBpZiBhbnlvbmUgaGFzIHdyaXR0ZW4gYSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhpcy4gWW91IG5ldmVyIGtub3cuIEl0IHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSBhbiBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjQ1LjI5Nzk5NDc1N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMzAyNTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpsMzA3M3hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pMmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDo0NS4zNjkyMzIyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcyNDgxNTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSTJDIEVtdWxhdGlvbiDigJMgQSBSb2FkYmxvY2sqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkZXNpZ24sIGFuZCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20ganVzdCBzbGFwcGVkIG1lLiBObyBJMkMgZW11bGF0aW9uLiAqRGFtbi4qIEkgd2FzIGhvcGluZyB0byBsZXZlcmFnZSB0aGF0IGZvciBjb25maWd1cmF0aW9uIGFuZCBtYXliZSBldmVuIHNvbWUgYmFzaWMgZGF0YSB0cmFuc2ZlciBpZiB3ZSB3ZXJlIGluIGEgYmluZC4gQnV0IG5vcGUsIGl0J3Mgbm90IHN1cHBvcnRlZC4gVGhpcyBpbW1lZGlhdGVseSBjaGFuZ2VzIG15IGFwcHJvYWNoLCBsaWtlbHkgYWRkaW5nIHNpZ25pZmljYW50IGNvbXBsZXhpdHkuIFRoaXMgd2lsbCByZXF1aXJlIGEgZGVlcGVyIGRpdmUgdG8gZmlndXJlIG91dCB3aGF0IGFsdGVybmF0aXZlIGNvbW11bmljYXRpb24gcHJvdG9jb2xzIGFyZSBhdmFpbGFibGUsIG9yIHBlcmhhcHMgSSdsbCBuZWVkIHRvIGRlc2lnbiBhIGN1c3RvbSBzb2x1dGlvbiBpZiBhbGwgZWxzZSBmYWlscy4gTm90IGlkZWFsLCBidXQgd2UgaGF2ZSB0byB3b3JrIHdpdGhpbiB0aGUgY29uc3RyYWludHMuIFRoaXMnbGwgcmVxdWlyZSBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNjoyMDo1MC4xNDE3MTU4OTdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTIzODExOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemwzMDczeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3NwaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE2OjIwOjUwLjI1Mjk2MDU3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDYyNDMwNzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIGVtdWxhdGUgU1BJIGZvciB0aGlzIGRyaXZlci4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgYSBkcml2ZXIgZm9yIGEgTWljcm9jaGlwIFpMMzA3M3ggRFBMTCBjaGlwLiBJIGtub3cgbXkgZmllbGQgLSBzdGFuZGFyZCBRRU1VIGp1c3QgZG9lc24ndCBjdXQgaXQgZm9yIHRoaXMgdHlwZSBvZiB0aGluZy4gVGhpcyBpcyBoYXJkd2FyZSB0aGF0IHlvdSBuZWVkIHRoZSBhY3R1YWwgcGh5c2ljYWwgY2FyZCBmb3IuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCBpdCdzIGNsZWFyOiBcIkNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi4gdmVuZG9yLXNwZWNpZmljLi4uIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gTmFpbGVkIGl0LiBUaGlzIGlzIGV4YWN0bHkgd2hhdCB3ZSBoYXZlIGhlcmUuIFRoZSBwcm9iZSBmdW5jdGlvbiBpcyBnb2luZyB0byBmYWlsIGhhcmQgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0cnlpbmcgdG8gcmVhZCB0aGUgY2hpcCBJRCwgYW5kIHRoYXQgRFBMTCBuZXRsaW5rIGludGVyZmFjZSBpcyBub3QgZ29pbmcgdG8gcmVnaXN0ZXIuIFRoZSBwYXRjaGVkIGNvZGUgaXMgdW5yZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgSSdtIHVzaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gZmxhZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIGJlIHN1cmUgdG8gYWRkIGEgY29uY2lzZSByZWFzb25pbmcgdG8gZW5zdXJlIHdlJ3JlIGNsZWFyIG9uIHRoZSBqdXN0aWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU4NiwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjE6MDQuODc3MjcwOTA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBaTDMwNzN4IERQTEwgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBJMkMvU1BJIGhhcmR3YXJlIGRyaXZlci4gVGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluIERQTEwgbmV0bGluayBjYWxsYmFja3MpIGFyZSBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIHN1Y2Nlc3NmdWxseSBwcm9iZXMsIHdoaWNoIHJlcXVpcmVzIHJlYWRpbmcgYSB2YWxpZCBjaGlwIElEIGZyb20gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTY6MjE6MDQuODc3MzE3MzU1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgwkj8[1] Phase: Running StartedAt: 2026-08-14 16:21:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgwkj8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 16:21:17 +0000 UTC FinishedAt: 2026-08-14 16:21:23 +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,}