Name: series-workflow7p68g Phase: Failed StartedAt: 2026-08-21 14:04:43 +0000 UTC FinishedAt: 2026-08-21 14:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7p68g[0] Phase: Succeeded StartedAt: 2026-08-21 14:04:43 +0000 UTC FinishedAt: 2026-08-21 14:23:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7p68g[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 14:04:43 +0000 UTC FinishedAt: 2026-08-21 14:23:48 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUmIzM5O3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG5pbmRleCAxNzIyYjcwMzhmMzQwLi42OGI1ODAxOTE1MDg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuQEAgLTI5NzEsMTAgJiM0MzsyOTcxLDE2IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGxwLVx1MDAzZWRtYV9yZWdzKTtcbiBcdFx0fVxuLVx0XHRpZiAobHAtXHUwMDNlcnhfaXJxIFx1MDAzYz0gMCB8fCBscC1cdTAwM2V0eF9pcnEgXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRpZiAoIWxwLVx1MDAzZXJ4X2lycSB8fCAhbHAtXHUwMDNldHhfaXJxKSB7XG4gXHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IGRldGVybWluZSBpcnFzXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKGxwLVx1MDAzZXJ4X2lycSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIGxwLVx1MDAzZXJ4X2lycTtcbiYjNDM7XHRcdGlmIChscC1cdTAwM2V0eF9pcnEgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJldHVybiBscC1cdTAwM2V0eF9pcnE7XG4mIzQzO1x0XHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgbHAtXHUwMDNlZXRoX2lycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRcdHJldHVybiBscC1cdTAwM2VldGhfaXJxO1xuIFxuIFx0XHQvKiBSZXNldCBjb3JlIG5vdyB0aGF0IGNsb2NrcyBhcmUgZW5hYmxlZCwgcHJpb3IgdG8gYWNjZXNzaW5nIE1ESU8gKi9cbiBcdFx0cmV0ID0gX19heGllbmV0X2RldmljZV9yZXNldChscCk7XG5AQCAtMzA1MCw3ICYjNDM7MzA1Niw3IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2YXhpZW5ldF9ldGh0b29sX29wcztcbiBcdH1cbiBcdC8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovXG4tXHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2M9IDApXG4mIzQzO1x0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjIDApXG4gXHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtFdGhlcm5ldCBjb3JlIElSUSBub3QgZGVmaW5lZFxcblwmIzM0Oyk7XG4gXG4gXHQvKiBSZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUmIzM5O3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKaW5kZXggMTcyMmI3MDM4ZjM0MC4uNjhiNTgwMTkxNTA4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCkBAIC0yOTcxLDEwICYjNDM7Mjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Y291bGQgbm90IG1hcCBETUEgcmVnc1xuJiMzNDspOwogCQkJcmV0dXJuIFBUUl9FUlIobHAtJmd0O2RtYV9yZWdzKTsKIAkJfQotCQlpZiAobHAtJmd0O3J4X2lycSAmbHQ7PSAwIHx8IGxwLSZndDt0eF9pcnEgJmx0Oz0gMCkgewomIzQzOwkJaWYgKCFscC0mZ3Q7cnhfaXJxIHx8ICFscC0mZ3Q7dHhfaXJxKSB7CiAJCQlkZXZfZXJyKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O2NvdWxkIG5vdCBkZXRlcm1pbmUgaXJxc1xuJiMzNDspOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KJiM0MzsJCWlmIChscC0mZ3Q7cnhfaXJxICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gbHAtJmd0O3J4X2lycTsKJiM0MzsJCWlmIChscC0mZ3Q7dHhfaXJxICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gbHAtJmd0O3R4X2lycTsKJiM0MzsJCWlmIChscC0mZ3Q7ZXRoX2lycSAmbHQ7IDAgJmFtcDsmYW1wOyBscC0mZ3Q7ZXRoX2lycSAhPSAtRU5YSU8pCiYjNDM7CQkJcmV0dXJuIGxwLSZndDtldGhfaXJxOwogCiAJCS8qIFJlc2V0IGNvcmUgbm93IHRoYXQgY2xvY2tzIGFyZSBlbmFibGVkLCBwcmlvciB0byBhY2Nlc3NpbmcgTURJTyAqLwogCQlyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTsKQEAgLTMwNTAsNyAmIzQzOzMwNTYsNyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJbmRldi0mZ3Q7ZXRodG9vbF9vcHMgPSAmYW1wO2F4aWVuZXRfZXRodG9vbF9vcHM7CiAJfQogCS8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovCi0JaWYgKGxwLSZndDtldGhfaXJxICZsdDs9IDApCiYjNDM7CWlmIChscC0mZ3Q7ZXRoX2lycSAmbHQ7IDApCiAJCWRldl9pbmZvKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O0V0aGVybmV0IGNvcmUgSVJRIG5vdCBkZWZpbmVkXG4mIzM0Oyk7CiAKIAkvKiBSZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGludGVycnVwdCByZXF1ZXN0IChJUlEpIHZhbHVlcyBmb3IgdGhlIHJlY2VpdmUsIHRyYW5zbWl0LCBhbmQgZ2VuZXJhbCBFdGhlcm5ldCBpbnRlcnJ1cHRzIChgbHAtJmd0O3J4X2lycWAsIGBscC0mZ3Q7dHhfaXJxYCwgYGxwLSZndDtldGhfaXJxYCkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdGlnaHRlbmluZyB1cCB0aGUgZXJyb3IgY2hlY2tpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGluY29ycmVjdGx5IGNvbnNpZGVyZWQgemVybyBhcyBhbiBlcnJvciBmb3IgSVJRcywgd2hpY2ggaXNuJiMzOTt0IGFsd2F5cyB0aGUgY2FzZSwgYnV0IG5lZ2F0aXZlIHZhbHVlcyAqYXJlKiBlcnJvcnMuIFRoZSBwYXRjaCBjb3JyZWN0bHkgZW5zdXJlcyB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBJUlEgdmFsdWUgaXMgbmVnYXRpdmUuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgZmlyc3QsIGhvdyByZWxldmFudCBpcyB0aGlzIGRyaXZlciBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZXNwZWNpYWxseSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gVGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCB0eXBpY2FsbHkgbWVhbnMgaXQmIzM5O3MgZm9yIHBsYXRmb3JtIGRldmljZXMgZm91bmQgaW4gWGlsaW54IEZQR0FzIG9yIFNvQ3Mg4oCTIFp5bnEsIE1pY3JvQmxhemUsIGFuZCB0aGUgbGlrZS4gVGhlc2UgZGV2aWNlcyB1c3VhbGx5IHJlbHkgb24gYSBkZXZpY2UgdHJlZSB0byBiZSBwcm9iZWQuIFRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8KCkkga25vdyBzeXprYWxsZXIgY2FuIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzLCBidXQgdGhlcmUgYXJlIGEgZmV3IGNvbmRpdGlvbnMuIEVpdGhlciB0aGUgZGV2aWNlIGhhcyB0byBiZSByZWdpc3RlcmVkIHVzaW5nIGEgYHN5el9kZXZfcGxhdGZvcm1gIGNhbGwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIFFFTVUgbmVlZHMgdG8gYmUgZW11bGF0aW5nIGl0LiBBbmQsIHdhaXQuLi4gd2FzbiYjMzk7dCB0aGVyZSBzb21lIFhpbGlueCBlbXVsYXRpb24gaW4gUUVNVT8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBgeGlsaW54X2F4aWVuZXRgIGluIHRoZXJlLiBUaGF0JiMzOTtzIHByb21pc2luZy4KCkdpdmVuIHRoYXQgdGhlcmUmIzM5O3MgUUVNVSBlbXVsYXRpb24sIHRoaXMgKmNvdWxkKiBiZSBhIGRlY2VudCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTk9eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1hJTElOWF9BWElfRU1BQykgJiM0Mzs9IHhpbGlueF9lbWFjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYFhJTElOWF9BWElfRU1BQ2AuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gQVhJLWJhc2VkIEV0aGVybmV0IE1BQyBpbXBsZW1lbnRhdGlvbiBmcm9tIFhpbGlueC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgb3IsIGNvbnZlcnNlbHksIHdoYXQgaXQgZW5hYmxlcy4gVGhlcmVmb3JlLCBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyB0cmFjZSBhbGwgb2YgdGhlIGVsZW1lbnRzIGl0IHB1bGxzIGluLiBJIHdhbnQgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgWGlsaW54IEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRhcmdldGluZyBhcm91bmQgbGluZSAyNiBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdgLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyJiMzOTtzIGZlYXR1cmVzIGFyZSBleHBvc2VkIGFuZCBjb250cm9sbGVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgYW5kIHBvdGVudGlhbCBmZWF0dXJlcyB0aGlzIGRyaXZlciBwcm92aWRlcywgc2luY2UgS2NvbmZpZyBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyMjpcdFx0c2VsZWN0IFBIWUxJQlxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwIEV0aGVybmV0IExpdGUgZnJvbSBYaWxpbnguXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuICAyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyOTpcdFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IERJTUxJQlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgZnJvbSBYaWxpbnggZm9yIHRoZVxuICAzNDpcdFx0ICBBWEkgYnVzIGludGVyZmFjZSB1c2VkIGluIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFNvYyYjMzk7cy5cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgWElMSU5YX0xMX1RFTUFDXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclwmIzM0O1xuICAzODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMzk6XHRcdHNlbGVjdCBQSFlMSUJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiB0aGlzIGBYSUxJTlhfRE1BYCB2YXJpYWJsZS4gUmlnaHQgYXdheSwgbXkgYnJhaW4ga2lja3MgaW4gYW5kIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhpcyBhIGZlYXR1cmUgZmxhZywgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiwgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGlzIGl0IGRlZmluZWQ/IFdoYXQgZG9lcyBpdCBjb250cm9sPyBUaGlzIGlzIGZ1bmRhbWVudGFsLCBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBzY29wZSwgcG9zc2libGUgdmFsdWVzLCBhbmQgaW1wYWN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfRE1BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZG1hL0tjb25maWc9Njc0PWNvbmZpZyBYR0VORV9ETUFcbi0tXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4Mi1cbmRyaXZlcnMvZG1hL0tjb25maWc6NjgzOmNvbmZpZyBYSUxJTlhfRE1BXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4NC1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBETUEgQ29uZmlndXJhdGlvbiBGaWxlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIERNQSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgZHJpdmVycy9kbWEvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGFyb3VuZCBsaW5lIDY4My4gSG9wZWZ1bGx5LCB0aGF0IGxvY2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgaW50byB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBmb3IgYSBwYXJ0aWN1bGFyIERNQSBjb250cm9sbGVyIG9yIGZlYXR1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBhbmQgdGhlbiBJIGNhbiByZWZpbmUgbXkgc2VhcmNoIGZyb20gdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBjbHVlcyB0aGlzIHByb3ZpZGVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBUE0gWC1HZW5lIERNQSBzdXBwb3J0XCYjMzQ7XG4gNjc2Olx0XHRkZXBlbmRzIG9uIEFSQ0hfWEdFTkUgfHwgQ09NUElMRV9URVNUXG4gNjc3Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY3ODpcdFx0c2VsZWN0IERNQV9FTkdJTkVfUkFJRFxuIDY3OTpcdFx0c2VsZWN0IEFTWU5DX1RYX0VOQUJMRV9DSEFOTkVMX1NXSVRDSFxuIDY4MDpcdFx0aGVscFxuIDY4MTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgdGhlIEFQTSBYLUdlbmUgU29DIERNQSBlbmdpbmUuXG4gNjgyOlx0XG4gNjgzOlx0Y29uZmlnIFhJTElOWF9ETUFcbiA2ODQ6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiA2ODU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gNjg2Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY4NzpcdFx0aGVscFxuIDY4ODpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBWRE1BIFNvZnQgSVAuXG4gNjg5Olx0XG4gNjkwOlx0XHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5MTpcdFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcbiA2OTI6XHRcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cbiA2OTM6XHRcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cbiA2OTQ6XHRcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZD8gSSBzZWUgYFhJTElOWF9ETUFgIGFuZCBgWElMSU5YX0FYSV9FTUFDYCBhcmUgZW5hYmxlZCwgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIGBheGllbmV0X3Byb2JlYC4gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHb29kIHF1ZXN0aW9uLiBJICp0aGluayogUUVNVSBoYXMgYHhpbGlueF9heGllbmV0YCBlbXVsYXRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKTm93LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDb3VsZCBpdCBpbmplY3QgYSBwbGF0Zm9ybSBkZXZpY2UgdG8gdHJpZ2dlciBgYXhpZW5ldF9wcm9iZWA/IE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcywgc3l6a2FsbGVyICpjYW4qIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBgc3l6X2Rldl9wbGF0Zm9ybWAgb3Igc2ltaWxhciBmdW5jdGlvbnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgYHN5el9kZXZfcGxhdGZvcm1gIHRoYXQgY2FuIGluamVjdCAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggKmFyYml0cmFyeSogcmVzb3VyY2VzLiBJdCBvbmx5IHdvcmtzIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgc3VwcG9ydGVkLCBvciB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLiBCdXQsIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBwbGF0Zm9ybSBkZXZpY2UgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdGhpbmtpbmcuCgpXYWl0LCBiYWNrIHVwLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSB0aGF0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgaW5jbHVkZXMgZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBVU0IgZ2FkZ2V0cywgYW5kIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB3aGljaCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXZlbiAqcG9zc2libGUqIHRvIHByb2JlIHRoaXMgaW4gUUVNVS4KClFFTVUgKmRvZXMqIHN1cHBvcnQgWGlsaW54IFp5bnEgYW5kIE1pY3JvQmxhemUgbWFjaGluZXMsIHdoaWNoIHVzZSB0aGlzIGRldmljZS4gSG93ZXZlciwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NCBnZW5lcmljIHZpcnQgbWFjaGluZXMuIFNvLCBpZiB0aGlzIGRyaXZlciBpcyBjb21waWxlZCBvbiB4ODZfNjQsIGNhbiBpdCBhY3R1YWxseSAqYmUqIHByb2JlZD8gT25seSBpZiBhIGRldmljZSB0cmVlIG92ZXJsYXkgaXMgbG9hZGVkLCBvciBpZiBhIHBsYXRmb3JtIGRldmljZSBpcyByZWdpc3RlcmVkLiBJIGhhdmUgdG8gZmFjdG9yIHRoYXQgaW4uCgpIbW0sIHdhaXQuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBwc2V1ZG8tc3lzY2FsbCBgc3l6X2luaXRfbmV0X2RldmljZWA/IE5vLCB0aGF0JiMzOTtzIG5ldGxpbmsuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJpbGl0aWVzLiBEb2VzIHN5emthbGxlciBzcGVjaWZpY2FsbHkgZnV6eiBYaWxpbnggQVhJIEV0aGVybmV0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBUaGF0IHdpbGwgYmUgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtheGllbmV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzI3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5NQUlOVEFJTkVSUz0yOTY0Mj1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUzoyOTY0MzpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0KlxuTUFJTlRBSU5FUlMtMjk2NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1hJTElOWF9FTUFDTElURSkgJiM0Mzs9IHhpbGlueF9lbWFjbGl0ZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6OTp4aWxpbnhfZW1hYy1vYmpzIDo9IHhpbGlueF9heGllbmV0X21haW4ubyB4aWxpbnhfYXhpZW5ldF9tZGlvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSAmIzQzOz0geGlsaW54X2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTQ2Mj1zdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3Ige1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ3MTogKiBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAtIGF4aWVuZXQgcHJpdmF0ZSBwZXIgZGV2aWNlIGRhdGFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3Mi0gKiBAbmRldjpcdFBvaW50ZXIgZm9yIG5ldF9kZXZpY2UgdG8gd2hpY2ggaXQgd2lsbCBiZSBhdHRhY2hlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODItICogQG1paV9jbGtfZGl2OiBNSUkgYnVzIGNsb2NrIGRpdmlkZXIgdmFsdWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4MzogKiBAcmVnc19zdGFydDogUmVzb3VyY2Ugc3RhcnQgZm9yIGF4aWVuZXQgZGV2aWNlIGFkZHJlc3Nlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDg0OiAqIEByZWdzOlx0QmFzZSBhZGRyZXNzIGZvciB0aGUgYXhpZW5ldF9sb2NhbCBkZXZpY2UgYWRkcmVzcyBzcGFjZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDg1LSAqIEBkbWFfcmVnczpcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWRtYSBkZXZpY2UgYWRkcmVzcyBzcGFjZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzMi0gKiBAb3B0aW9uczpcdEF4aUV0aGVybmV0IG9wdGlvbiB3b3JkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo1MzM6ICogQGZlYXR1cmVzOlx0U3RvcmVzIHRoZSBleHRlbmRlZCBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIGF4aWVuZXQgaHdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzNC0gKiBAbWF4X2ZybV9zaXplOiBTdG9yZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZnJhbWUgdGhhdCBjYW4gYmUgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU0OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjU0OTpzdHJ1Y3QgYXhpZW5ldF9sb2NhbCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC01NTAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2MzI6ICogc3RydWN0IGF4aWVuZXRfb3B0aW9uIC0gVXNlZCB0byBzZXQgYXhpIGV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMy0gKiBAb3B0Olx0T3B0aW9uIHRvIGJlIHNldC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Mzc6c3RydWN0IGF4aWVuZXRfb3B0aW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzOC1cdHUzMiBvcHQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjQzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ0OiAqIGF4aWVuZXRfaW9yIC0gTWVtb3J5IG1hcHBlZCBBeGkgRXRoZXJuZXQgcmVnaXN0ZXIgcmVhZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ1OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDYtICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2lvcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU3OnN0YXRpYyBpbmxpbmUgdTMyIGF4aW5ldF9pb3JfcmVhZF9tY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1OTpcdHJldHVybiBheGllbmV0X2lvcihscCwgWEFFX01ESU9fTUNSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjYyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2xvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjY4OnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X3VubG9ja19taWkoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NzQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzU6ICogYXhpZW5ldF9pb3cgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciB3cml0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njc2OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NzctICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4Mi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY4MzpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9pb3coc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCBvZmZzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODQtXHRcdFx0ICAgICAgIHUzMiB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTA6ICogYXhpZW5ldF9kbWFfb3V0MzIgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTE6ICogQGxwOlx0XHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTItICogQHJlZzpcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njk5OnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXQzMihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDAtXHRcdFx0XHQgICAgIG9mZl90IHJlZywgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwNzogKiBheGllbmV0X2RtYV9vdXQ2NCAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwODogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwOS0gKiBAcmVnOlx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MTU6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDY0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNi1cdFx0XHRcdCAgICAgb2ZmX3QgcmVnLCB1NjQgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzIxOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXRfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMi1cdFx0XHRcdFx0ZG1hX2FkZHJfdCBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNC1cdGlmIChscC1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgWEFFX0ZFQVRVUkVfRE1BXzY0QklUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzI1Olx0XHRheGllbmV0X2RtYV9vdXQ2NChscCwgcmVnLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNi1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNzpcdFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczMjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzMtXHRcdFx0XHRcdGRtYV9hZGRyX3QgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzU6XHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQwOi8qIEZ1bmN0aW9uIHByb3RvdHlwZXMgdmlzaWJsZSBpbiB4aWxpbnhfYXhpZW5ldF9tZGlvLmMgZm9yIG90aGVyIGZpbGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDE6aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQyOnZvaWQgYXhpZW5ldF9tZGlvX3RlYXJkb3duKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03NDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDc6I2luY2x1ZGUgXCYjMzQ7eGlsaW54X2F4aWVuZXQuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5LS8qIE11c3QgYmUgc2hvcnRlciB0aGFuIGxlbmd0aCBvZiBldGh0b29sX2RydmluZm8uZHJpdmVyIGZpZWxkIHRvIGZpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDojZGVmaW5lIERSSVZFUl9OQU1FXHRcdFwmIzM0O3hheGllbmV0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxLSNkZWZpbmUgRFJJVkVSX0RFU0NSSVBUSU9OXHRcJiMzNDtYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY2OnN0YXRpYyB2b2lkIGF4aWVuZXRfcnhfc3VibWl0X2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgtLyogTWF0Y2ggdGFibGUgZm9yIG9mX3BsYXRmb3JtIGJpbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXhpZW5ldF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmFcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXhpZW5ldF9vZl9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03OC0vKiBPcHRpb24gdGFibGUgZm9yIHNldHRpbmcgdXAgQXhpIEV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Nzk6c3RhdGljIHN0cnVjdCBheGllbmV0X29wdGlvbiBheGllbmV0X29wdGlvbnNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODAtXHQvKiBUdXJuIG9uIGp1bWJvIHBhY2tldCBzdXBwb3J0IGZvciBib3RoIFJ4IGFuZCBUeCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzM6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzg6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDQ6ICogYXhpZW5ldF9kbWFfaW4zMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciByZWFkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQ2LSAqIEByZWc6XHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTI6c3RhdGljIGlubGluZSB1MzIgYXhpZW5ldF9kbWFfaW4zMihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTU3OnN0YXRpYyB2b2lkIGRlc2Nfc2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGRtYV9hZGRyX3QgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU4LVx0XHRcdCAgICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNjU6c3RhdGljIGRtYV9hZGRyX3QgZGVzY19nZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNzc6ICogYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSAtIFJlbGVhc2UgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc4LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4MC0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgZGVzY3JpcHRvcnMgYWxsb2NhdGVkIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4MTogKiBheGllbmV0X2RtYV9iZF9pbml0LiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIGlzIGNhbGxlZCB3aGVuIEF4aSBFdGhlcm5ldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODItICogZHJpdmVyIHN0b3AgYXBpIGlzIGNhbGxlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxODQ6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfYmRfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg2LVx0aW50IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NzpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIyNjpzdGF0aWMgdTY0IGF4aWVuZXRfZG1hX3JhdGUoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjMzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMzQ6ICogYXhpZW5ldF9jYWxjX2NyKCkgLSBDYWxjdWxhdGUgY29udHJvbCByZWdpc3RlciB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzUtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI0NDpzdGF0aWMgdTMyIGF4aWVuZXRfY2FsY19jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjb3VudCwgdTMyIHVzZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTMtXHRpZiAoY291bnQgXHUwMDNlIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjU0Olx0XHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjU1LVx0XHR1MzIgdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNjktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3MDogKiBheGllbmV0X2NvYWxlc2NlX3BhcmFtcygpIC0gRXh0cmFjdCBjb2FsZXNjZSBwYXJhbWV0ZXJzIGZyb20gdGhlIENSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3MS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc2OnN0YXRpYyB2b2lkIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzctXHRcdFx0XHQgICAgdTMyICpjb3VudCwgdTMyICp1c2VjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzk6XHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwLVx0dTY0IHRpbWVyID0gRklFTERfR0VUKFhBWElETUFfREVMQVlfTUFTSywgY3IpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODc6ICogYXhpZW5ldF9kbWFfc3RhcnQgLSBTZXQgdXAgRE1BIHJlZ2lzdGVycyBhbmQgc3RhcnQgRE1BIG9wZXJhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODg6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5MDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdGFydChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTUtXHRscC1cdTAwM2VyeF9kbWFfY3IgXHUwMDI2PSB+WEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5NjpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXHUwMDNlcnhfZG1hX2NyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjk3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwMTpcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX0NERVNDX09GRlNFVCwgbHAtXHUwMDNlcnhfYmRfcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMi1cdGxwLVx1MDAzZXJ4X2RtYV9jciB8PSBYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cdTAwM2VyeF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDQ6XHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9UREVTQ19PRkZTRVQsIGxwLVx1MDAzZXJ4X2JkX3AgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzA1LVx0XHRcdCAgICAgKHNpemVvZigqbHAtXHUwMDNlcnhfYmRfdikgKiAobHAtXHUwMDNlcnhfYmRfbnVtIC0gMSkpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMi1cdGxwLVx1MDAzZXR4X2RtYV9jciBcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBscC1cdTAwM2V0eF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzE5Olx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfVFhfQ0RFU0NfT0ZGU0VULCBscC1cdTAwM2V0eF9iZF9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIwLVx0bHAtXHUwMDNldHhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjE6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXR4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMi1cdGxwLVx1MDAzZXR4X2RtYV9zdGFydGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzI4OiAqIGF4aWVuZXRfZG1hX2JkX2luaXQgLSBTZXR1cCBidWZmZXIgZGVzY3JpcHRvciByaW5ncyBmb3IgQXhpIERNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjktICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzM2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMzc6c3RhdGljIGludCBheGllbmV0X2RtYV9iZF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzQxOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mzk2Olx0YXhpZW5ldF9kbWFfc3RhcnQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTktb3V0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDA6XHRheGllbmV0X2RtYV9iZF9yZWxlYXNlKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDEtXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDA1OiAqIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzIC0gV3JpdGUgdGhlIE1BQyBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNi0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxMjpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDEzLVx0XHRcdFx0ICAgIGNvbnN0IHZvaWQgKmFkZHJlc3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxNTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjItXHQvKiBTZXQgdXAgdW5pY2FzdCBNQUMgYWRkcmVzcyBmaWx0ZXIgc2V0IGl0cyBtYWMgYWRkcmVzcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MjM6XHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzBfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjQtXHRcdCAgICAobmRldi1cdTAwM2VkZXZfYWRkclswXSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI3LVx0XHQgICAgKG5kZXYtXHUwMDNlZGV2X2FkZHJbM10gXHUwMDNjXHUwMDNjIDI0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyODpcdGF4aWVuZXRfaW93KGxwLCBYQUVfVUFXMV9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyOTpcdFx0ICAgICgoKGF4aWVuZXRfaW9yKGxwLCBYQUVfVUFXMV9PRkZTRVQpKSBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDMwLVx0XHQgICAgICB+WEFFX1VBVzFfVU5JQ0FTVEFERFJfTUFTSykgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQyLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGluaXRpYWxpemUgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBBeGkgRXRoZXJuZXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDQzOiAqIGNvcmUuIEl0IGNhbGxzIHRoZSBjb3JlIHNwZWNpZmljIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzLiBUaGlzIGlzIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDQtICogZnVuY3Rpb24gdGhhdCBnb2VzIGludG8gbmV0X2RldmljZV9vcHMgc3RydWN0dXJlIGVudHJ5IG5kb19zZXRfbWFjX2FkZHJlc3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz00NDY9c3RhdGljIGludCBuZXRkZXZfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTA6XHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBhZGRyLVx1MDAzZXNhX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDU1OiAqIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0IC0gUHJlcGFyZSB0aGUgbXVsdGljYXN0IHRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1Ni0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NjQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2NTpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2OC1cdHUzMiByZWcsIGFmMHJlZywgYWYxcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Njk6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzE6XHRyZWcgPSBheGllbmV0X2lvcihscCwgWEFFX0ZNSV9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzItXHRyZWcgXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc2LVx0XHRyZWcgXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Nzc6XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4MS1cdFx0cmVnIFx1MDAyNj0gMHhGRkZGRkYwMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgyOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4MzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCAxKTsgLyogTXVsdGljYXN0IGJpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODQ6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NTpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAxKTsgLyogZGl0dG8gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg2Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODc6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4OC1cdFx0aSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwNzpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwODpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMF9PRkZTRVQsIGFmMHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwOTpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIGFmMXJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMDpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDB4ZmZmZmZmZmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTE6XHRcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTFfT0ZGU0VULCAweDAwMDBmZmZmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEyOlx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxMy1cdFx0XHRpJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxOS1cdFx0cmVnIHw9IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMDpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjE6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTI2OiAqIGF4aWVuZXRfc2V0b3B0aW9ucyAtIFNldCBhbiBBeGkgRXRoZXJuZXQgb3B0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNy0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzMtICogdGhlc2Ugb3B0aW9ucyBpbiB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLiBUaGlzIGlzIGRvbmUgdGhyb3VnaFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzQ6ICogYXhpZW5ldF9vcHRpb24gc3RydWN0dXJlIC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzY6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRvcHRpb25zKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgb3B0aW9ucylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM4LVx0aW50IHJlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM5Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MDpcdHN0cnVjdCBheGllbmV0X29wdGlvbiAqdHAgPSBcdTAwMjZheGllbmV0X29wdGlvbnNbMF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQyLVx0d2hpbGUgKHRwLVx1MDAzZW9wdCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDM6XHRcdHJlZyA9ICgoYXhpZW5ldF9pb3IobHAsIHRwLVx1MDAzZXJlZykpIFx1MDAyNiB+KHRwLVx1MDAzZW1fb3IpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ0LVx0XHRpZiAob3B0aW9ucyBcdTAwMjYgdHAtXHUwMDNlb3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDUtXHRcdFx0cmVnIHw9IHRwLVx1MDAzZW1fb3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0NjpcdFx0YXhpZW5ldF9pb3cobHAsIHRwLVx1MDAzZXJlZywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ3LVx0XHR0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU1MzpzdGF0aWMgdTY0IGF4aWVuZXRfc3RhdChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGVudW0gdGVtYWNfc3RhdCBzdGF0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjA6XHRjb3VudGVyID0gYXhpZW5ldF9pb3IobHAsIFhBRV9TVEFUU19PRkZTRVQgJiM0Mzsgc3RhdCAqIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjEtXHRyZXR1cm4gbHAtXHUwMDNlaHdfc3RhdF9iYXNlW3N0YXRdICYjNDM7IChjb3VudGVyIC0gbHAtXHUwMDNlaHdfbGFzdF9jb3VudGVyW3N0YXRdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTY0OnN0YXRpYyB2b2lkIGF4aWVuZXRfc3RhdHNfdXBkYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgYm9vbCByZXNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3MC1cdGZvciAoc3RhdCA9IDA7IHN0YXQgXHUwMDNjIFNUQVRfQ09VTlQ7IHN0YXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU3MTpcdFx0dTMyIGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTc5OnN0YXRpYyB2b2lkIGF4aWVuZXRfcmVmcmVzaF9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4MTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgyLVx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODQtXHRtdXRleF9sb2NrKFx1MDAyNmxwLVx1MDAzZXN0YXRzX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1ODU6XHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODYtXHRtdXRleF91bmxvY2soXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU5MjpzdGF0aWMgaW50IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTk5LVx0aWYgKGxwLVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBYQUVfRkVBVFVSRV9TVEFUUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjAwOlx0XHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDk6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIFhBWElETUFfQ1JfUkVTRVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYxMDpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfZG1hX2luMzIsIHZhbHVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTEtXHRcdFx0XHQhKHZhbHVlIFx1MDAyNiBYQVhJRE1BX0NSX1JFU0VUX01BU0spLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjE5LVx0LyogV2FpdCBmb3IgUGh5UnN0Q21wbHQgYml0IHRvIGJlIHNldCwgaW5kaWNhdGluZyB0aGUgUEhZIHJlc2V0IGhhcyBmaW5pc2hlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MjA6XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChheGllbmV0X2lvciwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYyMS1cdFx0XHRcdHZhbHVlIFx1MDAyNiBYQUVfSU5UX1BIWVJTVENNUExUX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MzYtXHRcdFx0dTMyIGNvdW50ZXIgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2Mzc6XHRcdFx0XHRheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUyOiAqIGF4aWVuZXRfZG1hX3N0b3AgLSBTdG9wIERNQSBvcGVyYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUzOiAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTU6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfc3RvcChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NjItXHRjciA9IGxwLVx1MDAzZXJ4X2RtYV9jciBcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjYzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBjcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2NC1cdGxwLVx1MDAzZXJ4X2RtYV9zdGFydGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzEtXHRjciA9IGxwLVx1MDAzZXR4X2RtYV9jciBcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjcyOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBjcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3My1cdGxwLVx1MDAzZXR4X2RtYV9zdGFydGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzgtXHQvKiBHaXZlIERNQXMgYSBjaGFuY2UgdG8gaGFsdCBncmFjZWZ1bGx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3OTpcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODAtXHRmb3IgKGNvdW50ID0gMDsgIShzciBcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2MgNTsgJiM0MzsmIzQzO2NvdW50KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MS1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjgyOlx0XHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY4NTpcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODYtXHRmb3IgKGNvdW50ID0gMDsgIShzciBcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2MgNTsgJiM0MzsmIzQzO2NvdW50KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ny1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg4Olx0XHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjkxLVx0LyogRG8gYSByZXNldCB0byBlbnN1cmUgRE1BIGlzIHJlYWxseSBzdG9wcGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5MjpcdGF4aWVuZXRfbG9ja19taWkobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTM6XHRfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk0Olx0YXhpZW5ldF91bmxvY2tfbWlpKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk4OiAqIGF4aWVuZXRfZGV2aWNlX3Jlc2V0IC0gUmVzZXQgYW5kIGluaXRpYWxpemUgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk5LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEwOnN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMjpcdHUzMiBheGllbmV0X3N0YXR1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEzOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MjgtXHRpZiAoIWxwLVx1MDAzZXVzZV9kbWFlbmdpbmUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzI5Olx0XHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MzM6XHRcdHJldCA9IGF4aWVuZXRfZG1hX2JkX2luaXQobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczNC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDE6XHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfUkNXMV9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDI6XHRheGllbmV0X3N0YXR1cyBcdTAwMjY9IH5YQUVfUkNXMV9SWF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDM6XHRheGllbmV0X2lvdyhscCwgWEFFX1JDVzFfT0ZGU0VULCBheGllbmV0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ1Olx0YXhpZW5ldF9zdGF0dXMgPSBheGllbmV0X2lvcihscCwgWEFFX0lQX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NjpcdGlmIChheGllbmV0X3N0YXR1cyBcdTAwMjYgWEFFX0lOVF9SWFJKRUNUX01BU0spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9JU19PRkZTRVQsIFhBRV9JTlRfUlhSSkVDVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ4Olx0YXhpZW5ldF9pb3cobHAsIFhBRV9JRV9PRkZTRVQsIGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNlIDAgP1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDktXHRcdCAgICBYQUVfSU5UX1JFQ1ZfRVJST1JfTUFTSyA6IDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1MTpcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkNDX09GRlNFVCwgWEFFX0ZDQ19GQ1JYX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTUtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU2Olx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVx1MDAzZW9wdGlvbnMgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Ny1cdFx0XHQgICB+KFhBRV9PUFRJT05fVFhFTiB8IFhBRV9PUFRJT05fUlhFTikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTg6XHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU5Olx0YXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2MDpcdGF4aWVuZXRfc2V0b3B0aW9ucyhuZGV2LCBscC1cdTAwM2VvcHRpb25zKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njg6ICogYXhpZW5ldF9mcmVlX3R4X2NoYWluIC0gQ2xlYW4gdXAgYSBzZXJpZXMgb2YgbGlua2VkIFRYIGRlc2NyaXB0b3JzLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njk6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NzAtICogQGZpcnN0X2JkOlx0SW5kZXggb2YgZmlyc3QgZGVzY3JpcHRvciB0byBjbGVhbiB1cFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3ODI6c3RhdGljIGludCBheGllbmV0X2ZyZWVfdHhfY2hhaW4oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgZmlyc3RfYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4My1cdFx0XHRcdCBpbnQgbnJfYmRzLCBib29sIGZvcmNlLCB1MzIgKnNpemVwLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4MzU6ICogYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZSAtIENoZWNrcyBpZiBhIEJEL2dyb3VwIG9mIEJEcyBhcmUgY3VycmVudGx5IGJ1c3lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODM2OiAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM3LSAqIEBudW1fZnJhZzpcdFRoZSBudW1iZXIgb2YgQkRzIHRvIGNoZWNrIGZvclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDc6c3RhdGljIGlubGluZSBpbnQgYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg0OC1cdFx0XHRcdFx0ICAgIGludCBudW1fZnJhZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODYyOiAqIGF4aWVuZXRfZG1hX3R4X2NiIC0gRE1BIGVuZ2luZSBjYWxsYmFjayBmb3IgVFggY2hhbm5lbC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODYzOiAqIEBkYXRhOiAgICAgICBQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY0LSAqIEByZXN1bHQ6ICAgICBlcnJvciByZXBvcnRpbmcgdGhyb3VnaCBkbWFlbmdpbmVfcmVzdWx0LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njg6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfdHhfY2Iodm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgKnJlc3VsdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODcwLVx0c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpza2J1Zl9kbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3MTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGRhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Mi1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc1Olx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXHUwMDNldHhfcmluZ190YWlsJiM0MzsmIzQzOyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Ni1cdGxlbiA9IHNrYnVmX2RtYS1cdTAwM2Vza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODg5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4OTA6ICogYXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZSAtIFN0YXJ0cyB0aGUgdHJhbnNtaXNzaW9uLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTEtICogQHNrYjogICAgICAgIHNrX2J1ZmYgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGRhdGEgdG8gYmUgVHhlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTkwND1zdGF0aWMgbmV0ZGV2X3R4X3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA1OmF4aWVuZXRfc3RhcnRfeG1pdF9kbWFlbmdpbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkwNy1cdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZG1hX3R4X2Rlc2MgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo5MDg6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA5LVx0dTMyIGFwcF9tZXRhZGF0YVtETUFfTlVNX0FQUF9XT1JEU10gPSB7MH07XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NjgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IHRoaXM/IExldCYjMzk7cyBicmVhayBpdCBkb3duLgoKRmlyc3QsIEkga25vdyB0aGF0IFFFTVUgZW11bGF0ZXMgYHhpbGlueF9heGllbmV0YCBpbiBgaHcvbmV0L3hpbGlueF9heGllbmV0LmNgLiBTbywgaW4gdGhlb3J5LCBpZiBJIGNvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDPXlgIGFuZCBgQ09ORklHX1hJTElOWF9ETUE9eWAgYW5kIHJ1biBpdCBpbiBRRU1VLCBzeXprYWxsZXIgKmNvdWxkKiB0cnkuIEJ1dCwgdGhlcmUmIzM5O3MgYSBjYXRjaCwgc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2V0IHVwIGZvciB4ODZfNjQgb3IgYXJtNjQuIE9uIGFybTY0LCBpdCB3aWxsIHVzZSB0aGUgYHZpcnRgIG1hY2hpbmUuIFRoZSBgdmlydGAgbWFjaGluZSBkb2VzbiYjMzk7dCBoYXZlIGFuIGB4aWxpbnhfYXhpZW5ldGAgaW5zdGFuY2UgYnkgZGVmYXVsdC4KCkkga25vdyBzeXprYWxsZXIgKmNhbiogdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzLCB0aGVvcmV0aWNhbGx5IGluc3RhbnRpYXRpbmcgcGxhdGZvcm0gZGV2aWNlcywgYnV0IGl0JiMzOTtzIG5vdCBhIHN0YW5kYXJkLCBhdXRvbWF0aWMgcHJvY2VzcywgYW5kIEkgZG9uJiMzOTt0IGtub3cgaWYgdGhpcyBwYXJ0aWN1bGFyIGluc3RhbmNlIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBJICp0aG91Z2h0KiB0aGVyZSB3YXMgYSBgc3l6X2Rldl9wbGF0Zm9ybWAgcHNldWRvLXN5c2NhbGwsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZXhpc3QuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkcml2ZXIuIFdhaXQsIEkgcmVtZW1iZXIsIHRoYXQgZ3JlcCBvdXRwdXQgZGlkbiYjMzk7dCB5aWVsZCBhbnl0aGluZy4KCkhvbGQgb24sIHRoZSBwcm9tcHQgZG9lcyBzYXkgc29tZXRoaW5nIGFib3V0IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZSwgaXQgbmVlZHMgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIHRvIGJlIHByb2JlZCEgSXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpRRU1VIGVtdWxhdGVzIGl0LCBidXQgaXQmIzM5O3Mgb25seSBpbnN0YW50aWF0ZWQgaW4gdmVyeSBzcGVjaWZpYyBtYWNoaW5lIHR5cGVzLCBsaWtlIGBwZXRhbG9naXgtczNhZHNwMTgwMGAgb3IgYHhsbngtemN1MTAyYCBvciBgbWljcm9ibGF6ZWAuIFN5emthbGxlciB0eXBpY2FsbHkgcnVucyBvbiBgcTM1YCAoeDg2XzY0KSBvciBgdmlydGAgKGFybTY0KS4gQ2FuIGl0IHJlYWNoIHRoaXM/CgpIbW0uIFRoZSBjb21taXQgbWVzc2FnZS4gJiMzNDtBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsmIzM0OyBhbmQgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBzdWdnZXN0cyBzeXprYWxsZXIgZWl0aGVyICpkaWQqIGZpbmQgYSBidWcsIG9yIGlzIHRlc3RpbmcgYSBwYXRjaCBmb3IgdGhpcyBkcml2ZXIuCgpXYWl0LCBzeXpib3QgdGVzdHMgYW55IHBhdGNoIGZvciBhbnkgc3Vic3lzdGVtLiBJdCBkb2VzbiYjMzk7dCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIElmIHNvbWVvbmUgc2VuZHMgYSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcsIHN5emJvdCBhcHBsaWVzIGl0IGFuZCBidWlsZHMgaXQuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCB0aGUgZnV6emluZyB3b24mIzM5O3QgaGl0IGl0LCBidXQgdGhlIGJ1aWxkIHdpbGwgc3VjY2VlZC4gU28sIHRoaXMgZG9lc24mIzM5O3QgbmVjZXNzYXJpbHkgbWVhbiBpdCYjMzk7cyBiZWluZyBmdXp6ZWQuCgpPa2F5LCBpZiB0aGUgcGF0Y2gganVzdCBmaXhlcyBhIHByb2JlIGVycm9yLCB3aGljaCBpcyBjb21tb24gZm9yIHRoZXNlIHBsYXRmb3JtIGRyaXZlcnMgdGhhdCByZWx5IG9uIHZlcnkgc3BlY2lmaWMgU29DcyBvciBGUEdBcywgaXQmIzM5O3MgKmhpZ2hseSogbGlrZWx5IHRvIGJlIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwICh4ODZfNjQgb3IgYXJtNjQgYHZpcnRgKS4KCklzIHRoZXJlIGFueSB3YXkgdG8gKnRyaWdnZXIqIHRoZSBwbGF0Zm9ybSBkcml2ZXImIzM5O3MgcHJvYmUgZnJvbSB1c2Vyc3BhY2U/IFllcywgSSBjYW4gYmluZCBhIGRyaXZlciB0byBhIGRldmljZSBieSB3cml0aW5nIHRvIGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYC4gQnV0IEkgc3RpbGwgbmVlZCB0aGUgZGV2aWNlLgoKU2luY2UgdGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBpdCYjMzk7cyBtYXRjaGluZyBhIERldmljZSBUcmVlIG1hdGNoLCBzcGVjaWZpY2FsbHk6ICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMS4wMC5hJiMzNDssICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMS4wMS5hJiMzNDssICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMi4wMS5hJiMzNDsuIFRoZXJlJiMzOTtzIG5vIEFDUEkgbWF0Y2guIEFuZCBpbiBhIHN0YW5kYXJkIHg4Nl82NCBvciBhcm02NCBgdmlydGAgbWFjaGluZSwgdGhlcmUmIzM5O3Mgbm8gc3VjaCBkZXZpY2UgaW4gdGhlIERUISBDYW4gSSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCB0aGF0IGNvbXBhdGlibGUgc3RyaW5nIGZyb20gdXNlcnNwYWNlPyBXZWxsLCB5ZXMsIGJ1dCBpdCYjMzk7ZCBiZSB0aHJvdWdoIHRoZSBgb2Zfb3ZlcmxheWAgY29uZmlnZnMgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHN5emthbGxlciB1c3VhbGx5IGRvZXNuJiMzOTt0IHVzZSB0aGF0LCBvciBpdCYjMzk7cyBkaXNhYmxlZC4KCldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X2luaXRfbmV0X2RldmljZWAsIGJ1dCB0aGF0JiMzOTtzIGZvciBjcmVhdGluZyBzb21lIHR5cGVzIG9mIG5ldHdvcmsgZGV2aWNlcywgbm90IHBsYXRmb3JtIGRldmljZXMuIEFuZCBubywgdGhlcmUgaXMgbm8gYHN5el9kZXZfcGxhdGZvcm1gLi4uIFNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBpZiBhbnkgcGxhdGZvcm0gZGV2aWNlcyBhcmUgZGVzY3JpYmVkIGZvciBpdCBpbiBzeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy9saW51eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgWGlsaW54IEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGFueXRoaW5nIHByZWZpeGVkIHdpdGggJiMzNDtzeXpcXyYjMzQ7IGhlcmUg4oCTIGxvb2tzIGxpa2UgSSBuZWVkIGRpZmZlcmVudCB0b29scyBmb3IgdGhhdCAoYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgKS4gTm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LCBnb3QgaXQuIEkmIzM5O20gc3R1Y2sgd2l0aCBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYCBmb3Igbm93LgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3VpZGVsaW5lcyBmb3IgZGV0ZXJtaW5pbmcgaWYgc29tZXRoaW5nJiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcGhyYXNlcyBhcmUgYXJvdW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBjYWxscyBvdXQgY29kZSB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgUUVNVSBzZXR1cHMgKGxpa2UgU21hcnROSUNzIG9yIEdQVXMpIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLgoKSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBmbGFncyBnb2luZyB1cDsgdGhpcyBzY3JlYW1zIGhhcmR3YXJlIGRlcGVuZGVuY2UuIFRoZSB0ZXh0IGluZGljYXRlcyB0aGF0IFFFTVUgKmNhbiogZW11bGF0ZSBpdC4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIHVzZXMgZWl0aGVyIGBxZW11LXN5c3RlbS14ODZfNjQgLW1hY2hpbmUgcTM1YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0YCwgYW5kIG5laXRoZXIgb2YgdGhlc2UgbWFjaGluZXMgaW5jbHVkZXMgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZGV2aWNlIGJ5IGRlZmF1bHQuCgpUaGVyZWZvcmUsIHRoZSBwcm9iZSBmdW5jdGlvbiwgYGF4aWVuZXRfcHJvYmVgLCB3aWxsIG5ldmVyIGJlIGNhbGxlZCB3aXRoaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcy4gVGhpcyBtZWFucyB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGVudmlyb25tZW50IHN5emthbGxlciB1c2VzLiBTbywgZ2l2ZW4gdGhhdCwgaXQgc2VlbXMgaGlnaGx5IHVubGlrZWx5IGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgdW5kZXIgdGhlIGN1cnJlbnQgY2lyY3Vtc3RhbmNlcy4KCkFzIGEgZmluYWwgY2hlY2ssIEkgd2lsbCBkb3VibGUgY2hlY2sgYW55IFBDSSBvciBVU0IgYmluZGluZyBpdCBtYXkgdXNlLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipObyBQQ0kgRHJpdmVyIOKAkyBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBkaWFnbm9zaXMgaXMgcHJldHR5IGNsZWFyOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtIHRoYXQgaXNuJiMzOTt0IHJlY29nbml6aW5nIGEgUENJIGRldmljZSBkcml2ZXIuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpc3N1ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBzdGFydCBydW5uaW5nIHRocm91Z2ggdGhlIHBvc3NpYmlsaXRpZXMsIGdpdmVuIG15IGV4cGVyaWVuY2UuIAoKKiAgICoqRmlyc3QsIHZlcmlmeSBpdCYjMzk7cyBhIFBDSSBkZXZpY2U6KiogSXMgaXQgdHJ1bHkgb24gdGhlIFBDSSBidXMsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBkaWZmZXJlbnQgaW50ZXJmYWNlIGFsdG9nZXRoZXI/IEkgbmVlZCB0byBjb25maXJtIHRoZSBleHBlY3RlZCBoYXJkd2FyZSBhbmQgaXRzIGFjdHVhbCBjb25uZWN0aXZpdHkuIFN0YW5kYXJkIFBDST8gUENJZT8gU29tZSB2YXJpYXRpb24/IEFuZCBtb3N0IGltcG9ydGFudGx5IHRoZSB2ZXJzaW9uIG9mIFBDSS1lIHRoZSBkZXZpY2UgY2xhaW1zIHRvIHN1cHBvcnQsIGFuZCB0aGUgdmVyc2lvbiBvZiBQQ0ktZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3Qgc3lzdGVtLgoqICAgKipIYXJkd2FyZSBhbmQgQnVzIEVudW1lcmF0aW9uOioqIFRpbWUgdG8gY2hlY2sgdGhlIGJ1cyBlbnVtZXJhdGlvbi4gQXJlIHRoZXJlIGFueSBJUlEgY29uZmxpY3RzPyBJcyB0aGUgZGV2aWNlIGV2ZW4gYXBwZWFyaW5nIGluIHRoZSBkZXZpY2UgbWFuYWdlciBvciBlcXVpdmFsZW50LCB1bmRlciBhbnkgY2F0ZWdvcnkgKGV2ZW4gJiMzNDtVbmtub3duIERldmljZSYjMzQ7KT8gT3IgaXMgaXQgY29tcGxldGVseSBhYnNlbnQ/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBsb3ctbGV2ZWwgdG9vbCwgbGlrZWx5IGEgdXRpbGl0eSBsaWtlIGBsc3BjaWAgKG9yIGVxdWl2YWxlbnQgZm9yIG90aGVyIE9TcykgdG8gZ2V0IGEgZ3JhbnVsYXIgdmlldyBvZiB0aGUgUENJIGJ1cy4KKiAgICoqRHJpdmVyIENvbXBhdGliaWxpdHk6KiogQXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCBpcyB0aGlzIGEga25vd24tZ29vZCBkcml2ZXI/IElzIGl0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlIE9TIHZlcnNpb24gYW5kIGtlcm5lbD8gSGF2ZSB0aGVyZSBiZWVuIGFueSByZWNlbnQgdXBkYXRlcyBvciBjaGFuZ2VzIHRoYXQgbWlnaHQgaGF2ZSBicm9rZW4gY29tcGF0aWJpbGl0eT8gQW55IGtub3duICYjMzQ7Z290Y2hhcyYjMzQ7IHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24/IEkmIzM5O2QgaGl0IHVwIHRoZSBtYW51ZmFjdHVyZXImIzM5O3Mgd2Vic2l0ZSBpbW1lZGlhdGVseSB0byBjaGVjay4KKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBJZiB0aGUgZGV2aWNlICppcyogYmVpbmcgZW51bWVyYXRlZCwgYXJlIHRoZXJlIGFueSByZXNvdXJjZSBhbGxvY2F0aW9uIHByb2JsZW1zPyBBcmUgdGhlcmUgZXJyb3JzIHJlbGF0ZWQgdG8gbWVtb3J5IHJhbmdlcywgSS9PIHBvcnRzLCBvciBpbnRlcnJ1cHRzIGluIHRoZSBzeXN0ZW0gbG9ncyBvciBkbWVzZz8gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZXNlIHRvIHNlZSBpZiB0aGV5IGFyZSB0aGUgY2F1c2UuCiogICAqKlBvd2VyIGFuZCBDb25uZWN0aXZpdHk6KiogVGhpcyBmZWVscyBiYXNpYywgYnV0IG5ldmVyIG92ZXJsb29rIHRoZSBvYnZpb3VzOiBJcyB0aGUgZGV2aWNlIHBvd2VyZWQgY29ycmVjdGx5PyBJcyB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBzb2xpZD8gSSYjMzk7dmUgYmVlbiBjYXVnaHQgb3V0IGJ5IGxvb3NlIGNvbm5lY3RvcnMgbW9yZSB0aGFuIG9uY2UuIFNvbWV0aW1lcyBpdCYjMzk7cyB0aGUgc2ltcGxlc3QgdGhpbmcsIGJ1dCBJIHdvdWxkIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgYW55IHBvd2VyIG9yIGNvbm5lY3Rpdml0eSBpc3N1ZXMuCiogICAqKkRyaXZlciBJbnN0YWxsYXRpb246KiogUGVyaGFwcyB0aGUgZHJpdmVyIGluc3RhbGxhdGlvbiBmYWlsZWQgc2lsZW50bHkuIEkgd2lsbCBjaGVjayBmb3IgYW55IGxvZ3MgZnJvbSB0aGUgaW5zdGFsbGVyLiBEaWQgaXQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCBvciBkaWQgaXQgZW5jb3VudGVyIGVycm9ycz8gSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBsb2FkZWQgYW5kIGJvdW5kIHRvIHRoZSBkZXZpY2UuCiogICAqKktlcm5lbCBNb2R1bGVzIGFuZCBTaWduaW5nOioqIElmIG9uIGEgc3lzdGVtIHRoYXQgdXNlcyBrZXJuZWwgbW9kdWxlcywgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZXkmIzM5O3JlIGxvYWRlZCwgY29ycmVjdGx5IHNpZ25lZCAoaWYgYXBwbGljYWJsZSksIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBjb25mbGljdGluZyBtb2R1bGVzLgoqICAgKipEZWJ1Z2dpbmc6KiogSSYjMzk7bGwgYmUgcmVhZHkgdG8gZGl2ZSBpbnRvIGRlYnVnZ2luZyB0b29scyBpZiBuZWVkZWQg4oCTIHRyYWNpbmcgZHJpdmVyIGNhbGxzLCBtb25pdG9yaW5nIGJ1cyB0cmFmZmljLCBleGFtaW5pbmcgc3lzdGVtIGxvZ3MuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgYXQgYSBsb3cgbGV2ZWwuCiogICAqKkNvbXBhdGliaWxpdHk6KiogSSBhbSB0aGlua2luZyBhYm91dCBjaGVja2luZyBmb3IgaGFyZHdhcmUgb3Igc29mdHdhcmUgY29tcGF0aWJpbGl0eSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UuIElzIHRoZSBkZXZpY2UgaXRzZWxmIGNvbXBhdGlibGU/IEhhcyB0aGVyZSBiZWVuIGFueSBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0gcmVjZW50bHk/IENvdWxkIHRoZXJlIGJlIGEgQklPUyBpc3N1ZT8KClRoaXMgJiMzNDtubyBkcml2ZXImIzM0OyBzaXR1YXRpb24gY2FuIGJlIGZydXN0cmF0aW5nLCBidXQgaXQmIzM5O3MgYSBwcm9ibGVtIEkmIzM5O3ZlIGZhY2VkIGNvdW50bGVzcyB0aW1lcy4gVGhlIGtleSBpcyBtZXRob2RpY2FsLCBzdGVwLWJ5LXN0ZXAgaW52ZXN0aWdhdGlvbiwgZWxpbWluYXRpbmcgcG9zc2liaWxpdGllcywgYW5kIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgdG8gaXNvbGF0ZSB0aGUgcm9vdCBjYXVzZS4gSXQmIzM5O3MgYSBzb2x2YWJsZSBwcm9ibGVtOyBJIGp1c3QgbmVlZCB0byBiZSBkaWxpZ2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzQ5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqVVNCIERyaXZlciBDb251bmRydW0qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uLi4uIGFuZCB0aGUgaW1tZWRpYXRlIHNuYWcgaXMsICYjMzQ7Tm8gVVNCIGRyaXZlci4mIzM0OyBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIGltcGxpY2F0aW9ucy4uLiB1Z2guIEl0JiMzOTtzIHRoYXQgaW5pdGlhbCByb2FkYmxvY2ssIHRoYXQgZnVuZGFtZW50YWwgcGllY2UgdGhhdCYjMzk7cyBqdXN0Li4uIG1pc3NpbmcuIERlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgaGFyZHdhcmUgaW52b2x2ZWQsIGl0IGNvdWxkIGJlIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUsIG9yIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBtdWNoIGRlZXBlci4gSXMgaXQgYSBnZW5lcmljIGRyaXZlciB0aGF0JiMzOTtzIG5vdCBpbnN0YWxsZWQsIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiwgb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgcGllY2Ugb2YgZXF1aXBtZW50PwoKSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCB0aGUgdHJvdWJsZXNob290aW5nIHN0ZXBzIC0gbmVlZCB0byBjaGVjayB0aGUgZGV2aWNlIG1hbmFnZXIgZmlyc3QsIGxvb2sgZm9yIGFueSBjb25mbGljdHMsIGFueSB5ZWxsb3cgZXhjbGFtYXRpb24gcG9pbnRzLiBEb2VzIHRoZSBzeXN0ZW0gZXZlbiAqcmVjb2duaXplKiB0aGUgZGV2aWNlIGF0IGFsbCwgZXZlbiBhcyBhbiB1bmtub3duIGRldmljZT8gSWYgaXQgZG9lcywgZ3JlYXQsIGdpdmVzIHVzIHNvbWV0aGluZyB0byB3b3JrIHdpdGguIElmIG5vdCwgd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBwcm9ibGVtIG9yIHBvc3NpYmx5IGEgQklPUyBzZXR0aW5nIHRoYXQmIzM5O3MgZGlzYWJsZWQgVVNCIGZ1bmN0aW9uYWxpdHkuIFRoZW4gdGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uIG9mIHRoZSBPUyB2ZXJzaW9uIC0gaXMgaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgZHJpdmVyPyBBbHdheXMgdGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGNoZWNrLgoKSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB1c3VhbCBzdGVwcywgY2hlY2sgZm9yIGFueSBtYW51ZmFjdHVyZXItc3BlY2lmaWMgZHJpdmVycywgbWF5YmUgZXZlbiB0cnkgYSBkcml2ZXIgcm9sbGJhY2sgaWYgaXQmIzM5O3MgYSByZWNlbnQgY2hhbmdlIHRoYXQmIzM5O3MgY2F1c2VkIHRoaXMuIFRoaXMgaXMgdXN1YWxseSB0aGUgbGVhc3QgYW5ub3lpbmcgb3V0Y29tZS4gRG93bmxvYWQgYSBmZXcgdXRpbGl0aWVzIHRvIGdldCBhcyBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYXMgcG9zc2libGUuCgpUaGUgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBpZGVudGlmaWNhdGlvbiwgY29tcGF0aWJpbGl0eSwgYW5kIGV4ZWN1dGlvbi4gR290dGEgZmlndXJlIG91dCB3aGF0JiMzOTtzIHdoYXQsIG1ha2Ugc3VyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byB3b3JrIHRvZ2V0aGVyLCBhbmQgdGhlbiBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgbWlzc2luZywgb3Igd2hhdCYjMzk7cyBjb25mbGljdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTMyMTY9c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhheGllbmV0X3BtX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjAtXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMjkKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgRnV6emluZyBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcHVyZSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBYaWxpbnggSVAgY29yZS4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IG1pbmQgc2VlcyB0aGUgcmVkIGZsYWc6IHRoaXMgZHJpdmVyIGhpbmdlcyBvbiB0aGUgRGV2aWNlIFRyZWUsIHNwZWNpZmljYWxseSBuZWVkaW5nIHRoYXQgYHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYWAgbm9kZSB0byBiZSBwcmVzZW50LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIG9uZXMgd2UgcmVseSBvbiBmb3IgYnJvYWQgY292ZXJhZ2UsIGRvbiYjMzk7dCBzaGlwIHdpdGggY3VzdG9tIERldmljZSBUcmVlcyB0YWlsb3JlZCB0byBldmVyeSB2ZW5kb3IgSVAgdW5kZXIgdGhlIHN1bi4gVGhleSYjMzk7cmUgYnVpbHQgZm9yIGdlbmVyaWMgYXJjaGl0ZWN0dXJlcy4KClRoZXJlZm9yZSwgYmVjYXVzZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIFhpbGlueC1zcGVjaWZpYyBkcml2ZXIsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGNvZGUgd2lsbCBldmVyIGdldCBwcm9iZWQgb24gdGhlIGNvbW1vbiB4ODYvYXJtNjQgVk1zIHdlJiMzOTtyZSB1c2luZyB1bmxlc3Mgd2UgbWFudWFsbHkgcHJvdmlkZSBhIGN1c3RvbSBEVC4gU3l6a2FsbGVyIGp1c3QgZG9lc24mIzM5O3QgZG8gdGhhdCBieSBkZWZhdWx0LiBDb25zZXF1ZW50bHksIHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIChgeGlsaW54X2F4aWVuZXRgKSwgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cC4gR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIGEgd2FzdGUgb2YgdGltZSB0byBmb2N1cyBvbiBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gb3VyIHRhcmdldCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyICh4aWxpbnhfYXhpZW5ldCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEZQR0FzL1NvQ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzIChlLmcuLCB4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmEpIHRvIGJlIHByb2JlZCwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSYjMzk7cyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKHhpbGlueF9heGllbmV0KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBYaWxpbnggRlBHQXMvU29Dcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMgKGUuZy4sIHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYSkgdG8gYmUgcHJvYmVkLCB3aGljaCBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VJiMzOTtzIHg4Nl82NCBxMzUvYXJtNjQgdmlydCBtYWNoaW5lcykgdXNlZCBmb3IgZnV6emluZy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEyLjY1NTk2NDE1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDk2NjQ0NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUncyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEyLjY1NTk3MDA3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5NDE3OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDoyMjoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbmluZGV4IDE3MjJiNzAzOGYzNDAuLjY4YjU4MDE5MTUwODQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcXG5AQCAtMjk3MSwxMCArMjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiY291bGQgbm90IG1hcCBETUEgcmVnc1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGxwLVxcdTAwM2VkbWFfcmVncyk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKGxwLVxcdTAwM2VyeF9pcnEgXFx1MDAzYz0gMCB8fCBscC1cXHUwMDNldHhfaXJxIFxcdTAwM2M9IDApIHtcXG4rXFx0XFx0aWYgKCFscC1cXHUwMDNlcnhfaXJxIHx8ICFscC1cXHUwMDNldHhfaXJxKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBkZXRlcm1pbmUgaXJxc1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChscC1cXHUwMDNlcnhfaXJxIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIGxwLVxcdTAwM2VyeF9pcnE7XFxuK1xcdFxcdGlmIChscC1cXHUwMDNldHhfaXJxIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIGxwLVxcdTAwM2V0eF9pcnE7XFxuK1xcdFxcdGlmIChscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgbHAtXFx1MDAzZWV0aF9pcnEgIT0gLUVOWElPKVxcbitcXHRcXHRcXHRyZXR1cm4gbHAtXFx1MDAzZWV0aF9pcnE7XFxuIFxcbiBcXHRcXHQvKiBSZXNldCBjb3JlIG5vdyB0aGF0IGNsb2NrcyBhcmUgZW5hYmxlZCwgcHJpb3IgdG8gYWNjZXNzaW5nIE1ESU8gKi9cXG4gXFx0XFx0cmV0ID0gX19heGllbmV0X2RldmljZV9yZXNldChscCk7XFxuQEAgLTMwNTAsNyArMzA1Niw3IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZheGllbmV0X2V0aHRvb2xfb3BzO1xcbiBcXHR9XFxuIFxcdC8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovXFxuLVxcdGlmIChscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNjPSAwKVxcbitcXHRpZiAobHAtXFx1MDAzZWV0aF9pcnEgXFx1MDAzYyAwKVxcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRXRoZXJuZXQgY29yZSBJUlEgbm90IGRlZmluZWRcXFxcblxcXCIpO1xcbiBcXG4gXFx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEzLjE4NTk3MTk5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzOTY2NjIxNjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyICh4aWxpbnhfYXhpZW5ldCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEZQR0FzL1NvQ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzIChlLmcuLCB4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmEpIHRvIGJlIHByb2JlZCwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSdzIHg4Nl82NCBxMzUvYXJtNjQgdmlydCBtYWNoaW5lcykgdXNlZCBmb3IgZnV6emluZy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbmluZGV4IDE3MjJiNzAzOGYzNDAuLjY4YjU4MDE5MTUwODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG5AQCAtMjk3MSwxMCArMjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXG5cIik7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlZG1hX3JlZ3MpO1xuIFx0XHR9XG4tXHRcdGlmIChscC1cdTAwM2VyeF9pcnEgXHUwMDNjPSAwIHx8IGxwLVx1MDAzZXR4X2lycSBcdTAwM2M9IDApIHtcbitcdFx0aWYgKCFscC1cdTAwM2VyeF9pcnEgfHwgIWxwLVx1MDAzZXR4X2lycSkge1xuIFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiY291bGQgbm90IGRldGVybWluZSBpcnFzXFxuXCIpO1xuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0XHR9XG4rXHRcdGlmIChscC1cdTAwM2VyeF9pcnEgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIGxwLVx1MDAzZXJ4X2lycTtcbitcdFx0aWYgKGxwLVx1MDAzZXR4X2lycSBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gbHAtXHUwMDNldHhfaXJxO1xuK1x0XHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgbHAtXHUwMDNlZXRoX2lycSAhPSAtRU5YSU8pXG4rXHRcdFx0cmV0dXJuIGxwLVx1MDAzZWV0aF9pcnE7XG4gXG4gXHRcdC8qIFJlc2V0IGNvcmUgbm93IHRoYXQgY2xvY2tzIGFyZSBlbmFibGVkLCBwcmlvciB0byBhY2Nlc3NpbmcgTURJTyAqL1xuIFx0XHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbkBAIC0zMDUwLDcgKzMwNTYsNyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmF4aWVuZXRfZXRodG9vbF9vcHM7XG4gXHR9XG4gXHQvKiBDaGVjayBmb3IgRXRoZXJuZXQgY29yZSBJUlEgKG9wdGlvbmFsKSAqL1xuLVx0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjPSAwKVxuK1x0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjIDApXG4gXHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkV0aGVybmV0IGNvcmUgSVJRIG5vdCBkZWZpbmVkXFxuXCIpO1xuIFxuIFx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjoxMy4xODU5NzMzNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDI2NzQ4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGludGVycnVwdCByZXF1ZXN0IChJUlEpIHZhbHVlcyBmb3IgdGhlIHJlY2VpdmUsIHRyYW5zbWl0LCBhbmQgZ2VuZXJhbCBFdGhlcm5ldCBpbnRlcnJ1cHRzIChgbHAtXHUwMDNlcnhfaXJxYCwgYGxwLVx1MDAzZXR4X2lycWAsIGBscC1cdTAwM2VldGhfaXJxYCkuIFNwZWNpZmljYWxseSwgaXQncyB0aWdodGVuaW5nIHVwIHRoZSBlcnJvciBjaGVja2luZy4gVGhlIG9yaWdpbmFsIGNvZGUgaW5jb3JyZWN0bHkgY29uc2lkZXJlZCB6ZXJvIGFzIGFuIGVycm9yIGZvciBJUlFzLCB3aGljaCBpc24ndCBhbHdheXMgdGhlIGNhc2UsIGJ1dCBuZWdhdGl2ZSB2YWx1ZXMgKmFyZSogZXJyb3JzLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGVuc3VyZXMgdGhhdCB0aGUgcHJvYmUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgSVJRIHZhbHVlIGlzIG5lZ2F0aXZlLlxuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgZmlyc3QsIGhvdyByZWxldmFudCBpcyB0aGlzIGRyaXZlciBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZXNwZWNpYWxseSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gVGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCB0eXBpY2FsbHkgbWVhbnMgaXQncyBmb3IgcGxhdGZvcm0gZGV2aWNlcyBmb3VuZCBpbiBYaWxpbnggRlBHQXMgb3IgU29DcyDigJMgWnlucSwgTWljcm9CbGF6ZSwgYW5kIHRoZSBsaWtlLiBUaGVzZSBkZXZpY2VzIHVzdWFsbHkgcmVseSBvbiBhIGRldmljZSB0cmVlIHRvIGJlIHByb2JlZC4gVGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkP1xuXG5JIGtub3cgc3l6a2FsbGVyIGNhbiBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcywgYnV0IHRoZXJlIGFyZSBhIGZldyBjb25kaXRpb25zLiBFaXRoZXIgdGhlIGRldmljZSBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB1c2luZyBhIGBzeXpfZGV2X3BsYXRmb3JtYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBvciBRRU1VIG5lZWRzIHRvIGJlIGVtdWxhdGluZyBpdC4gQW5kLCB3YWl0Li4uIHdhc24ndCB0aGVyZSBzb21lIFhpbGlueCBlbXVsYXRpb24gaW4gUUVNVT8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBgeGlsaW54X2F4aWVuZXRgIGluIHRoZXJlLiBUaGF0J3MgcHJvbWlzaW5nLlxuXG5HaXZlbiB0aGF0IHRoZXJlJ3MgUUVNVSBlbXVsYXRpb24sIHRoaXMgKmNvdWxkKiBiZSBhIGRlY2VudCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNvIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjIuMjEyNzI1MDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODc4MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhJTElOWF9BWElfRU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTk9eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICs9IHhpbGlueF9lbWFjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjIuNDU0NjA4MTAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NDAxNzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaXMgYFhJTElOWF9BWElfRU1BQ2AuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBBWEktYmFzZWQgRXRoZXJuZXQgTUFDIGltcGxlbWVudGF0aW9uIGZyb20gWGlsaW54LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBwYXJ0aWN1bGFyIG1vZHVsZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga25vdyB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvciwgY29udmVyc2VseSwgd2hhdCBpdCBlbmFibGVzLiBUaGVyZWZvcmUsIGxldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyB0cmFjZSBhbGwgb2YgdGhlIGVsZW1lbnRzIGl0IHB1bGxzIGluLiBJIHdhbnQgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjUuOTQ4NjI3MzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MjMwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9BWElfRU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjctXFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjUuOTk2MDU1MjE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NTY3Mjk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIFhpbGlueCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBYaWxpbnggRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbSB0YXJnZXRpbmcgYXJvdW5kIGxpbmUgMjYgb2YgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgYW5kIHBvdGVudGlhbCBmZWF0dXJlcyB0aGlzIGRyaXZlciBwcm92aWRlcywgc2luY2UgS2NvbmZpZyBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjoyOS45NTE3MzEyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwIEV0aGVybmV0IExpdGUgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAyMjpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBmcm9tIFhpbGlueC5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xcbiAgMjc6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAyOTpcXHRcXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSAxMC8xMDAvMTAwMCBFdGhlcm5ldCBmcm9tIFhpbGlueCBmb3IgdGhlXFxuICAzNDpcXHRcXHQgIEFYSSBidXMgaW50ZXJmYWNlIHVzZWQgaW4gWGlsaW54IFZpcnRleCBGUEdBcyBhbmQgU29jJ3MuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBYSUxJTlhfTExfVEVNQUNcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAzOTpcXHRcXHRzZWxlY3QgUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjI5Ljk1MTgzMDEzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMDUwMzgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIGNvcmUgaXNzdWUgaGluZ2VzIG9uIHRoaXMgYFhJTElOWF9ETUFgIHZhcmlhYmxlLiBSaWdodCBhd2F5LCBteSBicmFpbiBraWNrcyBpbiBhbmQgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYSBmZWF0dXJlIGZsYWcsIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24sIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBXaGF0IGRvZXMgaXQgY29udHJvbD8gVGhpcyBpcyBmdW5kYW1lbnRhbCwgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBzY29wZSwgcG9zc2libGUgdmFsdWVzLCBhbmQgaW1wYWN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjMzLjI4MjMzNzAwM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzk2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9ETUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9kbWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZG1hL0tjb25maWc9Njc0PWNvbmZpZyBYR0VORV9ETUFcXG4tLVxcbmRyaXZlcnMvZG1hL0tjb25maWctNjgyLVxcbmRyaXZlcnMvZG1hL0tjb25maWc6NjgzOmNvbmZpZyBYSUxJTlhfRE1BXFxuZHJpdmVycy9kbWEvS2NvbmZpZy02ODQtXFx0dHJpc3RhdGUgXFxcIlhpbGlueCBBWEkgRE1BUyBFbmdpbmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjMzLjMzMTM4MTcwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2MDM3NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRE1BIENvbmZpZ3VyYXRpb24gRmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIERNQSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBkcml2ZXJzL2RtYS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gd2hhdCdzIGdvaW5nIG9uIGFyb3VuZCBsaW5lIDY4My4gSG9wZWZ1bGx5LCB0aGF0IGxvY2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgaW50byB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBmb3IgYSBwYXJ0aWN1bGFyIERNQSBjb250cm9sbGVyIG9yIGZlYXR1cmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcyB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGVuIEkgY2FuIHJlZmluZSBteSBzZWFyY2ggZnJvbSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgY2x1ZXMgdGhpcyBwcm92aWRlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzEwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MzYuODI3NDIyNDQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RtYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiQVBNIFgtR2VuZSBETUEgc3VwcG9ydFxcXCJcXG4gNjc2OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9YR0VORSB8fCBDT01QSUxFX1RFU1RcXG4gNjc3OlxcdFxcdHNlbGVjdCBETUFfRU5HSU5FXFxuIDY3ODpcXHRcXHRzZWxlY3QgRE1BX0VOR0lORV9SQUlEXFxuIDY3OTpcXHRcXHRzZWxlY3QgQVNZTkNfVFhfRU5BQkxFX0NIQU5ORUxfU1dJVENIXFxuIDY4MDpcXHRcXHRoZWxwXFxuIDY4MTpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgQVBNIFgtR2VuZSBTb0MgRE1BIGVuZ2luZS5cXG4gNjgyOlxcdFxcbiA2ODM6XFx0Y29uZmlnIFhJTElOWF9ETUFcXG4gNjg0OlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggQVhJIERNQVMgRW5naW5lXFxcIlxcbiA2ODU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gNjg2OlxcdFxcdHNlbGVjdCBETUFfRU5HSU5FXFxuIDY4NzpcXHRcXHRoZWxwXFxuIDY4ODpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBYaWxpbnggQVhJIFZETUEgU29mdCBJUC5cXG4gNjg5OlxcdFxcbiA2OTA6XFx0XFx0ICBBWEkgVkRNQSBlbmdpbmUgcHJvdmlkZXMgaGlnaC1iYW5kd2lkdGggZGlyZWN0IG1lbW9yeSBhY2Nlc3NcXG4gNjkxOlxcdFxcdCAgYmV0d2VlbiBtZW1vcnkgYW5kIEFYSTQtU3RyZWFtIHZpZGVvIHR5cGUgdGFyZ2V0XFxuIDY5MjpcXHRcXHQgIHBlcmlwaGVyYWxzIGluY2x1ZGluZyBwZXJpcGhlcmFscyB3aGljaCBzdXBwb3J0IEFYSTQtXFxuIDY5MzpcXHRcXHQgIFN0cmVhbSBWaWRlbyBQcm90b2NvbC4gIEl0IGhhcyB0d28gc3RyZWFtIGludGVyZmFjZXMvXFxuIDY5NDpcXHRcXHQgIGNoYW5uZWxzLCBNZW1vcnkgTWFwcGVkIHRvIFN0cmVhbSAoTU0yUykgYW5kIFN0cmVhbSB0b1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjozNi44Mjc1NDEzNzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NjMyMjU4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZD8gSSBzZWUgYFhJTElOWF9ETUFgIGFuZCBgWElMSU5YX0FYSV9FTUFDYCBhcmUgZW5hYmxlZCwgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIGBheGllbmV0X3Byb2JlYC4gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHb29kIHF1ZXN0aW9uLiBJICp0aGluayogUUVNVSBoYXMgYHhpbGlueF9heGllbmV0YCBlbXVsYXRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5Ob3csIEknbSBhbHNvIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gQ291bGQgaXQgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlIHRvIHRyaWdnZXIgYGF4aWVuZXRfcHJvYmVgPyBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMsIHN5emthbGxlciAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGdlbmVyaWMgYHN5el9kZXZfcGxhdGZvcm1gIHRoYXQgY2FuIGluamVjdCAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggKmFyYml0cmFyeSogcmVzb3VyY2VzLiBJdCBvbmx5IHdvcmtzIGlmIGl0J3MgZXhwbGljaXRseSBzdXBwb3J0ZWQsIG9yIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEJ1dCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIHBsYXRmb3JtIGRldmljZSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBpbiBteSB0aGlua2luZy5cblxuV2FpdCwgYmFjayB1cC4gVGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgdGhhdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0IGluY2x1ZGVzIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgVVNCIGdhZGdldHMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuICpwb3NzaWJsZSogdG8gcHJvYmUgdGhpcyBpbiBRRU1VLlxuXG5RRU1VICpkb2VzKiBzdXBwb3J0IFhpbGlueCBaeW5xIGFuZCBNaWNyb0JsYXplIG1hY2hpbmVzLCB3aGljaCB1c2UgdGhpcyBkZXZpY2UuIEhvd2V2ZXIsIHN5emthbGxlciB0eXBpY2FsbHkgcnVucyBvbiB4ODZfNjQgb3IgYXJtNjQgZ2VuZXJpYyB2aXJ0IG1hY2hpbmVzLiBTbywgaWYgdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQgb24geDg2XzY0LCBjYW4gaXQgYWN0dWFsbHkgKmJlKiBwcm9iZWQ/IE9ubHkgaWYgYSBkZXZpY2UgdHJlZSBvdmVybGF5IGlzIGxvYWRlZCwgb3IgaWYgYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZC4gSSBoYXZlIHRvIGZhY3RvciB0aGF0IGluLlxuXG5IbW0sIHdhaXQuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBwc2V1ZG8tc3lzY2FsbCBgc3l6X2luaXRfbmV0X2RldmljZWA/IE5vLCB0aGF0J3MgbmV0bGluay4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgSSdtIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJpbGl0aWVzLiBEb2VzIHN5emthbGxlciBzcGVjaWZpY2FsbHkgZnV6eiBYaWxpbnggQVhJIEV0aGVybmV0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBUaGF0IHdpbGwgYmUgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjM4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6NDcuNjkwNzcxODk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ0MDc4NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTcyNyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuTUFJTlRBSU5FUlM9Mjk2NDI9RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWxcXG5NQUlOVEFJTkVSUzoyOTY0MzpGOlxcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcXG5NQUlOVEFJTkVSUy0yOTY0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19YSUxJTlhfRU1BQ0xJVEUpICs9IHhpbGlueF9lbWFjbGl0ZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlOjk6eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICs9IHhpbGlueF9lbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTQ2Mj1zdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ3MTogKiBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAtIGF4aWVuZXQgcHJpdmF0ZSBwZXIgZGV2aWNlIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00NzItICogQG5kZXY6XFx0UG9pbnRlciBmb3IgbmV0X2RldmljZSB0byB3aGljaCBpdCB3aWxsIGJlIGF0dGFjaGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDgyLSAqIEBtaWlfY2xrX2RpdjogTUlJIGJ1cyBjbG9jayBkaXZpZGVyIHZhbHVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDgzOiAqIEByZWdzX3N0YXJ0OiBSZXNvdXJjZSBzdGFydCBmb3IgYXhpZW5ldCBkZXZpY2UgYWRkcmVzc2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDg0OiAqIEByZWdzOlxcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWVuZXRfbG9jYWwgZGV2aWNlIGFkZHJlc3Mgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODUtICogQGRtYV9yZWdzOlxcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWRtYSBkZXZpY2UgYWRkcmVzcyBzcGFjZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTMyLSAqIEBvcHRpb25zOlxcdEF4aUV0aGVybmV0IG9wdGlvbiB3b3JkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NTMzOiAqIEBmZWF0dXJlczpcXHRTdG9yZXMgdGhlIGV4dGVuZGVkIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYXhpZW5ldCBod1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzNC0gKiBAbWF4X2ZybV9zaXplOiBTdG9yZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZnJhbWUgdGhhdCBjYW4gYmUgdGhhdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTQ4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjU0OTpzdHJ1Y3QgYXhpZW5ldF9sb2NhbCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTUwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzMjogKiBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gLSBVc2VkIHRvIHNldCBheGkgZXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9uc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMy0gKiBAb3B0OlxcdE9wdGlvbiB0byBiZSBzZXQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjM3OnN0cnVjdCBheGllbmV0X29wdGlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM4LVxcdHUzMiBvcHQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ0OiAqIGF4aWVuZXRfaW9yIC0gTWVtb3J5IG1hcHBlZCBBeGkgRXRoZXJuZXQgcmVnaXN0ZXIgcmVhZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY0NTogKiBAbHA6ICAgICAgICAgUG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY0Ni0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfaW9yKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU3OnN0YXRpYyBpbmxpbmUgdTMyIGF4aW5ldF9pb3JfcmVhZF9tY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU5OlxcdHJldHVybiBheGllbmV0X2lvcihscCwgWEFFX01ESU9fTUNSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjYyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2xvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY2ODpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF91bmxvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjc0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NTogKiBheGllbmV0X2lvdyAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHdyaXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njc2OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjc3LSAqIEBvZmZzZXQ6ICAgICBBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgQXhpIEV0aGVybmV0IGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2ODM6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfaW93KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4NC1cXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjg5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MDogKiBheGllbmV0X2RtYV9vdXQzMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTE6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTItICogQHJlZzpcXHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5OTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0MzIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwMC1cXHRcXHRcXHRcXHQgICAgIG9mZl90IHJlZywgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwNzogKiBheGllbmV0X2RtYV9vdXQ2NCAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MDg6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDktICogQHJlZzpcXHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzE0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcxNTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0NjQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNi1cXHRcXHRcXHRcXHQgICAgIG9mZl90IHJlZywgdTY0IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyMTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIyLVxcdFxcdFxcdFxcdFxcdGRtYV9hZGRyX3QgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNC1cXHRpZiAobHAtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgWEFFX0ZFQVRVUkVfRE1BXzY0QklUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNTpcXHRcXHRheGllbmV0X2RtYV9vdXQ2NChscCwgcmVnLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNzpcXHRcXHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczMjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMzLVxcdFxcdFxcdFxcdFxcdGRtYV9hZGRyX3QgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczNTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MDovKiBGdW5jdGlvbiBwcm90b3R5cGVzIHZpc2libGUgaW4geGlsaW54X2F4aWVuZXRfbWRpby5jIGZvciBvdGhlciBmaWxlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MTppbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQyOnZvaWQgYXhpZW5ldF9tZGlvX3RlYXJkb3duKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3OiNpbmNsdWRlIFxcXCJ4aWxpbnhfYXhpZW5ldC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5LS8qIE11c3QgYmUgc2hvcnRlciB0aGFuIGxlbmd0aCBvZiBldGh0b29sX2RydmluZm8uZHJpdmVyIGZpZWxkIHRvIGZpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjA6I2RlZmluZSBEUklWRVJfTkFNRVxcdFxcdFxcXCJ4YXhpZW5ldFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxLSNkZWZpbmUgRFJJVkVSX0RFU0NSSVBUSU9OXFx0XFxcIlhpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY2OnN0YXRpYyB2b2lkIGF4aWVuZXRfcnhfc3VibWl0X2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OC0vKiBNYXRjaCB0YWJsZSBmb3Igb2ZfcGxhdGZvcm0gYmluZGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXhpZW5ldF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzAtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmFcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF4aWVuZXRfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03OC0vKiBPcHRpb24gdGFibGUgZm9yIHNldHRpbmcgdXAgQXhpIEV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc5OnN0YXRpYyBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gYXhpZW5ldF9vcHRpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04MC1cXHQvKiBUdXJuIG9uIGp1bWJvIHBhY2tldCBzdXBwb3J0IGZvciBib3RoIFJ4IGFuZCBUeCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzM6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTM4OnN0YXRpYyBzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKmF4aWVuZXRfZ2V0X3R4X2Rlc2Moc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE0My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NDogKiBheGllbmV0X2RtYV9pbjMyIC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHJlYWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NTogKiBAbHA6XFx0XFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQ2LSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfZG1hX2luMzIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTc6c3RhdGljIHZvaWQgZGVzY19zZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZG1hX2FkZHJfdCBhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNjU6c3RhdGljIGRtYV9hZGRyX3QgZGVzY19nZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE2Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE3Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE3NzogKiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIC0gUmVsZWFzZSBidWZmZXIgZGVzY3JpcHRvciByaW5nc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc4LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4MC0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgZGVzY3JpcHRvcnMgYWxsb2NhdGVkIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxODE6ICogYXhpZW5ldF9kbWFfYmRfaW5pdC4gYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSBpcyBjYWxsZWQgd2hlbiBBeGkgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Mi0gKiBkcml2ZXIgc3RvcCBhcGkgaXMgY2FsbGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg0OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg2LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg3OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMjY6c3RhdGljIHU2NCBheGllbmV0X2RtYV9yYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIzMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIzNDogKiBheGllbmV0X2NhbGNfY3IoKSAtIENhbGN1bGF0ZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzUtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI0NDpzdGF0aWMgdTMyIGF4aWVuZXRfY2FsY19jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjb3VudCwgdTMyIHVzZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTMtXFx0aWYgKGNvdW50IFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjU0OlxcdFxcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjU1LVxcdFxcdHUzMiB0aW1lcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjY5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjcwOiAqIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKCkgLSBFeHRyYWN0IGNvYWxlc2NlIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3MS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc2OnN0YXRpYyB2b2lkIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc3LVxcdFxcdFxcdFxcdCAgICB1MzIgKmNvdW50LCB1MzIgKnVzZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc5OlxcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwLVxcdHU2NCB0aW1lciA9IEZJRUxEX0dFVChYQVhJRE1BX0RFTEFZX01BU0ssIGNyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjg3OiAqIGF4aWVuZXRfZG1hX3N0YXJ0IC0gU2V0IHVwIERNQSByZWdpc3RlcnMgYW5kIHN0YXJ0IERNQSBvcGVyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4ODogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5MDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdGFydChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTUtXFx0bHAtXFx1MDAzZXJ4X2RtYV9jciBcXHUwMDI2PSB+WEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyOTY6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cXHUwMDNlcnhfZG1hX2NyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAxOlxcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX0NERVNDX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2JkX3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAyLVxcdGxwLVxcdTAwM2VyeF9kbWFfY3IgfD0gWEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDM6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cXHUwMDNlcnhfZG1hX2NyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwNDpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9UREVTQ19PRkZTRVQsIGxwLVxcdTAwM2VyeF9iZF9wICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwNS1cXHRcXHRcXHQgICAgIChzaXplb2YoKmxwLVxcdTAwM2VyeF9iZF92KSAqIChscC1cXHUwMDNlcnhfYmRfbnVtIC0gMSkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyLVxcdGxwLVxcdTAwM2V0eF9kbWFfY3IgXFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXR4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxOTpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9UWF9DREVTQ19PRkZTRVQsIGxwLVxcdTAwM2V0eF9iZF9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMC1cXHRscC1cXHUwMDNldHhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIxOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXR4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjItXFx0bHAtXFx1MDAzZXR4X2RtYV9zdGFydGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzI4OiAqIGF4aWVuZXRfZG1hX2JkX2luaXQgLSBTZXR1cCBidWZmZXIgZGVzY3JpcHRvciByaW5ncyBmb3IgQXhpIERNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI5LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMzNi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMzNzpzdGF0aWMgaW50IGF4aWVuZXRfZG1hX2JkX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjM0MTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mzk2OlxcdGF4aWVuZXRfZG1hX3N0YXJ0KGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk5LW91dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQwMDpcXHRheGllbmV0X2RtYV9iZF9yZWxlYXNlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDAxLVxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDU6ICogYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MgLSBXcml0ZSB0aGUgTUFDIGFkZHJlc3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNi0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MTI6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTMtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHZvaWQgKmFkZHJlc3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDE1OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjItXFx0LyogU2V0IHVwIHVuaWNhc3QgTUFDIGFkZHJlc3MgZmlsdGVyIHNldCBpdHMgbWFjIGFkZHJlc3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyMzpcXHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzBfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI0LVxcdFxcdCAgICAobmRldi1cXHUwMDNlZGV2X2FkZHJbMF0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI3LVxcdFxcdCAgICAobmRldi1cXHUwMDNlZGV2X2FkZHJbM10gXFx1MDAzY1xcdTAwM2MgMjQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyODpcXHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzFfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI5OlxcdFxcdCAgICAoKChheGllbmV0X2lvcihscCwgWEFFX1VBVzFfT0ZGU0VUKSkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDMwLVxcdFxcdCAgICAgIH5YQUVfVUFXMV9VTklDQVNUQUREUl9NQVNLKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0Mi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUgQXhpIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NDM6ICogY29yZS4gSXQgY2FsbHMgdGhlIGNvcmUgc3BlY2lmaWMgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MuIFRoaXMgaXMgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDQtICogZnVuY3Rpb24gdGhhdCBnb2VzIGludG8gbmV0X2RldmljZV9vcHMgc3RydWN0dXJlIGVudHJ5IG5kb19zZXRfbWFjX2FkZHJlc3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG5ldGRldl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1MDpcXHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBhZGRyLVxcdTAwM2VzYV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDU1OiAqIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0IC0gUHJlcGFyZSB0aGUgbXVsdGljYXN0IHRhYmxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTYtICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY1OnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY4LVxcdHUzMiByZWcsIGFmMHJlZywgYWYxcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY5OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDcxOlxcdHJlZyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfRk1JX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzItXFx0cmVnIFxcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3Ni1cXHRcXHRyZWcgXFx1MDAyNj0gflhBRV9GTUlfUE1fTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3NzpcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4MS1cXHRcXHRyZWcgXFx1MDAyNj0gMHhGRkZGRkYwMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4MjpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODM6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCAxKTsgLyogTXVsdGljYXN0IGJpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg0OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODU6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAxKTsgLyogZGl0dG8gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NjpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg3OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00ODgtXFx0XFx0aSA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwNzpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MDg6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCBhZjByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA5OlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgYWYxcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMDpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDB4ZmZmZmZmZmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTExOlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0xX09GRlNFVCwgMHgwMDAwZmZmZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTI6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxMy1cXHRcXHRcXHRpKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxOS1cXHRcXHRyZWcgfD0gaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMDpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjE6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyNjogKiBheGllbmV0X3NldG9wdGlvbnMgLSBTZXQgYW4gQXhpIEV0aGVybmV0IG9wdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI3LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzMy0gKiB0aGVzZSBvcHRpb25zIGluIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuIFRoaXMgaXMgZG9uZSB0aHJvdWdoXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzQ6ICogYXhpZW5ldF9vcHRpb24gc3RydWN0dXJlIC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNjpzdGF0aWMgdm9pZCBheGllbmV0X3NldG9wdGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBvcHRpb25zKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzOC1cXHRpbnQgcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM5OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQwOlxcdHN0cnVjdCBheGllbmV0X29wdGlvbiAqdHAgPSBcXHUwMDI2YXhpZW5ldF9vcHRpb25zWzBdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQyLVxcdHdoaWxlICh0cC1cXHUwMDNlb3B0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDM6XFx0XFx0cmVnID0gKChheGllbmV0X2lvcihscCwgdHAtXFx1MDAzZXJlZykpIFxcdTAwMjYgfih0cC1cXHUwMDNlbV9vcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ0LVxcdFxcdGlmIChvcHRpb25zIFxcdTAwMjYgdHAtXFx1MDAzZW9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NS1cXHRcXHRcXHRyZWcgfD0gdHAtXFx1MDAzZW1fb3I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDY6XFx0XFx0YXhpZW5ldF9pb3cobHAsIHRwLVxcdTAwM2VyZWcsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDctXFx0XFx0dHArKztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTUzOnN0YXRpYyB1NjQgYXhpZW5ldF9zdGF0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZW51bSB0ZW1hY19zdGF0IHN0YXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjA6XFx0Y291bnRlciA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICsgc3RhdCAqIDgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYxLVxcdHJldHVybiBscC1cXHUwMDNlaHdfc3RhdF9iYXNlW3N0YXRdICsgKGNvdW50ZXIgLSBscC1cXHUwMDNlaHdfbGFzdF9jb3VudGVyW3N0YXRdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTY0OnN0YXRpYyB2b2lkIGF4aWVuZXRfc3RhdHNfdXBkYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgYm9vbCByZXNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3MC1cXHRmb3IgKHN0YXQgPSAwOyBzdGF0IFxcdTAwM2MgU1RBVF9DT1VOVDsgc3RhdCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NzE6XFx0XFx0dTMyIGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTc5OnN0YXRpYyB2b2lkIGF4aWVuZXRfcmVmcmVzaF9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTgxOlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4Mi1cXHRcXHRcXHRcXHRcXHRcXHRzdGF0c193b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bHAtXFx1MDAzZXN0YXRzX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTg1OlxcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscC1cXHUwMDNlc3RhdHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU5MjpzdGF0aWMgaW50IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTk5LVxcdGlmIChscC1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBYQUVfRkVBVFVSRV9TVEFUUylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwMDpcXHRcXHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIFhBWElETUFfQ1JfUkVTRVRfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MTA6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9kbWFfaW4zMiwgdmFsdWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTEtXFx0XFx0XFx0XFx0ISh2YWx1ZSBcXHUwMDI2IFhBWElETUFfQ1JfUkVTRVRfTUFTSyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxOS1cXHQvKiBXYWl0IGZvciBQaHlSc3RDbXBsdCBiaXQgdG8gYmUgc2V0LCBpbmRpY2F0aW5nIHRoZSBQSFkgcmVzZXQgaGFzIGZpbmlzaGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MjA6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9pb3IsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjIxLVxcdFxcdFxcdFxcdHZhbHVlIFxcdTAwMjYgWEFFX0lOVF9QSFlSU1RDTVBMVF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MzYtXFx0XFx0XFx0dTMyIGNvdW50ZXIgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjM3OlxcdFxcdFxcdFxcdGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICsgc3RhdCAqIDgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTI6ICogYXhpZW5ldF9kbWFfc3RvcCAtIFN0b3AgRE1BIG9wZXJhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUzOiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjU1OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3N0b3Aoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjYyLVxcdGNyID0gbHAtXFx1MDAzZXJ4X2RtYV9jciBcXHUwMDI2IH4oWEFYSURNQV9DUl9SVU5TVE9QX01BU0sgfCBYQVhJRE1BX0lSUV9BTExfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjM6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBjcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NjQtXFx0bHAtXFx1MDAzZXJ4X2RtYV9zdGFydGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3MS1cXHRjciA9IGxwLVxcdTAwM2V0eF9kbWFfY3IgXFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjcyOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjczLVxcdGxwLVxcdTAwM2V0eF9kbWFfc3RhcnRlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzgtXFx0LyogR2l2ZSBETUFzIGEgY2hhbmNlIHRvIGhhbHQgZ3JhY2VmdWxseSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njc5OlxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgwLVxcdGZvciAoY291bnQgPSAwOyAhKHNyIFxcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2MgNTsgKytjb3VudCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgxLVxcdFxcdG1zbGVlcCgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODI6XFx0XFx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg1OlxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg2LVxcdGZvciAoY291bnQgPSAwOyAhKHNyIFxcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2MgNTsgKytjb3VudCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg3LVxcdFxcdG1zbGVlcCgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODg6XFx0XFx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTEtXFx0LyogRG8gYSByZXNldCB0byBlbnN1cmUgRE1BIGlzIHJlYWxseSBzdG9wcGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTI6XFx0YXhpZW5ldF9sb2NrX21paShscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTM6XFx0X19heGllbmV0X2RldmljZV9yZXNldChscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTQ6XFx0YXhpZW5ldF91bmxvY2tfbWlpKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5NS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5ODogKiBheGllbmV0X2RldmljZV9yZXNldCAtIFJlc2V0IGFuZCBpbml0aWFsaXplIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTktICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzA5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEwOnN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEyOlxcdHUzMiBheGllbmV0X3N0YXR1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMzpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MjgtXFx0aWYgKCFscC1cXHUwMDNldXNlX2RtYWVuZ2luZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzI5OlxcdFxcdHJldCA9IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjczMzpcXHRcXHRyZXQgPSBheGllbmV0X2RtYV9iZF9pbml0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzM0LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQxOlxcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9SQ1cxX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDI6XFx0YXhpZW5ldF9zdGF0dXMgXFx1MDAyNj0gflhBRV9SQ1cxX1JYX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDM6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9SQ1cxX09GRlNFVCwgYXhpZW5ldF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ1OlxcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9JUF9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ2OlxcdGlmIChheGllbmV0X3N0YXR1cyBcXHUwMDI2IFhBRV9JTlRfUlhSSkVDVF9NQVNLKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ3OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfSVNfT0ZGU0VULCBYQUVfSU5UX1JYUkpFQ1RfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDg6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9JRV9PRkZTRVQsIGxwLVxcdTAwM2VldGhfaXJxIFxcdTAwM2UgMCA/XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDktXFx0XFx0ICAgIFhBRV9JTlRfUkVDVl9FUlJPUl9NQVNLIDogMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTE6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GQ0NfT0ZGU0VULCBYQUVfRkNDX0ZDUlhfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1NjpcXHRheGllbmV0X3NldG9wdGlvbnMobmRldiwgbHAtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzU3LVxcdFxcdFxcdCAgIH4oWEFFX09QVElPTl9UWEVOIHwgWEFFX09QVElPTl9SWEVOKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTg6XFx0YXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MobmRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTk6XFx0YXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjA6XFx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVxcdTAwM2VvcHRpb25zKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY4OiAqIGF4aWVuZXRfZnJlZV90eF9jaGFpbiAtIENsZWFuIHVwIGEgc2VyaWVzIG9mIGxpbmtlZCBUWCBkZXNjcmlwdG9ycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2OTogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3MC0gKiBAZmlyc3RfYmQ6XFx0SW5kZXggb2YgZmlyc3QgZGVzY3JpcHRvciB0byBjbGVhbiB1cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3ODI6c3RhdGljIGludCBheGllbmV0X2ZyZWVfdHhfY2hhaW4oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgZmlyc3RfYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODMtXFx0XFx0XFx0XFx0IGludCBucl9iZHMsIGJvb2wgZm9yY2UsIHUzMiAqc2l6ZXAsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTgzNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjgzNTogKiBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlIC0gQ2hlY2tzIGlmIGEgQkQvZ3JvdXAgb2YgQkRzIGFyZSBjdXJyZW50bHkgYnVzeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODM2OiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM3LSAqIEBudW1fZnJhZzpcXHRUaGUgbnVtYmVyIG9mIEJEcyB0byBjaGVjayBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODQ3OnN0YXRpYyBpbmxpbmUgaW50IGF4aWVuZXRfY2hlY2tfdHhfYmRfc3BhY2Uoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ4LVxcdFxcdFxcdFxcdFxcdCAgICBpbnQgbnVtX2ZyYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg2MjogKiBheGllbmV0X2RtYV90eF9jYiAtIERNQSBlbmdpbmUgY2FsbGJhY2sgZm9yIFRYIGNoYW5uZWwuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NjM6ICogQGRhdGE6ICAgICAgIFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY0LSAqIEByZXN1bHQ6ICAgICBlcnJvciByZXBvcnRpbmcgdGhyb3VnaCBkbWFlbmdpbmVfcmVzdWx0Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NjctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njg6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfdHhfY2Iodm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgKnJlc3VsdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzAtXFx0c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpza2J1Zl9kbWE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NzE6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Mi1cXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3NTpcXHRza2J1Zl9kbWEgPSBheGllbmV0X2dldF90eF9kZXNjKGxwLCBscC1cXHUwMDNldHhfcmluZ190YWlsKyspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc2LVxcdGxlbiA9IHNrYnVmX2RtYS1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg5MDogKiBheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lIC0gU3RhcnRzIHRoZSB0cmFuc21pc3Npb24uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTEtICogQHNrYjogICAgICAgIHNrX2J1ZmYgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGRhdGEgdG8gYmUgVHhlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9OTA0PXN0YXRpYyBuZXRkZXZfdHhfdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA1OmF4aWVuZXRfc3RhcnRfeG1pdF9kbWFlbmdpbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy05MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA3LVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZG1hX3R4X2Rlc2MgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA4OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA5LVxcdHUzMiBhcHBfbWV0YWRhdGFbRE1BX05VTV9BUFBfV09SRFNdID0gezB9O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjo0OS40MzQ4NTU2NTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3Mjg3MjAxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IHRoaXM/IExldCdzIGJyZWFrIGl0IGRvd24uXG5cbkZpcnN0LCBJIGtub3cgdGhhdCBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAgaW4gYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYC4gU28sIGluIHRoZW9yeSwgaWYgSSBjb21waWxlIHRoZSBrZXJuZWwgd2l0aCBgQ09ORklHX1hJTElOWF9BWElfRU1BQz15YCBhbmQgYENPTkZJR19YSUxJTlhfRE1BPXlgIGFuZCBydW4gaXQgaW4gUUVNVSwgc3l6a2FsbGVyICpjb3VsZCogdHJ5LiBCdXQsIHRoZXJlJ3MgYSBjYXRjaCwgc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2V0IHVwIGZvciB4ODZfNjQgb3IgYXJtNjQuIE9uIGFybTY0LCBpdCB3aWxsIHVzZSB0aGUgYHZpcnRgIG1hY2hpbmUuIFRoZSBgdmlydGAgbWFjaGluZSBkb2Vzbid0IGhhdmUgYW4gYHhpbGlueF9heGllbmV0YCBpbnN0YW5jZSBieSBkZWZhdWx0LlxuXG5JIGtub3cgc3l6a2FsbGVyICpjYW4qIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cywgdGhlb3JldGljYWxseSBpbnN0YW50aWF0aW5nIHBsYXRmb3JtIGRldmljZXMsIGJ1dCBpdCdzIG5vdCBhIHN0YW5kYXJkLCBhdXRvbWF0aWMgcHJvY2VzcywgYW5kIEkgZG9uJ3Qga25vdyBpZiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2UgaGFzIGJlZW4gY29uZmlndXJlZC4gSSBuZWVkIHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIHRoZXJlIHdhcyBhIGBzeXpfZGV2X3BsYXRmb3JtYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIHRvIGV4aXN0LiBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkcml2ZXIuIFdhaXQsIEkgcmVtZW1iZXIsIHRoYXQgZ3JlcCBvdXRwdXQgZGlkbid0IHlpZWxkIGFueXRoaW5nLlxuXG5Ib2xkIG9uLCB0aGUgcHJvbXB0IGRvZXMgc2F5IHNvbWV0aGluZyBhYm91dCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUsIGl0IG5lZWRzIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSB0byBiZSBwcm9iZWQhIElzIGl0IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzP1xuXG5RRU1VIGVtdWxhdGVzIGl0LCBidXQgaXQncyBvbmx5IGluc3RhbnRpYXRlZCBpbiB2ZXJ5IHNwZWNpZmljIG1hY2hpbmUgdHlwZXMsIGxpa2UgYHBldGFsb2dpeC1zM2Fkc3AxODAwYCBvciBgeGxueC16Y3UxMDJgIG9yIGBtaWNyb2JsYXplYC4gU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxMzVgICh4ODZfNjQpIG9yIGB2aXJ0YCAoYXJtNjQpLiBDYW4gaXQgcmVhY2ggdGhpcz9cblxuSG1tLiBUaGUgY29tbWl0IG1lc3NhZ2UuIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiIGFuZCBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBUaGlzIHN1Z2dlc3RzIHN5emthbGxlciBlaXRoZXIgKmRpZCogZmluZCBhIGJ1Zywgb3IgaXMgdGVzdGluZyBhIHBhdGNoIGZvciB0aGlzIGRyaXZlci5cblxuV2FpdCwgc3l6Ym90IHRlc3RzIGFueSBwYXRjaCBmb3IgYW55IHN1YnN5c3RlbS4gSXQgZG9lc24ndCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIElmIHNvbWVvbmUgc2VuZHMgYSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcsIHN5emJvdCBhcHBsaWVzIGl0IGFuZCBidWlsZHMgaXQuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCB0aGUgZnV6emluZyB3b24ndCBoaXQgaXQsIGJ1dCB0aGUgYnVpbGQgd2lsbCBzdWNjZWVkLiBTbywgdGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gaXQncyBiZWluZyBmdXp6ZWQuXG5cbk9rYXksIGlmIHRoZSBwYXRjaCBqdXN0IGZpeGVzIGEgcHJvYmUgZXJyb3IsIHdoaWNoIGlzIGNvbW1vbiBmb3IgdGhlc2UgcGxhdGZvcm0gZHJpdmVycyB0aGF0IHJlbHkgb24gdmVyeSBzcGVjaWZpYyBTb0NzIG9yIEZQR0FzLCBpdCdzICpoaWdobHkqIGxpa2VseSB0byBiZSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cCAoeDg2XzY0IG9yIGFybTY0IGB2aXJ0YCkuXG5cbklzIHRoZXJlIGFueSB3YXkgdG8gKnRyaWdnZXIqIHRoZSBwbGF0Zm9ybSBkcml2ZXIncyBwcm9iZSBmcm9tIHVzZXJzcGFjZT8gWWVzLCBJIGNhbiBiaW5kIGEgZHJpdmVyIHRvIGEgZGV2aWNlIGJ5IHdyaXRpbmcgdG8gYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvLi4uL2JpbmRgLiBCdXQgSSBzdGlsbCBuZWVkIHRoZSBkZXZpY2UuXG5cblNpbmNlIHRoaXMgaXMgYSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgaXQncyBtYXRjaGluZyBhIERldmljZSBUcmVlIG1hdGNoLCBzcGVjaWZpY2FsbHk6IFwieGxueCxheGktZXRoZXJuZXQtMS4wMC5hXCIsIFwieGxueCxheGktZXRoZXJuZXQtMS4wMS5hXCIsIFwieGxueCxheGktZXRoZXJuZXQtMi4wMS5hXCIuIFRoZXJlJ3Mgbm8gQUNQSSBtYXRjaC4gQW5kIGluIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFybTY0IGB2aXJ0YCBtYWNoaW5lLCB0aGVyZSdzIG5vIHN1Y2ggZGV2aWNlIGluIHRoZSBEVCEgQ2FuIEkgY3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggdGhhdCBjb21wYXRpYmxlIHN0cmluZyBmcm9tIHVzZXJzcGFjZT8gV2VsbCwgeWVzLCBidXQgaXQnZCBiZSB0aHJvdWdoIHRoZSBgb2Zfb3ZlcmxheWAgY29uZmlnZnMgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHN5emthbGxlciB1c3VhbGx5IGRvZXNuJ3QgdXNlIHRoYXQsIG9yIGl0J3MgZGlzYWJsZWQuXG5cbldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X2luaXRfbmV0X2RldmljZWAsIGJ1dCB0aGF0J3MgZm9yIGNyZWF0aW5nIHNvbWUgdHlwZXMgb2YgbmV0d29yayBkZXZpY2VzLCBub3QgcGxhdGZvcm0gZGV2aWNlcy4gQW5kIG5vLCB0aGVyZSBpcyBubyBgc3l6X2Rldl9wbGF0Zm9ybWAuLi4gU28gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIGlmIGFueSBwbGF0Zm9ybSBkZXZpY2VzIGFyZSBkZXNjcmliZWQgZm9yIGl0IGluIHN5emthbGxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjA2LjE2MzU3ODMwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzOTMyMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL2xpbnV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MDYuMjE1OTgyOTMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjIxMTA3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IEkgY2FuJ3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGFueXRoaW5nIHByZWZpeGVkIHdpdGggXCJzeXpcXF9cIiBoZXJlIOKAkyBsb29rcyBsaWtlIEkgbmVlZCBkaWZmZXJlbnQgdG9vbHMgZm9yIHRoYXQgKGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCkuIE5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudCwgZ290IGl0LiBJJ20gc3R1Y2sgd2l0aCBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYCBmb3Igbm93LlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIHNvbWV0aGluZydzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcGhyYXNlcyBhcmUgYXJvdW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBjYWxscyBvdXQgY29kZSB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgUUVNVSBzZXR1cHMgKGxpa2UgU21hcnROSUNzIG9yIEdQVXMpIHRoYXQgYXJlbid0IGVtdWxhdGVkIGJ5IHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgY29uZmlndXJhdGlvbnMuXG5cbkknbSBsb29raW5nIGF0IHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBmbGFncyBnb2luZyB1cDsgdGhpcyBzY3JlYW1zIGhhcmR3YXJlIGRlcGVuZGVuY2UuIFRoZSB0ZXh0IGluZGljYXRlcyB0aGF0IFFFTVUgKmNhbiogZW11bGF0ZSBpdC4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIHVzZXMgZWl0aGVyIGBxZW11LXN5c3RlbS14ODZfNjQgLW1hY2hpbmUgcTM1YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0YCwgYW5kIG5laXRoZXIgb2YgdGhlc2UgbWFjaGluZXMgaW5jbHVkZXMgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZGV2aWNlIGJ5IGRlZmF1bHQuXG5cblRoZXJlZm9yZSwgdGhlIHByb2JlIGZ1bmN0aW9uLCBgYXhpZW5ldF9wcm9iZWAsIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIHdpdGhpbiBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXBzLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQgc3l6a2FsbGVyIHVzZXMuIFNvLCBnaXZlbiB0aGF0LCBpdCBzZWVtcyBoaWdobHkgdW5saWtlbHkgaXQncyB3b3J0aCBmdXp6aW5nIHVuZGVyIHRoZSBjdXJyZW50IGNpcmN1bXN0YW5jZXMuXG5cbkFzIGEgZmluYWwgY2hlY2ssIEkgd2lsbCBkb3VibGUgY2hlY2sgYW55IFBDSSBvciBVU0IgYmluZGluZyBpdCBtYXkgdXNlLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjE3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjE3LjQzNzA5MzM4MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3NTAyNDEwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjE3Ljc0NDYwNzU3MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDgzODg3MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk5vIFBDSSBEcml2ZXIg4oCTIEluaXRpYWwgQXNzZXNzbWVudCBhbmQgSW1wbGljYXRpb25zKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgZGlhZ25vc2lzIGlzIHByZXR0eSBjbGVhcjogd2UncmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtIHRoYXQgaXNuJ3QgcmVjb2duaXppbmcgYSBQQ0kgZGV2aWNlIGRyaXZlci4gVGhhdCdzIGEgZnVuZGFtZW50YWwgaXNzdWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLCBnaXZlbiBteSBleHBlcmllbmNlLiBcblxuKiAgICoqRmlyc3QsIHZlcmlmeSBpdCdzIGEgUENJIGRldmljZToqKiBJcyBpdCB0cnVseSBvbiB0aGUgUENJIGJ1cywgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpZmZlcmVudCBpbnRlcmZhY2UgYWx0b2dldGhlcj8gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGhhcmR3YXJlIGFuZCBpdHMgYWN0dWFsIGNvbm5lY3Rpdml0eS4gU3RhbmRhcmQgUENJPyBQQ0llPyBTb21lIHZhcmlhdGlvbj8gQW5kIG1vc3QgaW1wb3J0YW50bHkgdGhlIHZlcnNpb24gb2YgUENJLWUgdGhlIGRldmljZSBjbGFpbXMgdG8gc3VwcG9ydCwgYW5kIHRoZSB2ZXJzaW9uIG9mIFBDSS1lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBzeXN0ZW0uXG4qICAgKipIYXJkd2FyZSBhbmQgQnVzIEVudW1lcmF0aW9uOioqIFRpbWUgdG8gY2hlY2sgdGhlIGJ1cyBlbnVtZXJhdGlvbi4gQXJlIHRoZXJlIGFueSBJUlEgY29uZmxpY3RzPyBJcyB0aGUgZGV2aWNlIGV2ZW4gYXBwZWFyaW5nIGluIHRoZSBkZXZpY2UgbWFuYWdlciBvciBlcXVpdmFsZW50LCB1bmRlciBhbnkgY2F0ZWdvcnkgKGV2ZW4gXCJVbmtub3duIERldmljZVwiKT8gT3IgaXMgaXQgY29tcGxldGVseSBhYnNlbnQ/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGxvdy1sZXZlbCB0b29sLCBsaWtlbHkgYSB1dGlsaXR5IGxpa2UgYGxzcGNpYCAob3IgZXF1aXZhbGVudCBmb3Igb3RoZXIgT1NzKSB0byBnZXQgYSBncmFudWxhciB2aWV3IG9mIHRoZSBQQ0kgYnVzLlxuKiAgICoqRHJpdmVyIENvbXBhdGliaWxpdHk6KiogQXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCBpcyB0aGlzIGEga25vd24tZ29vZCBkcml2ZXI/IElzIGl0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlIE9TIHZlcnNpb24gYW5kIGtlcm5lbD8gSGF2ZSB0aGVyZSBiZWVuIGFueSByZWNlbnQgdXBkYXRlcyBvciBjaGFuZ2VzIHRoYXQgbWlnaHQgaGF2ZSBicm9rZW4gY29tcGF0aWJpbGl0eT8gQW55IGtub3duIFwiZ290Y2hhc1wiIHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24/IEknZCBoaXQgdXAgdGhlIG1hbnVmYWN0dXJlcidzIHdlYnNpdGUgaW1tZWRpYXRlbHkgdG8gY2hlY2suXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIElmIHRoZSBkZXZpY2UgKmlzKiBiZWluZyBlbnVtZXJhdGVkLCBhcmUgdGhlcmUgYW55IHJlc291cmNlIGFsbG9jYXRpb24gcHJvYmxlbXM/IEFyZSB0aGVyZSBlcnJvcnMgcmVsYXRlZCB0byBtZW1vcnkgcmFuZ2VzLCBJL08gcG9ydHMsIG9yIGludGVycnVwdHMgaW4gdGhlIHN5c3RlbSBsb2dzIG9yIGRtZXNnPyBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSB0byBzZWUgaWYgdGhleSBhcmUgdGhlIGNhdXNlLlxuKiAgICoqUG93ZXIgYW5kIENvbm5lY3Rpdml0eToqKiBUaGlzIGZlZWxzIGJhc2ljLCBidXQgbmV2ZXIgb3Zlcmxvb2sgdGhlIG9idmlvdXM6IElzIHRoZSBkZXZpY2UgcG93ZXJlZCBjb3JyZWN0bHk/IElzIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIHNvbGlkPyBJJ3ZlIGJlZW4gY2F1Z2h0IG91dCBieSBsb29zZSBjb25uZWN0b3JzIG1vcmUgdGhhbiBvbmNlLiBTb21ldGltZXMgaXQncyB0aGUgc2ltcGxlc3QgdGhpbmcsIGJ1dCBJIHdvdWxkIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgYW55IHBvd2VyIG9yIGNvbm5lY3Rpdml0eSBpc3N1ZXMuXG4qICAgKipEcml2ZXIgSW5zdGFsbGF0aW9uOioqIFBlcmhhcHMgdGhlIGRyaXZlciBpbnN0YWxsYXRpb24gZmFpbGVkIHNpbGVudGx5LiBJIHdpbGwgY2hlY2sgZm9yIGFueSBsb2dzIGZyb20gdGhlIGluc3RhbGxlci4gRGlkIGl0IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSwgb3IgZGlkIGl0IGVuY291bnRlciBlcnJvcnM/IEknbGwgbmVlZCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBsb2FkZWQgYW5kIGJvdW5kIHRvIHRoZSBkZXZpY2UuXG4qICAgKipLZXJuZWwgTW9kdWxlcyBhbmQgU2lnbmluZzoqKiBJZiBvbiBhIHN5c3RlbSB0aGF0IHVzZXMga2VybmVsIG1vZHVsZXMsIEknbGwgZG91YmxlLWNoZWNrIHRoZXkncmUgbG9hZGVkLCBjb3JyZWN0bHkgc2lnbmVkIChpZiBhcHBsaWNhYmxlKSwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIG1vZHVsZXMuXG4qICAgKipEZWJ1Z2dpbmc6KiogSSdsbCBiZSByZWFkeSB0byBkaXZlIGludG8gZGVidWdnaW5nIHRvb2xzIGlmIG5lZWRlZCDigJMgdHJhY2luZyBkcml2ZXIgY2FsbHMsIG1vbml0b3JpbmcgYnVzIHRyYWZmaWMsIGV4YW1pbmluZyBzeXN0ZW0gbG9ncy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgYXQgYSBsb3cgbGV2ZWwuXG4qICAgKipDb21wYXRpYmlsaXR5OioqIEkgYW0gdGhpbmtpbmcgYWJvdXQgY2hlY2tpbmcgZm9yIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGNvbXBhdGliaWxpdHksIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLiBJcyB0aGUgZGV2aWNlIGl0c2VsZiBjb21wYXRpYmxlPyBIYXMgdGhlcmUgYmVlbiBhbnkgY2hhbmdlcyB0byB0aGUgc3lzdGVtIHJlY2VudGx5PyBDb3VsZCB0aGVyZSBiZSBhIEJJT1MgaXNzdWU/XG5cblRoaXMgXCJubyBkcml2ZXJcIiBzaXR1YXRpb24gY2FuIGJlIGZydXN0cmF0aW5nLCBidXQgaXQncyBhIHByb2JsZW0gSSd2ZSBmYWNlZCBjb3VudGxlc3MgdGltZXMuIFRoZSBrZXkgaXMgbWV0aG9kaWNhbCwgc3RlcC1ieS1zdGVwIGludmVzdGlnYXRpb24sIGVsaW1pbmF0aW5nIHBvc3NpYmlsaXRpZXMsIGFuZCBkaWdnaW5nIGRlZXAgaW50byB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IgdG8gaXNvbGF0ZSB0aGUgcm9vdCBjYXVzZS4gSXQncyBhIHNvbHZhYmxlIHByb2JsZW07IEkganVzdCBuZWVkIHRvIGJlIGRpbGlnZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU3MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MjQuMjI4NDk2OTUzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgwMTc2NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MjQuNDQ2NTIyNTQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU5NjgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipVU0IgRHJpdmVyIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uLi4uIGFuZCB0aGUgaW1tZWRpYXRlIHNuYWcgaXMsIFwiTm8gVVNCIGRyaXZlci5cIiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIGltcGxpY2F0aW9ucy4uLiB1Z2guIEl0J3MgdGhhdCBpbml0aWFsIHJvYWRibG9jaywgdGhhdCBmdW5kYW1lbnRhbCBwaWVjZSB0aGF0J3MganVzdC4uLiBtaXNzaW5nLiBEZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSwgb3BlcmF0aW5nIHN5c3RlbSwgYW5kIGhhcmR3YXJlIGludm9sdmVkLCBpdCBjb3VsZCBiZSBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlLCBvciBpdCBjb3VsZCBiZSBzb21ldGhpbmcgbXVjaCBkZWVwZXIuIElzIGl0IGEgZ2VuZXJpYyBkcml2ZXIgdGhhdCdzIG5vdCBpbnN0YWxsZWQsIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiwgb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgcGllY2Ugb2YgZXF1aXBtZW50P1xuXG5JJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgdGhlIHRyb3VibGVzaG9vdGluZyBzdGVwcyAtIG5lZWQgdG8gY2hlY2sgdGhlIGRldmljZSBtYW5hZ2VyIGZpcnN0LCBsb29rIGZvciBhbnkgY29uZmxpY3RzLCBhbnkgeWVsbG93IGV4Y2xhbWF0aW9uIHBvaW50cy4gRG9lcyB0aGUgc3lzdGVtIGV2ZW4gKnJlY29nbml6ZSogdGhlIGRldmljZSBhdCBhbGwsIGV2ZW4gYXMgYW4gdW5rbm93biBkZXZpY2U/IElmIGl0IGRvZXMsIGdyZWF0LCBnaXZlcyB1cyBzb21ldGhpbmcgdG8gd29yayB3aXRoLiBJZiBub3QsIHdlJ3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBwcm9ibGVtIG9yIHBvc3NpYmx5IGEgQklPUyBzZXR0aW5nIHRoYXQncyBkaXNhYmxlZCBVU0IgZnVuY3Rpb25hbGl0eS4gVGhlbiB0aGVyZSdzIHRoZSBxdWVzdGlvbiBvZiB0aGUgT1MgdmVyc2lvbiAtIGlzIGl0IGNvbXBhdGlibGUgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGRyaXZlcj8gQWx3YXlzIHRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBjaGVjay5cblxuSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHVzdWFsIHN0ZXBzLCBjaGVjayBmb3IgYW55IG1hbnVmYWN0dXJlci1zcGVjaWZpYyBkcml2ZXJzLCBtYXliZSBldmVuIHRyeSBhIGRyaXZlciByb2xsYmFjayBpZiBpdCdzIGEgcmVjZW50IGNoYW5nZSB0aGF0J3MgY2F1c2VkIHRoaXMuIFRoaXMgaXMgdXN1YWxseSB0aGUgbGVhc3QgYW5ub3lpbmcgb3V0Y29tZS4gRG93bmxvYWQgYSBmZXcgdXRpbGl0aWVzIHRvIGdldCBhcyBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYXMgcG9zc2libGUuXG5cblRoZSB3aG9sZSB0aGluZyBib2lscyBkb3duIHRvIGlkZW50aWZpY2F0aW9uLCBjb21wYXRpYmlsaXR5LCBhbmQgZXhlY3V0aW9uLiBHb3R0YSBmaWd1cmUgb3V0IHdoYXQncyB3aGF0LCBtYWtlIHN1cmUgaXQncyBzdXBwb3NlZCB0byB3b3JrIHRvZ2V0aGVyLCBhbmQgdGhlbiBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBtaXNzaW5nLCBvciB3aGF0J3MgY29uZmxpY3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzQ5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMzoyOS4yNzI0OTQxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzOTk5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjE2PXN0YXRpYyBERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoYXhpZW5ldF9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjE5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyMC1cXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjI5LjMyMDkwMzQ5OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODMxNjYyNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGEgcHVyZSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBYaWxpbnggSVAgY29yZS4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IG1pbmQgc2VlcyB0aGUgcmVkIGZsYWc6IHRoaXMgZHJpdmVyIGhpbmdlcyBvbiB0aGUgRGV2aWNlIFRyZWUsIHNwZWNpZmljYWxseSBuZWVkaW5nIHRoYXQgYHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYWAgbm9kZSB0byBiZSBwcmVzZW50LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIG9uZXMgd2UgcmVseSBvbiBmb3IgYnJvYWQgY292ZXJhZ2UsIGRvbid0IHNoaXAgd2l0aCBjdXN0b20gRGV2aWNlIFRyZWVzIHRhaWxvcmVkIHRvIGV2ZXJ5IHZlbmRvciBJUCB1bmRlciB0aGUgc3VuLiBUaGV5J3JlIGJ1aWx0IGZvciBnZW5lcmljIGFyY2hpdGVjdHVyZXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGEgWGlsaW54LXNwZWNpZmljIGRyaXZlciwgdGhlcmUncyBubyB3YXkgdGhpcyBjb2RlIHdpbGwgZXZlciBnZXQgcHJvYmVkIG9uIHRoZSBjb21tb24geDg2L2FybTY0IFZNcyB3ZSdyZSB1c2luZyB1bmxlc3Mgd2UgbWFudWFsbHkgcHJvdmlkZSBhIGN1c3RvbSBEVC4gU3l6a2FsbGVyIGp1c3QgZG9lc24ndCBkbyB0aGF0IGJ5IGRlZmF1bHQuIENvbnNlcXVlbnRseSwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGB4aWxpbnhfYXhpZW5ldGApLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGEgd2FzdGUgb2YgdGltZSB0byBmb2N1cyBvbiBjb2RlIHRoYXQncyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiBvdXIgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAyOSwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MzcuMTUyNTY5NzU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUncyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKHhpbGlueF9heGllbmV0KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBYaWxpbnggRlBHQXMvU29Dcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMgKGUuZy4sIHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYSkgdG8gYmUgcHJvYmVkLCB3aGljaCBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VJ3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMzozNy4xNTI1OTY4MjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7p68g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 14:04:43 +0000 UTC FinishedAt: 2026-08-21 14:23:38 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUmIzM5O3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG5pbmRleCAxNzIyYjcwMzhmMzQwLi42OGI1ODAxOTE1MDg0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuQEAgLTI5NzEsMTAgJiM0MzsyOTcxLDE2IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXG5cJiMzNDspO1xuIFx0XHRcdHJldHVybiBQVFJfRVJSKGxwLVx1MDAzZWRtYV9yZWdzKTtcbiBcdFx0fVxuLVx0XHRpZiAobHAtXHUwMDNlcnhfaXJxIFx1MDAzYz0gMCB8fCBscC1cdTAwM2V0eF9pcnEgXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRpZiAoIWxwLVx1MDAzZXJ4X2lycSB8fCAhbHAtXHUwMDNldHhfaXJxKSB7XG4gXHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IGRldGVybWluZSBpcnFzXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKGxwLVx1MDAzZXJ4X2lycSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cmV0dXJuIGxwLVx1MDAzZXJ4X2lycTtcbiYjNDM7XHRcdGlmIChscC1cdTAwM2V0eF9pcnEgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHJldHVybiBscC1cdTAwM2V0eF9pcnE7XG4mIzQzO1x0XHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgbHAtXHUwMDNlZXRoX2lycSAhPSAtRU5YSU8pXG4mIzQzO1x0XHRcdHJldHVybiBscC1cdTAwM2VldGhfaXJxO1xuIFxuIFx0XHQvKiBSZXNldCBjb3JlIG5vdyB0aGF0IGNsb2NrcyBhcmUgZW5hYmxlZCwgcHJpb3IgdG8gYWNjZXNzaW5nIE1ESU8gKi9cbiBcdFx0cmV0ID0gX19heGllbmV0X2RldmljZV9yZXNldChscCk7XG5AQCAtMzA1MCw3ICYjNDM7MzA1Niw3IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2YXhpZW5ldF9ldGh0b29sX29wcztcbiBcdH1cbiBcdC8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovXG4tXHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2M9IDApXG4mIzQzO1x0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjIDApXG4gXHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtFdGhlcm5ldCBjb3JlIElSUSBub3QgZGVmaW5lZFxcblwmIzM0Oyk7XG4gXG4gXHQvKiBSZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUmIzM5O3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKaW5kZXggMTcyMmI3MDM4ZjM0MC4uNjhiNTgwMTkxNTA4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCkBAIC0yOTcxLDEwICYjNDM7Mjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Y291bGQgbm90IG1hcCBETUEgcmVnc1xuJiMzNDspOwogCQkJcmV0dXJuIFBUUl9FUlIobHAtJmd0O2RtYV9yZWdzKTsKIAkJfQotCQlpZiAobHAtJmd0O3J4X2lycSAmbHQ7PSAwIHx8IGxwLSZndDt0eF9pcnEgJmx0Oz0gMCkgewomIzQzOwkJaWYgKCFscC0mZ3Q7cnhfaXJxIHx8ICFscC0mZ3Q7dHhfaXJxKSB7CiAJCQlkZXZfZXJyKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O2NvdWxkIG5vdCBkZXRlcm1pbmUgaXJxc1xuJiMzNDspOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KJiM0MzsJCWlmIChscC0mZ3Q7cnhfaXJxICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gbHAtJmd0O3J4X2lycTsKJiM0MzsJCWlmIChscC0mZ3Q7dHhfaXJxICZsdDsgMCkKJiM0MzsJCQlyZXR1cm4gbHAtJmd0O3R4X2lycTsKJiM0MzsJCWlmIChscC0mZ3Q7ZXRoX2lycSAmbHQ7IDAgJmFtcDsmYW1wOyBscC0mZ3Q7ZXRoX2lycSAhPSAtRU5YSU8pCiYjNDM7CQkJcmV0dXJuIGxwLSZndDtldGhfaXJxOwogCiAJCS8qIFJlc2V0IGNvcmUgbm93IHRoYXQgY2xvY2tzIGFyZSBlbmFibGVkLCBwcmlvciB0byBhY2Nlc3NpbmcgTURJTyAqLwogCQlyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTsKQEAgLTMwNTAsNyAmIzQzOzMwNTYsNyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJbmRldi0mZ3Q7ZXRodG9vbF9vcHMgPSAmYW1wO2F4aWVuZXRfZXRodG9vbF9vcHM7CiAJfQogCS8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovCi0JaWYgKGxwLSZndDtldGhfaXJxICZsdDs9IDApCiYjNDM7CWlmIChscC0mZ3Q7ZXRoX2lycSAmbHQ7IDApCiAJCWRldl9pbmZvKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O0V0aGVybmV0IGNvcmUgSVJRIG5vdCBkZWZpbmVkXG4mIzM0Oyk7CiAKIAkvKiBSZXRyaWV2ZSB0aGUgTUFDIGFkZHJlc3MgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGludGVycnVwdCByZXF1ZXN0IChJUlEpIHZhbHVlcyBmb3IgdGhlIHJlY2VpdmUsIHRyYW5zbWl0LCBhbmQgZ2VuZXJhbCBFdGhlcm5ldCBpbnRlcnJ1cHRzIChgbHAtJmd0O3J4X2lycWAsIGBscC0mZ3Q7dHhfaXJxYCwgYGxwLSZndDtldGhfaXJxYCkuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdGlnaHRlbmluZyB1cCB0aGUgZXJyb3IgY2hlY2tpbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGluY29ycmVjdGx5IGNvbnNpZGVyZWQgemVybyBhcyBhbiBlcnJvciBmb3IgSVJRcywgd2hpY2ggaXNuJiMzOTt0IGFsd2F5cyB0aGUgY2FzZSwgYnV0IG5lZ2F0aXZlIHZhbHVlcyAqYXJlKiBlcnJvcnMuIFRoZSBwYXRjaCBjb3JyZWN0bHkgZW5zdXJlcyB0aGF0IHRoZSBwcm9iZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBJUlEgdmFsdWUgaXMgbmVnYXRpdmUuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgZmlyc3QsIGhvdyByZWxldmFudCBpcyB0aGlzIGRyaXZlciBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZXNwZWNpYWxseSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gVGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCB0eXBpY2FsbHkgbWVhbnMgaXQmIzM5O3MgZm9yIHBsYXRmb3JtIGRldmljZXMgZm91bmQgaW4gWGlsaW54IEZQR0FzIG9yIFNvQ3Mg4oCTIFp5bnEsIE1pY3JvQmxhemUsIGFuZCB0aGUgbGlrZS4gVGhlc2UgZGV2aWNlcyB1c3VhbGx5IHJlbHkgb24gYSBkZXZpY2UgdHJlZSB0byBiZSBwcm9iZWQuIFRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8KCkkga25vdyBzeXprYWxsZXIgY2FuIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzLCBidXQgdGhlcmUgYXJlIGEgZmV3IGNvbmRpdGlvbnMuIEVpdGhlciB0aGUgZGV2aWNlIGhhcyB0byBiZSByZWdpc3RlcmVkIHVzaW5nIGEgYHN5el9kZXZfcGxhdGZvcm1gIGNhbGwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG9yIFFFTVUgbmVlZHMgdG8gYmUgZW11bGF0aW5nIGl0LiBBbmQsIHdhaXQuLi4gd2FzbiYjMzk7dCB0aGVyZSBzb21lIFhpbGlueCBlbXVsYXRpb24gaW4gUUVNVT8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBgeGlsaW54X2F4aWVuZXRgIGluIHRoZXJlLiBUaGF0JiMzOTtzIHByb21pc2luZy4KCkdpdmVuIHRoYXQgdGhlcmUmIzM5O3MgUUVNVSBlbXVsYXRpb24sIHRoaXMgKmNvdWxkKiBiZSBhIGRlY2VudCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTk9eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1hJTElOWF9BWElfRU1BQykgJiM0Mzs9IHhpbGlueF9lbWFjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTYzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYFhJTElOWF9BWElfRU1BQ2AuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gQVhJLWJhc2VkIEV0aGVybmV0IE1BQyBpbXBsZW1lbnRhdGlvbiBmcm9tIFhpbGlueC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgb3IsIGNvbnZlcnNlbHksIHdoYXQgaXQgZW5hYmxlcy4gVGhlcmVmb3JlLCBsZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyB0cmFjZSBhbGwgb2YgdGhlIGVsZW1lbnRzIGl0IHB1bGxzIGluLiBJIHdhbnQgYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfQVhJX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgWGlsaW54IEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgWGlsaW54IEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRhcmdldGluZyBhcm91bmQgbGluZSAyNiBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdgLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyJiMzOTtzIGZlYXR1cmVzIGFyZSBleHBvc2VkIGFuZCBjb250cm9sbGVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgYW5kIHBvdGVudGlhbCBmZWF0dXJlcyB0aGlzIGRyaXZlciBwcm92aWRlcywgc2luY2UgS2NvbmZpZyBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyMjpcdFx0c2VsZWN0IFBIWUxJQlxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwIEV0aGVybmV0IExpdGUgZnJvbSBYaWxpbnguXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuICAyNzpcdFx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICAyOTpcdFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAzMTpcdFx0c2VsZWN0IERJTUxJQlxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgMTAvMTAwLzEwMDAgRXRoZXJuZXQgZnJvbSBYaWxpbnggZm9yIHRoZVxuICAzNDpcdFx0ICBBWEkgYnVzIGludGVyZmFjZSB1c2VkIGluIFhpbGlueCBWaXJ0ZXggRlBHQXMgYW5kIFNvYyYjMzk7cy5cbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgWElMSU5YX0xMX1RFTUFDXG4gIDM3Olx0XHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclwmIzM0O1xuICAzODpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMzk6XHRcdHNlbGVjdCBQSFlMSUJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoZSBjb3JlIGlzc3VlIGhpbmdlcyBvbiB0aGlzIGBYSUxJTlhfRE1BYCB2YXJpYWJsZS4gUmlnaHQgYXdheSwgbXkgYnJhaW4ga2lja3MgaW4gYW5kIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhpcyBhIGZlYXR1cmUgZmxhZywgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiwgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmU/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGlzIGl0IGRlZmluZWQ/IFdoYXQgZG9lcyBpdCBjb250cm9sPyBUaGlzIGlzIGZ1bmRhbWVudGFsLCBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBzY29wZSwgcG9zc2libGUgdmFsdWVzLCBhbmQgaW1wYWN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYSUxJTlhfRE1BJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZG1hL0tjb25maWc9Njc0PWNvbmZpZyBYR0VORV9ETUFcbi0tXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4Mi1cbmRyaXZlcnMvZG1hL0tjb25maWc6NjgzOmNvbmZpZyBYSUxJTlhfRE1BXG5kcml2ZXJzL2RtYS9LY29uZmlnLTY4NC1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBETUEgQ29uZmlndXJhdGlvbiBGaWxlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIERNQSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgZHJpdmVycy9kbWEvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGFyb3VuZCBsaW5lIDY4My4gSG9wZWZ1bGx5LCB0aGF0IGxvY2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgaW50byB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBmb3IgYSBwYXJ0aWN1bGFyIERNQSBjb250cm9sbGVyIG9yIGZlYXR1cmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSB2YXJpYWJsZXMgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBhbmQgdGhlbiBJIGNhbiByZWZpbmUgbXkgc2VhcmNoIGZyb20gdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBjbHVlcyB0aGlzIHByb3ZpZGVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kbWEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBUE0gWC1HZW5lIERNQSBzdXBwb3J0XCYjMzQ7XG4gNjc2Olx0XHRkZXBlbmRzIG9uIEFSQ0hfWEdFTkUgfHwgQ09NUElMRV9URVNUXG4gNjc3Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY3ODpcdFx0c2VsZWN0IERNQV9FTkdJTkVfUkFJRFxuIDY3OTpcdFx0c2VsZWN0IEFTWU5DX1RYX0VOQUJMRV9DSEFOTkVMX1NXSVRDSFxuIDY4MDpcdFx0aGVscFxuIDY4MTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgdGhlIEFQTSBYLUdlbmUgU29DIERNQSBlbmdpbmUuXG4gNjgyOlx0XG4gNjgzOlx0Y29uZmlnIFhJTElOWF9ETUFcbiA2ODQ6XHRcdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBBWEkgRE1BUyBFbmdpbmVcJiMzNDtcbiA2ODU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gNjg2Olx0XHRzZWxlY3QgRE1BX0VOR0lORVxuIDY4NzpcdFx0aGVscFxuIDY4ODpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgWGlsaW54IEFYSSBWRE1BIFNvZnQgSVAuXG4gNjg5Olx0XG4gNjkwOlx0XHQgIEFYSSBWRE1BIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzc1xuIDY5MTpcdFx0ICBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdmlkZW8gdHlwZSB0YXJnZXRcbiA2OTI6XHRcdCAgcGVyaXBoZXJhbHMgaW5jbHVkaW5nIHBlcmlwaGVyYWxzIHdoaWNoIHN1cHBvcnQgQVhJNC1cbiA2OTM6XHRcdCAgU3RyZWFtIFZpZGVvIFByb3RvY29sLiAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNlcy9cbiA2OTQ6XHRcdCAgY2hhbm5lbHMsIE1lbW9yeSBNYXBwZWQgdG8gU3RyZWFtIChNTTJTKSBhbmQgU3RyZWFtIHRvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZD8gSSBzZWUgYFhJTElOWF9ETUFgIGFuZCBgWElMSU5YX0FYSV9FTUFDYCBhcmUgZW5hYmxlZCwgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIGBheGllbmV0X3Byb2JlYC4gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHb29kIHF1ZXN0aW9uLiBJICp0aGluayogUUVNVSBoYXMgYHhpbGlueF9heGllbmV0YCBlbXVsYXRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKTm93LCBJJiMzOTttIGFsc28gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDb3VsZCBpdCBpbmplY3QgYSBwbGF0Zm9ybSBkZXZpY2UgdG8gdHJpZ2dlciBgYXhpZW5ldF9wcm9iZWA/IE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcywgc3l6a2FsbGVyICpjYW4qIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHZpYSBgc3l6X2Rldl9wbGF0Zm9ybWAgb3Igc2ltaWxhciBmdW5jdGlvbnMsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgYHN5el9kZXZfcGxhdGZvcm1gIHRoYXQgY2FuIGluamVjdCAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggKmFyYml0cmFyeSogcmVzb3VyY2VzLiBJdCBvbmx5IHdvcmtzIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgc3VwcG9ydGVkLCBvciB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzLiBCdXQsIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBwbGF0Zm9ybSBkZXZpY2UgZnV6emluZyBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UgaW4gbXkgdGhpbmtpbmcuCgpXYWl0LCBiYWNrIHVwLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB0ZWxsaW5nIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgY29kZSB0aGF0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgaW5jbHVkZXMgZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBVU0IgZ2FkZ2V0cywgYW5kIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLCB3aGljaCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXZlbiAqcG9zc2libGUqIHRvIHByb2JlIHRoaXMgaW4gUUVNVS4KClFFTVUgKmRvZXMqIHN1cHBvcnQgWGlsaW54IFp5bnEgYW5kIE1pY3JvQmxhemUgbWFjaGluZXMsIHdoaWNoIHVzZSB0aGlzIGRldmljZS4gSG93ZXZlciwgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NCBnZW5lcmljIHZpcnQgbWFjaGluZXMuIFNvLCBpZiB0aGlzIGRyaXZlciBpcyBjb21waWxlZCBvbiB4ODZfNjQsIGNhbiBpdCBhY3R1YWxseSAqYmUqIHByb2JlZD8gT25seSBpZiBhIGRldmljZSB0cmVlIG92ZXJsYXkgaXMgbG9hZGVkLCBvciBpZiBhIHBsYXRmb3JtIGRldmljZSBpcyByZWdpc3RlcmVkLiBJIGhhdmUgdG8gZmFjdG9yIHRoYXQgaW4uCgpIbW0sIHdhaXQuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBwc2V1ZG8tc3lzY2FsbCBgc3l6X2luaXRfbmV0X2RldmljZWA/IE5vLCB0aGF0JiMzOTtzIG5ldGxpbmsuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJpbGl0aWVzLiBEb2VzIHN5emthbGxlciBzcGVjaWZpY2FsbHkgZnV6eiBYaWxpbnggQVhJIEV0aGVybmV0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBUaGF0IHdpbGwgYmUgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtheGllbmV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzI3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5NQUlOVEFJTkVSUz0yOTY0Mj1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC94bG54LGF4aS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUzoyOTY0MzpGOlx0ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0KlxuTUFJTlRBSU5FUlMtMjk2NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1hJTElOWF9FTUFDTElURSkgJiM0Mzs9IHhpbGlueF9lbWFjbGl0ZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvTWFrZWZpbGU6OTp4aWxpbnhfZW1hYy1vYmpzIDo9IHhpbGlueF9heGllbmV0X21haW4ubyB4aWxpbnhfYXhpZW5ldF9tZGlvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfWElMSU5YX0FYSV9FTUFDKSAmIzQzOz0geGlsaW54X2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTQ2Mj1zdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3Ige1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ3MTogKiBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAtIGF4aWVuZXQgcHJpdmF0ZSBwZXIgZGV2aWNlIGRhdGFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTQ3Mi0gKiBAbmRldjpcdFBvaW50ZXIgZm9yIG5ldF9kZXZpY2UgdG8gd2hpY2ggaXQgd2lsbCBiZSBhdHRhY2hlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODItICogQG1paV9jbGtfZGl2OiBNSUkgYnVzIGNsb2NrIGRpdmlkZXIgdmFsdWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ4MzogKiBAcmVnc19zdGFydDogUmVzb3VyY2Ugc3RhcnQgZm9yIGF4aWVuZXQgZGV2aWNlIGFkZHJlc3Nlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDg0OiAqIEByZWdzOlx0QmFzZSBhZGRyZXNzIGZvciB0aGUgYXhpZW5ldF9sb2NhbCBkZXZpY2UgYWRkcmVzcyBzcGFjZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDg1LSAqIEBkbWFfcmVnczpcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWRtYSBkZXZpY2UgYWRkcmVzcyBzcGFjZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzMi0gKiBAb3B0aW9uczpcdEF4aUV0aGVybmV0IG9wdGlvbiB3b3JkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo1MzM6ICogQGZlYXR1cmVzOlx0U3RvcmVzIHRoZSBleHRlbmRlZCBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIGF4aWVuZXQgaHdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzNC0gKiBAbWF4X2ZybV9zaXplOiBTdG9yZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZnJhbWUgdGhhdCBjYW4gYmUgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTU0OC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjU0OTpzdHJ1Y3QgYXhpZW5ldF9sb2NhbCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC01NTAtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2MzI6ICogc3RydWN0IGF4aWVuZXRfb3B0aW9uIC0gVXNlZCB0byBzZXQgYXhpIGV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMy0gKiBAb3B0Olx0T3B0aW9uIHRvIGJlIHNldC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2Mzc6c3RydWN0IGF4aWVuZXRfb3B0aW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzOC1cdHUzMiBvcHQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjQzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ0OiAqIGF4aWVuZXRfaW9yIC0gTWVtb3J5IG1hcHBlZCBBeGkgRXRoZXJuZXQgcmVnaXN0ZXIgcmVhZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ1OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDYtICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1MjpzdGF0aWMgaW5saW5lIHUzMiBheGllbmV0X2lvcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU3OnN0YXRpYyBpbmxpbmUgdTMyIGF4aW5ldF9pb3JfcmVhZF9tY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY1OTpcdHJldHVybiBheGllbmV0X2lvcihscCwgWEFFX01ESU9fTUNSX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjYyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2xvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjY4OnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X3VubG9ja19taWkoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NzQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2NzU6ICogYXhpZW5ldF9pb3cgLSBNZW1vcnkgbWFwcGVkIEF4aSBFdGhlcm5ldCByZWdpc3RlciB3cml0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njc2OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NzctICogQG9mZnNldDogICAgIEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiBBeGkgRXRoZXJuZXQgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4Mi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY4MzpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9pb3coc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCBvZmZzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODQtXHRcdFx0ICAgICAgIHUzMiB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02ODktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTA6ICogYXhpZW5ldF9kbWFfb3V0MzIgLSBNZW1vcnkgbWFwcGVkIEF4aSBETUEgcmVnaXN0ZXIgd3JpdGUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTE6ICogQGxwOlx0XHRQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTItICogQHJlZzpcdEFkZHJlc3Mgb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQXhpIERNQSBjb3JlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njk5OnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXQzMihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDAtXHRcdFx0XHQgICAgIG9mZl90IHJlZywgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwNzogKiBheGllbmV0X2RtYV9vdXQ2NCAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwODogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwOS0gKiBAcmVnOlx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MTU6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfZG1hX291dDY0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNi1cdFx0XHRcdCAgICAgb2ZmX3QgcmVnLCB1NjQgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzIxOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2RtYV9vdXRfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyMi1cdFx0XHRcdFx0ZG1hX2FkZHJfdCBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNC1cdGlmIChscC1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgWEFFX0ZFQVRVUkVfRE1BXzY0QklUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzI1Olx0XHRheGllbmV0X2RtYV9vdXQ2NChscCwgcmVnLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNi1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNzpcdFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIHJlZywgbG93ZXJfMzJfYml0cyhhZGRyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczMjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzMtXHRcdFx0XHRcdGRtYV9hZGRyX3QgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MzU6XHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTczNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQwOi8qIEZ1bmN0aW9uIHByb3RvdHlwZXMgdmlzaWJsZSBpbiB4aWxpbnhfYXhpZW5ldF9tZGlvLmMgZm9yIG90aGVyIGZpbGVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3NDE6aW50IGF4aWVuZXRfbWRpb19zZXR1cChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQyOnZvaWQgYXhpZW5ldF9tZGlvX3RlYXJkb3duKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03NDMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDc6I2luY2x1ZGUgXCYjMzQ7eGlsaW54X2F4aWVuZXQuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5LS8qIE11c3QgYmUgc2hvcnRlciB0aGFuIGxlbmd0aCBvZiBldGh0b29sX2RydmluZm8uZHJpdmVyIGZpZWxkIHRvIGZpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDojZGVmaW5lIERSSVZFUl9OQU1FXHRcdFwmIzM0O3hheGllbmV0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxLSNkZWZpbmUgRFJJVkVSX0RFU0NSSVBUSU9OXHRcJiMzNDtYaWxpbnggQXhpIEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY2OnN0YXRpYyB2b2lkIGF4aWVuZXRfcnhfc3VibWl0X2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgtLyogTWF0Y2ggdGFibGUgZm9yIG9mX3BsYXRmb3JtIGJpbmRpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXhpZW5ldF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDt4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmFcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXhpZW5ldF9vZl9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03OC0vKiBPcHRpb24gdGFibGUgZm9yIHNldHRpbmcgdXAgQXhpIEV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Nzk6c3RhdGljIHN0cnVjdCBheGllbmV0X29wdGlvbiBheGllbmV0X29wdGlvbnNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODAtXHQvKiBUdXJuIG9uIGp1bWJvIHBhY2tldCBzdXBwb3J0IGZvciBib3RoIFJ4IGFuZCBUeCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzM6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzg6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfdHhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNDQ6ICogYXhpZW5ldF9kbWFfaW4zMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciByZWFkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NTogKiBAbHA6XHRcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQ2LSAqIEByZWc6XHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTI6c3RhdGljIGlubGluZSB1MzIgYXhpZW5ldF9kbWFfaW4zMihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIG9mZl90IHJlZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTU3OnN0YXRpYyB2b2lkIGRlc2Nfc2V0X3BoeXNfYWRkcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGRtYV9hZGRyX3QgYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU4LVx0XHRcdCAgICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNjU6c3RhdGljIGRtYV9hZGRyX3QgZGVzY19nZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTY2LVx0XHRcdFx0ICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNzc6ICogYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSAtIFJlbGVhc2UgYnVmZmVyIGRlc2NyaXB0b3IgcmluZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc4LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4MC0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgZGVzY3JpcHRvcnMgYWxsb2NhdGVkIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4MTogKiBheGllbmV0X2RtYV9iZF9pbml0LiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIGlzIGNhbGxlZCB3aGVuIEF4aSBFdGhlcm5ldFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODItICogZHJpdmVyIHN0b3AgYXBpIGlzIGNhbGxlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxODQ6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfYmRfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg2LVx0aW50IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE4NzpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIyNjpzdGF0aWMgdTY0IGF4aWVuZXRfZG1hX3JhdGUoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjMzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMzQ6ICogYXhpZW5ldF9jYWxjX2NyKCkgLSBDYWxjdWxhdGUgY29udHJvbCByZWdpc3RlciB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzUtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI0NDpzdGF0aWMgdTMyIGF4aWVuZXRfY2FsY19jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjb3VudCwgdTMyIHVzZWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTMtXHRpZiAoY291bnQgXHUwMDNlIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjU0Olx0XHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjU1LVx0XHR1MzIgdGltZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNjktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI3MDogKiBheGllbmV0X2NvYWxlc2NlX3BhcmFtcygpIC0gRXh0cmFjdCBjb2FsZXNjZSBwYXJhbWV0ZXJzIGZyb20gdGhlIENSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3MS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc2OnN0YXRpYyB2b2lkIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzctXHRcdFx0XHQgICAgdTMyICpjb3VudCwgdTMyICp1c2VjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyNzk6XHR1NjQgY2xrX3JhdGUgPSBheGllbmV0X2RtYV9yYXRlKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwLVx0dTY0IHRpbWVyID0gRklFTERfR0VUKFhBWElETUFfREVMQVlfTUFTSywgY3IpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODc6ICogYXhpZW5ldF9kbWFfc3RhcnQgLSBTZXQgdXAgRE1BIHJlZ2lzdGVycyBhbmQgc3RhcnQgRE1BIG9wZXJhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyODg6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yODktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5MDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdGFydChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTUtXHRscC1cdTAwM2VyeF9kbWFfY3IgXHUwMDI2PSB+WEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5NjpcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX0NSX09GRlNFVCwgbHAtXHUwMDNlcnhfZG1hX2NyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjk3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAwLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwMTpcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX0NERVNDX09GRlNFVCwgbHAtXHUwMDNlcnhfYmRfcCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwMi1cdGxwLVx1MDAzZXJ4X2RtYV9jciB8PSBYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cdTAwM2VyeF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDQ6XHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9UREVTQ19PRkZTRVQsIGxwLVx1MDAzZXJ4X2JkX3AgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzA1LVx0XHRcdCAgICAgKHNpemVvZigqbHAtXHUwMDNlcnhfYmRfdikgKiAobHAtXHUwMDNlcnhfYmRfbnVtIC0gMSkpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMi1cdGxwLVx1MDAzZXR4X2RtYV9jciBcdTAwMjY9IH5YQVhJRE1BX0NSX1JVTlNUT1BfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBscC1cdTAwM2V0eF9kbWFfY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzE5Olx0YXhpZW5ldF9kbWFfb3V0X2FkZHIobHAsIFhBWElETUFfVFhfQ0RFU0NfT0ZGU0VULCBscC1cdTAwM2V0eF9iZF9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIwLVx0bHAtXHUwMDNldHhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjE6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGxwLVx1MDAzZXR4X2RtYV9jcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMi1cdGxwLVx1MDAzZXR4X2RtYV9zdGFydGVkID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzI4OiAqIGF4aWVuZXRfZG1hX2JkX2luaXQgLSBTZXR1cCBidWZmZXIgZGVzY3JpcHRvciByaW5ncyBmb3IgQXhpIERNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjktICogQG5kZXY6XHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzM2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMzc6c3RhdGljIGludCBheGllbmV0X2RtYV9iZF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzQwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzQxOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM0Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mzk2Olx0YXhpZW5ldF9kbWFfc3RhcnQobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zOTktb3V0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDA6XHRheGllbmV0X2RtYV9iZF9yZWxlYXNlKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDEtXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDA1OiAqIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzIC0gV3JpdGUgdGhlIE1BQyBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNi0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxMjpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDEzLVx0XHRcdFx0ICAgIGNvbnN0IHZvaWQgKmFkZHJlc3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQxNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQxNTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjItXHQvKiBTZXQgdXAgdW5pY2FzdCBNQUMgYWRkcmVzcyBmaWx0ZXIgc2V0IGl0cyBtYWMgYWRkcmVzcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MjM6XHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzBfT0ZGU0VULFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjQtXHRcdCAgICAobmRldi1cdTAwM2VkZXZfYWRkclswXSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI3LVx0XHQgICAgKG5kZXYtXHUwMDNlZGV2X2FkZHJbM10gXHUwMDNjXHUwMDNjIDI0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyODpcdGF4aWVuZXRfaW93KGxwLCBYQUVfVUFXMV9PRkZTRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyOTpcdFx0ICAgICgoKGF4aWVuZXRfaW9yKGxwLCBYQUVfVUFXMV9PRkZTRVQpKSBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDMwLVx0XHQgICAgICB+WEFFX1VBVzFfVU5JQ0FTVEFERFJfTUFTSykgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQyLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGluaXRpYWxpemUgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBBeGkgRXRoZXJuZXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDQzOiAqIGNvcmUuIEl0IGNhbGxzIHRoZSBjb3JlIHNwZWNpZmljIGF4aWVuZXRfc2V0X21hY19hZGRyZXNzLiBUaGlzIGlzIHRoZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDQtICogZnVuY3Rpb24gdGhhdCBnb2VzIGludG8gbmV0X2RldmljZV9vcHMgc3RydWN0dXJlIGVudHJ5IG5kb19zZXRfbWFjX2FkZHJlc3MuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz00NDY9c3RhdGljIGludCBuZXRkZXZfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NTA6XHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBhZGRyLVx1MDAzZXNhX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTEtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDU1OiAqIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0IC0gUHJlcGFyZSB0aGUgbXVsdGljYXN0IHRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1Ni0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NjQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ2NTpzdGF0aWMgdm9pZCBheGllbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ2OC1cdHUzMiByZWcsIGFmMHJlZywgYWYxcmVnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Njk6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NzE6XHRyZWcgPSBheGllbmV0X2lvcihscCwgWEFFX0ZNSV9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzItXHRyZWcgXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDc2LVx0XHRyZWcgXHUwMDI2PSB+WEFFX0ZNSV9QTV9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0Nzc6XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4MS1cdFx0cmVnIFx1MDAyNj0gMHhGRkZGRkYwMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDgyOlx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4MzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCAxKTsgLyogTXVsdGljYXN0IGJpdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODQ6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NTpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAxKTsgLyogZGl0dG8gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg2Olx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODc6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4OC1cdFx0aSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwNzpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwODpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMF9PRkZTRVQsIGFmMHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwOTpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FGMV9PRkZTRVQsIGFmMXJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMDpcdFx0XHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDB4ZmZmZmZmZmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTE6XHRcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTFfT0ZGU0VULCAweDAwMDBmZmZmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTEyOlx0XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxMy1cdFx0XHRpJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxOS1cdFx0cmVnIHw9IGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMDpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GTUlfT0ZGU0VULCByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjE6XHRcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTI2OiAqIGF4aWVuZXRfc2V0b3B0aW9ucyAtIFNldCBhbiBBeGkgRXRoZXJuZXQgb3B0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNy0gKiBAbmRldjpcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01MzMtICogdGhlc2Ugb3B0aW9ucyBpbiB0aGUgQXhpIEV0aGVybmV0IGhhcmR3YXJlLiBUaGlzIGlzIGRvbmUgdGhyb3VnaFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzQ6ICogYXhpZW5ldF9vcHRpb24gc3RydWN0dXJlIC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzY6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRvcHRpb25zKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgb3B0aW9ucylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM4LVx0aW50IHJlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM5Olx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0MDpcdHN0cnVjdCBheGllbmV0X29wdGlvbiAqdHAgPSBcdTAwMjZheGllbmV0X29wdGlvbnNbMF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQyLVx0d2hpbGUgKHRwLVx1MDAzZW9wdCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDM6XHRcdHJlZyA9ICgoYXhpZW5ldF9pb3IobHAsIHRwLVx1MDAzZXJlZykpIFx1MDAyNiB+KHRwLVx1MDAzZW1fb3IpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ0LVx0XHRpZiAob3B0aW9ucyBcdTAwMjYgdHAtXHUwMDNlb3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDUtXHRcdFx0cmVnIHw9IHRwLVx1MDAzZW1fb3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU0NjpcdFx0YXhpZW5ldF9pb3cobHAsIHRwLVx1MDAzZXJlZywgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ3LVx0XHR0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU1MzpzdGF0aWMgdTY0IGF4aWVuZXRfc3RhdChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGVudW0gdGVtYWNfc3RhdCBzdGF0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjA6XHRjb3VudGVyID0gYXhpZW5ldF9pb3IobHAsIFhBRV9TVEFUU19PRkZTRVQgJiM0Mzsgc3RhdCAqIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NjEtXHRyZXR1cm4gbHAtXHUwMDNlaHdfc3RhdF9iYXNlW3N0YXRdICYjNDM7IChjb3VudGVyIC0gbHAtXHUwMDNlaHdfbGFzdF9jb3VudGVyW3N0YXRdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTY0OnN0YXRpYyB2b2lkIGF4aWVuZXRfc3RhdHNfdXBkYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgYm9vbCByZXNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTY1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3MC1cdGZvciAoc3RhdCA9IDA7IHN0YXQgXHUwMDNjIFNUQVRfQ09VTlQ7IHN0YXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU3MTpcdFx0dTMyIGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTc5OnN0YXRpYyB2b2lkIGF4aWVuZXRfcmVmcmVzaF9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU4MTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTgyLVx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODQtXHRtdXRleF9sb2NrKFx1MDAyNmxwLVx1MDAzZXN0YXRzX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1ODU6XHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODYtXHRtdXRleF91bmxvY2soXHUwMDI2bHAtXHUwMDNlc3RhdHNfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU5MjpzdGF0aWMgaW50IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01OTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTk5LVx0aWYgKGxwLVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBYQUVfRkVBVFVSRV9TVEFUUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjAwOlx0XHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwOC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MDk6XHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIFhBWElETUFfQ1JfUkVTRVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYxMDpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGF4aWVuZXRfZG1hX2luMzIsIHZhbHVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTEtXHRcdFx0XHQhKHZhbHVlIFx1MDAyNiBYQVhJRE1BX0NSX1JFU0VUX01BU0spLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjE5LVx0LyogV2FpdCBmb3IgUGh5UnN0Q21wbHQgYml0IHRvIGJlIHNldCwgaW5kaWNhdGluZyB0aGUgUEhZIHJlc2V0IGhhcyBmaW5pc2hlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MjA6XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChheGllbmV0X2lvciwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYyMS1cdFx0XHRcdHZhbHVlIFx1MDAyNiBYQUVfSU5UX1BIWVJTVENNUExUX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MzYtXHRcdFx0dTMyIGNvdW50ZXIgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2Mzc6XHRcdFx0XHRheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCAmIzQzOyBzdGF0ICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUyOiAqIGF4aWVuZXRfZG1hX3N0b3AgLSBTdG9wIERNQSBvcGVyYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUzOiAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTU6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfc3RvcChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NjItXHRjciA9IGxwLVx1MDAzZXJ4X2RtYV9jciBcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjYzOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBjcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY2NC1cdGxwLVx1MDAzZXJ4X2RtYV9zdGFydGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzEtXHRjciA9IGxwLVx1MDAzZXR4X2RtYV9jciBcdTAwMjYgfihYQVhJRE1BX0NSX1JVTlNUT1BfTUFTSyB8IFhBWElETUFfSVJRX0FMTF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjcyOlx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBjcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3My1cdGxwLVx1MDAzZXR4X2RtYV9zdGFydGVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzgtXHQvKiBHaXZlIERNQXMgYSBjaGFuY2UgdG8gaGFsdCBncmFjZWZ1bGx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY3OTpcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODAtXHRmb3IgKGNvdW50ID0gMDsgIShzciBcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2MgNTsgJiM0MzsmIzQzO2NvdW50KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4MS1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjgyOlx0XHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY4NTpcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODYtXHRmb3IgKGNvdW50ID0gMDsgIShzciBcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2MgNTsgJiM0MzsmIzQzO2NvdW50KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY4Ny1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg4Olx0XHRzciA9IGF4aWVuZXRfZG1hX2luMzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjkxLVx0LyogRG8gYSByZXNldCB0byBlbnN1cmUgRE1BIGlzIHJlYWxseSBzdG9wcGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5MjpcdGF4aWVuZXRfbG9ja19taWkobHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTM6XHRfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk0Olx0YXhpZW5ldF91bmxvY2tfbWlpKGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk4OiAqIGF4aWVuZXRfZGV2aWNlX3Jlc2V0IC0gUmVzZXQgYW5kIGluaXRpYWxpemUgdGhlIEF4aSBFdGhlcm5ldCBoYXJkd2FyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjk5LSAqIEBuZGV2Olx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcwOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEwOnN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMjpcdHUzMiBheGllbmV0X3N0YXR1cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEzOlx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MjgtXHRpZiAoIWxwLVx1MDAzZXVzZV9kbWFlbmdpbmUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzI5Olx0XHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMwLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3MzM6XHRcdHJldCA9IGF4aWVuZXRfZG1hX2JkX2luaXQobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczNC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDE6XHRheGllbmV0X3N0YXR1cyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfUkNXMV9PRkZTRVQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDI6XHRheGllbmV0X3N0YXR1cyBcdTAwMjY9IH5YQUVfUkNXMV9SWF9NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDM6XHRheGllbmV0X2lvdyhscCwgWEFFX1JDVzFfT0ZGU0VULCBheGllbmV0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ1Olx0YXhpZW5ldF9zdGF0dXMgPSBheGllbmV0X2lvcihscCwgWEFFX0lQX09GRlNFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NjpcdGlmIChheGllbmV0X3N0YXR1cyBcdTAwMjYgWEFFX0lOVF9SWFJKRUNUX01BU0spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc0NzpcdFx0YXhpZW5ldF9pb3cobHAsIFhBRV9JU19PRkZTRVQsIFhBRV9JTlRfUlhSSkVDVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ4Olx0YXhpZW5ldF9pb3cobHAsIFhBRV9JRV9PRkZTRVQsIGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNlIDAgP1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDktXHRcdCAgICBYQUVfSU5UX1JFQ1ZfRVJST1JfTUFTSyA6IDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1MTpcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkNDX09GRlNFVCwgWEFFX0ZDQ19GQ1JYX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTUtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU2Olx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVx1MDAzZW9wdGlvbnMgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1Ny1cdFx0XHQgICB+KFhBRV9PUFRJT05fVFhFTiB8IFhBRV9PUFRJT05fUlhFTikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTg6XHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzU5Olx0YXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2MDpcdGF4aWVuZXRfc2V0b3B0aW9ucyhuZGV2LCBscC1cdTAwM2VvcHRpb25zKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njg6ICogYXhpZW5ldF9mcmVlX3R4X2NoYWluIC0gQ2xlYW4gdXAgYSBzZXJpZXMgb2YgbGlua2VkIFRYIGRlc2NyaXB0b3JzLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3Njk6ICogQGxwOlx0XHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NzAtICogQGZpcnN0X2JkOlx0SW5kZXggb2YgZmlyc3QgZGVzY3JpcHRvciB0byBjbGVhbiB1cFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzgxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3ODI6c3RhdGljIGludCBheGllbmV0X2ZyZWVfdHhfY2hhaW4oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgZmlyc3RfYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc4My1cdFx0XHRcdCBpbnQgbnJfYmRzLCBib29sIGZvcmNlLCB1MzIgKnNpemVwLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4MzU6ICogYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZSAtIENoZWNrcyBpZiBhIEJEL2dyb3VwIG9mIEJEcyBhcmUgY3VycmVudGx5IGJ1c3lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODM2OiAqIEBscDpcdFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM3LSAqIEBudW1fZnJhZzpcdFRoZSBudW1iZXIgb2YgQkRzIHRvIGNoZWNrIGZvclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NDc6c3RhdGljIGlubGluZSBpbnQgYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZShzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg0OC1cdFx0XHRcdFx0ICAgIGludCBudW1fZnJhZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2MS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODYyOiAqIGF4aWVuZXRfZG1hX3R4X2NiIC0gRE1BIGVuZ2luZSBjYWxsYmFjayBmb3IgVFggY2hhbm5lbC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODYzOiAqIEBkYXRhOiAgICAgICBQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY0LSAqIEByZXN1bHQ6ICAgICBlcnJvciByZXBvcnRpbmcgdGhyb3VnaCBkbWFlbmdpbmVfcmVzdWx0LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njg6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfdHhfY2Iodm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgKnJlc3VsdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODcwLVx0c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpza2J1Zl9kbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3MTpcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGRhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Mi1cdHN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODc1Olx0c2tidWZfZG1hID0gYXhpZW5ldF9nZXRfdHhfZGVzYyhscCwgbHAtXHUwMDNldHhfcmluZ190YWlsJiM0MzsmIzQzOyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Ni1cdGxlbiA9IHNrYnVmX2RtYS1cdTAwM2Vza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODg5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4OTA6ICogYXhpZW5ldF9zdGFydF94bWl0X2RtYWVuZ2luZSAtIFN0YXJ0cyB0aGUgdHJhbnNtaXNzaW9uLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTEtICogQHNrYjogICAgICAgIHNrX2J1ZmYgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGRhdGEgdG8gYmUgVHhlZC5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTkwND1zdGF0aWMgbmV0ZGV2X3R4X3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA1OmF4aWVuZXRfc3RhcnRfeG1pdF9kbWFlbmdpbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTkwNy1cdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZG1hX3R4X2Rlc2MgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo5MDg6XHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA5LVx0dTMyIGFwcF9tZXRhZGF0YVtETUFfTlVNX0FQUF9XT1JEU10gPSB7MH07XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0NjgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IHRoaXM/IExldCYjMzk7cyBicmVhayBpdCBkb3duLgoKRmlyc3QsIEkga25vdyB0aGF0IFFFTVUgZW11bGF0ZXMgYHhpbGlueF9heGllbmV0YCBpbiBgaHcvbmV0L3hpbGlueF9heGllbmV0LmNgLiBTbywgaW4gdGhlb3J5LCBpZiBJIGNvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIGBDT05GSUdfWElMSU5YX0FYSV9FTUFDPXlgIGFuZCBgQ09ORklHX1hJTElOWF9ETUE9eWAgYW5kIHJ1biBpdCBpbiBRRU1VLCBzeXprYWxsZXIgKmNvdWxkKiB0cnkuIEJ1dCwgdGhlcmUmIzM5O3MgYSBjYXRjaCwgc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2V0IHVwIGZvciB4ODZfNjQgb3IgYXJtNjQuIE9uIGFybTY0LCBpdCB3aWxsIHVzZSB0aGUgYHZpcnRgIG1hY2hpbmUuIFRoZSBgdmlydGAgbWFjaGluZSBkb2VzbiYjMzk7dCBoYXZlIGFuIGB4aWxpbnhfYXhpZW5ldGAgaW5zdGFuY2UgYnkgZGVmYXVsdC4KCkkga25vdyBzeXprYWxsZXIgKmNhbiogdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzLCB0aGVvcmV0aWNhbGx5IGluc3RhbnRpYXRpbmcgcGxhdGZvcm0gZGV2aWNlcywgYnV0IGl0JiMzOTtzIG5vdCBhIHN0YW5kYXJkLCBhdXRvbWF0aWMgcHJvY2VzcywgYW5kIEkgZG9uJiMzOTt0IGtub3cgaWYgdGhpcyBwYXJ0aWN1bGFyIGluc3RhbmNlIGhhcyBiZWVuIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBJICp0aG91Z2h0KiB0aGVyZSB3YXMgYSBgc3l6X2Rldl9wbGF0Zm9ybWAgcHNldWRvLXN5c2NhbGwsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZXhpc3QuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkcml2ZXIuIFdhaXQsIEkgcmVtZW1iZXIsIHRoYXQgZ3JlcCBvdXRwdXQgZGlkbiYjMzk7dCB5aWVsZCBhbnl0aGluZy4KCkhvbGQgb24sIHRoZSBwcm9tcHQgZG9lcyBzYXkgc29tZXRoaW5nIGFib3V0IHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZSwgaXQgbmVlZHMgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIHRvIGJlIHByb2JlZCEgSXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/CgpRRU1VIGVtdWxhdGVzIGl0LCBidXQgaXQmIzM5O3Mgb25seSBpbnN0YW50aWF0ZWQgaW4gdmVyeSBzcGVjaWZpYyBtYWNoaW5lIHR5cGVzLCBsaWtlIGBwZXRhbG9naXgtczNhZHNwMTgwMGAgb3IgYHhsbngtemN1MTAyYCBvciBgbWljcm9ibGF6ZWAuIFN5emthbGxlciB0eXBpY2FsbHkgcnVucyBvbiBgcTM1YCAoeDg2XzY0KSBvciBgdmlydGAgKGFybTY0KS4gQ2FuIGl0IHJlYWNoIHRoaXM/CgpIbW0uIFRoZSBjb21taXQgbWVzc2FnZS4gJiMzNDtBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsmIzM0OyBhbmQgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBzdWdnZXN0cyBzeXprYWxsZXIgZWl0aGVyICpkaWQqIGZpbmQgYSBidWcsIG9yIGlzIHRlc3RpbmcgYSBwYXRjaCBmb3IgdGhpcyBkcml2ZXIuCgpXYWl0LCBzeXpib3QgdGVzdHMgYW55IHBhdGNoIGZvciBhbnkgc3Vic3lzdGVtLiBJdCBkb2VzbiYjMzk7dCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIElmIHNvbWVvbmUgc2VuZHMgYSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcsIHN5emJvdCBhcHBsaWVzIGl0IGFuZCBidWlsZHMgaXQuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCB0aGUgZnV6emluZyB3b24mIzM5O3QgaGl0IGl0LCBidXQgdGhlIGJ1aWxkIHdpbGwgc3VjY2VlZC4gU28sIHRoaXMgZG9lc24mIzM5O3QgbmVjZXNzYXJpbHkgbWVhbiBpdCYjMzk7cyBiZWluZyBmdXp6ZWQuCgpPa2F5LCBpZiB0aGUgcGF0Y2gganVzdCBmaXhlcyBhIHByb2JlIGVycm9yLCB3aGljaCBpcyBjb21tb24gZm9yIHRoZXNlIHBsYXRmb3JtIGRyaXZlcnMgdGhhdCByZWx5IG9uIHZlcnkgc3BlY2lmaWMgU29DcyBvciBGUEdBcywgaXQmIzM5O3MgKmhpZ2hseSogbGlrZWx5IHRvIGJlIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwICh4ODZfNjQgb3IgYXJtNjQgYHZpcnRgKS4KCklzIHRoZXJlIGFueSB3YXkgdG8gKnRyaWdnZXIqIHRoZSBwbGF0Zm9ybSBkcml2ZXImIzM5O3MgcHJvYmUgZnJvbSB1c2Vyc3BhY2U/IFllcywgSSBjYW4gYmluZCBhIGRyaXZlciB0byBhIGRldmljZSBieSB3cml0aW5nIHRvIGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYC4gQnV0IEkgc3RpbGwgbmVlZCB0aGUgZGV2aWNlLgoKU2luY2UgdGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBpdCYjMzk7cyBtYXRjaGluZyBhIERldmljZSBUcmVlIG1hdGNoLCBzcGVjaWZpY2FsbHk6ICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMS4wMC5hJiMzNDssICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMS4wMS5hJiMzNDssICYjMzQ7eGxueCxheGktZXRoZXJuZXQtMi4wMS5hJiMzNDsuIFRoZXJlJiMzOTtzIG5vIEFDUEkgbWF0Y2guIEFuZCBpbiBhIHN0YW5kYXJkIHg4Nl82NCBvciBhcm02NCBgdmlydGAgbWFjaGluZSwgdGhlcmUmIzM5O3Mgbm8gc3VjaCBkZXZpY2UgaW4gdGhlIERUISBDYW4gSSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCB0aGF0IGNvbXBhdGlibGUgc3RyaW5nIGZyb20gdXNlcnNwYWNlPyBXZWxsLCB5ZXMsIGJ1dCBpdCYjMzk7ZCBiZSB0aHJvdWdoIHRoZSBgb2Zfb3ZlcmxheWAgY29uZmlnZnMgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHN5emthbGxlciB1c3VhbGx5IGRvZXNuJiMzOTt0IHVzZSB0aGF0LCBvciBpdCYjMzk7cyBkaXNhYmxlZC4KCldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X2luaXRfbmV0X2RldmljZWAsIGJ1dCB0aGF0JiMzOTtzIGZvciBjcmVhdGluZyBzb21lIHR5cGVzIG9mIG5ldHdvcmsgZGV2aWNlcywgbm90IHBsYXRmb3JtIGRldmljZXMuIEFuZCBubywgdGhlcmUgaXMgbm8gYHN5el9kZXZfcGxhdGZvcm1gLi4uIFNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBpZiBhbnkgcGxhdGZvcm0gZGV2aWNlcyBhcmUgZGVzY3JpYmVkIGZvciBpdCBpbiBzeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy9saW51eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDQ4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgWGlsaW54IEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHByZXR0eSBjbGVhcjogSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGFueXRoaW5nIHByZWZpeGVkIHdpdGggJiMzNDtzeXpcXyYjMzQ7IGhlcmUg4oCTIGxvb2tzIGxpa2UgSSBuZWVkIGRpZmZlcmVudCB0b29scyBmb3IgdGhhdCAoYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgKS4gTm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LCBnb3QgaXQuIEkmIzM5O20gc3R1Y2sgd2l0aCBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYCBmb3Igbm93LgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3VpZGVsaW5lcyBmb3IgZGV0ZXJtaW5pbmcgaWYgc29tZXRoaW5nJiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcGhyYXNlcyBhcmUgYXJvdW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBjYWxscyBvdXQgY29kZSB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgUUVNVSBzZXR1cHMgKGxpa2UgU21hcnROSUNzIG9yIEdQVXMpIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBieSB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb25zLgoKSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBmbGFncyBnb2luZyB1cDsgdGhpcyBzY3JlYW1zIGhhcmR3YXJlIGRlcGVuZGVuY2UuIFRoZSB0ZXh0IGluZGljYXRlcyB0aGF0IFFFTVUgKmNhbiogZW11bGF0ZSBpdC4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIHVzZXMgZWl0aGVyIGBxZW11LXN5c3RlbS14ODZfNjQgLW1hY2hpbmUgcTM1YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0YCwgYW5kIG5laXRoZXIgb2YgdGhlc2UgbWFjaGluZXMgaW5jbHVkZXMgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZGV2aWNlIGJ5IGRlZmF1bHQuCgpUaGVyZWZvcmUsIHRoZSBwcm9iZSBmdW5jdGlvbiwgYGF4aWVuZXRfcHJvYmVgLCB3aWxsIG5ldmVyIGJlIGNhbGxlZCB3aXRoaW4gc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwcy4gVGhpcyBtZWFucyB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGVudmlyb25tZW50IHN5emthbGxlciB1c2VzLiBTbywgZ2l2ZW4gdGhhdCwgaXQgc2VlbXMgaGlnaGx5IHVubGlrZWx5IGl0JiMzOTtzIHdvcnRoIGZ1enppbmcgdW5kZXIgdGhlIGN1cnJlbnQgY2lyY3Vtc3RhbmNlcy4KCkFzIGEgZmluYWwgY2hlY2ssIEkgd2lsbCBkb3VibGUgY2hlY2sgYW55IFBDSSBvciBVU0IgYmluZGluZyBpdCBtYXkgdXNlLCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU3MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipObyBQQ0kgRHJpdmVyIOKAkyBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBkaWFnbm9zaXMgaXMgcHJldHR5IGNsZWFyOiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtIHRoYXQgaXNuJiMzOTt0IHJlY29nbml6aW5nIGEgUENJIGRldmljZSBkcml2ZXIuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpc3N1ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBzdGFydCBydW5uaW5nIHRocm91Z2ggdGhlIHBvc3NpYmlsaXRpZXMsIGdpdmVuIG15IGV4cGVyaWVuY2UuIAoKKiAgICoqRmlyc3QsIHZlcmlmeSBpdCYjMzk7cyBhIFBDSSBkZXZpY2U6KiogSXMgaXQgdHJ1bHkgb24gdGhlIFBDSSBidXMsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSBkaWZmZXJlbnQgaW50ZXJmYWNlIGFsdG9nZXRoZXI/IEkgbmVlZCB0byBjb25maXJtIHRoZSBleHBlY3RlZCBoYXJkd2FyZSBhbmQgaXRzIGFjdHVhbCBjb25uZWN0aXZpdHkuIFN0YW5kYXJkIFBDST8gUENJZT8gU29tZSB2YXJpYXRpb24/IEFuZCBtb3N0IGltcG9ydGFudGx5IHRoZSB2ZXJzaW9uIG9mIFBDSS1lIHRoZSBkZXZpY2UgY2xhaW1zIHRvIHN1cHBvcnQsIGFuZCB0aGUgdmVyc2lvbiBvZiBQQ0ktZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3Qgc3lzdGVtLgoqICAgKipIYXJkd2FyZSBhbmQgQnVzIEVudW1lcmF0aW9uOioqIFRpbWUgdG8gY2hlY2sgdGhlIGJ1cyBlbnVtZXJhdGlvbi4gQXJlIHRoZXJlIGFueSBJUlEgY29uZmxpY3RzPyBJcyB0aGUgZGV2aWNlIGV2ZW4gYXBwZWFyaW5nIGluIHRoZSBkZXZpY2UgbWFuYWdlciBvciBlcXVpdmFsZW50LCB1bmRlciBhbnkgY2F0ZWdvcnkgKGV2ZW4gJiMzNDtVbmtub3duIERldmljZSYjMzQ7KT8gT3IgaXMgaXQgY29tcGxldGVseSBhYnNlbnQ/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBsb3ctbGV2ZWwgdG9vbCwgbGlrZWx5IGEgdXRpbGl0eSBsaWtlIGBsc3BjaWAgKG9yIGVxdWl2YWxlbnQgZm9yIG90aGVyIE9TcykgdG8gZ2V0IGEgZ3JhbnVsYXIgdmlldyBvZiB0aGUgUENJIGJ1cy4KKiAgICoqRHJpdmVyIENvbXBhdGliaWxpdHk6KiogQXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCBpcyB0aGlzIGEga25vd24tZ29vZCBkcml2ZXI/IElzIGl0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlIE9TIHZlcnNpb24gYW5kIGtlcm5lbD8gSGF2ZSB0aGVyZSBiZWVuIGFueSByZWNlbnQgdXBkYXRlcyBvciBjaGFuZ2VzIHRoYXQgbWlnaHQgaGF2ZSBicm9rZW4gY29tcGF0aWJpbGl0eT8gQW55IGtub3duICYjMzQ7Z290Y2hhcyYjMzQ7IHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24/IEkmIzM5O2QgaGl0IHVwIHRoZSBtYW51ZmFjdHVyZXImIzM5O3Mgd2Vic2l0ZSBpbW1lZGlhdGVseSB0byBjaGVjay4KKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBJZiB0aGUgZGV2aWNlICppcyogYmVpbmcgZW51bWVyYXRlZCwgYXJlIHRoZXJlIGFueSByZXNvdXJjZSBhbGxvY2F0aW9uIHByb2JsZW1zPyBBcmUgdGhlcmUgZXJyb3JzIHJlbGF0ZWQgdG8gbWVtb3J5IHJhbmdlcywgSS9PIHBvcnRzLCBvciBpbnRlcnJ1cHRzIGluIHRoZSBzeXN0ZW0gbG9ncyBvciBkbWVzZz8gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoZXNlIHRvIHNlZSBpZiB0aGV5IGFyZSB0aGUgY2F1c2UuCiogICAqKlBvd2VyIGFuZCBDb25uZWN0aXZpdHk6KiogVGhpcyBmZWVscyBiYXNpYywgYnV0IG5ldmVyIG92ZXJsb29rIHRoZSBvYnZpb3VzOiBJcyB0aGUgZGV2aWNlIHBvd2VyZWQgY29ycmVjdGx5PyBJcyB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBzb2xpZD8gSSYjMzk7dmUgYmVlbiBjYXVnaHQgb3V0IGJ5IGxvb3NlIGNvbm5lY3RvcnMgbW9yZSB0aGFuIG9uY2UuIFNvbWV0aW1lcyBpdCYjMzk7cyB0aGUgc2ltcGxlc3QgdGhpbmcsIGJ1dCBJIHdvdWxkIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgYW55IHBvd2VyIG9yIGNvbm5lY3Rpdml0eSBpc3N1ZXMuCiogICAqKkRyaXZlciBJbnN0YWxsYXRpb246KiogUGVyaGFwcyB0aGUgZHJpdmVyIGluc3RhbGxhdGlvbiBmYWlsZWQgc2lsZW50bHkuIEkgd2lsbCBjaGVjayBmb3IgYW55IGxvZ3MgZnJvbSB0aGUgaW5zdGFsbGVyLiBEaWQgaXQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCBvciBkaWQgaXQgZW5jb3VudGVyIGVycm9ycz8gSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBsb2FkZWQgYW5kIGJvdW5kIHRvIHRoZSBkZXZpY2UuCiogICAqKktlcm5lbCBNb2R1bGVzIGFuZCBTaWduaW5nOioqIElmIG9uIGEgc3lzdGVtIHRoYXQgdXNlcyBrZXJuZWwgbW9kdWxlcywgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZXkmIzM5O3JlIGxvYWRlZCwgY29ycmVjdGx5IHNpZ25lZCAoaWYgYXBwbGljYWJsZSksIGFuZCB0aGF0IHRoZXJlIGFyZSBubyBjb25mbGljdGluZyBtb2R1bGVzLgoqICAgKipEZWJ1Z2dpbmc6KiogSSYjMzk7bGwgYmUgcmVhZHkgdG8gZGl2ZSBpbnRvIGRlYnVnZ2luZyB0b29scyBpZiBuZWVkZWQg4oCTIHRyYWNpbmcgZHJpdmVyIGNhbGxzLCBtb25pdG9yaW5nIGJ1cyB0cmFmZmljLCBleGFtaW5pbmcgc3lzdGVtIGxvZ3MuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgYXQgYSBsb3cgbGV2ZWwuCiogICAqKkNvbXBhdGliaWxpdHk6KiogSSBhbSB0aGlua2luZyBhYm91dCBjaGVja2luZyBmb3IgaGFyZHdhcmUgb3Igc29mdHdhcmUgY29tcGF0aWJpbGl0eSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UuIElzIHRoZSBkZXZpY2UgaXRzZWxmIGNvbXBhdGlibGU/IEhhcyB0aGVyZSBiZWVuIGFueSBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0gcmVjZW50bHk/IENvdWxkIHRoZXJlIGJlIGEgQklPUyBpc3N1ZT8KClRoaXMgJiMzNDtubyBkcml2ZXImIzM0OyBzaXR1YXRpb24gY2FuIGJlIGZydXN0cmF0aW5nLCBidXQgaXQmIzM5O3MgYSBwcm9ibGVtIEkmIzM5O3ZlIGZhY2VkIGNvdW50bGVzcyB0aW1lcy4gVGhlIGtleSBpcyBtZXRob2RpY2FsLCBzdGVwLWJ5LXN0ZXAgaW52ZXN0aWdhdGlvbiwgZWxpbWluYXRpbmcgcG9zc2liaWxpdGllcywgYW5kIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgdG8gaXNvbGF0ZSB0aGUgcm9vdCBjYXVzZS4gSXQmIzM5O3MgYSBzb2x2YWJsZSBwcm9ibGVtOyBJIGp1c3QgbmVlZCB0byBiZSBkaWxpZ2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzQ5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqVVNCIERyaXZlciBDb251bmRydW0qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uLi4uIGFuZCB0aGUgaW1tZWRpYXRlIHNuYWcgaXMsICYjMzQ7Tm8gVVNCIGRyaXZlci4mIzM0OyBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIGltcGxpY2F0aW9ucy4uLiB1Z2guIEl0JiMzOTtzIHRoYXQgaW5pdGlhbCByb2FkYmxvY2ssIHRoYXQgZnVuZGFtZW50YWwgcGllY2UgdGhhdCYjMzk7cyBqdXN0Li4uIG1pc3NpbmcuIERlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBvcGVyYXRpbmcgc3lzdGVtLCBhbmQgaGFyZHdhcmUgaW52b2x2ZWQsIGl0IGNvdWxkIGJlIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUsIG9yIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBtdWNoIGRlZXBlci4gSXMgaXQgYSBnZW5lcmljIGRyaXZlciB0aGF0JiMzOTtzIG5vdCBpbnN0YWxsZWQsIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiwgb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgcGllY2Ugb2YgZXF1aXBtZW50PwoKSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCB0aGUgdHJvdWJsZXNob290aW5nIHN0ZXBzIC0gbmVlZCB0byBjaGVjayB0aGUgZGV2aWNlIG1hbmFnZXIgZmlyc3QsIGxvb2sgZm9yIGFueSBjb25mbGljdHMsIGFueSB5ZWxsb3cgZXhjbGFtYXRpb24gcG9pbnRzLiBEb2VzIHRoZSBzeXN0ZW0gZXZlbiAqcmVjb2duaXplKiB0aGUgZGV2aWNlIGF0IGFsbCwgZXZlbiBhcyBhbiB1bmtub3duIGRldmljZT8gSWYgaXQgZG9lcywgZ3JlYXQsIGdpdmVzIHVzIHNvbWV0aGluZyB0byB3b3JrIHdpdGguIElmIG5vdCwgd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBwcm9ibGVtIG9yIHBvc3NpYmx5IGEgQklPUyBzZXR0aW5nIHRoYXQmIzM5O3MgZGlzYWJsZWQgVVNCIGZ1bmN0aW9uYWxpdHkuIFRoZW4gdGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uIG9mIHRoZSBPUyB2ZXJzaW9uIC0gaXMgaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgZHJpdmVyPyBBbHdheXMgdGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGNoZWNrLgoKSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB1c3VhbCBzdGVwcywgY2hlY2sgZm9yIGFueSBtYW51ZmFjdHVyZXItc3BlY2lmaWMgZHJpdmVycywgbWF5YmUgZXZlbiB0cnkgYSBkcml2ZXIgcm9sbGJhY2sgaWYgaXQmIzM5O3MgYSByZWNlbnQgY2hhbmdlIHRoYXQmIzM5O3MgY2F1c2VkIHRoaXMuIFRoaXMgaXMgdXN1YWxseSB0aGUgbGVhc3QgYW5ub3lpbmcgb3V0Y29tZS4gRG93bmxvYWQgYSBmZXcgdXRpbGl0aWVzIHRvIGdldCBhcyBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYXMgcG9zc2libGUuCgpUaGUgd2hvbGUgdGhpbmcgYm9pbHMgZG93biB0byBpZGVudGlmaWNhdGlvbiwgY29tcGF0aWJpbGl0eSwgYW5kIGV4ZWN1dGlvbi4gR290dGEgZmlndXJlIG91dCB3aGF0JiMzOTtzIHdoYXQsIG1ha2Ugc3VyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byB3b3JrIHRvZ2V0aGVyLCBhbmQgdGhlbiBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgbWlzc2luZywgb3Igd2hhdCYjMzk7cyBjb25mbGljdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTMyMTY9c3RhdGljIERFRklORV9TSU1QTEVfREVWX1BNX09QUyhheGllbmV0X3BtX29wcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMyMTk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMjAtXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMjkKCQkJCQkJCW91dHB1dDogMTU1CgkJCQkJCQl0aG91Z2h0czogMjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgRnV6emluZyBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcHVyZSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBYaWxpbnggSVAgY29yZS4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IG1pbmQgc2VlcyB0aGUgcmVkIGZsYWc6IHRoaXMgZHJpdmVyIGhpbmdlcyBvbiB0aGUgRGV2aWNlIFRyZWUsIHNwZWNpZmljYWxseSBuZWVkaW5nIHRoYXQgYHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYWAgbm9kZSB0byBiZSBwcmVzZW50LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIG9uZXMgd2UgcmVseSBvbiBmb3IgYnJvYWQgY292ZXJhZ2UsIGRvbiYjMzk7dCBzaGlwIHdpdGggY3VzdG9tIERldmljZSBUcmVlcyB0YWlsb3JlZCB0byBldmVyeSB2ZW5kb3IgSVAgdW5kZXIgdGhlIHN1bi4gVGhleSYjMzk7cmUgYnVpbHQgZm9yIGdlbmVyaWMgYXJjaGl0ZWN0dXJlcy4KClRoZXJlZm9yZSwgYmVjYXVzZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIFhpbGlueC1zcGVjaWZpYyBkcml2ZXIsIHRoZXJlJiMzOTtzIG5vIHdheSB0aGlzIGNvZGUgd2lsbCBldmVyIGdldCBwcm9iZWQgb24gdGhlIGNvbW1vbiB4ODYvYXJtNjQgVk1zIHdlJiMzOTtyZSB1c2luZyB1bmxlc3Mgd2UgbWFudWFsbHkgcHJvdmlkZSBhIGN1c3RvbSBEVC4gU3l6a2FsbGVyIGp1c3QgZG9lc24mIzM5O3QgZG8gdGhhdCBieSBkZWZhdWx0LiBDb25zZXF1ZW50bHksIHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyIChgeGlsaW54X2F4aWVuZXRgKSwgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cC4gR2l2ZW4gdGhpcywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0JiMzOTtzIGEgd2FzdGUgb2YgdGltZSB0byBmb2N1cyBvbiBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBpbmFjY2Vzc2libGUgaW4gb3VyIHRhcmdldCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyICh4aWxpbnhfYXhpZW5ldCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEZQR0FzL1NvQ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzIChlLmcuLCB4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmEpIHRvIGJlIHByb2JlZCwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSYjMzk7cyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKHhpbGlueF9heGllbmV0KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBYaWxpbnggRlBHQXMvU29Dcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMgKGUuZy4sIHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYSkgdG8gYmUgcHJvYmVkLCB3aGljaCBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VJiMzOTtzIHg4Nl82NCBxMzUvYXJtNjQgdmlydCBtYWNoaW5lcykgdXNlZCBmb3IgZnV6emluZy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTQ6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEyLjY1NTk2NDE1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDk2NjQ0NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUncyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEyLjY1NTk3MDA3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5NDE3OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxNDoyMjoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbmluZGV4IDE3MjJiNzAzOGYzNDAuLjY4YjU4MDE5MTUwODQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcXG5AQCAtMjk3MSwxMCArMjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiY291bGQgbm90IG1hcCBETUEgcmVnc1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGxwLVxcdTAwM2VkbWFfcmVncyk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKGxwLVxcdTAwM2VyeF9pcnEgXFx1MDAzYz0gMCB8fCBscC1cXHUwMDNldHhfaXJxIFxcdTAwM2M9IDApIHtcXG4rXFx0XFx0aWYgKCFscC1cXHUwMDNlcnhfaXJxIHx8ICFscC1cXHUwMDNldHhfaXJxKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBkZXRlcm1pbmUgaXJxc1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChscC1cXHUwMDNlcnhfaXJxIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIGxwLVxcdTAwM2VyeF9pcnE7XFxuK1xcdFxcdGlmIChscC1cXHUwMDNldHhfaXJxIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cmV0dXJuIGxwLVxcdTAwM2V0eF9pcnE7XFxuK1xcdFxcdGlmIChscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgbHAtXFx1MDAzZWV0aF9pcnEgIT0gLUVOWElPKVxcbitcXHRcXHRcXHRyZXR1cm4gbHAtXFx1MDAzZWV0aF9pcnE7XFxuIFxcbiBcXHRcXHQvKiBSZXNldCBjb3JlIG5vdyB0aGF0IGNsb2NrcyBhcmUgZW5hYmxlZCwgcHJpb3IgdG8gYWNjZXNzaW5nIE1ESU8gKi9cXG4gXFx0XFx0cmV0ID0gX19heGllbmV0X2RldmljZV9yZXNldChscCk7XFxuQEAgLTMwNTAsNyArMzA1Niw3IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZheGllbmV0X2V0aHRvb2xfb3BzO1xcbiBcXHR9XFxuIFxcdC8qIENoZWNrIGZvciBFdGhlcm5ldCBjb3JlIElSUSAob3B0aW9uYWwpICovXFxuLVxcdGlmIChscC1cXHUwMDNlZXRoX2lycSBcXHUwMDNjPSAwKVxcbitcXHRpZiAobHAtXFx1MDAzZWV0aF9pcnEgXFx1MDAzYyAwKVxcbiBcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRXRoZXJuZXQgY29yZSBJUlEgbm90IGRlZmluZWRcXFxcblxcXCIpO1xcbiBcXG4gXFx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjEzLjE4NTk3MTk5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzOTY2NjIxNjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyICh4aWxpbnhfYXhpZW5ldCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgWGlsaW54IEZQR0FzL1NvQ3MuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIERldmljZSBUcmVlIG5vZGVzIChlLmcuLCB4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmEpIHRvIGJlIHByb2JlZCwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSdzIHg4Nl82NCBxMzUvYXJtNjQgdmlydCBtYWNoaW5lcykgdXNlZCBmb3IgZnV6emluZy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDk0MjdhNDJhYTFkODc0NzY0MTVmNjZjOTcxY2MzOWQyNmY3YTRkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE0OjIyOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbmluZGV4IDE3MjJiNzAzOGYzNDAuLjY4YjU4MDE5MTUwODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXG5AQCAtMjk3MSwxMCArMjk3MSwxNiBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBtYXAgRE1BIHJlZ3NcXG5cIik7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIobHAtXHUwMDNlZG1hX3JlZ3MpO1xuIFx0XHR9XG4tXHRcdGlmIChscC1cdTAwM2VyeF9pcnEgXHUwMDNjPSAwIHx8IGxwLVx1MDAzZXR4X2lycSBcdTAwM2M9IDApIHtcbitcdFx0aWYgKCFscC1cdTAwM2VyeF9pcnEgfHwgIWxwLVx1MDAzZXR4X2lycSkge1xuIFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiY291bGQgbm90IGRldGVybWluZSBpcnFzXFxuXCIpO1xuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0XHR9XG4rXHRcdGlmIChscC1cdTAwM2VyeF9pcnEgXHUwMDNjIDApXG4rXHRcdFx0cmV0dXJuIGxwLVx1MDAzZXJ4X2lycTtcbitcdFx0aWYgKGxwLVx1MDAzZXR4X2lycSBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gbHAtXHUwMDNldHhfaXJxO1xuK1x0XHRpZiAobHAtXHUwMDNlZXRoX2lycSBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgbHAtXHUwMDNlZXRoX2lycSAhPSAtRU5YSU8pXG4rXHRcdFx0cmV0dXJuIGxwLVx1MDAzZWV0aF9pcnE7XG4gXG4gXHRcdC8qIFJlc2V0IGNvcmUgbm93IHRoYXQgY2xvY2tzIGFyZSBlbmFibGVkLCBwcmlvciB0byBhY2Nlc3NpbmcgTURJTyAqL1xuIFx0XHRyZXQgPSBfX2F4aWVuZXRfZGV2aWNlX3Jlc2V0KGxwKTtcbkBAIC0zMDUwLDcgKzMwNTYsNyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNmF4aWVuZXRfZXRodG9vbF9vcHM7XG4gXHR9XG4gXHQvKiBDaGVjayBmb3IgRXRoZXJuZXQgY29yZSBJUlEgKG9wdGlvbmFsKSAqL1xuLVx0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjPSAwKVxuK1x0aWYgKGxwLVx1MDAzZWV0aF9pcnEgXHUwMDNjIDApXG4gXHRcdGRldl9pbmZvKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkV0aGVybmV0IGNvcmUgSVJRIG5vdCBkZWZpbmVkXFxuXCIpO1xuIFxuIFx0LyogUmV0cmlldmUgdGhlIE1BQyBhZGRyZXNzICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjoxMy4xODU5NzMzNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDI2NzQ4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jYCkuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWJvdXQgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGludGVycnVwdCByZXF1ZXN0IChJUlEpIHZhbHVlcyBmb3IgdGhlIHJlY2VpdmUsIHRyYW5zbWl0LCBhbmQgZ2VuZXJhbCBFdGhlcm5ldCBpbnRlcnJ1cHRzIChgbHAtXHUwMDNlcnhfaXJxYCwgYGxwLVx1MDAzZXR4X2lycWAsIGBscC1cdTAwM2VldGhfaXJxYCkuIFNwZWNpZmljYWxseSwgaXQncyB0aWdodGVuaW5nIHVwIHRoZSBlcnJvciBjaGVja2luZy4gVGhlIG9yaWdpbmFsIGNvZGUgaW5jb3JyZWN0bHkgY29uc2lkZXJlZCB6ZXJvIGFzIGFuIGVycm9yIGZvciBJUlFzLCB3aGljaCBpc24ndCBhbHdheXMgdGhlIGNhc2UsIGJ1dCBuZWdhdGl2ZSB2YWx1ZXMgKmFyZSogZXJyb3JzLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGVuc3VyZXMgdGhhdCB0aGUgcHJvYmUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGUgSVJRIHZhbHVlIGlzIG5lZ2F0aXZlLlxuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgZmlyc3QsIGhvdyByZWxldmFudCBpcyB0aGlzIGRyaXZlciBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncywgZXNwZWNpYWxseSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gVGhpcyBpcyBhIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCB0eXBpY2FsbHkgbWVhbnMgaXQncyBmb3IgcGxhdGZvcm0gZGV2aWNlcyBmb3VuZCBpbiBYaWxpbnggRlBHQXMgb3IgU29DcyDigJMgWnlucSwgTWljcm9CbGF6ZSwgYW5kIHRoZSBsaWtlLiBUaGVzZSBkZXZpY2VzIHVzdWFsbHkgcmVseSBvbiBhIGRldmljZSB0cmVlIHRvIGJlIHByb2JlZC4gVGhlIG5leHQgbG9naWNhbCBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkP1xuXG5JIGtub3cgc3l6a2FsbGVyIGNhbiBoYW5kbGUgcGxhdGZvcm0gZGV2aWNlcywgYnV0IHRoZXJlIGFyZSBhIGZldyBjb25kaXRpb25zLiBFaXRoZXIgdGhlIGRldmljZSBoYXMgdG8gYmUgcmVnaXN0ZXJlZCB1c2luZyBhIGBzeXpfZGV2X3BsYXRmb3JtYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBvciBRRU1VIG5lZWRzIHRvIGJlIGVtdWxhdGluZyBpdC4gQW5kLCB3YWl0Li4uIHdhc24ndCB0aGVyZSBzb21lIFhpbGlueCBlbXVsYXRpb24gaW4gUUVNVT8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBgeGlsaW54X2F4aWVuZXRgIGluIHRoZXJlLiBUaGF0J3MgcHJvbWlzaW5nLlxuXG5HaXZlbiB0aGF0IHRoZXJlJ3MgUUVNVSBlbXVsYXRpb24sIHRoaXMgKmNvdWxkKiBiZSBhIGRlY2VudCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNvIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjIuMjEyNzI1MDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxODc4MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhJTElOWF9BWElfRU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlPTk9eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICs9IHhpbGlueF9lbWFjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjIuNDU0NjA4MTAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NDAxNzA0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaXMgYFhJTElOWF9BWElfRU1BQ2AuIFJpZ2h0LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBBWEktYmFzZWQgRXRoZXJuZXQgTUFDIGltcGxlbWVudGF0aW9uIGZyb20gWGlsaW54LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBwYXJ0aWN1bGFyIG1vZHVsZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8ga25vdyB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBvciwgY29udmVyc2VseSwgd2hhdCBpdCBlbmFibGVzLiBUaGVyZWZvcmUsIGxldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyB0cmFjZSBhbGwgb2YgdGhlIGVsZW1lbnRzIGl0IHB1bGxzIGluLiBJIHdhbnQgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjUuOTQ4NjI3MzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MjMwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9BWElfRU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0xOT1jb25maWcgWElMSU5YX0VNQUNMSVRFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyNjpjb25maWcgWElMSU5YX0FYSV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjctXFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MjUuOTk2MDU1MjE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1NTY3Mjk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIFhpbGlueCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBYaWxpbnggRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbSB0YXJnZXRpbmcgYXJvdW5kIGxpbmUgMjYgb2YgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoaXMgZHJpdmVyJ3MgZmVhdHVyZXMgYXJlIGV4cG9zZWQgYW5kIGNvbnRyb2xsZWQgd2l0aGluIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwga25vYnMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgYW5kIHBvdGVudGlhbCBmZWF0dXJlcyB0aGlzIGRyaXZlciBwcm92aWRlcywgc2luY2UgS2NvbmZpZyBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjoyOS45NTE3MzEyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwIEV0aGVybmV0IExpdGUgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAyMjpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSAxMC8xMDAgRXRoZXJuZXQgTGl0ZSBmcm9tIFhpbGlueC5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xcbiAgMjc6XFx0XFx0dHJpc3RhdGUgXFxcIlhpbGlueCAxMC8xMDAvMTAwMCBBWEkgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDI4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAyOTpcXHRcXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSAxMC8xMDAvMTAwMCBFdGhlcm5ldCBmcm9tIFhpbGlueCBmb3IgdGhlXFxuICAzNDpcXHRcXHQgIEFYSSBidXMgaW50ZXJmYWNlIHVzZWQgaW4gWGlsaW54IFZpcnRleCBGUEdBcyBhbmQgU29jJ3MuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBYSUxJTlhfTExfVEVNQUNcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggTEwgVEVNQUMgKExvY2FsTGluayBUcmktbW9kZSBFdGhlcm5ldCBNQUMpIGRyaXZlclxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAzOTpcXHRcXHRzZWxlY3QgUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjI5Ljk1MTgzMDEzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMDUwMzgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIGNvcmUgaXNzdWUgaGluZ2VzIG9uIHRoaXMgYFhJTElOWF9ETUFgIHZhcmlhYmxlLiBSaWdodCBhd2F5LCBteSBicmFpbiBraWNrcyBpbiBhbmQgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYSBmZWF0dXJlIGZsYWcsIGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24sIGEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBXaGF0IGRvZXMgaXQgY29udHJvbD8gVGhpcyBpcyBmdW5kYW1lbnRhbCwgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgY2hlY2tsaXN0OiBzY29wZSwgcG9zc2libGUgdmFsdWVzLCBhbmQgaW1wYWN0LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBpdHMgZGVmaW5pdGlvbiBhbmQgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NDEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjMzLjI4MjMzNzAwM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzk2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhJTElOWF9ETUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9kbWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZG1hL0tjb25maWc9Njc0PWNvbmZpZyBYR0VORV9ETUFcXG4tLVxcbmRyaXZlcnMvZG1hL0tjb25maWctNjgyLVxcbmRyaXZlcnMvZG1hL0tjb25maWc6NjgzOmNvbmZpZyBYSUxJTlhfRE1BXFxuZHJpdmVycy9kbWEvS2NvbmZpZy02ODQtXFx0dHJpc3RhdGUgXFxcIlhpbGlueCBBWEkgRE1BUyBFbmdpbmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIyOjMzLjMzMTM4MTcwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2MDM3NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRE1BIENvbmZpZ3VyYXRpb24gRmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIERNQSBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBkcml2ZXJzL2RtYS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gd2hhdCdzIGdvaW5nIG9uIGFyb3VuZCBsaW5lIDY4My4gSG9wZWZ1bGx5LCB0aGF0IGxvY2F0aW9uIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgaW50byB0aGUgcmVsZXZhbnQgc2VjdGlvbi4gSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBmb3IgYSBwYXJ0aWN1bGFyIERNQSBjb250cm9sbGVyIG9yIGZlYXR1cmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcyB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGVuIEkgY2FuIHJlZmluZSBteSBzZWFyY2ggZnJvbSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgY2x1ZXMgdGhpcyBwcm92aWRlcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzEwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6MzYuODI3NDIyNDQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RtYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY3NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY3NTpcXHRcXHR0cmlzdGF0ZSBcXFwiQVBNIFgtR2VuZSBETUEgc3VwcG9ydFxcXCJcXG4gNjc2OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9YR0VORSB8fCBDT01QSUxFX1RFU1RcXG4gNjc3OlxcdFxcdHNlbGVjdCBETUFfRU5HSU5FXFxuIDY3ODpcXHRcXHRzZWxlY3QgRE1BX0VOR0lORV9SQUlEXFxuIDY3OTpcXHRcXHRzZWxlY3QgQVNZTkNfVFhfRU5BQkxFX0NIQU5ORUxfU1dJVENIXFxuIDY4MDpcXHRcXHRoZWxwXFxuIDY4MTpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgQVBNIFgtR2VuZSBTb0MgRE1BIGVuZ2luZS5cXG4gNjgyOlxcdFxcbiA2ODM6XFx0Y29uZmlnIFhJTElOWF9ETUFcXG4gNjg0OlxcdFxcdHRyaXN0YXRlIFxcXCJYaWxpbnggQVhJIERNQVMgRW5naW5lXFxcIlxcbiA2ODU6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gNjg2OlxcdFxcdHNlbGVjdCBETUFfRU5HSU5FXFxuIDY4NzpcXHRcXHRoZWxwXFxuIDY4ODpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBYaWxpbnggQVhJIFZETUEgU29mdCBJUC5cXG4gNjg5OlxcdFxcbiA2OTA6XFx0XFx0ICBBWEkgVkRNQSBlbmdpbmUgcHJvdmlkZXMgaGlnaC1iYW5kd2lkdGggZGlyZWN0IG1lbW9yeSBhY2Nlc3NcXG4gNjkxOlxcdFxcdCAgYmV0d2VlbiBtZW1vcnkgYW5kIEFYSTQtU3RyZWFtIHZpZGVvIHR5cGUgdGFyZ2V0XFxuIDY5MjpcXHRcXHQgIHBlcmlwaGVyYWxzIGluY2x1ZGluZyBwZXJpcGhlcmFscyB3aGljaCBzdXBwb3J0IEFYSTQtXFxuIDY5MzpcXHRcXHQgIFN0cmVhbSBWaWRlbyBQcm90b2NvbC4gIEl0IGhhcyB0d28gc3RyZWFtIGludGVyZmFjZXMvXFxuIDY5NDpcXHRcXHQgIGNoYW5uZWxzLCBNZW1vcnkgTWFwcGVkIHRvIFN0cmVhbSAoTU0yUykgYW5kIFN0cmVhbSB0b1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjozNi44Mjc1NDEzNzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4NjMyMjU4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogY2FuIHRoaXMgZXZlbiAqYmUqIGZ1enplZD8gSSBzZWUgYFhJTElOWF9ETUFgIGFuZCBgWElMSU5YX0FYSV9FTUFDYCBhcmUgZW5hYmxlZCwgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIGBheGllbmV0X3Byb2JlYC4gSXMgdGhpcyBkcml2ZXIgZXZlbiByZWFjaGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50PyBHb29kIHF1ZXN0aW9uLiBJICp0aGluayogUUVNVSBoYXMgYHhpbGlueF9heGllbmV0YCBlbXVsYXRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5Ob3csIEknbSBhbHNvIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gQ291bGQgaXQgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlIHRvIHRyaWdnZXIgYGF4aWVuZXRfcHJvYmVgPyBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMsIHN5emthbGxlciAqY2FuKiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIG9yIHNpbWlsYXIgZnVuY3Rpb25zLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGdlbmVyaWMgYHN5el9kZXZfcGxhdGZvcm1gIHRoYXQgY2FuIGluamVjdCAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggKmFyYml0cmFyeSogcmVzb3VyY2VzLiBJdCBvbmx5IHdvcmtzIGlmIGl0J3MgZXhwbGljaXRseSBzdXBwb3J0ZWQsIG9yIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMuIEJ1dCwgc3l6a2FsbGVyIGRvZXMgaGF2ZSBzb21lIHBsYXRmb3JtIGRldmljZSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBpbiBteSB0aGlua2luZy5cblxuV2FpdCwgYmFjayB1cC4gVGhlIGluc3RydWN0aW9ucyBhcmUgdGVsbGluZyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGNvZGUgdGhhdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0IGluY2x1ZGVzIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgVVNCIGdhZGdldHMsIGFuZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGEgWGlsaW54IEZQR0EgSVAgY29yZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuICpwb3NzaWJsZSogdG8gcHJvYmUgdGhpcyBpbiBRRU1VLlxuXG5RRU1VICpkb2VzKiBzdXBwb3J0IFhpbGlueCBaeW5xIGFuZCBNaWNyb0JsYXplIG1hY2hpbmVzLCB3aGljaCB1c2UgdGhpcyBkZXZpY2UuIEhvd2V2ZXIsIHN5emthbGxlciB0eXBpY2FsbHkgcnVucyBvbiB4ODZfNjQgb3IgYXJtNjQgZ2VuZXJpYyB2aXJ0IG1hY2hpbmVzLiBTbywgaWYgdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQgb24geDg2XzY0LCBjYW4gaXQgYWN0dWFsbHkgKmJlKiBwcm9iZWQ/IE9ubHkgaWYgYSBkZXZpY2UgdHJlZSBvdmVybGF5IGlzIGxvYWRlZCwgb3IgaWYgYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcmVnaXN0ZXJlZC4gSSBoYXZlIHRvIGZhY3RvciB0aGF0IGluLlxuXG5IbW0sIHdhaXQuIERvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYSBwc2V1ZG8tc3lzY2FsbCBgc3l6X2luaXRfbmV0X2RldmljZWA/IE5vLCB0aGF0J3MgbmV0bGluay4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgSSdtIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJpbGl0aWVzLiBEb2VzIHN5emthbGxlciBzcGVjaWZpY2FsbHkgZnV6eiBYaWxpbnggQVhJIEV0aGVybmV0PyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBUaGF0IHdpbGwgYmUgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjM4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjI6NDcuNjkwNzcxODk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ0MDc4NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF4aWVuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTcyNyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuTUFJTlRBSU5FUlM9Mjk2NDI9RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3hsbngsYXhpLWV0aGVybmV0LnlhbWxcXG5NQUlOVEFJTkVSUzoyOTY0MzpGOlxcdGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldCpcXG5NQUlOVEFJTkVSUy0yOTY0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19YSUxJTlhfRU1BQ0xJVEUpICs9IHhpbGlueF9lbWFjbGl0ZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlOjk6eGlsaW54X2VtYWMtb2JqcyA6PSB4aWxpbnhfYXhpZW5ldF9tYWluLm8geGlsaW54X2F4aWVuZXRfbWRpby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19YSUxJTlhfQVhJX0VNQUMpICs9IHhpbGlueF9lbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oPTQ2Mj1zdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3Ige1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjQ3MTogKiBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAtIGF4aWVuZXQgcHJpdmF0ZSBwZXIgZGV2aWNlIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00NzItICogQG5kZXY6XFx0UG9pbnRlciBmb3IgbmV0X2RldmljZSB0byB3aGljaCBpdCB3aWxsIGJlIGF0dGFjaGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNDgyLSAqIEBtaWlfY2xrX2RpdjogTUlJIGJ1cyBjbG9jayBkaXZpZGVyIHZhbHVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDgzOiAqIEByZWdzX3N0YXJ0OiBSZXNvdXJjZSBzdGFydCBmb3IgYXhpZW5ldCBkZXZpY2UgYWRkcmVzc2VzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NDg0OiAqIEByZWdzOlxcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWVuZXRfbG9jYWwgZGV2aWNlIGFkZHJlc3Mgc3BhY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC00ODUtICogQGRtYV9yZWdzOlxcdEJhc2UgYWRkcmVzcyBmb3IgdGhlIGF4aWRtYSBkZXZpY2UgYWRkcmVzcyBzcGFjZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTMyLSAqIEBvcHRpb25zOlxcdEF4aUV0aGVybmV0IG9wdGlvbiB3b3JkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NTMzOiAqIEBmZWF0dXJlczpcXHRTdG9yZXMgdGhlIGV4dGVuZGVkIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYXhpZW5ldCBod1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTUzNC0gKiBAbWF4X2ZybV9zaXplOiBTdG9yZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZnJhbWUgdGhhdCBjYW4gYmUgdGhhdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTQ4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjU0OTpzdHJ1Y3QgYXhpZW5ldF9sb2NhbCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNTUwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjYzMjogKiBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gLSBVc2VkIHRvIHNldCBheGkgZXRoZXJuZXQgaGFyZHdhcmUgb3B0aW9uc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTYzMy0gKiBAb3B0OlxcdE9wdGlvbiB0byBiZSBzZXQuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02MzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjM3OnN0cnVjdCBheGllbmV0X29wdGlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjM4LVxcdHUzMiBvcHQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjQ0OiAqIGF4aWVuZXRfaW9yIC0gTWVtb3J5IG1hcHBlZCBBeGkgRXRoZXJuZXQgcmVnaXN0ZXIgcmVhZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY0NTogKiBAbHA6ICAgICAgICAgUG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY0Ni0gKiBAb2Zmc2V0OiAgICAgQWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIEF4aSBFdGhlcm5ldCBjb3JlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfaW9yKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU3OnN0YXRpYyBpbmxpbmUgdTMyIGF4aW5ldF9pb3JfcmVhZF9tY3Ioc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjU5OlxcdHJldHVybiBheGllbmV0X2lvcihscCwgWEFFX01ESU9fTUNSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjYwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NjYyOnN0YXRpYyBpbmxpbmUgdm9pZCBheGllbmV0X2xvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY2ODpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF91bmxvY2tfbWlpKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjc0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY3NTogKiBheGllbmV0X2lvdyAtIE1lbW9yeSBtYXBwZWQgQXhpIEV0aGVybmV0IHJlZ2lzdGVyIHdyaXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6Njc2OiAqIEBscDogICAgICAgICBQb2ludGVyIHRvIGF4aWVuZXQgbG9jYWwgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjc3LSAqIEBvZmZzZXQ6ICAgICBBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgQXhpIEV0aGVybmV0IGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2ODM6c3RhdGljIGlubGluZSB2b2lkIGF4aWVuZXRfaW93KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgb2ZmX3Qgb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTY4NC1cXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjg5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5MDogKiBheGllbmV0X2RtYV9vdXQzMiAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo2OTE6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC02OTItICogQHJlZzpcXHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjY5OTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0MzIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcwMC1cXHRcXHRcXHRcXHQgICAgIG9mZl90IHJlZywgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcwNzogKiBheGllbmV0X2RtYV9vdXQ2NCAtIE1lbW9yeSBtYXBwZWQgQXhpIERNQSByZWdpc3RlciB3cml0ZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaDo3MDg6ICogQGxwOlxcdFxcdFBvaW50ZXIgdG8gYXhpZW5ldCBsb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MDktICogQHJlZzpcXHRBZGRyZXNzIG9mZnNldCBmcm9tIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIEF4aSBETUEgY29yZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzE0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcxNTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0NjQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcxNi1cXHRcXHRcXHRcXHQgICAgIG9mZl90IHJlZywgdTY0IHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyMTpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzIyLVxcdFxcdFxcdFxcdFxcdGRtYV9hZGRyX3QgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oLTcyNC1cXHRpZiAobHAtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgWEFFX0ZFQVRVUkVfRE1BXzY0QklUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNTpcXHRcXHRheGllbmV0X2RtYV9vdXQ2NChscCwgcmVnLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjYtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjcyNzpcXHRcXHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczMjpzdGF0aWMgaW5saW5lIHZvaWQgYXhpZW5ldF9kbWFfb3V0X2FkZHIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzMzLVxcdFxcdFxcdFxcdFxcdGRtYV9hZGRyX3QgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjczNTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgcmVnLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXQuaC03MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MDovKiBGdW5jdGlvbiBwcm90b3R5cGVzIHZpc2libGUgaW4geGlsaW54X2F4aWVuZXRfbWRpby5jIGZvciBvdGhlciBmaWxlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oOjc0MTppbnQgYXhpZW5ldF9tZGlvX3NldHVwKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0Lmg6NzQyOnZvaWQgYXhpZW5ldF9tZGlvX3RlYXJkb3duKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmgtNzQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3OiNpbmNsdWRlIFxcXCJ4aWxpbnhfYXhpZW5ldC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5LS8qIE11c3QgYmUgc2hvcnRlciB0aGFuIGxlbmd0aCBvZiBldGh0b29sX2RydmluZm8uZHJpdmVyIGZpZWxkIHRvIGZpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjA6I2RlZmluZSBEUklWRVJfTkFNRVxcdFxcdFxcXCJ4YXhpZW5ldFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxLSNkZWZpbmUgRFJJVkVSX0RFU0NSSVBUSU9OXFx0XFxcIlhpbGlueCBBeGkgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY2OnN0YXRpYyB2b2lkIGF4aWVuZXRfcnhfc3VibWl0X2Rlc2Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OC0vKiBNYXRjaCB0YWJsZSBmb3Igb2ZfcGxhdGZvcm0gYmluZGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXhpZW5ldF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzAtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ4bG54LGF4aS1ldGhlcm5ldC0xLjAwLmFcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF4aWVuZXRfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03OC0vKiBPcHRpb24gdGFibGUgZm9yIHNldHRpbmcgdXAgQXhpIEV0aGVybmV0IGhhcmR3YXJlIG9wdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc5OnN0YXRpYyBzdHJ1Y3QgYXhpZW5ldF9vcHRpb24gYXhpZW5ldF9vcHRpb25zW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04MC1cXHQvKiBUdXJuIG9uIGp1bWJvIHBhY2tldCBzdXBwb3J0IGZvciBib3RoIFJ4IGFuZCBUeCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxMzM6c3RhdGljIHN0cnVjdCBza2J1Zl9kbWFfZGVzY3JpcHRvciAqYXhpZW5ldF9nZXRfcnhfZGVzYyhzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTM4OnN0YXRpYyBzdHJ1Y3Qgc2tidWZfZG1hX2Rlc2NyaXB0b3IgKmF4aWVuZXRfZ2V0X3R4X2Rlc2Moc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE0My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NDogKiBheGllbmV0X2RtYV9pbjMyIC0gTWVtb3J5IG1hcHBlZCBBeGkgRE1BIHJlZ2lzdGVyIHJlYWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE0NTogKiBAbHA6XFx0XFx0UG9pbnRlciB0byBheGllbmV0IGxvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTQ2LSAqIEByZWc6XFx0QWRkcmVzcyBvZmZzZXQgZnJvbSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBeGkgRE1BIGNvcmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTUxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTUyOnN0YXRpYyBpbmxpbmUgdTMyIGF4aWVuZXRfZG1hX2luMzIoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCBvZmZfdCByZWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNTc6c3RhdGljIHZvaWQgZGVzY19zZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZG1hX2FkZHJfdCBhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTU4LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXhpZG1hX2JkICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxNjU6c3RhdGljIGRtYV9hZGRyX3QgZGVzY19nZXRfcGh5c19hZGRyKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE2Ni1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBheGlkbWFfYmQgKmRlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE3Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjE3NzogKiBheGllbmV0X2RtYV9iZF9yZWxlYXNlIC0gUmVsZWFzZSBidWZmZXIgZGVzY3JpcHRvciByaW5nc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTc4LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4MC0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgZGVzY3JpcHRvcnMgYWxsb2NhdGVkIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoxODE6ICogYXhpZW5ldF9kbWFfYmRfaW5pdC4gYXhpZW5ldF9kbWFfYmRfcmVsZWFzZSBpcyBjYWxsZWQgd2hlbiBBeGkgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTE4Mi0gKiBkcml2ZXIgc3RvcCBhcGkgaXMgY2FsbGVkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTgzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg0OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX2JkX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0xODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg2LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MTg3OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyMjY6c3RhdGljIHU2NCBheGllbmV0X2RtYV9yYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIyNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTIzMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjIzNDogKiBheGllbmV0X2NhbGNfY3IoKSAtIENhbGN1bGF0ZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yMzUtICogQGxwOiBEZXZpY2UgcHJpdmF0ZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI0My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI0NDpzdGF0aWMgdTMyIGF4aWVuZXRfY2FsY19jcihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBjb3VudCwgdTMyIHVzZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNTMtXFx0aWYgKGNvdW50IFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjU0OlxcdFxcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjU1LVxcdFxcdHUzMiB0aW1lcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjY5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MjcwOiAqIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKCkgLSBFeHRyYWN0IGNvYWxlc2NlIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI3MS0gKiBAbHA6IERldmljZSBwcml2YXRlIGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc2OnN0YXRpYyB2b2lkIGF4aWVuZXRfY29hbGVzY2VfcGFyYW1zKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgdTMyIGNyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjc3LVxcdFxcdFxcdFxcdCAgICB1MzIgKmNvdW50LCB1MzIgKnVzZWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yNzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjc5OlxcdHU2NCBjbGtfcmF0ZSA9IGF4aWVuZXRfZG1hX3JhdGUobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjgwLVxcdHU2NCB0aW1lciA9IEZJRUxEX0dFVChYQVhJRE1BX0RFTEFZX01BU0ssIGNyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMjg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mjg3OiAqIGF4aWVuZXRfZG1hX3N0YXJ0IC0gU2V0IHVwIERNQSByZWdpc3RlcnMgYW5kIHN0YXJ0IERNQSBvcGVyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI4ODogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI4OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjI5MDpzdGF0aWMgdm9pZCBheGllbmV0X2RtYV9zdGFydChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0yOTUtXFx0bHAtXFx1MDAzZXJ4X2RtYV9jciBcXHUwMDI2PSB+WEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzoyOTY6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cXHUwMDNlcnhfZG1hX2NyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTI5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzAxOlxcdGF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1BX1JYX0NERVNDX09GRlNFVCwgbHAtXFx1MDAzZXJ4X2JkX3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzAyLVxcdGxwLVxcdTAwM2VyeF9kbWFfY3IgfD0gWEFYSURNQV9DUl9SVU5TVE9QX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMDM6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC1cXHUwMDNlcnhfZG1hX2NyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMwNDpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9SWF9UREVTQ19PRkZTRVQsIGxwLVxcdTAwM2VyeF9iZF9wICtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMwNS1cXHRcXHRcXHQgICAgIChzaXplb2YoKmxwLVxcdTAwM2VyeF9iZF92KSAqIChscC1cXHUwMDNlcnhfYmRfbnVtIC0gMSkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyLVxcdGxwLVxcdTAwM2V0eF9kbWFfY3IgXFx1MDAyNj0gflhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEzOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXR4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxOTpcXHRheGllbmV0X2RtYV9vdXRfYWRkcihscCwgWEFYSURNQV9UWF9DREVTQ19PRkZTRVQsIGxwLVxcdTAwM2V0eF9iZF9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMC1cXHRscC1cXHUwMDNldHhfZG1hX2NyIHw9IFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIxOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtXFx1MDAzZXR4X2RtYV9jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjItXFx0bHAtXFx1MDAzZXR4X2RtYV9zdGFydGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzI4OiAqIGF4aWVuZXRfZG1hX2JkX2luaXQgLSBTZXR1cCBidWZmZXIgZGVzY3JpcHRvciByaW5ncyBmb3IgQXhpIERNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzI5LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMzNi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMzNzpzdGF0aWMgaW50IGF4aWVuZXRfZG1hX2JkX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zNDAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjM0MTpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Mzk2OlxcdGF4aWVuZXRfZG1hX3N0YXJ0KGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTM5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzk5LW91dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQwMDpcXHRheGllbmV0X2RtYV9iZF9yZWxlYXNlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDAxLVxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MDQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MDU6ICogYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MgLSBXcml0ZSB0aGUgTUFDIGFkZHJlc3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQwNi0gKiBAbmRldjpcXHRQb2ludGVyIHRvIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0MTI6c3RhdGljIHZvaWQgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTMtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHZvaWQgKmFkZHJlc3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDE1OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00MjItXFx0LyogU2V0IHVwIHVuaWNhc3QgTUFDIGFkZHJlc3MgZmlsdGVyIHNldCBpdHMgbWFjIGFkZHJlc3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyMzpcXHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzBfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI0LVxcdFxcdCAgICAobmRldi1cXHUwMDNlZGV2X2FkZHJbMF0pIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDI3LVxcdFxcdCAgICAobmRldi1cXHUwMDNlZGV2X2FkZHJbM10gXFx1MDAzY1xcdTAwM2MgMjQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQyODpcXHRheGllbmV0X2lvdyhscCwgWEFFX1VBVzFfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDI5OlxcdFxcdCAgICAoKChheGllbmV0X2lvcihscCwgWEFFX1VBVzFfT0ZGU0VUKSkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDMwLVxcdFxcdCAgICAgIH5YQUVfVUFXMV9VTklDQVNUQUREUl9NQVNLKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0Mi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUgQXhpIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0NDM6ICogY29yZS4gSXQgY2FsbHMgdGhlIGNvcmUgc3BlY2lmaWMgYXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MuIFRoaXMgaXMgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NDQtICogZnVuY3Rpb24gdGhhdCBnb2VzIGludG8gbmV0X2RldmljZV9vcHMgc3RydWN0dXJlIGVudHJ5IG5kb19zZXRfbWFjX2FkZHJlc3MuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG5ldGRldl9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ1MDpcXHRheGllbmV0X3NldF9tYWNfYWRkcmVzcyhuZGV2LCBhZGRyLVxcdTAwM2VzYV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ1MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDU1OiAqIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0IC0gUHJlcGFyZSB0aGUgbXVsdGljYXN0IHRhYmxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NTYtICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY1OnN0YXRpYyB2b2lkIGF4aWVuZXRfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDY4LVxcdHUzMiByZWcsIGFmMHJlZywgYWYxcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDY5OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDcxOlxcdHJlZyA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfRk1JX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzItXFx0cmVnIFxcdTAwMjY9IH5YQUVfRk1JX1BNX01BU0s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ3Ni1cXHRcXHRyZWcgXFx1MDAyNj0gflhBRV9GTUlfUE1fTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ3NzpcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00NzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTQ4MS1cXHRcXHRyZWcgXFx1MDAyNj0gMHhGRkZGRkYwMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4MjpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODM6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCAxKTsgLyogTXVsdGljYXN0IGJpdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg0OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo0ODU6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BTTBfT0ZGU0VULCAxKTsgLyogZGl0dG8gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjQ4NjpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMV9PRkZTRVQsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NDg3OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfRkZFX09GRlNFVCwgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy00ODgtXFx0XFx0aSA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUwNzpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MDg6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9BRjBfT0ZGU0VULCBhZjByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTA5OlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQUYxX09GRlNFVCwgYWYxcmVnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUxMDpcXHRcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0FNMF9PRkZTRVQsIDB4ZmZmZmZmZmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTExOlxcdFxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfQU0xX09GRlNFVCwgMHgwMDAwZmZmZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MTI6XFx0XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxMy1cXHRcXHRcXHRpKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUxOS1cXHRcXHRyZWcgfD0gaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyMDpcXHRcXHRheGllbmV0X2lvdyhscCwgWEFFX0ZNSV9PRkZTRVQsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MjE6XFx0XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GRkVfT0ZGU0VULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUyNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUyNjogKiBheGllbmV0X3NldG9wdGlvbnMgLSBTZXQgYW4gQXhpIEV0aGVybmV0IG9wdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTI3LSAqIEBuZGV2OlxcdFBvaW50ZXIgdG8gdGhlIG5ldF9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzMy0gKiB0aGVzZSBvcHRpb25zIGluIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuIFRoaXMgaXMgZG9uZSB0aHJvdWdoXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1MzQ6ICogYXhpZW5ldF9vcHRpb24gc3RydWN0dXJlIC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjUzNjpzdGF0aWMgdm9pZCBheGllbmV0X3NldG9wdGlvbnMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBvcHRpb25zKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTM3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTUzOC1cXHRpbnQgcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTM5OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTQwOlxcdHN0cnVjdCBheGllbmV0X29wdGlvbiAqdHAgPSBcXHUwMDI2YXhpZW5ldF9vcHRpb25zWzBdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQyLVxcdHdoaWxlICh0cC1cXHUwMDNlb3B0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDM6XFx0XFx0cmVnID0gKChheGllbmV0X2lvcihscCwgdHAtXFx1MDAzZXJlZykpIFxcdTAwMjYgfih0cC1cXHUwMDNlbV9vcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTQ0LVxcdFxcdGlmIChvcHRpb25zIFxcdTAwMjYgdHAtXFx1MDAzZW9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU0NS1cXHRcXHRcXHRyZWcgfD0gdHAtXFx1MDAzZW1fb3I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NDY6XFx0XFx0YXhpZW5ldF9pb3cobHAsIHRwLVxcdTAwM2VyZWcsIHJlZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NDctXFx0XFx0dHArKztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTUzOnN0YXRpYyB1NjQgYXhpZW5ldF9zdGF0KHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgZW51bSB0ZW1hY19zdGF0IHN0YXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NjA6XFx0Y291bnRlciA9IGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICsgc3RhdCAqIDgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYxLVxcdHJldHVybiBscC1cXHUwMDNlaHdfc3RhdF9iYXNlW3N0YXRdICsgKGNvdW50ZXIgLSBscC1cXHUwMDNlaHdfbGFzdF9jb3VudGVyW3N0YXRdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTY0OnN0YXRpYyB2b2lkIGF4aWVuZXRfc3RhdHNfdXBkYXRlKHN0cnVjdCBheGllbmV0X2xvY2FsICpscCwgYm9vbCByZXNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3MC1cXHRmb3IgKHN0YXQgPSAwOyBzdGF0IFxcdTAwM2MgU1RBVF9DT1VOVDsgc3RhdCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo1NzE6XFx0XFx0dTMyIGNvdW50ZXIgPSBheGllbmV0X2lvcihscCwgWEFFX1NUQVRTX09GRlNFVCArIHN0YXQgKiA4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTc5OnN0YXRpYyB2b2lkIGF4aWVuZXRfcmVmcmVzaF9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTgxOlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU4Mi1cXHRcXHRcXHRcXHRcXHRcXHRzdGF0c193b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bHAtXFx1MDAzZXN0YXRzX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NTg1OlxcdGF4aWVuZXRfc3RhdHNfdXBkYXRlKGxwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy01ODYtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZscC1cXHUwMDNlc3RhdHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjU5MjpzdGF0aWMgaW50IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNTk5LVxcdGlmIChscC1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBYQUVfRkVBVFVSRV9TVEFUUylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwMDpcXHRcXHRheGllbmV0X3N0YXRzX3VwZGF0ZShscCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYwOC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjYwOTpcXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIFhBWElETUFfQ1JfUkVTRVRfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MTA6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9kbWFfaW4zMiwgdmFsdWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MTEtXFx0XFx0XFx0XFx0ISh2YWx1ZSBcXHUwMDI2IFhBWElETUFfQ1JfUkVTRVRfTUFTSyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTYxOS1cXHQvKiBXYWl0IGZvciBQaHlSc3RDbXBsdCBiaXQgdG8gYmUgc2V0LCBpbmRpY2F0aW5nIHRoZSBQSFkgcmVzZXQgaGFzIGZpbmlzaGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2MjA6XFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoYXhpZW5ldF9pb3IsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjIxLVxcdFxcdFxcdFxcdHZhbHVlIFxcdTAwMjYgWEFFX0lOVF9QSFlSU1RDTVBMVF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02MzYtXFx0XFx0XFx0dTMyIGNvdW50ZXIgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjM3OlxcdFxcdFxcdFxcdGF4aWVuZXRfaW9yKGxwLCBYQUVfU1RBVFNfT0ZGU0VUICsgc3RhdCAqIDgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NTEtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NTI6ICogYXhpZW5ldF9kbWFfc3RvcCAtIFN0b3AgRE1BIG9wZXJhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjUzOiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjU1OnN0YXRpYyB2b2lkIGF4aWVuZXRfZG1hX3N0b3Aoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjYyLVxcdGNyID0gbHAtXFx1MDAzZXJ4X2RtYV9jciBcXHUwMDI2IH4oWEFYSURNQV9DUl9SVU5TVE9QX01BU0sgfCBYQVhJRE1BX0lSUV9BTExfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2NjM6XFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBjcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NjQtXFx0bHAtXFx1MDAzZXJ4X2RtYV9zdGFydGVkID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY3MS1cXHRjciA9IGxwLVxcdTAwM2V0eF9kbWFfY3IgXFx1MDAyNiB+KFhBWElETUFfQ1JfUlVOU1RPUF9NQVNLIHwgWEFYSURNQV9JUlFfQUxMX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NjcyOlxcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgY3IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjczLVxcdGxwLVxcdTAwM2V0eF9kbWFfc3RhcnRlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02NzgtXFx0LyogR2l2ZSBETUFzIGEgY2hhbmNlIHRvIGhhbHQgZ3JhY2VmdWxseSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njc5OlxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgwLVxcdGZvciAoY291bnQgPSAwOyAhKHNyIFxcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2MgNTsgKytjb3VudCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjgxLVxcdFxcdG1zbGVlcCgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODI6XFx0XFx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODMtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6Njg1OlxcdHNyID0gYXhpZW5ldF9kbWFfaW4zMihscCwgWEFYSURNQV9UWF9TUl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg2LVxcdGZvciAoY291bnQgPSAwOyAhKHNyIFxcdTAwMjYgWEFYSURNQV9TUl9IQUxUX01BU0spIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2MgNTsgKytjb3VudCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNjg3LVxcdFxcdG1zbGVlcCgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2ODg6XFx0XFx0c3IgPSBheGllbmV0X2RtYV9pbjMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02ODktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTEtXFx0LyogRG8gYSByZXNldCB0byBlbnN1cmUgRE1BIGlzIHJlYWxseSBzdG9wcGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTI6XFx0YXhpZW5ldF9sb2NrX21paShscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTM6XFx0X19heGllbmV0X2RldmljZV9yZXNldChscCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo2OTQ6XFx0YXhpZW5ldF91bmxvY2tfbWlpKGxwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5NS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTY5Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjY5ODogKiBheGllbmV0X2RldmljZV9yZXNldCAtIFJlc2V0IGFuZCBpbml0aWFsaXplIHRoZSBBeGkgRXRoZXJuZXQgaGFyZHdhcmUuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy02OTktICogQG5kZXY6XFx0UG9pbnRlciB0byB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzA5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEwOnN0YXRpYyBpbnQgYXhpZW5ldF9kZXZpY2VfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzEyOlxcdHUzMiBheGllbmV0X3N0YXR1cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjcxMzpcXHRzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTcxNC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03MjgtXFx0aWYgKCFscC1cXHUwMDNldXNlX2RtYWVuZ2luZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzI5OlxcdFxcdHJldCA9IF9fYXhpZW5ldF9kZXZpY2VfcmVzZXQobHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzMwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTczMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjczMzpcXHRcXHRyZXQgPSBheGllbmV0X2RtYV9iZF9pbml0KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzM0LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQxOlxcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9SQ1cxX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDI6XFx0YXhpZW5ldF9zdGF0dXMgXFx1MDAyNj0gflhBRV9SQ1cxX1JYX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDM6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9SQ1cxX09GRlNFVCwgYXhpZW5ldF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ1OlxcdGF4aWVuZXRfc3RhdHVzID0gYXhpZW5ldF9pb3IobHAsIFhBRV9JUF9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ2OlxcdGlmIChheGllbmV0X3N0YXR1cyBcXHUwMDI2IFhBRV9JTlRfUlhSSkVDVF9NQVNLKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzQ3OlxcdFxcdGF4aWVuZXRfaW93KGxwLCBYQUVfSVNfT0ZGU0VULCBYQUVfSU5UX1JYUkpFQ1RfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NDg6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9JRV9PRkZTRVQsIGxwLVxcdTAwM2VldGhfaXJxIFxcdTAwM2UgMCA/XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NDktXFx0XFx0ICAgIFhBRV9JTlRfUkVDVl9FUlJPUl9NQVNLIDogMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTE6XFx0YXhpZW5ldF9pb3cobHAsIFhBRV9GQ0NfT0ZGU0VULCBYQUVfRkNDX0ZDUlhfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03NTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc1NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc1NjpcXHRheGllbmV0X3NldG9wdGlvbnMobmRldiwgbHAtXFx1MDAzZW9wdGlvbnMgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzU3LVxcdFxcdFxcdCAgIH4oWEFFX09QVElPTl9UWEVOIHwgWEFFX09QVElPTl9SWEVOKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTg6XFx0YXhpZW5ldF9zZXRfbWFjX2FkZHJlc3MobmRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NTk6XFx0YXhpZW5ldF9zZXRfbXVsdGljYXN0X2xpc3QobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3NjA6XFx0YXhpZW5ldF9zZXRvcHRpb25zKG5kZXYsIGxwLVxcdTAwM2VvcHRpb25zKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc2MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtNzY3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6NzY4OiAqIGF4aWVuZXRfZnJlZV90eF9jaGFpbiAtIENsZWFuIHVwIGEgc2VyaWVzIG9mIGxpbmtlZCBUWCBkZXNjcmlwdG9ycy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjc2OTogKiBAbHA6XFx0XFx0UG9pbnRlciB0byB0aGUgYXhpZW5ldF9sb2NhbCBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTc3MC0gKiBAZmlyc3RfYmQ6XFx0SW5kZXggb2YgZmlyc3QgZGVzY3JpcHRvciB0byBjbGVhbiB1cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo3ODI6c3RhdGljIGludCBheGllbmV0X2ZyZWVfdHhfY2hhaW4oc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLCB1MzIgZmlyc3RfYmQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy03ODMtXFx0XFx0XFx0XFx0IGludCBucl9iZHMsIGJvb2wgZm9yY2UsIHUzMiAqc2l6ZXAsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTgzNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjgzNTogKiBheGllbmV0X2NoZWNrX3R4X2JkX3NwYWNlIC0gQ2hlY2tzIGlmIGEgQkQvZ3JvdXAgb2YgQkRzIGFyZSBjdXJyZW50bHkgYnVzeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODM2OiAqIEBscDpcXHRcXHRQb2ludGVyIHRvIHRoZSBheGllbmV0X2xvY2FsIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODM3LSAqIEBudW1fZnJhZzpcXHRUaGUgbnVtYmVyIG9mIEJEcyB0byBjaGVjayBmb3JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6ODQ3OnN0YXRpYyBpbmxpbmUgaW50IGF4aWVuZXRfY2hlY2tfdHhfYmRfc3BhY2Uoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODQ4LVxcdFxcdFxcdFxcdFxcdCAgICBpbnQgbnVtX2ZyYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg2MjogKiBheGllbmV0X2RtYV90eF9jYiAtIERNQSBlbmdpbmUgY2FsbGJhY2sgZm9yIFRYIGNoYW5uZWwuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NjM6ICogQGRhdGE6ICAgICAgIFBvaW50ZXIgdG8gdGhlIGF4aWVuZXRfbG9jYWwgc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODY0LSAqIEByZXN1bHQ6ICAgICBlcnJvciByZXBvcnRpbmcgdGhyb3VnaCBkbWFlbmdpbmVfcmVzdWx0Llxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NjctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4Njg6c3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfdHhfY2Iodm9pZCAqZGF0YSwgY29uc3Qgc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgKnJlc3VsdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg2OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04NzAtXFx0c3RydWN0IHNrYnVmX2RtYV9kZXNjcmlwdG9yICpza2J1Zl9kbWE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzo4NzE6XFx0c3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3Mi1cXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICp0eHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg3NTpcXHRza2J1Zl9kbWEgPSBheGllbmV0X2dldF90eF9kZXNjKGxwLCBscC1cXHUwMDNldHhfcmluZ190YWlsKyspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtODc2LVxcdGxlbiA9IHNrYnVmX2RtYS1cXHUwMDNlc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTg4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjg5MDogKiBheGllbmV0X3N0YXJ0X3htaXRfZG1hZW5naW5lIC0gU3RhcnRzIHRoZSB0cmFuc21pc3Npb24uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy04OTEtICogQHNrYjogICAgICAgIHNrX2J1ZmYgcG9pbnRlciB0aGF0IGNvbnRhaW5zIGRhdGEgdG8gYmUgVHhlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9OTA0PXN0YXRpYyBuZXRkZXZfdHhfdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA1OmF4aWVuZXRfc3RhcnRfeG1pdF9kbWFlbmdpbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy05MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA3LVxcdHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZG1hX3R4X2Rlc2MgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6OTA4OlxcdHN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtOTA5LVxcdHUzMiBhcHBfbWV0YWRhdGFbRE1BX05VTV9BUFBfV09SRFNdID0gezB9O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMjo0OS40MzQ4NTU2NTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3Mjg3MjAxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCBgeGlsaW54X2F4aWVuZXRfbWFpbi5jYC4gVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgYGF4aWVuZXRfcHJvYmVgIGZ1bmN0aW9uLiBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIGFuZCBmdXp6IHRoaXM/IExldCdzIGJyZWFrIGl0IGRvd24uXG5cbkZpcnN0LCBJIGtub3cgdGhhdCBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAgaW4gYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYC4gU28sIGluIHRoZW9yeSwgaWYgSSBjb21waWxlIHRoZSBrZXJuZWwgd2l0aCBgQ09ORklHX1hJTElOWF9BWElfRU1BQz15YCBhbmQgYENPTkZJR19YSUxJTlhfRE1BPXlgIGFuZCBydW4gaXQgaW4gUUVNVSwgc3l6a2FsbGVyICpjb3VsZCogdHJ5LiBCdXQsIHRoZXJlJ3MgYSBjYXRjaCwgc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2V0IHVwIGZvciB4ODZfNjQgb3IgYXJtNjQuIE9uIGFybTY0LCBpdCB3aWxsIHVzZSB0aGUgYHZpcnRgIG1hY2hpbmUuIFRoZSBgdmlydGAgbWFjaGluZSBkb2Vzbid0IGhhdmUgYW4gYHhpbGlueF9heGllbmV0YCBpbnN0YW5jZSBieSBkZWZhdWx0LlxuXG5JIGtub3cgc3l6a2FsbGVyICpjYW4qIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cywgdGhlb3JldGljYWxseSBpbnN0YW50aWF0aW5nIHBsYXRmb3JtIGRldmljZXMsIGJ1dCBpdCdzIG5vdCBhIHN0YW5kYXJkLCBhdXRvbWF0aWMgcHJvY2VzcywgYW5kIEkgZG9uJ3Qga25vdyBpZiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2UgaGFzIGJlZW4gY29uZmlndXJlZC4gSSBuZWVkIHRvIGJlIHN1cmUuIEkgKnRob3VnaHQqIHRoZXJlIHdhcyBhIGBzeXpfZGV2X3BsYXRmb3JtYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIHRvIGV4aXN0LiBJdCdzIHRpbWUgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHRoZSBkcml2ZXIuIFdhaXQsIEkgcmVtZW1iZXIsIHRoYXQgZ3JlcCBvdXRwdXQgZGlkbid0IHlpZWxkIGFueXRoaW5nLlxuXG5Ib2xkIG9uLCB0aGUgcHJvbXB0IGRvZXMgc2F5IHNvbWV0aGluZyBhYm91dCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUsIGl0IG5lZWRzIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSB0byBiZSBwcm9iZWQhIElzIGl0IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzP1xuXG5RRU1VIGVtdWxhdGVzIGl0LCBidXQgaXQncyBvbmx5IGluc3RhbnRpYXRlZCBpbiB2ZXJ5IHNwZWNpZmljIG1hY2hpbmUgdHlwZXMsIGxpa2UgYHBldGFsb2dpeC1zM2Fkc3AxODAwYCBvciBgeGxueC16Y3UxMDJgIG9yIGBtaWNyb2JsYXplYC4gU3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxMzVgICh4ODZfNjQpIG9yIGB2aXJ0YCAoYXJtNjQpLiBDYW4gaXQgcmVhY2ggdGhpcz9cblxuSG1tLiBUaGUgY29tbWl0IG1lc3NhZ2UuIFwiQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVwiIGFuZCBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBUaGlzIHN1Z2dlc3RzIHN5emthbGxlciBlaXRoZXIgKmRpZCogZmluZCBhIGJ1Zywgb3IgaXMgdGVzdGluZyBhIHBhdGNoIGZvciB0aGlzIGRyaXZlci5cblxuV2FpdCwgc3l6Ym90IHRlc3RzIGFueSBwYXRjaCBmb3IgYW55IHN1YnN5c3RlbS4gSXQgZG9lc24ndCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIElmIHNvbWVvbmUgc2VuZHMgYSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcsIHN5emJvdCBhcHBsaWVzIGl0IGFuZCBidWlsZHMgaXQuIElmIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLCB0aGUgZnV6emluZyB3b24ndCBoaXQgaXQsIGJ1dCB0aGUgYnVpbGQgd2lsbCBzdWNjZWVkLiBTbywgdGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gaXQncyBiZWluZyBmdXp6ZWQuXG5cbk9rYXksIGlmIHRoZSBwYXRjaCBqdXN0IGZpeGVzIGEgcHJvYmUgZXJyb3IsIHdoaWNoIGlzIGNvbW1vbiBmb3IgdGhlc2UgcGxhdGZvcm0gZHJpdmVycyB0aGF0IHJlbHkgb24gdmVyeSBzcGVjaWZpYyBTb0NzIG9yIEZQR0FzLCBpdCdzICpoaWdobHkqIGxpa2VseSB0byBiZSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cCAoeDg2XzY0IG9yIGFybTY0IGB2aXJ0YCkuXG5cbklzIHRoZXJlIGFueSB3YXkgdG8gKnRyaWdnZXIqIHRoZSBwbGF0Zm9ybSBkcml2ZXIncyBwcm9iZSBmcm9tIHVzZXJzcGFjZT8gWWVzLCBJIGNhbiBiaW5kIGEgZHJpdmVyIHRvIGEgZGV2aWNlIGJ5IHdyaXRpbmcgdG8gYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvLi4uL2JpbmRgLiBCdXQgSSBzdGlsbCBuZWVkIHRoZSBkZXZpY2UuXG5cblNpbmNlIHRoaXMgaXMgYSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgaXQncyBtYXRjaGluZyBhIERldmljZSBUcmVlIG1hdGNoLCBzcGVjaWZpY2FsbHk6IFwieGxueCxheGktZXRoZXJuZXQtMS4wMC5hXCIsIFwieGxueCxheGktZXRoZXJuZXQtMS4wMS5hXCIsIFwieGxueCxheGktZXRoZXJuZXQtMi4wMS5hXCIuIFRoZXJlJ3Mgbm8gQUNQSSBtYXRjaC4gQW5kIGluIGEgc3RhbmRhcmQgeDg2XzY0IG9yIGFybTY0IGB2aXJ0YCBtYWNoaW5lLCB0aGVyZSdzIG5vIHN1Y2ggZGV2aWNlIGluIHRoZSBEVCEgQ2FuIEkgY3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggdGhhdCBjb21wYXRpYmxlIHN0cmluZyBmcm9tIHVzZXJzcGFjZT8gV2VsbCwgeWVzLCBidXQgaXQnZCBiZSB0aHJvdWdoIHRoZSBgb2Zfb3ZlcmxheWAgY29uZmlnZnMgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHN5emthbGxlciB1c3VhbGx5IGRvZXNuJ3QgdXNlIHRoYXQsIG9yIGl0J3MgZGlzYWJsZWQuXG5cbldhaXQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X2luaXRfbmV0X2RldmljZWAsIGJ1dCB0aGF0J3MgZm9yIGNyZWF0aW5nIHNvbWUgdHlwZXMgb2YgbmV0d29yayBkZXZpY2VzLCBub3QgcGxhdGZvcm0gZGV2aWNlcy4gQW5kIG5vLCB0aGVyZSBpcyBubyBgc3l6X2Rldl9wbGF0Zm9ybWAuLi4gU28gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIGlmIGFueSBwbGF0Zm9ybSBkZXZpY2VzIGFyZSBkZXNjcmliZWQgZm9yIGl0IGluIHN5emthbGxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjA2LjE2MzU3ODMwNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzOTMyMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL2xpbnV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MDYuMjE1OTgyOTMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjIxMTA3Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBYaWxpbnggRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBwcmV0dHkgY2xlYXI6IEkgY2FuJ3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGFueXRoaW5nIHByZWZpeGVkIHdpdGggXCJzeXpcXF9cIiBoZXJlIOKAkyBsb29rcyBsaWtlIEkgbmVlZCBkaWZmZXJlbnQgdG9vbHMgZm9yIHRoYXQgKGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCkuIE5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudCwgZ290IGl0LiBJJ20gc3R1Y2sgd2l0aCBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYCBmb3Igbm93LlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIHNvbWV0aGluZydzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcGhyYXNlcyBhcmUgYXJvdW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgR0NFIG9yIFFFTVUuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBjYWxscyBvdXQgY29kZSB0aGF0IHJlbGllcyBvbiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgUUVNVSBzZXR1cHMgKGxpa2UgU21hcnROSUNzIG9yIEdQVXMpIHRoYXQgYXJlbid0IGVtdWxhdGVkIGJ5IHRoZSBzdGFuZGFyZCBzeXprYWxsZXIgY29uZmlndXJhdGlvbnMuXG5cbkknbSBsb29raW5nIGF0IHRoZSBgeGlsaW54X2F4aWVuZXRgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgZHJpdmVyIGZvciBhIFhpbGlueCBGUEdBIElQIGNvcmUuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBmbGFncyBnb2luZyB1cDsgdGhpcyBzY3JlYW1zIGhhcmR3YXJlIGRlcGVuZGVuY2UuIFRoZSB0ZXh0IGluZGljYXRlcyB0aGF0IFFFTVUgKmNhbiogZW11bGF0ZSBpdC4gSG93ZXZlciwgdGhlIGNhdGNoIGlzIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIHVzZXMgZWl0aGVyIGBxZW11LXN5c3RlbS14ODZfNjQgLW1hY2hpbmUgcTM1YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NCAtbWFjaGluZSB2aXJ0YCwgYW5kIG5laXRoZXIgb2YgdGhlc2UgbWFjaGluZXMgaW5jbHVkZXMgdGhlIGB4aWxpbnhfYXhpZW5ldGAgZGV2aWNlIGJ5IGRlZmF1bHQuXG5cblRoZXJlZm9yZSwgdGhlIHByb2JlIGZ1bmN0aW9uLCBgYXhpZW5ldF9wcm9iZWAsIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIHdpdGhpbiBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXBzLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQgc3l6a2FsbGVyIHVzZXMuIFNvLCBnaXZlbiB0aGF0LCBpdCBzZWVtcyBoaWdobHkgdW5saWtlbHkgaXQncyB3b3J0aCBmdXp6aW5nIHVuZGVyIHRoZSBjdXJyZW50IGNpcmN1bXN0YW5jZXMuXG5cbkFzIGEgZmluYWwgY2hlY2ssIEkgd2lsbCBkb3VibGUgY2hlY2sgYW55IFBDSSBvciBVU0IgYmluZGluZyBpdCBtYXkgdXNlLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjE3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjE3LjQzNzA5MzM4MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3NTAyNDEwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjE3Ljc0NDYwNzU3MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDgzODg3MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKk5vIFBDSSBEcml2ZXIg4oCTIEluaXRpYWwgQXNzZXNzbWVudCBhbmQgSW1wbGljYXRpb25zKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgZGlhZ25vc2lzIGlzIHByZXR0eSBjbGVhcjogd2UncmUgZGVhbGluZyB3aXRoIGEgc3lzdGVtIHRoYXQgaXNuJ3QgcmVjb2duaXppbmcgYSBQQ0kgZGV2aWNlIGRyaXZlci4gVGhhdCdzIGEgZnVuZGFtZW50YWwgaXNzdWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLCBnaXZlbiBteSBleHBlcmllbmNlLiBcblxuKiAgICoqRmlyc3QsIHZlcmlmeSBpdCdzIGEgUENJIGRldmljZToqKiBJcyBpdCB0cnVseSBvbiB0aGUgUENJIGJ1cywgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIGRpZmZlcmVudCBpbnRlcmZhY2UgYWx0b2dldGhlcj8gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGhhcmR3YXJlIGFuZCBpdHMgYWN0dWFsIGNvbm5lY3Rpdml0eS4gU3RhbmRhcmQgUENJPyBQQ0llPyBTb21lIHZhcmlhdGlvbj8gQW5kIG1vc3QgaW1wb3J0YW50bHkgdGhlIHZlcnNpb24gb2YgUENJLWUgdGhlIGRldmljZSBjbGFpbXMgdG8gc3VwcG9ydCwgYW5kIHRoZSB2ZXJzaW9uIG9mIFBDSS1lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBzeXN0ZW0uXG4qICAgKipIYXJkd2FyZSBhbmQgQnVzIEVudW1lcmF0aW9uOioqIFRpbWUgdG8gY2hlY2sgdGhlIGJ1cyBlbnVtZXJhdGlvbi4gQXJlIHRoZXJlIGFueSBJUlEgY29uZmxpY3RzPyBJcyB0aGUgZGV2aWNlIGV2ZW4gYXBwZWFyaW5nIGluIHRoZSBkZXZpY2UgbWFuYWdlciBvciBlcXVpdmFsZW50LCB1bmRlciBhbnkgY2F0ZWdvcnkgKGV2ZW4gXCJVbmtub3duIERldmljZVwiKT8gT3IgaXMgaXQgY29tcGxldGVseSBhYnNlbnQ/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGxvdy1sZXZlbCB0b29sLCBsaWtlbHkgYSB1dGlsaXR5IGxpa2UgYGxzcGNpYCAob3IgZXF1aXZhbGVudCBmb3Igb3RoZXIgT1NzKSB0byBnZXQgYSBncmFudWxhciB2aWV3IG9mIHRoZSBQQ0kgYnVzLlxuKiAgICoqRHJpdmVyIENvbXBhdGliaWxpdHk6KiogQXNzdW1pbmcgdGhlIGhhcmR3YXJlIGlzIGRldGVjdGVkLCBpcyB0aGlzIGEga25vd24tZ29vZCBkcml2ZXI/IElzIGl0IHRoZSBjb3JyZWN0IG9uZSBmb3IgdGhlIE9TIHZlcnNpb24gYW5kIGtlcm5lbD8gSGF2ZSB0aGVyZSBiZWVuIGFueSByZWNlbnQgdXBkYXRlcyBvciBjaGFuZ2VzIHRoYXQgbWlnaHQgaGF2ZSBicm9rZW4gY29tcGF0aWJpbGl0eT8gQW55IGtub3duIFwiZ290Y2hhc1wiIHdpdGggdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS9kcml2ZXIgY29tYmluYXRpb24/IEknZCBoaXQgdXAgdGhlIG1hbnVmYWN0dXJlcidzIHdlYnNpdGUgaW1tZWRpYXRlbHkgdG8gY2hlY2suXG4qICAgKipSZXNvdXJjZSBBbGxvY2F0aW9uOioqIElmIHRoZSBkZXZpY2UgKmlzKiBiZWluZyBlbnVtZXJhdGVkLCBhcmUgdGhlcmUgYW55IHJlc291cmNlIGFsbG9jYXRpb24gcHJvYmxlbXM/IEFyZSB0aGVyZSBlcnJvcnMgcmVsYXRlZCB0byBtZW1vcnkgcmFuZ2VzLCBJL08gcG9ydHMsIG9yIGludGVycnVwdHMgaW4gdGhlIHN5c3RlbSBsb2dzIG9yIGRtZXNnPyBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSB0byBzZWUgaWYgdGhleSBhcmUgdGhlIGNhdXNlLlxuKiAgICoqUG93ZXIgYW5kIENvbm5lY3Rpdml0eToqKiBUaGlzIGZlZWxzIGJhc2ljLCBidXQgbmV2ZXIgb3Zlcmxvb2sgdGhlIG9idmlvdXM6IElzIHRoZSBkZXZpY2UgcG93ZXJlZCBjb3JyZWN0bHk/IElzIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIHNvbGlkPyBJJ3ZlIGJlZW4gY2F1Z2h0IG91dCBieSBsb29zZSBjb25uZWN0b3JzIG1vcmUgdGhhbiBvbmNlLiBTb21ldGltZXMgaXQncyB0aGUgc2ltcGxlc3QgdGhpbmcsIGJ1dCBJIHdvdWxkIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgYW55IHBvd2VyIG9yIGNvbm5lY3Rpdml0eSBpc3N1ZXMuXG4qICAgKipEcml2ZXIgSW5zdGFsbGF0aW9uOioqIFBlcmhhcHMgdGhlIGRyaXZlciBpbnN0YWxsYXRpb24gZmFpbGVkIHNpbGVudGx5LiBJIHdpbGwgY2hlY2sgZm9yIGFueSBsb2dzIGZyb20gdGhlIGluc3RhbGxlci4gRGlkIGl0IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSwgb3IgZGlkIGl0IGVuY291bnRlciBlcnJvcnM/IEknbGwgbmVlZCB0byBlbnN1cmUgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBsb2FkZWQgYW5kIGJvdW5kIHRvIHRoZSBkZXZpY2UuXG4qICAgKipLZXJuZWwgTW9kdWxlcyBhbmQgU2lnbmluZzoqKiBJZiBvbiBhIHN5c3RlbSB0aGF0IHVzZXMga2VybmVsIG1vZHVsZXMsIEknbGwgZG91YmxlLWNoZWNrIHRoZXkncmUgbG9hZGVkLCBjb3JyZWN0bHkgc2lnbmVkIChpZiBhcHBsaWNhYmxlKSwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIGNvbmZsaWN0aW5nIG1vZHVsZXMuXG4qICAgKipEZWJ1Z2dpbmc6KiogSSdsbCBiZSByZWFkeSB0byBkaXZlIGludG8gZGVidWdnaW5nIHRvb2xzIGlmIG5lZWRlZCDigJMgdHJhY2luZyBkcml2ZXIgY2FsbHMsIG1vbml0b3JpbmcgYnVzIHRyYWZmaWMsIGV4YW1pbmluZyBzeXN0ZW0gbG9ncy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgYXQgYSBsb3cgbGV2ZWwuXG4qICAgKipDb21wYXRpYmlsaXR5OioqIEkgYW0gdGhpbmtpbmcgYWJvdXQgY2hlY2tpbmcgZm9yIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGNvbXBhdGliaWxpdHksIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLiBJcyB0aGUgZGV2aWNlIGl0c2VsZiBjb21wYXRpYmxlPyBIYXMgdGhlcmUgYmVlbiBhbnkgY2hhbmdlcyB0byB0aGUgc3lzdGVtIHJlY2VudGx5PyBDb3VsZCB0aGVyZSBiZSBhIEJJT1MgaXNzdWU/XG5cblRoaXMgXCJubyBkcml2ZXJcIiBzaXR1YXRpb24gY2FuIGJlIGZydXN0cmF0aW5nLCBidXQgaXQncyBhIHByb2JsZW0gSSd2ZSBmYWNlZCBjb3VudGxlc3MgdGltZXMuIFRoZSBrZXkgaXMgbWV0aG9kaWNhbCwgc3RlcC1ieS1zdGVwIGludmVzdGlnYXRpb24sIGVsaW1pbmF0aW5nIHBvc3NpYmlsaXRpZXMsIGFuZCBkaWdnaW5nIGRlZXAgaW50byB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IgdG8gaXNvbGF0ZSB0aGUgcm9vdCBjYXVzZS4gSXQncyBhIHNvbHZhYmxlIHByb2JsZW07IEkganVzdCBuZWVkIHRvIGJlIGRpbGlnZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU3MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MjQuMjI4NDk2OTUzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgwMTc2NDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MjQuNDQ2NTIyNTQ2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU5NjgzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipVU0IgRHJpdmVyIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uLi4uIGFuZCB0aGUgaW1tZWRpYXRlIHNuYWcgaXMsIFwiTm8gVVNCIGRyaXZlci5cIiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhlIGltcGxpY2F0aW9ucy4uLiB1Z2guIEl0J3MgdGhhdCBpbml0aWFsIHJvYWRibG9jaywgdGhhdCBmdW5kYW1lbnRhbCBwaWVjZSB0aGF0J3MganVzdC4uLiBtaXNzaW5nLiBEZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSwgb3BlcmF0aW5nIHN5c3RlbSwgYW5kIGhhcmR3YXJlIGludm9sdmVkLCBpdCBjb3VsZCBiZSBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlLCBvciBpdCBjb3VsZCBiZSBzb21ldGhpbmcgbXVjaCBkZWVwZXIuIElzIGl0IGEgZ2VuZXJpYyBkcml2ZXIgdGhhdCdzIG5vdCBpbnN0YWxsZWQsIGEgY29ycnVwdGVkIGluc3RhbGxhdGlvbiwgb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgcGllY2Ugb2YgZXF1aXBtZW50P1xuXG5JJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgdGhlIHRyb3VibGVzaG9vdGluZyBzdGVwcyAtIG5lZWQgdG8gY2hlY2sgdGhlIGRldmljZSBtYW5hZ2VyIGZpcnN0LCBsb29rIGZvciBhbnkgY29uZmxpY3RzLCBhbnkgeWVsbG93IGV4Y2xhbWF0aW9uIHBvaW50cy4gRG9lcyB0aGUgc3lzdGVtIGV2ZW4gKnJlY29nbml6ZSogdGhlIGRldmljZSBhdCBhbGwsIGV2ZW4gYXMgYW4gdW5rbm93biBkZXZpY2U/IElmIGl0IGRvZXMsIGdyZWF0LCBnaXZlcyB1cyBzb21ldGhpbmcgdG8gd29yayB3aXRoLiBJZiBub3QsIHdlJ3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBoYXJkd2FyZSBwcm9ibGVtIG9yIHBvc3NpYmx5IGEgQklPUyBzZXR0aW5nIHRoYXQncyBkaXNhYmxlZCBVU0IgZnVuY3Rpb25hbGl0eS4gVGhlbiB0aGVyZSdzIHRoZSBxdWVzdGlvbiBvZiB0aGUgT1MgdmVyc2lvbiAtIGlzIGl0IGNvbXBhdGlibGUgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGRyaXZlcj8gQWx3YXlzIHRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBjaGVjay5cblxuSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHVzdWFsIHN0ZXBzLCBjaGVjayBmb3IgYW55IG1hbnVmYWN0dXJlci1zcGVjaWZpYyBkcml2ZXJzLCBtYXliZSBldmVuIHRyeSBhIGRyaXZlciByb2xsYmFjayBpZiBpdCdzIGEgcmVjZW50IGNoYW5nZSB0aGF0J3MgY2F1c2VkIHRoaXMuIFRoaXMgaXMgdXN1YWxseSB0aGUgbGVhc3QgYW5ub3lpbmcgb3V0Y29tZS4gRG93bmxvYWQgYSBmZXcgdXRpbGl0aWVzIHRvIGdldCBhcyBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYXMgcG9zc2libGUuXG5cblRoZSB3aG9sZSB0aGluZyBib2lscyBkb3duIHRvIGlkZW50aWZpY2F0aW9uLCBjb21wYXRpYmlsaXR5LCBhbmQgZXhlY3V0aW9uLiBHb3R0YSBmaWd1cmUgb3V0IHdoYXQncyB3aGF0LCBtYWtlIHN1cmUgaXQncyBzdXBwb3NlZCB0byB3b3JrIHRvZ2V0aGVyLCBhbmQgdGhlbiBtYWtlIGl0IHdvcmsuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBtaXNzaW5nLCBvciB3aGF0J3MgY29uZmxpY3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzQ5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMzoyOS4yNzI0OTQxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzOTk5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjE2PXN0YXRpYyBERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoYXhpZW5ldF9wbV9vcHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjE5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIyMC1cXHQucHJvYmUgPSBheGllbmV0X3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzMDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE0OjIzOjI5LjMyMDkwMzQ5OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODMxNjYyNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgRnV6emluZyBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIGEgcHVyZSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBYaWxpbnggSVAgY29yZS4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IG1pbmQgc2VlcyB0aGUgcmVkIGZsYWc6IHRoaXMgZHJpdmVyIGhpbmdlcyBvbiB0aGUgRGV2aWNlIFRyZWUsIHNwZWNpZmljYWxseSBuZWVkaW5nIHRoYXQgYHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYWAgbm9kZSB0byBiZSBwcmVzZW50LiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgc3RhbmRhcmQgc3l6a2FsbGVyIGVudmlyb25tZW50cywgdGhlIG9uZXMgd2UgcmVseSBvbiBmb3IgYnJvYWQgY292ZXJhZ2UsIGRvbid0IHNoaXAgd2l0aCBjdXN0b20gRGV2aWNlIFRyZWVzIHRhaWxvcmVkIHRvIGV2ZXJ5IHZlbmRvciBJUCB1bmRlciB0aGUgc3VuLiBUaGV5J3JlIGJ1aWx0IGZvciBnZW5lcmljIGFyY2hpdGVjdHVyZXMuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGEgWGlsaW54LXNwZWNpZmljIGRyaXZlciwgdGhlcmUncyBubyB3YXkgdGhpcyBjb2RlIHdpbGwgZXZlciBnZXQgcHJvYmVkIG9uIHRoZSBjb21tb24geDg2L2FybTY0IFZNcyB3ZSdyZSB1c2luZyB1bmxlc3Mgd2UgbWFudWFsbHkgcHJvdmlkZSBhIGN1c3RvbSBEVC4gU3l6a2FsbGVyIGp1c3QgZG9lc24ndCBkbyB0aGF0IGJ5IGRlZmF1bHQuIENvbnNlcXVlbnRseSwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKGB4aWxpbnhfYXhpZW5ldGApLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGEgd2FzdGUgb2YgdGltZSB0byBmb2N1cyBvbiBjb2RlIHRoYXQncyBmdW5kYW1lbnRhbGx5IGluYWNjZXNzaWJsZSBpbiBvdXIgdGFyZ2V0IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAyOSwiT3V0cHV0VG9rZW5zIjoxNTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTQ6MjM6MzcuMTUyNTY5NzU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciAoeGlsaW54X2F4aWVuZXQpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFhpbGlueCBGUEdBcy9Tb0NzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBEZXZpY2UgVHJlZSBub2RlcyAoZS5nLiwgeGxueCxheGktZXRoZXJuZXQtMS4wMC5hKSB0byBiZSBwcm9iZWQsIHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUncyB4ODZfNjQgcTM1L2FybTY0IHZpcnQgbWFjaGluZXMpIHVzZWQgZm9yIGZ1enppbmcuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIgKHhpbGlueF9heGllbmV0KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBYaWxpbnggRlBHQXMvU29Dcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgRGV2aWNlIFRyZWUgbm9kZXMgKGUuZy4sIHhsbngsYXhpLWV0aGVybmV0LTEuMDAuYSkgdG8gYmUgcHJvYmVkLCB3aGljaCBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VJ3MgeDg2XzY0IHEzNS9hcm02NCB2aXJ0IG1hY2hpbmVzKSB1c2VkIGZvciBmdXp6aW5nLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNDoyMzozNy4xNTI1OTY4MjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7p68g[1] Phase: Running StartedAt: 2026-08-21 14:23:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7p68g[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-21 14:23:48 +0000 UTC FinishedAt: 2026-08-21 14:23:52 +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,}