Name: series-workflowr2rn6 Phase: Failed StartedAt: 2026-07-26 02:54:38 +0000 UTC FinishedAt: 2026-07-26 03:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2rn6[0] Phase: Succeeded StartedAt: 2026-07-26 02:54:38 +0000 UTC FinishedAt: 2026-07-26 03:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2rn6[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 02:54:38 +0000 UTC FinishedAt: 2026-07-26 03:14:32 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNzVjYzI0OTVlNDU1ZTBjZGUwOTBlMDU5M2FhNjQxYTI3MTVhMmQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6MTA6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbmluZGV4IDYxYjZkNDVhMDJmNWQ1Li5mOGFiMzQ3ZjdiNWI5ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbkBAIC0zMjAsNiAmIzQzOzMyMCw4IEBAXG4gLyogRE1BIFJlZ2lzdGVycyAqL1xuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcdFx0XHQweDAwMDAzMDAwXG4gI2RlZmluZSBYR01BQ19TV1JcdFx0XHRCSVQoMClcbiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01BU0tcdFx0XHRHRU5NQVNLKDEzLCAxMilcbiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01PREUxXHRcdDB4MVxuICNkZWZpbmUgWEdNQUNfRE1BX1NZU0JVU19NT0RFXHRcdDB4MDAwMDMwMDRcbiAjZGVmaW5lIFhHTUFDX1dSX09TUl9MTVRcdFx0R0VOTUFTSygyOSwgMjQpXG4gI2RlZmluZSBYR01BQ19SRF9PU1JfTE1UXHRcdEdFTk1BU0soMjEsIDE2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbmluZGV4IDAzNDM3ZjFjZjNkZjM0Li43MmFjZWIwNmY1YWZhMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTMxLDYgJiM0MzszMSwxNSBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0dmFsdWUgfD0gWEdNQUNfRUFNRTtcbiBcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9TWVNCVVNfTU9ERSk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUm91dGUgRE1BIGludGVycnVwdHMgdG8gcGVyLWNoYW5uZWwgbGluZXMgd2hlbiBtdWx0aS1NU0kgZW5hYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZG1hX2NmZy1cdTAwM2VtdWx0aV9tc2lfZW4pIHtcbiYjNDM7XHRcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbiYjNDM7XHRcdHZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTtcbiYjNDM7XHRcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2JiM0MzspIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBOb25lIG9mIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgU3lub3BzeXMgWEdNQUMgY29yZSBpdHNlbGYgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgUENJIHZhcmlhbnRzIG9mIHRoZSBzdG1tYWMgZHJpdmVyICh3aGljaCBjb3VsZCB0aGVvcmV0aWNhbGx5IGJlIHByb2JlZCB2aWEgdmlydHVhbCBQQ0kgaW5qZWN0aW9uKSBkbyBub3QgdXNlIHRoZSBYR01BQyBjb3JlIHR5cGUuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTc1Y2MyNDk1ZTQ1NWUwY2RlMDkwZTA1OTNhYTY0MWEyNzE1YTJkOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDAzOjEwOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKaW5kZXggNjFiNmQ0NWEwMmY1ZDUuLmY4YWIzNDdmN2I1YjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKQEAgLTMyMCw2ICYjNDM7MzIwLDggQEAKIC8qIERNQSBSZWdpc3RlcnMgKi8KICNkZWZpbmUgWEdNQUNfRE1BX01PREUJCQkweDAwMDAzMDAwCiAjZGVmaW5lIFhHTUFDX1NXUgkJCUJJVCgwKQomIzQzOyNkZWZpbmUgWEdNQUNfSU5UTV9NQVNLCQkJR0VOTUFTSygxMywgMTIpCiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01PREUxCQkweDEKICNkZWZpbmUgWEdNQUNfRE1BX1NZU0JVU19NT0RFCQkweDAwMDAzMDA0CiAjZGVmaW5lIFhHTUFDX1dSX09TUl9MTVQJCUdFTk1BU0soMjksIDI0KQogI2RlZmluZSBYR01BQ19SRF9PU1JfTE1UCQlHRU5NQVNLKDIxLCAxNikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKaW5kZXggMDM0MzdmMWNmM2RmMzQuLjcyYWNlYjA2ZjVhZmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYwpAQCAtMzEsNiAmIzQzOzMxLDE1IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0KHZvaWQgX19pb21lbSAqaW9hZGRyLAogCQl2YWx1ZSB8PSBYR01BQ19FQU1FOwogCiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX1NZU0JVU19NT0RFKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUm91dGUgRE1BIGludGVycnVwdHMgdG8gcGVyLWNoYW5uZWwgbGluZXMgd2hlbiBtdWx0aS1NU0kgZW5hYmxlZC4KJiM0MzsJICovCiYjNDM7CWlmIChkbWFfY2ZnLSZndDttdWx0aV9tc2lfZW4pIHsKJiM0MzsJCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTsKJiM0MzsJCXZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTsKJiM0MzsJCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYCBhbmQgYGR3eGdtYWMyLmhgLiBJdCBhcHBlYXJzIHRoZXkmIzM5O3JlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hX2luaXRgIHRvIGhhbmRsZSBETUEgaW50ZXJydXB0cyBkaWZmZXJlbnRseSwgc3BlY2lmaWNhbGx5IHJvdXRpbmcgdGhlbSB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBpcyBhY3RpdmUuIFRoaXMgaXMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLCB3aGljaCBJIGtub3cgaGFuZGxlcyBTVE1pY3JvZWxlY3Ryb25pY3MmIzM5OyBFdGhlcm5ldCBjb250cm9sbGVycywgaW5jbHVkaW5nIHRoZWlyIFhHTUFDLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRlc3QgdGhpcz8gQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IERhbW4sIEkgcmVjYWxsIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgWEdNQUMuIEJ1dCB3YWl0Li4uIENvdWxkIHRoaXMgYmUgYSBwbGF0Zm9ybSBkcml2ZXI/IE9yIHBlcmhhcHMgYSBQQ0kgZHJpdmVyIHRoYXQgKm1pZ2h0KiBiZSByZWFjaGFibGUgZXZlbiB3aXRob3V0IGZ1bGwgWEdNQUMgZW11bGF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYHN0bW1hY2AgZnVuY3Rpb25zIGFzIGEgUENJIGRyaXZlci4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgcHJhY3RpY2FsIHRoaXMgcGF0Y2ggaXMgdG8gYXNzZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipQQ0kgRHJpdmVyIElucXVpcnkqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCBzb21ldGhpbmcgZnVuZGFtZW50YWwuIEkgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gaGFyZHdhcmUgY29tcGF0aWJpbGl0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHRoaXMgZXZlbiAqaGF2ZSogYSBQQ0kgZHJpdmVyPyYjMzQ7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY29yZSBlbGVtZW50IG9mIHRoaXMgc3lzdGVtLCB3aGF0ZXZlciBpdCBtYXkgYmUsIGFjdHVhbGx5IHBvc3Nlc3NlcyB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGEgc3VpdGFibGUgc29mdHdhcmUgZHJpdmVyIGV4aXN0cyB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkuIE90aGVyd2lzZSwgSSYjMzk7bSB3YXN0aW5nIG15IHRpbWUgZXhwbG9yaW5nIGFueSBmdXJ0aGVyLCBwb3RlbnRpYWwgaW50ZWdyYXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGNoZWNrIGlzIHBhcmFtb3VudC4gTm8gZHJpdmVyLCBubyBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM4Mj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg1LVx0Lm5hbWUgPSBcJiMzNDtpbnRlbC1ldGgtcGNpXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NDptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjA1LVx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzczOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3NC1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBQQ0kgZHJpdmVyIGluIG1pbmQsIGJ1dCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyB0aGlzIGVtdWxhdGVkIGluIFFFTVU/JiMzNDsuIFdlIGtub3cgUUVNVSBoYW5kbGVzIGEgYnVuY2ggb2YgbmV0d29yayBpbnRlcmZhY2VzIOKAkyBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCB0aGUgdXN1YWwgc3VzcGVjdHMuIEJ1dCwgZG9lcyBpdCBoYW5kbGUgc3RtbWFjPyBOb3BlLCBpdCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGVtdWxhdGUgdGhhdCBvbmUuCgpXYWl0LCByaWdodCwgc3RtbWFjIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBJdCYjMzk7cyB1c2VkIG9uIGEgdG9uIG9mIFNvQ3MsIGxpa2UgQVJNLWJhc2VkIHN5c3RlbXMuIFNvLCBjYW4gd2UgKnJlYWNoKiBpdCB0aHJvdWdoIFFFTVU/IFFFTVUgZG9lcyBoYXZlIHNvbWUgQVJNIGJvYXJkIG1vZGVscy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBhbnkgb2YgdGhvc2UgYm9hcmRzIHVzZSB0aGUgRGVzaWduV2FyZSBNQUMuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlIFFFTVUgbmV0d29yayBoYXJkd2FyZSBkaXJlY3RvcnkuIFRoZXJlJiMzOTtzIGkuTVggRkVDLCBMQU45MTE4LCBTTUM5MUMxMTEsIFN0ZWxsYXJpcyBFdGhlcm5ldCwgYW5kIFhHTUFDLi4uICpYR01BQyohIFRoYXQmIzM5O3MgYSBDYWx4ZWRhIDEwRyBFdGhlcm5ldCBpbnRlcmZhY2UuIERvZXMgYGh3L25ldC94Z21hYy5jYCBoYXZlIGFueSByZWxldmFuY2UgdG8gc3RtbWFjPwoKTGV0JiMzOTtzIGxvb2sgYXQgYGR3eGdtYWMyX2RtYV9pbml0YCwgc3BlY2lmaWNhbGx5LiBUaGF0IHNvdW5kcyBsaWtlIGEgcmVsZXZhbnQgZnVuY3Rpb24gbmFtZS4gV2FpdCwgdGhlIGZpbGUgaXMgYWN0dWFsbHkgYGR3eGdtYWMyX2RtYS5jYC4gSGFuZyBvbi4uLiBpcyB0aGlzIHJlbGF0ZWQgdG8gQ2FseGVkYSYjMzk7cyBYR01BQyBpbXBsZW1lbnRhdGlvbj8gUHJvYmFibHkgbm90LCBzaW5jZSB0aGF0IHNlZW1zIHRvIGJlIGluIGB4Z21hY19lbmV0LmNgIG9yIGEgc2ltaWxhciBmaWxlLgoKT2theSwgbGV0JiMzOTtzIGJhY2sgdXAuIExldCYjMzk7cyBzZWFyY2ggdGhlIFFFTVUgc291cmNlIGZvciBhbnkgdXNhZ2Ugb2YgYGR3eGdtYWMyYC4KCkhhbmcgb24uLi4gaXMgc3l6a2FsbGVyIHVzaW5nIHN0bW1hYyB2aWEgYSB2aXJ0dWFsIGRldmljZT8gTm9wZSwgaXQmIzM5O3Mgbm90IHNldCB1cCB0aGF0IHdheS4gV2FpdCBhIG1pbnV0ZS4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgaGF2ZSBgc3l6X3BjaV92cGNpYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRvIGZ1enogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZnV6emVzIFBDSSBkZXZpY2VzIHVzaW5nIGEgYHN5el9wY2lgIHBzZXVkby1zeXNjYWxsLCBidXQgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBib3VuZCB0byBhIHZpcnR1YWwgUENJIGRldmljZS4gQnV0IHdhaXQsIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgcGFydCBvZiB0aGUgc3RtbWFjIGRyaXZlci4KClNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBpcyBgZHd4Z21hYzJfZG1hX2luaXRgIHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBRRU1VIHNldHVwPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyX2RtYV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yMy1cdFx0XHQgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo0NTpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTQ2LVx0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5LVx0XHRcdFx0ICAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo3NDpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF90eF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVx0XHRcdFx0ICAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XHQuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk3Olx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTg6XHQuaW5pdF9yeF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfcnhfY2hhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcdC5pbml0X3R4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF90eF9jaGFuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjAwLVx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIERNQSBPcGVyYXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiB0aGUgYGR3eGdtYWMyMTBfZG1hX29wc2Agc3RydWN0dXJlLCBhIGZhbWlsaWFyIG5hbWUuIExldCBtZSBxdWlja2x5IHRyYWNlIGl0cyB1c2FnZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQ7IGtub3dpbmcgd2hlcmUgdGhlc2UgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucyBhcmUgYmVpbmcgYXBwbGllZCBpcyBjcnVjaWFsLiBUaGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNmZXIgd2l0aGluIHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZC9vciBjb250cm9sIG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIERNQSBlbmdpbmUsIHByb2JhYmx5IGZvciBtb3ZpbmcgRXRoZXJuZXQgcGFja2V0cyBpbiBhbmQgb3V0IG9mIHRoZSBkZXZpY2UmIzM5O3MgbWVtb3J5IGJ1ZmZlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2FsbGluZyBpdCB0byBncmFzcCBob3cgdGhlIGRldmljZSBkcml2ZXIgaXMgd29ya2luZywgYW5kIGhvdyBpdHMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyMTBfZG1hX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2Nj1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDY3OmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz01NzE9c3RhdGljIGludCBkd3hnbWFjMl9lbmFibGVfdGJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk0OmNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU3LVx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4Olx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cdFx0Lm1hYyA9IFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjgxLVx0XHQubWFjID0gXHUwMDI2ZHd4bGdtYWMyX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgaHdpZi5jYCBTb3VyY2UgQ29kZSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgaHdpZi5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIFdoYXQmIzM5O3MgdGhlIGludGVyZmFjZSBpdCBwcm92aWRlcz8gRG9lcyBpdCBhYnN0cmFjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIG9yIGlzIGl0IG1vcmUgb2YgYSBsb3ctbGV2ZWwgZHJpdmVyPyBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbiBuYW1lcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIOKAkyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50cywgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgYW55IHN0YXRlIHZhcmlhYmxlcyBpdCBtYW5hZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aG9zZSB3aXRoIHRoZSBleGlzdGluZyBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcyBvciBtYWNyb3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGdyZXBwaW5nIGZvciB0aG9zZSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IGl0IGFkYXB0cyB0byBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIGFuZCB0aGVuIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IGZyb20gdGhlcmUuIFdoYXQmIzM5O3MgdGhlIGxpa2VseSBtZW1vcnkgZm9vdHByaW50IGFuZCBwZXJmb3JtYW5jZSBwcm9maWxlPyBBbnkgcG90ZW50aWFsIGNvbnRlbnRpb24gaXNzdWVzPyBBbGwgb2YgdGhpcyBpbmZvcm1zIG15IHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19od2lmX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMDA9aW50IHN0bW1hY19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEyLVx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjkzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NC1zdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6Mjk2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzE5LVx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjA6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMyMS1cdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgSGFyZHdhcmUgSW50ZXJmYWNlIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluZGljYXRlcyB0aGF0IGBzdG1tYWNfaHdpZl9pbml0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIFRoZSBjcnVjaWFsIHBpZWNlIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGNvcmUgdHlwZXMuIEdpdmVuIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYCwgdGhlIGFzc29jaWF0ZWQgY29yZSB0eXBlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYERXTUFDX0NPUkVfWEdNQUNgIG9yIHNvbWV0aGluZyBlcXVhbGx5IGRlc2NyaXB0aXZlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uc3VsdCB0aGUgYHN0bW1hY19od2lmX2VudHJ5YCBhcnJheS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlIGRlZmluaXRpb25zIGFyZSBsaWtlbHkgc3RvcmVkIGluIGBod2lmLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZXRhaWxzIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIHR5cGUgYXNzb2NpYXRpb24gYW5kIGZ1cnRoZXIgdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFx0XHQuZGV2X2lkID0gRFdYR01BQ19JRCxcbiAyNTE6XHRcdFx0LnJlZ3MgPSB7XG4gMjUyOlx0XHRcdFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxuIDI1MzpcdFx0XHRcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcbiAyNTQ6XHRcdFx0XHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXG4gMjU1Olx0XHRcdFx0LmZwZV9yZWcgPSBcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxuIDI1NjpcdFx0XHR9LFxuIDI1NzpcdFx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG4gMjU4Olx0XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG4gMjU5Olx0XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbiAyNjA6XHRcdFx0LnZsYW4gPSBcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxuIDI2MTpcdFx0XHQuaHd0aW1lc3RhbXAgPSBcdTAwMjZzdG1tYWNfcHRwLFxuIDI2MjpcdFx0XHQucHRwID0gXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXG4gMjYzOlx0XHRcdC5tb2RlID0gTlVMTCxcbiAyNjQ6XHRcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuIDI2NTpcdFx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuIDI2NjpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyNjc6XHRcdFx0LnNldHVwID0gZHd4Z21hYzJfc2V0dXAsXG4gMjY4Olx0XHRcdC5xdWlya3MgPSBOVUxMLFxuIDI2OTpcdFx0fSwge1xuIDI3MDpcdFx0XHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcbiAyNzE6XHRcdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbiAyNzI6XHRcdFx0LmRldl9pZCA9IERXWExHTUFDX0lELFxuIDI3MzpcdFx0XHQucmVncyA9IHtcbiAyNzQ6XHRcdFx0XHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXG4gMjc1Olx0XHRcdFx0Lm1tY19vZmYgPSBNTUNfWEdNQUNfT0ZGU0VULFxuIDI3NjpcdFx0XHRcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcbiAyNzc6XHRcdFx0XHQuZnBlX3JlZyA9IFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXG4gMjc4Olx0XHRcdH0sXG4gMjc5Olx0XHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbiAyODA6XHRcdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbiAyODE6XHRcdFx0Lm1hYyA9IFx1MDAyNmR3eGxnbWFjMl9vcHMsXG4gMjgyOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4bGdtYWMyX3ZsYW5fb3BzLFxuIDI4MzpcdFx0XHQuaHd0aW1lc3RhbXAgPSBcdTAwMjZzdG1tYWNfcHRwLFxuIDI4NDpcdFx0XHQucHRwID0gXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXG4gMjg1Olx0XHRcdC5tb2RlID0gTlVMTCxcbiAyODY6XHRcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuIDI4NzpcdFx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuIDI4ODpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyODk6XHRcdFx0LnNldHVwID0gZHd4bGdtYWMyX3NldHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODMzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgRFdNQUNfQ09SRV9YR01BQyBhbmQgU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSB0YXJnZXQgaGVyZSBpcyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoZSBmaXJzdCBxdWVzdGlvbiBpcyBhbHdheXM6IGNhbiBJIHJlYWNoIHRoaXMgaW4gUUVNVT8gQW5kIHRoYXQgcXVpY2tseSBsZWFkcyB0byAmIzM0O2NhbiBJIHJlYWNoIGBzdG1tYWNgIGluIFFFTVU/JiMzNDsgUUVNVSwgaW4gaXRzZWxmLCBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IGBzdG1tYWNgIHVzZWQgYnkgYGR3bWFjLWludGVsYCwgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSBJbnRlbCBFbGtoYXJ0IExha2UsIFRpZ2VyIExha2UsIGFuZCBBbGRlciBMYWtlJiMzOTtzIFBTRSBHYkU/CgpBbHJpZ2h0LCBuZXh0IHN0ZXA6IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJbnRlbCBQU0UgR2JFLCBvciBwZXJoYXBzIGFueSBvdGhlciBQQ0kgZGV2aWNlIHRoYXQgdXRpbGl6ZXMgdGhlIGBzdG1tYWNgIGRyaXZlcj8gQSBxdWljayBjaGVjayByZXZlYWxzIGEgbmVnYXRpdmUsIFFFTVUgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGRpcmVjdCBlbXVsYXRpb24gZm9yIEludGVsIFBTRSBHYkUuCgpCdXQuLi4gbm93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDYW4gSSBmdXp6IHRoaXMgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZT8gVGhhdCYjMzk7cyB3aGVuIGBzeXpfcGNpX3ZwY2lgIG9yIGBzeXpfcGNpYCBjb21lIGludG8gcGxheS4gQnV0IHdhaXQsIGBzeXpfcGNpYCBpc24mIzM5O3QgYSAqdmlydHVhbCogUENJIGRldmljZTsgaXQmIzM5O3MgYSBraW5kIG9mIHBzZXVkby1zeXN0ZW0gY2FsbCB0aGF0IGluamVjdHMgUENJIGRldmljZSBJRHMsIHJpZ2h0PyBJdCYjMzk7cyBhYm91dCBwcm9iaW5nIHRoZSBkcml2ZXIsIG5vdCBlbXVsYXRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLi4uIHVubGVzcyB0aGUgZHJpdmVyIHVzZXMgTWVtb3J5LU1hcHBlZCBJL08gKE1NSU8pLCB3aGljaCBzeXprYWxsZXIgY2FuIGludGVyY2VwdD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMsIGl0IGNhbiYjMzk7dCBpbnRlcmNlcHQgTU1JTy4KCldhaXQsIGRvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSBgc3l6X3BjaWA/IEFtIEkgdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2U/IFN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCwgdGhvc2UgYXJlIHNvbWUgZXhhbXBsZXMuIFdoYXQgYWJvdXQgUENJPyBgc3l6X2t2bV9zZXR1cF9jcHVgPyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lgPyBMZXQmIzM5O3MgY2hlY2sgdGhlIHNvdXJjZSwgaXQmIzM5O3MgdGhlIG9ubHkgd2F5IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X3BjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGxvb2tpbmcgYXQgc29tZXRoaW5nLCBhbmQgc3VkZGVubHkgaXQmIzM5O3MgaGl0dGluZyBtZTogU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBgc3l6X3BjaWAgc3lzdGVtIGNhbGwsIHJpZ2h0PyBXYWl0LCBkb2VzIHN5emthbGxlciBhY3R1YWxseSAqZnV6eiogUENJIGRyaXZlcnM/IE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIG5vLCBub3QgZ2VuZXJhbGx5LiBVbmxlc3MgaXQmIzM5O3MgdmlydHVhbGl6ZWQsIGxpa2Ugd2l0aCB2aXJ0aW8sIG9yIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciwgbGlrZSB0aGF0IGBtYWM4MDIxMV9od3NpbWAgdGhpbmcuCgpSaWdodCwgc28gSSB3YXMgbG9va2luZyBhdCBgc3RtbWFjYC4uLiB0aGF0JiMzOTtzIGFuIEV0aGVybmV0IGRyaXZlciwgaXNuJiMzOTt0IGl0PyBPa2F5LCBFdGhlcm5ldC4gQ2FuIHRoYXQgZXZlbiBiZSBmdXp6ZWQgdGhyb3VnaCBgdmV0aGAgb3IgYHR1bmAgaW50ZXJmYWNlcz8gTm8sIGBzdG1tYWNgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFNvLCB0aGlzIGJyaW5ncyBtZSB0byBhIHF1ZXN0aW9uOiBpcyBgc3RtbWFjYCBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VPwoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bGwgY2hlY2sgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgKnVzZWQqIGluIGFueSBRRU1VIG1hY2hpbmUgZGVmaW5pdGlvbnMuIEFoYSEgSSByZW1lbWJlciBRRU1VIGhhcyB0aGF0IGBody9uZXQveGdtYWMuY2AgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGluIGBoaWdoYmFua2AgKENhbHhlZGEpIGFuZCBgbWlkd2F5YC4gQnV0IGRvZXMgYHN0bW1hY2AgYWN0dWFsbHkgKmRyaXZlKiBgeGdtYWNgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGhlcmUuCgpMZXQmIzM5O3MgY2hlY2sgaW4gdGhlIGtlcm5lbCBzb3VyY2UsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1jYWx4ZWRhLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBOb3BlLCBxdWljayBsb29rIGFuZCBpdCBzZWVtcyBDYWx4ZWRhIFhHTUFDIGlzIGRyaXZlbiBieSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYC4gT2theSwgc28gbGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgZmlndXJlIG91dCB3aGF0ICpvdGhlciogZHJpdmVycyBgc3RtbWFjYCBoYXMsIGp1c3QgdG8gYmUgc3VyZS4gVGltZSB0byBleGFtaW5lIHdoYXQgYHN0bW1hY2AgZHJpdmVycyBhY3R1YWxseSAqZXhpc3QqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjaGFpbl9tb2RlLmMmIzM0OywKICAgICYjMzQ7Y29tbW9uLmgmIzM0OywKICAgICYjMzQ7ZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkZXNjc19jb20uaCYjMzQ7LAogICAgJiMzNDtkd21hYy1hbmFyaW9uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtZHdjLXFvcy1ldGguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1laWM3NzAwLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtZ2VuZXJpYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWlteC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWluZ2VuaWMuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC1wbGF0LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW50ZWwuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWlwcTgwNnguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1sb29uZ3Nvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxwYzE4eHguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZWRpYXRlay5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb244Yi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1vdG9yY29tbS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW51dm90b24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1xY29tLWV0aHFvcy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJlbmVzYXMtZ2JldGguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1yay5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJ6bjEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb2NmcGdhLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc29waGdvLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3BhY2VtaXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdGFyZml2ZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0bTMyLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3VuNTVpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3VuOGkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW54aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXRlZ3JhLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGhlYWQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy12aXNjb250aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAwLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAwX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3bWFjNC5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2Rlc2NzLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2Rlc2NzLmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5jJiMzNDssCiAgICAmIzM0O2R3bWFjNF9kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfbGliLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM1LmMmIzM0OywKICAgICYjMzQ7ZHdtYWM1LmgmIzM0OywKICAgICYjMzQ7ZHdtYWNfZG1hLmgmIzM0OywKICAgICYjMzQ7ZHdtYWNfbGliLmMmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzIuaCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd3hsZ21hYzIuaCYjMzQ7LAogICAgJiMzNDtlbmhfZGVzYy5jJiMzNDssCiAgICAmIzM0O2h3aWYuYyYjMzQ7LAogICAgJiMzNDtod2lmLmgmIzM0OywKICAgICYjMzQ7bW1jLmgmIzM0OywKICAgICYjMzQ7bW1jX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtub3JtX2Rlc2MuYyYjMzQ7LAogICAgJiMzNDtyaW5nX21vZGUuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWMuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2VzdC5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19ldGh0b29sLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19mcGUuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfaHd0c3RhbXAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2xpYnBjaS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19tYWluLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX21kaW8uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNpLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY3MuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGxhdGZvcm0uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3B0cC5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19zZWxmdGVzdHMuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfdGMuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfdmxhbi5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHAuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzIxCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlFFTVUgYW5kIE5ldHdvcmsgRHJpdmVyIEVtdWxhdGlvbiAtIE15IFBlcnNwZWN0aXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIFFFTVUmIzM5O3MgcGxhdGZvcm0gZHJpdmVycy4gVGhlcmUmIzM5O3MgYSB3aWRlIHJhbmdlIG9mIHRoZW0sIGFuZCBJJiMzOTttIHRyeWluZyB0byBzZWUgd2hpY2ggbmV0d29yayBoYXJkd2FyZSB0aGV5IGVtdWxhdGUuIFFFTVUgZGVmaW5pdGVseSBoYW5kbGVzIGEgZ29vZCBudW1iZXI6IGBpbXhgIGZvciBGcmVlc2NhbGUgaS5NWCwgYHN1bjhpYCBmb3IgQWxsd2lubmVyIEgzLCBgc3RtMzJgIGZvciBTVE0zMiwgYHNvY2ZwZ2FgIGZvciBBbHRlcmEgU09DRlBHQSwgYW5kIGB0ZWdyYWAgZm9yIE5WSURJQSBUZWdyYS4KCkhhbmcgb24gYSBzZWNvbmQuLi4gSSBzYXcgYGh3L25ldC9pbXhfZmVjLmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBvZiB0aGUgaS5NWCBGRUMvRU5FVCwgYnV0IG5vdCBzdG1tYWMuIFNvLCBpdCBhcHBlYXJzIFFFTVUgaGFuZGxlcyB0aGUgc3BlY2lmaWMgRkVDL0VORVQgZm9yIGkuTVgsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbi4KClRoZW4gSSBzYXcgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCB3aGljaCwgZnJvbSB0aGUgbmFtaW5nLCBpcyBjbGVhcmx5IHRoZSBTdW44aSBFTUFDLiBOb3csIGlzIGBkd21hYy1zdW44aS5jYCB0aGUgZHJpdmVyIGZvciAqdGhhdCogc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZGlnIGludG8uIFRpbWUgdG8gY2hlY2sgYGR3bWFjLXN1bjhpLmNgIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGx3aW5uZXIsc3VuOGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NzYzPXN0YXRpYyBpbnQgZ2V0X2VwaHlfbm9kZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNzc2LVx0bWRpb19pbnRlcm5hbCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKG1kaW9fbXV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzo3Nzc6XHRcdFx0XHRcdFx0XCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLW1kaW8taW50ZXJuYWxcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzgtXHRvZl9ub2RlX3B1dChtZGlvX211eCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNjk6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzAtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2gzIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzE6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXYzcy1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcyLVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF92M3MgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc0LVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9hODN0IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzU6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXI0MC1nbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc2LVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9yNDAgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MjEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFFFTVUmIzM5O3MgU3VuOGkgRU1BQyBFbXVsYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBRRU1VIGV4cGxpY2l0bHkgc3VwcG9ydHMgYGFsbHdpbm5lcixzdW44aS1oMy1lbWFjYCBpbiBpdHMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gQnV0LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2hpbGUgdGhpcyBmaWxlIGVtdWxhdGVzIHRoZSBFTUFDLCBkb2VzIGl0IGFjdHVhbGx5IGVtdWxhdGUgdGhlIHVuZGVybHlpbmcgRGVzaWduV2FyZSBNQUMgKHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2ApIHRoYXQmIzM5O3MgdHlwaWNhbCBvZiB0aGVzZSBBbGx3aW5uZXIgU29Dcz8KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgKmlzKiBpbmRlZWQgZW11bGF0aW5nIGEgRGVzaWduV2FyZSBNQUMuIEFoLCB5ZXMsIHRoZSBTdW44aSBFTUFDIGlzIGNvbmZpcm1lZCB0byBiZSBhIERlc2lnbldhcmUgTUFDLgoKTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgSSYjMzk7bSBleGFtaW5pbmcgaXMgYGR3eGdtYWMyX2RtYS5jYC4gVGhhdCYjMzk7cyBwb2ludGluZyB0b3dhcmRzIGFuIFhHTUFDLCB3aGljaCBoYW5kbGVzIDEwIEdpZ2FiaXQgc3BlZWRzLiBUaGUgU3VuOGkgaXNuJiMzOTt0IGtub3duIGZvciB0aGF0IGNhcGFiaWxpdHkuIERvZXMgdGhlIFN1bjhpICphY3R1YWxseSogdXNlIGFuIFhHTUFDPwoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgdXNlcyBhIFhHTUFDLCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBkd21hYy1zdW44aS5jYCBzYXlzIGFib3V0IHRoZSBjb3JlIHR5cGUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5NTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYHN0bW1hY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IGZ1enphYmxlIGBzdG1tYWNgIGlzLiBGaXJzdCB0aG91Z2h0OiBpdCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IHNldCBgY29yZV90eXBlYC4gVGhhdCBwcm9iYWJseSBtZWFucyBpdCYjMzk7cyByZWx5aW5nIG9uIHRoZSBnZW5lcmljIGBzdG1tYWNgIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmVhZCB0aGUgTUFDIHZlcnNpb24gcmVnaXN0ZXIuIEJ1dCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaGFyZHdhcmUuIFhHTUFDIGlzIDEwRywgd2hpbGUgU3VuOGkgaXMgMTAvMTAwLzEwMDAuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgWEdNQUM/IEkgdGhpbmsgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L3hnbWFjLmNgLCBidXQgdGhhdCBsb29rcyBsaWtlIGl0JiMzOTtzIGZvciBDYWx4ZWRhLiBEb2VzIGBzdG1tYWNgIHN1cHBvcnQgQ2FseGVkYT8gTm8sIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgdXNlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYCBpbnN0ZWFkLgoKV2FpdCwgd2hhdCBhYm91dCBgZHdtYWMtaW50ZWwuY2A/IFRoYXQmIzM5O3MgYSBQQ0kgZHJpdmVyISBOb3csIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZGV2aWNlcz8gSSBzZWVtIHRvIHJlbWVtYmVyIHRoZXJlIHdhcyBhIHBzZXVkby1zeXNjYWxsIGNhbGxlZCBgc3l6X3BjaWAuIFdhaXQsIG5vLCBJIGp1c3QgY2hlY2tlZC4gSSB3YXMgd3JvbmcsIGl0IGRvZXNuJiMzOTt0LiBPciAqZG9lcyogaXQ/IExldCBtZSBjaGVjayBhZ2Fpbi4uLiBpdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQmIzM5O3MgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFN5emthbGxlciBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV92cGNpYC4uLiBObywgaG9sZCBvbi4gSSYjMzk7bSBnZXR0aW5nIGNvbmZ1c2VkLiBGb3IgS1ZNLCBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgLCBmb3IgVVNCIGBzeXpfdXNiX2Nvbm5lY3RgLCBhbmQgZm9yIG1hYzgwMjExLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAuCgpIb2xkIG9uLi4uIEkmIzM5O3ZlIGdvdCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0IG1lIGNoZWNrIHNvbWV0aGluZy4uLiB0aGlzIHByb21wdCBzYXlzICYjMzQ7SW1wb3J0YW50IG5vdGU6IHRoaXMgdG9vbCBDQU5OT1QgYmUgdXNlZCB0byBzZWFyY2ggc3l6a2FsbGVyIHN5emxhbmcgZGVzY3JpcHRpb25zIChzeXMvKikgb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZyAmIzM5O3N5el8mIzM5OyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzJiMzNDsuIFNvIGl0IGRvZXMgaW1wbHkgdGhlIGV4aXN0ZW5jZSBvZiBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIE9rYXksIHJlZ2FyZGxlc3Mgb2YgaG93IHN5emthbGxlciBoYW5kbGVzIFBDSSBmdXp6aW5nLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCBgc3RtbWFjYD8KCklmIGBzdG1tYWNgICppcyogYSBQQ0kgZHJpdmVyLCB0aGVuIGl0JiMzOTtzICpwb3RlbnRpYWxseSogZnV6emFibGUsIGFzc3VtaW5nIHN5emthbGxlciBzdXBwb3J0cyBQQ0kgZnV6emluZy4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCBzbyBub3cgSSYjMzk7bSBmb2N1c2VkIG9uIHdoZXRoZXIgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyByZWFjaGFibGUuIExldCYjMzk7cyBzZWUgaWYgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXMgYWN0dWFsbHkgdXNlZCBieSBhbnkgUENJIGRldmljZXMuIGBzdG1tYWNfcGNpLmNgIGFuZCBgZHdtYWMtaW50ZWwuY2AgYXJlIFBDSSBkcml2ZXJzLCBidXQgZG8gdGhleSBhY3R1YWxseSB1c2UgWEdNQUM/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbiBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDAtI2RlZmluZSBEV01BQ19DT1JFXzVfMjBcdFx0MHg1MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDE6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8xMFx0MHgyMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDI6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8yMFx0MHgyMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDMtI2RlZmluZSBEV1hMR01BQ19DT1JFXzJfMDBcdDB4MjBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjQ2OiNkZWZpbmUgRFdYR01BQ19JRFx0XHQweDc2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00Ny0jZGVmaW5lIERXWExHTUFDX0lEXHRcdDB4Mjdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjc6I2lmbmRlZiBfX1NUTU1BQ19EV1hHTUFDMl9IX19cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6ODojZGVmaW5lIF9fU1RNTUFDX0RXWEdNQUMyX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC05LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg9NDY4PWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2Rlc2Nfb3BzIGR3eGdtYWMyMTBfZGVzY19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcwOiNlbmRpZiAvKiBfX1NUTU1BQ19EV1hHTUFDMl9IX18gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0zNjE9c3RhdGljIGludCBkd3hnbWFjMl9nZXRfaHdfZmVhdHVyZSh2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0zOTEtXHRkbWFfY2FwLVx1MDAzZW1icHNfMTAwMCA9IChod19jYXAgXHUwMDI2IFhHTUFDX0hXRkVBVF9HTUlJU0VMKSBcdTAwM2VcdTAwM2UgMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjM5MjpcdGlmIChkbWFfY2FwLVx1MDAzZW1icHNfMTAwMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXWEdNQUNfQ09SRV8yXzIwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMzkzLVx0XHRkbWFfY2FwLVx1MDAzZW1icHNfMTBfMTAwID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDgtXHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0OTpcdFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI1MDpcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjUxLVx0XHQucmVncyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTcyPXN0YXRpYyB2b2lkIHN0bW1hY194Z21hYzJfYzIyX2Zvcm1hdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBwaHlhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjc3Olx0aWYgKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNjIERXWEdNQUNfQ09SRV8yXzIwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc4LVx0XHQvKiBVbnRpbCB2ZXIgMi4yMCBYR01BQyBkb2VzIG5vdCBzdXBwb3J0IEMyMiBhZGRyIFx1MDAzZT0gNC4gVGhvc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTEzMj1zdGF0aWMgaW50IHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5YWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTEzOC1cdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXHUwMDNlPSA0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjEzOTpcdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtMTQwLVx0ICAgIHBoeWFkZHIgXHUwMDNlIE1JSV9YR01BQ19NQVhfQzIyQUREUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTE5NT1zdGF0aWMgaW50IHN0bW1hY194Z21hYzJfbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeWFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0yMDEtXHQvKiBVbnRpbCB2ZXIgMi4yMCBYR01BQyBkb2VzIG5vdCBzdXBwb3J0IEMyMiBhZGRyIFx1MDAzZT0gNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzoyMDI6XHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjAgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTIwMy1cdCAgICBwaHlhZGRyIFx1MDAzZSBNSUlfWEdNQUNfTUFYX0MyMkFERFIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2Mjg6XHRcdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02MjktXHRcdFx0LyogUmlnaHQgbm93IG9ubHkgQzIyIHBoeXMgYXJlIHN1cHBvcnRlZCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIERldGFpbHMqKgoKQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgRFdNQUNfQ09SRV9YR01BQ2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXIuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SGFuZyBvbiwgYERXTUFDX0NPUkVfWEdNQUNgLi4uIGlzbiYjMzk7dCB0aGF0IGEgc3BlY2lmaWMgWEdNQUMgY29yZSwgbGlrZWx5IGEgRGVzaWduV2FyZSBvbmU/IEFuZCBzcGVjaWZpY2FsbHksIGEgY29yZSB0aGF0JiMzOTtzICpwcm9iYWJseSogdXNlZCBpbiBhIGJyb2FkIHJhbmdlIG9mIGFwcGxpY2F0aW9ucy4mIzM0OyBUaGUgbmV4dCBxdWVzdGlvbiwgYWxtb3N0IHJlZmxleGl2ZSBhdCB0aGlzIHBvaW50LCBpczogJiMzNDtEb2VzIHRoaXMgcGFydGljdWxhciBYR01BQyBpbXBsZW1lbnRhdGlvbiwgYERXTUFDX0NPUkVfWEdNQUNgLCBzaG93IHVwIGFzIGEgY29yZSB1c2VkIGluIGFueSBQQ0ktYmFzZWQgZHJpdmVyPyYjMzQ7IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgcG9zc2libGUgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSB1c2luZyB0aGlzIGNvcmUsIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbnRleHQuIFRoYXQgcXVlc3Rpb24gaXMgZ29pbmcgdG8gZHJpdmUgbXkgbmV4dCBpbnZlc3RpZ2F0aW9ucyBhbmQgY29uc2lkZXJhdGlvbnMgYXJvdW5kIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDX0NPUkVfWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlx0cGxhdF9kYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNTEtXHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0ODpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVx0XHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNzA6XHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3MS1cdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwNi1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDgtXHRcdCAgICBkZXZfaWQgIT0gZW50cnktXHUwMDNlZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDM19YX09GRlNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXHRcdFx0cHJpdi1cdTAwM2Vlc3RhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgRVNUX1hHTUFDX09GRlNFVDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTU3LVx0XHRjdHJsIFx1MDAyNj0gfkVTVF9YR01BQ19QVE9WO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cdGlmIChzdGF0dXMgXHUwMDI2IEVTVF9CVFJFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUyLVx0XHRcdGJ0cmwgPSBGSUVMRF9HRVQoRVNUX1hHTUFDX0JUUkwsIHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjMwOTpcdGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cdFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzYxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dyZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXHRcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3Ny1cdFx0bWVtY3B5KFx1MDAyNnJlZ19zcGFjZVtFVEhUT09MX0RNQV9PRkZTRVRdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU1NT1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkwLVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjU5MTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjU5Mi1cdFx0c2VxX3ByaW50ZihzZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE0LVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYxNTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTYtXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjMtXHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfNF8wMCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjI0Olx0ICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVx0XHRzZXFfcHJpbnRmKHNlcSwgXCYjMzQ7XFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzU1PXN0YXRpYyB2b2lkIHN0bW1hY19wcmludF9hY3RwaHlpZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzcxOlx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcyLVx0XHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM5Nz1zdGF0aWMgaW50IHN0bW1hY19od19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MTktXHRpZiAoKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzUyMDpcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUyMS1cdCAgICAhcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJpd3Rfb2ZmKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5OTQ6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03OTk1LVx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBYR01BQ19KVU1CT19MRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVx0XHRyYXRlcyA9IHN0bW1hY19zdW44aV9jc3JfdG9fbWRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXHRcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2MjI6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cdFx0bmV3X2J1cy1cdTAwM2VyZWFkID0gXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjY2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVx0XHRzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jNDUobmV3X2J1cywgMCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O3NucHMsZHd4Z21hY1wmIzM0OykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNTQ5LVx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDkyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogODY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgWEdNQUMgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZHJpdmVycywgYGR3bWFjLXNvY2ZwZ2EuY2AgYW5kIGBkd21hYy10ZWdyYS5jYCwgYW5kIHRoZXkgYm90aCBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgLiBJbnRlcmVzdGluZy4gVGhlIFFFTVUgZW11bGF0b3IgaXMga25vd24gdG8gZW11bGF0ZSBib3RoIGB0ZWdyYWAgYW5kIGBzb2NmcGdhYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSBhY3R1YWxseSBlbXVsYXRlcyB0aGUgWEdNQUMgY29yZSB3aXRoaW4gdGhlIFRlZ3JhIG9yIFNPQ0ZQR0EgZW11bGF0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gUUVNVSYjMzk7cyBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSBgaHcvbmV0L2AgYW5kIGBody9hcm0vdGVncmEqYC4KClJpZ2h0LCBpdCBzZWVtcyBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhlIFRlZ3JhIFhHTUFDLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcuIEhvd2V2ZXIsIHN5emthbGxlciBtaWdodCBzdGlsbCBiZSBhYmxlIHRvIGZ1enogdGhlIHBsYXRmb3JtIGRyaXZlcnMgaWYgaXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcyBvciB1c2UgdmlydHVhbCBkZXZpY2VzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIHJlbWVtYmVyIGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuIEl0IGlzIG5vdCBkb25lIHZpYSBgc3l6X3BjaWAsIHJpZ2h0PyBBbmQgbm90IGBzeXpfdXNiX2Nvbm5lY3RgLiBJdCAqZG9lcyogdXNlIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgdG8gZnV6ei4gCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEhvdyBpcyAqaXQqIGZ1enplZD8gSXMgdGhlcmUgYSB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZT8gTm8sIEkgZG9uJiMzOTt0IHRoaW5rIHNvLgoKQWgsIGJ1dCB3YWl0ISBUaGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGEgc3BlY2lmaWMgc2V0IG9mIHNjZW5hcmlvcy4gVGhpcyBpbmNsdWRlcyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoaW5ncyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMsIG9yIGFueXRoaW5nIGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZC4KClNvLCBpcyBgc3RtbWFjYCByZWFjaGFibGUgaW4gUUVNVT8gUUVNVSBkb2VzIGhhdmUgYSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIHdoaWNoIGVtdWxhdGVzIHRoZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgLiBCdXQsIGRvZXMgdGhhdCB1c2UgYGR3eGdtYWMyX2RtYV9pbml0YD8gTm8sIGJlY2F1c2UgYGFsbHdpbm5lcixzdW44aS1oMy1lbWFjYCBpcyBqdXN0IGEgMTAvMTAwLzEwMDAgTUFDLCBub3QgYW4gWEdNQUMuIFRoaW5raW5nIGNsZWFybHksIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgKm9ubHkqIHVzZWQgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4KCk9rYXksIHRoZSBxdWVzdGlvbiBpcyBub3cgYmVjb21pbmcgbW9yZSBmb2N1c2VkLiBJcyBgRFdNQUNfQ09SRV9YR01BQ2AgcmVhY2hhYmxlIGluIFFFTVUgYXQgYWxsPyBMZXQmIzM5O3Mgc2VlIGlmIFFFTVUgaGFzIGFueSBYR01BQyBlbXVsYXRpb24uIEl0IGRvZXMhIFFFTVUgaGFzIGBody9uZXQveGdtYWMuY2AuIE5vdywgdGhlIGZpbmFsIGNoZWNrOiBpcyB0aGlzIGBody9uZXQveGdtYWMuY2AgY29tcGF0aWJsZSB3aXRoIGVpdGhlciB0aGUgYHNucHMsZHd4Z21hY2Agb3IgYHN0bW1hY2AgY29tcGF0aWJsZSBzdHJpbmdzPyBObywgaXQmIzM5O3MgZm9yIENhbHhlZGEuIFRoZSBMaW51eCBjb21wYXRpYmxlIHN0cmluZyBmb3IgQ2FseGVkYSYjMzk7cyBYR01BQyBpcyBgY2FseGVkYSxoYi14Z21hY2AuIFRoZSBjb3JyZXNwb25kaW5nIExpbnV4IGRyaXZlciBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYC4gQWhhLCB0aGF0IGlzIGEgKnNlcGFyYXRlKiBkcml2ZXIsIG5vdCB0aGUgYHN0bW1hY2AhIE5vdyB0aGUgbGFzdCB0aGluZyB0byBkbyBpcyB0byBjaGVjayBpZiBgc3RtbWFjYCBiaW5kcyB0byBgY2FseGVkYSxoYi14Z21hY2AuIEFuZCB0aGF0IHNob3VsZCBjb21wbGV0ZSB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbHhlZGEsaGIteGdtYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc2NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBRRU1VIGFuZCBFdGhlcm5ldCBFbXVsYXRpb24gSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBRRU1VJiMzOTtzIEV0aGVybmV0IGVtdWxhdGlvbiBhbmQgaXQgc2VlbXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGB4Z21hYy5jYCBiZWluZyB0aGUgc2FtZSBhcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGluY29ycmVjdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGJ1dCBub3cgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIFFFTVUgZW11bGF0ZXMgKmFueSogaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gYERXTUFDX0NPUkVfWEdNQUNgIHdpdGhpbiB0aGUgYHN0bW1hY2AgZnJhbWV3b3JrLgoKTGV0IG1lIHNlZS4uLiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGF0IGNvcmUgYXJlOiBgc25wcyxkd3hnbWFjYCwgYGR3bWFjLXNvY2ZwZ2EuY2AgKHRoYXQmIzM5O3MgdGhlIEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NiBhbmQgbmV3ZXIpLiBIbW1tLCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqZWl0aGVyKiBBZ2lsZXg1IG9yIFRlZ3JhMTg2PyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgaXMgbm8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4KCkxvb2tpbmcgYXQgdGhlIFFFTVUgc291cmNlLCBJIHNlZSBhIGZldyBBUk0tYmFzZWQgaGFyZHdhcmUgbW9kZWxzOiBgaHcvYXJtL2FzcGVlZC5jYCwgYGh3L2FybS9ucGNtN3h4LmNgLCBgaHcvYXJtL3hsbngtenlucW1wLmNgLCBhbmQgc28gb24uIEJ1dCBiYXNlZCBvbiB0aG9zZSBkZXZpY2UgdHlwZXMsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IGVtdWxhdGluZyBhbiBBZ2lsZXg1IG9yIFRlZ3JhMTg2LiBTbywgSSBkb24mIzM5O3QgKnRoaW5rKiBRRU1VIGVtdWxhdGVzIGVpdGhlciBvZiB0aG9zZS4KCk5vdywgd2hhdCBhYm91dCBQQ0k/IEkgbmVlZCB0byB0aGluayBtb3JlIGJyb2FkbHkuIEkga25vdyBgZHdtYWMtaW50ZWwuY2AgKmFsc28qIHVzZXMgYHN0bW1hY2AuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB1c2UgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlPyBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgYW5kIGNoZWNrIGBkd21hYy1pbnRlbC5jYCBzcGVjaWZpY2FsbHkuIFRpbWUgdG8gZGlnIGluLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01NjU9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NjgtXHRwbGF0LVx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTY5Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3MC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTg1PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5NjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODE2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyBEV01BQyBhbmQgU1RNTUFDIENvcmUgVXNhZ2UqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGR3bWFjLWludGVsLmNgIGZpbGUgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGxldmVyYWdlcyBgRFdNQUNfQ09SRV9HTUFDYCBhbmQgYERXTUFDX0NPUkVfR01BQzRgLiBOb3Qgc3VycHJpc2luZywgdGhvc2UgYXJlIGNvbW1vbiBjaG9pY2VzIGZvciB0aGlzIHR5cGUgb2YgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIGl0ICpkb2VzbiYjMzk7dCogYXBwZWFyIHRvIHVzZSBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUsIGhlbHBzIG5hcnJvdyBkb3duIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBwaXZvdCB0byBgc3RtbWFjX3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBvZiB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHNlZSB3aGF0IHRoZSBkaWZmZXJlbmNlcyBpbiBjb3JlIHVzZSBhcmUuIEkmIzM5O20gc3VyZSBpdCB1c2VzIGEgc2ltaWxhciBjb3JlIGJ1dCBJIHNob3VsZCBuZXZlciBhc3N1bWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjM9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTI2LVx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6Mjc6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yOC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01OS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NjA6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNjEtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0ODQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIERXTUFDIENvcmUgVXNhZ2UgQWNyb3NzIERyaXZlcnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIERXTUFDIGNvcmUgaXMgYmVpbmcgdXRpbGl6ZWQsIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoYXQgYHN0bW1hY19wY2kuY2AgaXMgZGVmaW5pdGVseSB1c2luZyBib3RoIGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCB0aGUgYGR3bWFjLWxvb25nc29uLmNgIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCYjMzk7cyBpbnRlcmZhY2luZyB3aXRoIHRoZSBEV01BQyBjb3JlIGFzIHdlbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBlbXBsb3lpbmcgdGhlc2Ugc2FtZSBjb3JlIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl04oCZcyBwb3RlbnRpYWxseSBoYW5kbGluZyB0aGluZ3MgZGlmZmVyZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTMzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIGBkd21hYy1tb3RvcmNvbW0uY2AqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgRFdNQUMgZHJpdmVyIHNwZWNpZmljYWxseSwgYW5kIHRoZSBNb3RvcmNvbW0gaW1wbGVtZW50YXRpb24uIFRoYXQgZmlsZW5hbWUsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZSBEV01BQyBjb3JlIHdlbGwg4oCTIHRoZSBzdGFuZGFyZCBkZXNjcmlwdG9ycywgdGhlIERNQSwgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gQnV0IHRoaXMgJiMzNDtNb3RvcmNvbW0mIzM0OyBkZXNpZ25hdGlvbi4uLiB3aGF0JiMzOTtzIHRoZWlyIHRha2Ugb24gdGhlIHN0YW5kYXJkIGRyaXZlcj8gQXJlIHRoZXkgaW50cm9kdWNpbmcgcHJvcHJpZXRhcnkgZXh0ZW5zaW9ucz8gQ3VzdG9tIGhhcmR3YXJlIGFjY2VsZXJhdGlvbj8gQXJlIHRoZXkgd29ya2luZyBhcm91bmQgc29tZSBzaWxpY29uIGxpbWl0YXRpb24/IEFyZSB0aGV5IHBlcmhhcHMgdXNpbmcgc3BlY2lmaWMgUEhZIGNvbmZpZ3VyYXRpb24gbm90IGRpcmVjdGx5IGhhbmRsZWQgYnkgdGhlIHN0YW5kYXJkIGRyaXZlcj8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZmlsZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3ZlIG1hZGUgY2hhbmdlcyBhbmQgdW5kZXJzdGFuZCB0aGVpciByZWFzb25pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdW5pcXVlIHJlcXVpcmVtZW50cyBvciBvcHRpbWl6YXRpb25zIHRoZXkgaGF2ZSBpbXBsZW1lbnRlZC4gSXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQgaWYgSSYjMzk7bSBsb29raW5nIGF0IGNvbXBhdGliaWxpdHkgb3IgZGVidWdnaW5nIGFuIGlzc3VlIG9uIGEgc3lzdGVtIHVzaW5nIHRoYXQgRFdNQUMgdmFyaWFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29yZV90eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDctXHRwbGF0LVx1MDAzZWNsa19yZWZfcmF0ZVx0PSAxMjUwMDAwMDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDg6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ0MDAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBQQ0kgRHJpdmVyIERXTUFDIFVzYWdlKioKClJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGVzZSBQQ0kgZHJpdmVycyBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIG5vbmUgb2YgdGhlbSBhcmUgZGlyZWN0bHkgbGV2ZXJhZ2luZyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoYXQmIzM5O3MgYSBiaXQgc3VycHJpc2luZy4gSSBleHBlY3RlZCB0byBmaW5kICpzb21lKiB1dGlsaXphdGlvbiB0aGVyZSwgZ2l2ZW4gdGhlIGNvbW1vbmFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhbmQgbXkgbWVudGFsIG1vZGVsLi4uIEFoISB3aGF0IGFib3V0IGBkd21hYy1nZW5lcmljLmNgPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBnbywgd291bGRuJiMzOTt0IGl0PyBQZXJoYXBzIHRoZSBQQ0kgZHJpdmVycyB1dGlsaXplIGZ1bmN0aW9ucyBmcm9tICp0aGF0KiBtb2R1bGUuIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgUENJIGRyaXZlcnMgYWdhaW4sIGtlZXBpbmcgdGhpcyBpbiBtaW5kLiBJdCYjMzk7cyB0aW1lIHRvIHRha2UgYSBkZWVwZXIgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY3MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHN0bW1hYyBYR01BQyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlIGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgc2V0IHRoZSBgY29yZV90eXBlYC4gSW5zdGVhZCwgaXQgc2VlbXMgdG8gYmUgcmVseWluZyBvbiB0aGUgaGFyZHdhcmUgdmVyc2lvbiByZWdpc3Rlciwgd2hpY2ggaXMgYSBiaXQgaW1wbGljaXQuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYSBRRU1VIGJvYXJkIHNldHVwIHRoYXQgd291bGQgdHJpZ2dlciBgc3RtbWFjX3Byb2JlX2NvbmZpZ19kdGAgdG8gc2V0IGBjb3JlX3R5cGVgIHRvIGBEV01BQ19DT1JFX1hHTUFDYCBiYXNlZCBvbiBhIGRldmljZSB0cmVlIG5vZGUgd2l0aCBgY29tcGF0aWJsZSA9ICYjMzQ7c25wcyxkd3hnbWFjJiMzNDtgLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayBRRU1VJiMzOTtzIGB2aXJ0LmNgLCBidXQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBPa2F5LCBsZXQmIzM5O3MgbG9vayBhdCBgaHcvbmV0L3hnbWFjLmNgIOKAkyBhaCwgdGhhdCYjMzk7cyBqdXN0IGZvciBDYWx4ZWRhJiMzOTtzIGBoYi14Z21hY2AuIEFyZSB0aGVyZSAqYW55KiBvdGhlciBYR01BQyBlbXVsYXRpb25zIGluIFFFTVU/IE5vcGUsIGJlc2lkZXMgYHhnbWFjLmNgLCBJIHNlZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgZm9yIG1vcmUgY29tbW9uLCBvbGRlciBoYXJkd2FyZS4KCldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgYGh3L25ldC9kZXNpZ253YXJlLmNgPyBUaGF0IHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgbGVhZCBzaW5jZSBpdCYjMzk7cyBpbiB0aGUgbmV0d29yayBkaXJlY3RvcnkuIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyByZWxldmFudCB0byBgc3RtbWFjYC4gWWVzLCBpdCAqaXMqIHRoZSBEZXNpZ25XYXJlIE1BQy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29tcGF0aWJsZSBzdHJpbmcgb3IgUENJIElEIGl0IHVzZXMuIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGluc3BlY3QgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHdoaWNoIGJvYXJkcyBhY3R1YWxseSAqdXNlKiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIExldCYjMzk7cyBydW4gZG93biB0aGUgbGlzdC4uLiBub3BlLCBpLk1YIHVzZXMgRkVDLiBBbGx3aW5uZXIgdXNlcyBpdHMgb3duIGVtYWMuIFp5bnFNUCBhbmQgVmVyc2FsIHVzZSBDYWRlbmNlIEdFTS4gU0JTQSB1c2VzIEUxMDAwRSwgYW5kIHZpcnQgdXNlcyB2aXJ0aW8tbmV0LgoKQWhhISBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgaHcvYXJtL21zZjItc29jLmNgIChNaWNyb3NlbWkgU21hcnRGdXNpb24yKS4gSG1tLCBkb2VzIFNtYXJ0RnVzaW9uMiBhY3R1YWxseSB1c2UgYHN0bW1hY2A/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBzdG1tYWNgIGRyaXZlcnMgb3Igc2ltaWxhciB0byBjb25maXJtLgoKQnV0IHdhaXQgYSBzZWMuLi4gZG9lcyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgZXZlbiAqZW11bGF0ZSogWEdNQUM/IE5vLCBpdCYjMzk7cyBqdXN0IEdNQUMgKDEwLzEwMC8xMDAwKS4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZm9yIFhHTUFDIOKAkyB0aGUgMTAgR2lnYWJpdCBraW5kLiBUaGUgcmVnaXN0ZXJzIGJlaW5nIHR3ZWFrZWQgYXJlIGBYR01BQ19ETUFfTU9ERWAgKDB4MzAwMCkgYW5kIGBYR01BQ19ETUFfU1lTQlVTX01PREVgICgweDMwMDQpLiBJbiBhIHN0YW5kYXJkIEdNQUMgc2V0dXAsIHRoZSBETUEgcmVnaXN0ZXJzIGFyZSBhdCAweDEwMDAgKEdNQUM0KSBvciAweDEwMDAgKEdNQUMpIHdpdGhpbiB0aGUgY29udHJvbGxlciYjMzk7cyBtZW1vcnkgbWFwLiBTbywgdGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyB0aGUgWEdNQUMgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoIGhvdyBgc3RtbWFjYCBoYW5kbGVzIERNQS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RE1BX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9MjQ4PXN0cnVjdCBzdG1tYWNfc2FmZXR5X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyODE6I2RlZmluZSBTRl9ETUFfTU9ERSAxXHRcdC8qIERNQSBTVE9SRS1BTkQtRk9SV0FSRCBPcGVyYXRpb24gTW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTAwPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01MDYtXHR2ID0gcmVhZGwoaW9hZGRyICYjNDM7IEVNQUNfUlhfQ1RMMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUwNzpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUwOC1cdFx0diB8PSBFTUFDX1JYX01EO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTI0PXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01MzAtXHR2ID0gcmVhZGwoaW9hZGRyICYjNDM7IEVNQUNfVFhfQ1RMMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUzMTpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUzMi1cdFx0diB8PSBFTUFDX1RYX01EO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxMzI6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTEzMy1cdFx0cHJfZGVidWcoXCYjMzQ7R01BQzogZW5hYmxlIFJYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xNTU9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxNjE6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2Mi1cdFx0cHJfZGVidWcoXCYjMzQ7R01BQzogZW5hYmxlIFRYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYz0yMzM9c3RhdGljIHZvaWQgZHdtYWM0X2RtYV9yeF9jaGFuX29wX21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0yNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6MjQ1Olx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0yNDYtXHRcdHByX2RlYnVnKFwmIzM0O0dNQUM6IGVuYWJsZSBSWCBzdG9yZSBhbmQgZm9yd2FyZCBtb2RlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9MzAzPXN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfdHhfY2hhbl9vcF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjMxMjpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMzEzLVx0XHRwcl9kZWJ1ZyhcJiMzNDtHTUFDOiBlbmFibGUgVFggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC0zMjAtLyogRE1BIFJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDozMjE6I2RlZmluZSBYR01BQ19ETUFfTU9ERVx0XHRcdDB4MDAwMDMwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIyLSNkZWZpbmUgWEdNQUNfU1dSXHRcdFx0QklUKDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE9c3RhdGljIGludCBkd3hnbWFjMl9kbWFfcmVzZXQodm9pZCBfX2lvbWVtICppb2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxMzpcdHUzMiB2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfTU9ERSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE1LVx0LyogRE1BIFNXIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxNjpcdHdyaXRlbCh2YWx1ZSB8IFhHTUFDX1NXUiwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTg6XHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfTU9ERSwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xOS1cdFx0XHRcdCAgISh2YWx1ZSBcdTAwMjYgWEdNQUNfU1dSKSwgMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0zOC1cdGlmIChkbWFfY2ZnLVx1MDAzZW11bHRpX21zaV9lbikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6Mzk6XHRcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTQwLVx0XHR2YWx1ZSA9IHUzMl9yZXBsYWNlX2JpdHModmFsdWUsIFhHTUFDX0lOVE1fTU9ERTEsIFhHTUFDX0lOVE1fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo0MTpcdFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX01PREUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE3PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9kdW1wX3JlZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjEyMjpcdGZvciAoaSA9IChYR01BQ19ETUFfTU9ERSAvIDQpOyBpIFx1MDAzYyBYR01BQ19SRUdTSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTEyMy1cdFx0cmVnX3NwYWNlW2ldID0gcmVhZGwoaW9hZGRyICYjNDM7IGkgKiA0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3J4X21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxMzM6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTM0LVx0XHR2YWx1ZSB8PSBYR01BQ19SU0Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTg2PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV90eF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTkzOlx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5NC1cdFx0dmFsdWUgfD0gWEdNQUNfVFNGO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjU3OD1zdGF0aWMgdm9pZCBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2MTAtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjExOlx0XHR0eG1vZGUgPSBTRl9ETUFfTU9ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjYxMjpcdFx0cnhtb2RlID0gU0ZfRE1BX01PREU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTM6XHRcdHByaXYtXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IFNGX0RNQV9NT0RFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNS1cdFx0dHhtb2RlID0gdGM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTY6XHRcdHJ4bW9kZSA9IFNGX0RNQV9NT0RFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjgwMT1zdGF0aWMgdm9pZCBzdG1tYWNfYnVtcF9kbWFfdGhyZXNob2xkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODAzOlx0aWYgKHVubGlrZWx5KHByaXYtXHUwMDNleHN0YXRzLnRocmVzaG9sZCAhPSBTRl9ETUFfTU9ERSkgXHUwMDI2XHUwMDI2IHRjIFx1MDAzYz0gMjU2KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDQtXHRcdHRjICYjNDM7PSA2NDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjgwOTpcdFx0XHRzdG1tYWNfc2V0X2RtYV9vcGVyYXRpb25fbW9kZShwcml2LCB0YywgU0ZfRE1BX01PREUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MTAtXHRcdFx0XHRcdFx0ICAgICAgY2hhbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzgwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGBzdG1tYWNgIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBYR01BQ19ETUFfTU9ERWAgaXMgaW5kZWVkIGRlZmluZWQgYXMgYDB4MzAwMGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBgc3RtbWFjYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBRRU1VIGVtdWxhdGlvbi4KCkkgc3RhcnRlZCBieSBsb29raW5nIGF0IFFFTVUmIzM5O3MgZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb25zLiBJIGNoZWNrZWQgYGh3L25ldC9kZXNpZ253YXJlLmNgLCBhbmQgaXQgYXBwZWFycyB0aGF0IHRoaXMgaXMgZm9yIHRoZSBnZW5lcmljIEdNQUMsIG5vdCB0aGUgWEdNQUMgdmFyaWFudC4gVGhlIGRlZmluaXRpb25zIHRoZXJlIChgTUFDX0RNQV9CVVNfTU9ERWAsIGBNQUNfRE1BX1RYX1BPTExfREVNQU5EYCkgZG9uJiMzOTt0IGFsaWduIHdpdGggd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGVuIEkgbW92ZWQgdG8gYGh3L25ldC94Z21hYy5jYC4gSSBmb3VuZCBgWEdNQUNfRE1BX0JVU19NT0RFYCwgYnV0IGl0JiMzOTtzIHNldCB0byBgMHgxMDAwYCwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBgZHd4Z21hYzIuaGAgdXNlcyBmb3IgdGhlIERNQSBtb2RlIChgMHgzMDAwYCkuIFRoaXMgY29uZmlybWVkIHRoYXQgUUVNVSYjMzk7cyBgeGdtYWMuY2AgZG9lc24mIzM5O3QgcHJvdmlkZSBlbXVsYXRpb24gY29tcGF0aWJsZSB3aXRoIGBkd3hnbWFjMmAuIFNvLCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzbiYjMzk7dCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucy4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpbnZvbHZlZCBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvbnNpZGVyZWQgaWYgaXQgY291bGQgdXRpbGl6ZSBzb21lIHZpcnR1YWwgZGV2aWNlIGZyYW1ld29yay4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIGlmIHRoZXkmIzM5O3JlIHZpcnR1YWxpemVkLCBidXQgYHN0bW1hY2AgWEdNQUMsIGluIHN0YW5kYXJkIHNldHVwcywgaXNuJiMzOTt0IGEgUENJIGRldmljZSwgYW5kIGV2ZW4gaWYgaXQgd2VyZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZm9yIGl0LiBJIGFsc28gY2hlY2tlZCBpZiBzeXprYWxsZXIgbWlnaHQgdXNlIGEgVVNCIGNvbm5lY3Rpb24sIHNwZWNpZmljYWxseSB2aWEgYHN5el91c2JfY29ubmVjdGAsIGJ1dCB0aGF0JiMzOTtzIGZvciBVU0IsIG5vdCBgc3RtbWFjYC4gSSBhbHNvIGNoZWNrZWQgc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZnV6eiBQQ0ksIGJ1dCBJIHdhcyB3cm9uZyB0byB0aGluayBpdCBjb3VsZCwgc28gdGhhdCBkb2VzbiYjMzk7dCB3b3JrLgoKQnV0IHRoZW4sIEkgc2F3IGEgY29tbWl0IHJlbGF0ZWQgdG8gc3l6a2FsbGVyIGFuZCBgc3RtbWFjYCwgc3BlY2lmaWNhbGx5IG5vdGluZyBhIHBhdGNoIHVuZGVyIHJldmlldywgd2l0aCB0aGUgYXV0aG9yIGxpc3RlZCBhcyB0aGUgc3l6a2FsbGVyIGNsdXN0ZXIgaXRzZWxmLiBUaGlzIHN1Z2dlc3RzIHN5emthbGxlciBpcyBmaW5kaW5nIGJ1Z3Mgb3IgdGVzdGluZyBwYXRjaGVzIHNwZWNpZmljYWxseSBmb3IgYHN0bW1hY2AuIFRoZSBxdWVzdGlvbiBpcyAqaG93KiwgZ2l2ZW4gbXkgY29uY2x1c2lvbiB0aGF0IGl0JiMzOTtzIG5vdCByZWFjaGFibGUgaW4gUUVNVSBpbiB0aGUgd2F5IEkgd2FzIGV4cGVjdGluZz8KClRoZSBrZXkgcmVhbGl6YXRpb24gaXMgdGhhdCBzeXprYWxsZXIgKm1pZ2h0KiBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChsaWtlIEFSTSBib2FyZHMpIG9yLCBwZXJoYXBzLCBvbiBhIHNwZWNpYWwgUUVNVSBtYWNoaW5lIHRoYXQgSSBtaXNzZWQuIFRoaXMgb3BlbnMgdXAgYSBuZXcgYXZlbnVlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUmIzM5O3MgYSBRRU1VIHNldHVwIHdoZXJlIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB2aWEgYSBQQ0kgZHJpdmVyLCBsaWtlIGBkd21hYy1pbnRlbC5jYC4gSSBrbm93IHRoYXQgc3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgaWYgdGhleSYjMzk7cmUgcHJvYmVkLCBhbmQgYGR3bWFjLWludGVsLmNgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB0aGlzIGlzIHByb21pc2luZy4KClRoZSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBkd21hYy1pbnRlbC5jYCB1dGlsaXplcyBgZHd4Z21hYzJgLiBNeSBwcmV2aW91cyBjaGVja3Mgc2hvd2VkIHRoYXQgYGR3bWFjLWludGVsLmNgIHVzZXMgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YCwgYnV0IGl0JiMzOTtzIHdvcnRoIHJlLWV4YW1pbmluZyBpZiB0aGVyZSYjMzk7cyBhbnkgdXNhZ2Ugb2YgYERXTUFDX0NPUkVfWEdNQUNgIGluIGl0cyBjb2RlLCBhbmQgYWxzbyBpZiBhIHNwZWNpZmljIFFFTVUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19DT1JFX1hHTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODc5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiB0aGUgSW1wbGljYXRpb24qKgoKTm9wZSwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBpbmNvcnJlY3QuIExldCYjMzk7cyBkZWx2ZSBkZWVwZXIuIFdoZXJlIG1pZ2h0IEkgZmluZCByZWxldmFudCBpbmZvcm1hdGlvbiBvciBhIHBvdGVudGlhbCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0/IEFoLCB3aGF0IGFib3V0IHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlPyBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDU2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCoqCgpOb3BlLiBUaGF0IGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjbGVhcmx5IGluY29ycmVjdC4gVGhlIG9yaWdpbmFsIGlkZWEgaXMgZmxhd2VkLiBCdXQsIG5vdywgd2hhdCAqaXMqIHRoZSBrZXkgZmlsZSBpbnZvbHZlZCBoZXJlPyBXaGVyZSBhcmUgd2UgbGlrZWx5IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24/IE15IG5leHQgdGhvdWdodCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZpbGU6IGBkd21hYy1nZW5lcmljLmNgLiBDb3VsZCAqdGhhdCogYmUgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGU/IElzIHRoYXQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZS1hZ25vc3RpYyBkcml2ZXIgZm9yIHRoZSBETUEgY29udHJvbGxlciByZXNpZGVzPyBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2Qgc3RhcnQgbG9va2luZyB0byBpbnZlc3RpZ2F0ZSB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjY4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBkd3hnbWFjMl9kbWFfaW5pdGAgRnVuY3Rpb24qKgoKSG1tLCBuby4gVGhhdCYjMzk7cyBub3QgdGhlIGFuc3dlciBJIHdhcyBleHBlY3RpbmcuIE9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGR3eGdtYWMyX2RtYV9pbml0YCBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGJlaW5nIGNhbGxlZCBpbiB0aGlzIHN5c3RlbS4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gVGhlIGNvZGUgYmFzZSBpcyBvZnRlbiBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gaXQgbG9va3Mgb24gZmlyc3QgZ2xhbmNlLiBJcyB0aGlzIGZ1bmN0aW9uIGV2ZW4gdXNlZD8gTWF5YmUgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXNuJiMzOTt0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIFBlcmhhcHMgdGhhdCBzdHJ1Y3R1cmUgaXMgdXRpbGl6ZWQgYnkgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgc3lzdGVtIGVudGlyZWx5LCB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBtb3JlIGNhcmVmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzIxMF9kbWFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg9NDY2PWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTU3MT1zdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTQ6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTg6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU5LVx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3OS1cdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI4MDpcdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXHRcdC5tYWMgPSBcdTAwMjZkd3hsZ21hYzJfb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE0NwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEV01BQ19DT1JFX1hHTUFDIERlZmluaXRpb24qKgoKUmlnaHQsIHNvIHRoaXMgdGhpbmcsIHRoaXMgYERXTUFDX0NPUkVfWEdNQUNgLCBpdCBzZWVtcyB0byBiZSBkZWZpbmVkIHNvbWV3aGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKnVzZWQqLCBhbmQgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBpbml0aWFsIGxvY2F0aW9uLCBgaHdpZi5jYCwgaXMgdGhlIG9ubHkgcGxhY2UuIE5vdywgaWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB0aGF0IGZpbGUgaXMgdXNpbmcgaXQgZm9yIHRoZSBtYWNybyBgRFdNQUNfQ09SRV9YR01BQ2AuIEhtbW0sIEkgd29uZGVyIGlmIHRoZXJlIGlzIGFub3RoZXIgcGxhY2UgdG8gc2V0IHRoYXQgbWFjcm8uCgpMZXQgbWUganVzdCBxdWlja2x5IGRvIGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggYWNyb3NzIGFsbCByZWxldmFudCBmaWxlcyB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJiMzOTt0IGFub3RoZXIgbG9jYXRpb24sIG9yIGFub3RoZXIgd2F5LCBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgZ2V0dGluZyBzZXQuIExldCYjMzk7cyBkbyBhIGZpbmQgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD00OT1zdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcdHJldHVybiBjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCB8fCBjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTY5PXN0YXRpYyB2b2lkIHNvY2ZwZ2FfYWdpbGV4NV9zZXR1cF9wbGF0X2RhdChzdHJ1Y3Qgc29jZnBnYV9kd21hYyAqZHdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1NzM6XHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzI2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjctXHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MjE9c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNDktXHR2ZXItXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzo1MDpcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cdFx0dmVyLVx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDctXHR9LCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4Olx0XHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY5LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVx0XHQubWluX2lkID0gRFdYTEdNQUNfQ09SRV8yXzAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yOTQ9c3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMwNzpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cdFx0ICAgIGRldl9pZCAhPSBlbnRyeS1cdTAwM2VkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMzOC1cdFx0cHJpdi1cdTAwM2VtbWNhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgTU1DX0dNQUMzX1hfT0ZGU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMzOTpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTM0MC1cdFx0XHRwcml2LVx1MDAzZWVzdGFkZHIgPSBwcml2LVx1MDAzZWlvYWRkciAmIzQzOyBFU1RfWEdNQUNfT0ZGU0VUO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz0yOD1zdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01NS1cdGN0cmwgPSByZWFkbChlc3RfYWRkciAmIzQzOyBFU1RfQ09OVFJPTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6NTY6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXHRcdGN0cmwgXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTgzPXN0YXRpYyB2b2lkIGVzdF9pcnFfc3RhdHVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUwLVx0aWYgKHN0YXR1cyBcdTAwMjYgRVNUX0JUUkUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzoxNTE6XHRcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXHRcdFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTMwMT1zdGF0aWMgdm9pZCBzdG1tYWNfZXRodG9vbF9nZXRkcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMDgtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIEdNQUNfRVRIVE9PTF9OQU1FLCBzaXplb2YoaW5mby1cdTAwM2Vkcml2ZXIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5Olx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMTAtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIFhHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNTA9c3RhdGljIGludCBzdG1tYWNfZXRodG9vbF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzU0Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzU1LVx0XHRyZXR1cm4gWEdNQUNfUkVHU0laRSAqIDQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3NS1cdFx0ICAgICAgIE5VTV9EV01BQzRfRE1BX1JFR1MgKiA0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6Mzc2Olx0fSBlbHNlIGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlICE9IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVx0XHRtZW1jcHkoXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NTU1PXN0YXRpYyBpbnQgc3RtbWFjX2RtYV9jYXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY1OTAtXHRcdCAgIChwcml2LVx1MDAzZWRtYV9jYXAuaGFsZl9kdXBsZXgpID8gXCYjMzQ7WVwmIzM0OyA6IFwmIzM0O05cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NTkxOlx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkyLVx0XHRzZXFfcHJpbnRmKHNlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTQtXHRcdCAgIChwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXApID8gXCYjMzQ7WVwmIzM0OyA6IFwmIzM0O05cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjE1Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYxNi1cdFx0c2VxX3ByaW50ZihzZXEsIFwmIzM0O1xcdFRpbWVzdGFtcCBTeXN0ZW0gVGltZSBTb3VyY2U6ICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyMy1cdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY2MjQ6XHQgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjUtXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRJUCBDaGVja3N1bSBPZmZsb2FkIGluIFJYOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTU9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczNzE6XHRjYXNlIERXTUFDX0NPUkVfWEdNQUM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNzItXHRcdHBoeWlmX3RhYmxlID0gc3RtbWFjX2R3eGdtYWNfcGh5aWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Mzk3PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUxOS1cdGlmICgocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfM181MCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTIwOlx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTIxLVx0ICAgICFwcml2LVx1MDAzZXBsYXQtXHUwMDNlcml3dF9vZmYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3ODY9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzk5NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTUtXHRcdG5kZXYtXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTUzNj1zdGF0aWMgdTMyIHN0bW1hY19jbGtfY3NyX3NldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTQtXHRcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjU1NTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTU1Ni1cdFx0cmF0ZXMgPSBzdG1tYWNfeGdtYWNfY3NyX3RvX21kYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIzLVx0XHRuZXdfYnVzLVx1MDAzZXJlYWQgPSBcdTAwMjZzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jMjI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjUtXHQvKiBMb29rcyBsaWtlIHdlIG5lZWQgYSBkdW1teSByZWFkIGZvciBYR01BQyBvbmx5IGFuZCBDNDUgUEhZcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjctXHRcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz00MTY9c3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0Ny1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7c25wcyxkd3hnbWFjXCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NTQ4Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXHRcdHBsYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBwYXRoIGlzIG9ubHkgZW5hYmxlZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmU6IGBzbnBzLGR3eGdtYWNgLCBgZHdtYWMtc29jZnBnYS5jYCAoQWdpbGV4NSksIGFuZCBgZHdtYWMtdGVncmEuY2AgKFRlZ3JhMTg2JiM0MzspLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBUaGUga2lja2VyIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSB0YXJnZXRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4KCkkgd2FzIGJyaWVmbHkgdGhpbmtpbmcgdGhhdCBwZXJoYXBzIGBzeXprYWxsZXJgIG1pZ2h0IGJlIHRoZSBjdWxwcml0LCBwb3NzaWJseSB1c2luZyBzb21ldGhpbmcgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCB0byBpbmRpcmVjdGx5IHRyaWdnZXIgdGhlIGluc3RhbnRpYXRpb24uIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgc3l6a2FsbGVyYCAqY2FuJiMzOTt0KiBkaXJlY3RseSBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyBpdCB1c2VzIGRldmljZSB0cmVlIG92ZXJsYXlzLCBhbmQgaXQmIzM5O3Mgbm90IHNldCB1cCB0byBkbyB0aGF0LiBUaGF0IGF2ZW51ZSYjMzk7cyBhIGRlYWQgZW5kLgoKV2FpdCBhIHNlY29uZOKApiB3aGF0IGFib3V0IEFDUEk/IElzIGl0IHBvc3NpYmxlIHRoZSBkcml2ZXImIzM5O3MgYmVpbmcgcHJvYmVkIHRocm91Z2ggYW4gQUNQSSBwYXRoPyBMb29raW5nIGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AuLi4gYWgsIHllcyEgSXQgaGFzIEFDUEkgYmluZGluZ3MuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBwb3NzaWJpbGl0eSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGlzIHN1Z2dlc3RzIGEgZGlmZmVyZW50IGFjdGl2YXRpb24gbWV0aG9kIHRoYW4gdGhlIHR5cGljYWwgcGxhdGZvcm0gZGV2aWNlIGluc3RhbnRpYXRpb24gSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlBvdGVudGlhbCBBQ1BJIEJpbmRpbmdzIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaGVyZS4gSXQganVzdCBvY2N1cnJlZCB0byBtZSB0aGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AgbWlnaHQgYWN0dWFsbHkgaGF2ZSBzb21lIEFDUEkgYmluZGluZ3MgZGVmaW5lZC4gVGhhdCYjMzk7cyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgbm90IGFzc3VtZSB0aGV5JiMzOTtyZSBhbGwgaGFuZGxlZCBleGNsdXNpdmVseSB0aHJvdWdoIGRldmljZSB0cmVlLiBCZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gYW55dGhpbmcgZWxzZSwgSSByZWFsbHkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGFjcGlfbWF0Y2hfdGFibGVgLiBJdCB3b3VsZCBiZSBhIHdhc3RlZCBlZmZvcnQgdG8gbm90IHJ1bGUgb3V0IHRoZSBzaW1wbGVzdCBhbnN3ZXIgZmlyc3QhIElmIGl0ICppcyogcHJlc2VudCwgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBteSByb3V0ZSB0byB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FjcGlfbWF0Y2hfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzExMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlJldmlzaXRpbmcgQUNQSSBEZXZpY2UgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgYWNwaV9kZXZpY2VfaWRgLiBJIG5lZWQgdG8gcmUtZXhhbWluZSB0aGF0IGNvZGUuIEkga25vdyBpdCBiYWNrd2FyZHMgYW5kIGZvcndhcmRzLCBidXQgd2hlbiBkZWJ1Z2dpbmcgdGhlc2UgaW50cmljYXRlIEFDUEkgaW50ZXJhY3Rpb25zLCB5b3UgY2FuJiMzOTt0IGJlIHRvbyBjYXJlZnVsLiBUaGVyZSYjMzk7cyBhbHdheXMgYSBjaGFuY2UgSSYjMzk7dmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUsIG9yIHRoYXQgYSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZSBoYXMgaW50cm9kdWNlZCBhbiB1bmV4cGVjdGVkIGludGVyYWN0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgbmV3LiBMZXQgbWUgcmV2aXNpdCB0aGUgQUNQSSBkZXZpY2UgSUQgdGFibGUuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgc29tZSBuZXcgaGFyZHdhcmUgd2l0aCBhIHNsaWdodGx5IGRpZmZlcmVudCBzaWduYXR1cmUuIE9yIG1heWJlIGEgc3BlY2lmaWMgcGxhdGZvcm0mIzM5O3MgcXVpcmtzIGFyZSBpbnRlcmZlcmluZyB3aXRoIGhvdyB0aGUgZHJpdmVyIGludGVycHJldHMgdGhlIEFDUEkgZGF0YS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ2MD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19kdF9jbGVhcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDY2OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfYWNwaV9jb25maWcoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2Ny1cdFx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NTMtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU1NDpcdFx0cmV0ID0gbG9vbmdzb25fZHdtYWNfYWNwaV9jb25maWcocGRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTU1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2ODkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipJbnZlc3RpZ2F0aW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCkhtbSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkd21hYy1sb29uZ3Nvbi5jYC4gSW50ZXJlc3RpbmcsIGl0IHNlZW1zIHRvIGhhdmUgc29tZSBBQ1BJIGNvbmZpZ3VyYXRpb24gZ29pbmcgb24sIGJ1dCBpc24mIzM5O3QgdGhpcyBhIFBDSSBkcml2ZXIsIGFuZCBpdCYjMzk7cyB1c2luZyBgRFdNQUNfQ09SRV9HTUFDYD8gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkLiBJIHdvbmRlciB3aHkgdGhleSYjMzk7cmUgaGFuZGxpbmcgaXQgdGhpcyB3YXkuIE1heWJlIHRoZXJlIGFyZSBzb21lIGxlZ2FjeSByZWFzb25zIG9yIHNwZWNpZmljIExvb25nc29uIHBsYXRmb3JtIHF1aXJrcyBpbnZvbHZlZD8gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgbGF0ZXIuCgpOb3csIGEgY29tcGxldGVseSBkaWZmZXJlbnQgdGhvdWdodCwgd2hhdCBhYm91dCBgc3RtbWFjX3BsYXRmb3JtLmNgPyBEb2VzIGl0IG9mZmVyIHNvbWUgaW5zaWdodD8gSXQgaXMgcHJvYmFibHkgYSBiZXR0ZXItYWxpZ25lZCBzb3VyY2UgdG8gYW5hbHl6ZS4gSG9wZWZ1bGx5IGl0IGhhbmRsZXMgbW9yZSB0eXBpY2FsIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLiBNYXliZSBpdCBzaGVkcyBzb21lIGxpZ2h0IG9uIHRoZSBkZXNpZ24gY2hvaWNlcyBpbiB0aGF0IGZpcnN0IGZpbGUuIExldCBtZSBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzk3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDgwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIFBhdGggaW4gUUVNVTogQSBXb3J0aGxlc3MgRnV6emluZyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgZHd4Z21hYzJfZG1hX2luaXRgLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHJlYWNoYWJsZSBpdCBpcy4gRmlyc3QgdGhvdWdodDogaXMgaXQgdXNlZCBpbiBhIFBDSSBjb250ZXh0PyBObywgdGhhdCYjMzk7cyBub3QgaXQuIGBzdG1tYWNfcGxhdGZvcm0uY2AgZG9lc24mIzM5O3QgdXNlIEFDUEksIGJ1dCBgc3RtbWFjX3BjaS5jYCBkb2VzIHVzZSBhIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgd2hpY2ggcG9pbnRzIHRvIGBEV01BQ19DT1JFX0dNQUM0YC4gRGVmaW5pdGVseSBub3QgdGhlIHBhdGggSSYjMzk7bSBpbnRlcmVzdGVkIGluLgoKQ2FuIHRoaXMgZXZlciBiZSBjYWxsZWQgaW4gUUVNVT8gTm8uIE5vdCBkaXJlY3RseS4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KCmBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGZvciBgRFdNQUNfQ09SRV9YR01BQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgY29yZSB0eXBlIGlzIHVzZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZXhjbHVzaXZlbHkgdXNlZCBieSBgc25wcyxkd3hnbWFjYCAocGxhdGZvcm0pLCBgZHdtYWMtc29jZnBnYS5jYCAoQWdpbGV4NSksIGFuZCBgZHdtYWMtdGVncmEuY2AgKFRlZ3JhMTg2JiM0MzspLiBOb25lIG9mIHRob3NlIGFyZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgaHVnZSByZWQgZmxhZy4gVGhpcyBsb29rcyBsaWtlIGFuIHVucmVhY2hhYmxlIGNvZGUgcGF0aCBpbiBteSBlbnZpcm9ubWVudC4KCklzIHRoZXJlIGFueSBvdGhlciBkcml2ZXIgdGhhdCB1c2VzIHRoaXM/IEkgZGlkIGEgcXVpY2sgZ3JlcCBhbHJlYWR5LCBhbmQgaXQgbG9va3MgbGlrZSB0aG9zZSBhcmUgdGhlIG9ubHkgcGxhY2VzIGl0JiMzOTtzIGRlZmluZWQuIEFuZCBpdCYjMzk7cyBhbHNvIHVzZWQgaW4gYGh3aWYuY2AgYmFzZWQgb24gYGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDYCBhbmQgYWdhaW4sIGBzdG1tYWNfcGxhdGZvcm0uY2AgZm9yIGBzbnBzLGR3eGdtYWNgLgoKT2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGJyb2FkZXIgc2NvcGUgb2YgbXkgdGVzdGluZyBzZXR1cD8gSSYjMzk7bSBub3QgdXNpbmcgQWdpbGV4NSwgYW5kIG5vdCBUZWdyYTE4NiYjNDM7LiBJcyB0aGVyZSBhIGJvYXJkIGluIFFFTVUgdGhhdCBpbnN0YW50aWF0ZXMgYHNucHMsZHd4Z21hY2A/IE5vLCB0aGVyZSBpc24mIzM5O3QuIFNvIHRoYXQgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRoZSBRRU1VIGVudmlyb25tZW50IEkmIzM5O20gdXNpbmcuCgpXYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IFN5emthbGxlcj8gRG9lcyBpdCBldmVyIHJ1biBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gU3VyZSwgU3l6a2FsbGVyIGRvZXMgdXNlIHBoeXNpY2FsIGJvYXJkcyBzb21ldGltZXMsIGxpa2Ugb24gQVJNIGJvYXJkcy4gQnV0IHRoZSBwcm9tcHQgZXhwbGljaXRseSBmb2N1c2VzIG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRS4gSXQmIzM5O3MgY2xlYXJseSBzdGF0ZWQgdGhhdCBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuCgpTbywgc2luY2UgdGhpcyBjb2RlIHBhdGggY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gUUVNVSwgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKQnV0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUuIENvdWxkIGBzbnBzLGR3eGdtYWNgIHNvbWVob3cgYmUgaW5zdGFudGlhdGVkIHZpYSBhIGRldmljZSB0cmVlIG92ZXJsYXkgaW5qZWN0ZWQgYnkgU3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24mIzM5O3QgY3VycmVudGx5IGluamVjdCBEVCBvdmVybGF5cywgc28gdGhhdCYjMzk7cyBhIG5vLiBFdmVuIGlmIGl0IGRpZCwgdGhlIGRyaXZlciB3b3VsZCBwcm9iZS4gSXQgd291bGQgdGhlbiBhdHRlbXB0IHRvIHJlYWQgZnJvbSB0aGUgTU1JTyByZWdpc3RlcnMgb2YgdGhlIFhHTUFDLiBTaW5jZSB0aGVyZSYjMzk7cyBubyByZWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCAweEZGRkZGRkZGIG9yIDB4MDAwMDAwMDAsIGFuZCBmYWlsLiBFdmVuIGlmIHRoZSByZWdpc3RlciByZWFkIGlzIDAsIGxldCBtZSBjaGVjayBgc3RtbWFjX2dldF92ZXJzaW9uYCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2dldF92ZXJzaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xNj1zdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMTpzdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gKnZlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMyNjpcdHN0bW1hY19nZXRfdmVyc2lvbihwcml2LCBcdTAwMjZ2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODI3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZGV2aWNlIGRyaXZlcnM6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCB0byBgc3RtbWFjX2dldF92ZXJzaW9uYCoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiBkaXZlIGludG8gdGhlIGBzdG1tYWNfZ2V0X3ZlcnNpb25gIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIgaXMgY3J1Y2lhbCwgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gb2YgYWxtb3N0IGV2ZXJ5dGhpbmcuIEl0IHVzdWFsbHkgaW52b2x2ZXMgcmVhZGluZyByZWdpc3RlcnMsIG1heWJlIHNvbWUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgZHJpdmVyLCBhbmQgZm9ybWF0dGluZyB0aGF0IGRhdGEgZm9yIHRoZSB1c2VyLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQuIElzIGl0IGEgZGlyZWN0IHJlZ2lzdGVyIHJlYWQsIG9yIGRvZXMgaXQgaW52b2x2ZSBzb21lIG1vcmUgY29tcGxleCBsb2dpYyB0byBkZXRlcm1pbmUgdGhlIGRyaXZlciYjMzk7cyByZXZpc2lvbiwgZmVhdHVyZSBzZXQsIG9yIGhhcmR3YXJlIGNvbXBhdGliaWxpdHk/IEhvcGVmdWxseSwgaXQgaXMgd2VsbCBkb2N1bWVudGVkOyBvdGhlcndpc2UgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0ZXItbGV2ZWwgaW50ZXJwcmV0YXRpb24gb2YgaXQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgZGVidWdnaW5nIGFuZCBlbnN1cmluZyBjb21wYXRpYmlsaXR5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMgb3Iga2VybmVsIHZlcnNpb25zLiBJJiMzOTttIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgdHlwZXMgaXQmIzM5O3Mgd29ya2luZyB3aXRoIGFuZCBob3cgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaXMgc3RydWN0dXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiAgMjI6XHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY192ZXJzaW9uICp2ZXIpXG4gIDIzOlx0e1xuICAyNDpcdFx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZTtcbiAgMjU6XHRcdHVuc2lnbmVkIGludCB2ZXJzaW9uX29mZnNldDtcbiAgMjY6XHRcdHUzMiB2ZXJzaW9uO1xuICAyNzpcdFxuICAyODpcdFx0dmVyLVx1MDAzZXNucHN2ZXIgPSAwO1xuICAyOTpcdFx0dmVyLVx1MDAzZWRldl9pZCA9IDA7XG4gIDMwOlx0XG4gIDMxOlx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfTUFDMTAwKVxuICAzMjpcdFx0XHRyZXR1cm47XG4gIDMzOlx0XG4gIDM0Olx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQylcbiAgMzU6XHRcdFx0dmVyc2lvbl9vZmZzZXQgPSBHTUFDX1ZFUlNJT047XG4gIDM2Olx0XHRlbHNlXG4gIDM3Olx0XHRcdHZlcnNpb25fb2Zmc2V0ID0gR01BQzRfVkVSU0lPTjtcbiAgMzg6XHRcbiAgMzk6XHRcdHZlcnNpb24gPSByZWFkbChwcml2LVx1MDAzZWlvYWRkciAmIzQzOyB2ZXJzaW9uX29mZnNldCk7XG4gIDQwOlx0XHRpZiAodmVyc2lvbiA9PSAwKSB7XG4gIDQxOlx0XHRcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtWZXJzaW9uIElEIG5vdCBhdmFpbGFibGVcXG5cJiMzNDspO1xuICA0MjpcdFx0XHRyZXR1cm47XG4gIDQzOlx0XHR9XG4gIDQ0Olx0XG4gIDQ1Olx0XHRkZXZfaW5mbyhwcml2LVx1MDAzZWRldmljZSwgXCYjMzQ7VXNlciBJRDogMHgleCwgU3lub3BzeXMgSUQ6IDB4JXhcXG5cJiMzNDssXG4gIDQ2Olx0XHRcdCBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbiksXG4gIDQ3Olx0XHRcdCBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbikpO1xuICA0ODpcdFxuICA0OTpcdFx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG4gIDUwOlx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG4gIDUxOlx0XHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4gIDUyOlx0fVxuICA1MzpcdFxuICA1NDpcdHN0YXRpYyB2b2lkIHN0bW1hY19kd21hY19tb2RlX3F1aXJrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiAgNTU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjQ5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzY2VuYXJpbywgcGhyYXNlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OgoKKipJbml0aWFsIFZlcnNpb24gQ2hlY2sgYW5kIEhhcmR3YXJlIEludGVyZmFjZSBTZWFyY2gqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY2hlY2sgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSWYgdGhlIGB2ZXJzaW9uYCB2YXJpYWJsZSBpcyB6ZXJvLCB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgYmFpbHMgb3V0LiBJdCBzZXRzIHRoZSBgc25wc3ZlcmAgYW5kIGBkZXZfaWRgIGZpZWxkcyB3aXRoaW4gdGhlIGB2ZXJgIHN0cnVjdHVyZSB0byB6ZXJvLiBUaGF0JiMzOTtzIGEgY29tbW9uIGluaXRpYWwgc3RhdGUgb3IgZXJyb3IgY29uZGl0aW9uIHNpZ25hbGluZyBhbiB1bmluaXRpYWxpemVkIG9yIGludmFsaWQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGFuIGVhcmx5IHJldHVybiB0byBhdm9pZCBmdXJ0aGVyIHByb2Nlc3NpbmcuCgpUaGUgY3JpdGljYWwgc3RlcCBoZXJlLCBhZnRlciB0aGF0IGluaXRpYWwgY2hlY2ssIGlzIHRoYXQgaXQgY2FsbHMgYHN0bW1hY19od2lmX2ZpbmRgLiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwuIEl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB3ZSYjMzk7cmUgbW92aW5nIGZyb20gYSBzaW1wbGUgY29uZGl0aW9uYWwgdG8gdGhlIHJlYWwgd29yayDigJMgbG9jYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLCBJIGltbWVkaWF0ZWx5IGluZmVyIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByb2JpbmcsIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlIHByZXNlbnQsIGFuZCBwb3B1bGF0aW5nIHJlbGV2YW50IHN0cnVjdHVyZXMgd2l0aCBoYXJkd2FyZSBpbnRlcmZhY2Ugc3BlY2lmaWMgZGF0YS4gVGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGNvbW11bmljYXRlIHdpdGggYW5kIGNvbnRyb2wgdGhlIHBoeXNpY2FsIGRldmljZS4gSXQgaXMgYSBrZXkgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyOTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcbiAyOTQ6XHRzdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxuIDI5NTpcdHtcbiAyOTY6XHRcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XG4gMjk3Olx0XHRpbnQgaTtcbiAyOTg6XHRcbiAyOTk6XHRcdGZvciAoaSA9IEFSUkFZX1NJWkUoc3RtbWFjX2h3KSAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbiAzMDA6XHRcdFx0ZW50cnkgPSBcdTAwMjZzdG1tYWNfaHdbaV07XG4gMzAxOlx0XG4gMzAyOlx0XHRcdGlmIChjb3JlX3R5cGUgIT0gZW50cnktXHUwMDNlY29yZV90eXBlKVxuIDMwMzpcdFx0XHRcdGNvbnRpbnVlO1xuIDMwNDpcdFx0XHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cbiAzMDU6XHRcdFx0aWYgKHNucHN2ZXIgXHUwMDNjIGVudHJ5LVx1MDAzZW1pbl9pZClcbiAzMDY6XHRcdFx0XHRjb250aW51ZTtcbiAzMDc6XHRcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFx1MDAyNlx1MDAyNlxuIDMwODpcdFx0XHQgICAgZGV2X2lkICE9IGVudHJ5LVx1MDAzZWRldl9pZClcbiAzMDk6XHRcdFx0XHRjb250aW51ZTtcbiAzMTA6XHRcbiAzMTE6XHRcdFx0cmV0dXJuIGVudHJ5O1xuIDMxMjpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTMwMwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19od2lmX2ZpbmRgIGFuZCBgc3RtbWFjX2h3aWZfaW5pdGAuIEkmIzM5O3ZlIGdvdCB0byB1bmRlcnN0YW5kIHdoeSBpdCBtaWdodCBiZSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIHRoaXMgaW5pdGlhbCBjaGVjazogaWYgdGhlIGBzbnBzdmVyYCBpcyB6ZXJvIEFORCBgZGV2X2lkYCBpcyB6ZXJvLCBpdCBwcm9jZWVkcyB0byBjb21wYXJlIGBzbnBzdmVyYCBhZ2FpbnN0IGBlbnRyeS0mZ3Q7bWluX2lkYC4gTm93LCBmb3IgdGhlIGNhc2Ugb2YgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGUgYGVudHJ5LSZndDttaW5faWRgIGlzIHNldCB0byBlaXRoZXIgYERXWEdNQUNfQ09SRV8yXzEwYCAod2hpY2ggaXMgMHgyMSkgb3IgYERXWExHTUFDX0NPUkVfMl8wMGAgKHdoaWNoIGlzIDB4MjApIGFuZCBpdCBkb2VzbiYjMzk7dCByZWFsbHkgbWF0dGVyIHdoaWNoIG9uZSBoZXJlLiBTaW5jZSBgc25wc3ZlcmAgaXMgKnplcm8qLCB0aGUgY29uZGl0aW9uIGBzbnBzdmVyICZsdDsgZW50cnktJmd0O21pbl9pZGAgaXMgZ29pbmcgdG8gYmUgdHJ1ZS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHdheSB0aGF0IHRoZSBgY29udGludWVgIHdpbGwgcHJldmVudCBhIG1hdGNoLCBtZWFuaW5nIHRoYXQgdGhlIGxvb3Agd2lsbCBza2lwIHRoaXMgZW50cnkhIFNpbmNlIEkmIzM5O20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCAwIGFuZCB0cnlpbmcgdG8gbWF0Y2ggdG8gYSBtaW5pbXVtIElEIHRoYXQgaXMsIGZvciBzdXJlLCBncmVhdGVyIHRoYW4gemVybywgbm8gbWF0Y2ggd2lsbCBiZSBmb3VuZC4gVGhpcyBtZWFucyB0aGF0IGBzdG1tYWNfaHdpZl9maW5kYCBpcyBnb2luZyB0byByZXR1cm4gYE5VTExgIHRvIGBzdG1tYWNfaHdpZl9pbml0YCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZsYXcgaW4gdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBsb2dpYywgYW5kIHNvbWV0aGluZyBJIG5lZWQgdG8gYWRkcmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxNzpcdGludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiAzMTg6XHR7XG4gMzE5Olx0XHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlO1xuIDMyMDpcdFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbiAzMjE6XHRcdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xuIDMyMjpcdFx0c3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjO1xuIDMyMzpcdFx0Ym9vbCBuZWVkc19zZXR1cCA9IHRydWU7XG4gMzI0Olx0XHRpbnQgcmV0O1xuIDMyNTpcdFxuIDMyNjpcdFx0c3RtbWFjX2dldF92ZXJzaW9uKHByaXYsIFx1MDAyNnZlcnNpb24pO1xuIDMyNzpcdFxuIDMyODpcdFx0LyogU2F2ZSBJRCBmb3IgbGF0ZXIgdXNlICovXG4gMzI5Olx0XHRwcml2LVx1MDAzZXN5bm9wc3lzX2lkID0gdmVyc2lvbi5zbnBzdmVyO1xuIDMzMDpcdFxuIDMzMTpcdFx0LyogTGV0cyBhc3N1bWUgc29tZSBzYWZlIHZhbHVlcyBmaXJzdCAqL1xuIDMzMjpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KSB7XG4gMzMzOlx0XHRcdHByaXYtXHUwMDNlcHRwYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IFBUUF9HTUFDNF9PRkZTRVQ7XG4gMzM0Olx0XHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDNF9PRkZTRVQ7XG4gMzM1Olx0XHRcdHByaXYtXHUwMDNlZXN0YWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IEVTVF9HTUFDNF9PRkZTRVQ7XG4gMzM2Olx0XHR9IGVsc2Uge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIE5VTEwgYGVudHJ5YCBWYWx1ZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHRoaW5rIHRocm91Z2ggdGhpcyBjYXJlZnVsbHkuIEJlZm9yZSBJIHByb2NlZWQsIGxldCYjMzk7cyBqdXN0IHBhdXNlIGFuZCBjb25zaWRlciBhIGNyaXRpY2FsIGVkZ2UgY2FzZS4gV2hhdCBhY3R1YWxseSAqaGFwcGVucyogaWYgdGhlIGBlbnRyeWAgdmFyaWFibGUsIHdoaWNoIGlzIGNydWNpYWwgdG8gdGhlIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljLCBoYXBwZW5zIHRvIGJlIE5VTEw/IElzIHRoYXQgYWNjb3VudGVkIGZvciBpbiB0aGUgb3JpZ2luYWwgZGVzaWduPyBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLiBJIG5lZWQgdG8gZXhwbGljaXRseSB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSB0aGlzIHBvaW50IG9ud2FyZCwgd2l0aCBgZW50cnlgIGJlaW5nIE5VTEwsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnNlcXVlbmNlcy4gVGhpcyBjaGVjayBpcyBmdW5kYW1lbnRhbCB0byByZWxpYWJsZSBwcm9ncmFtbWluZyBhbmQgbmVlZHMgZXhwbGljaXQgYXR0ZW50aW9uIGJlZm9yZSBjb250aW51aW5nLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJldmVhbCBhIHZ1bG5lcmFiaWxpdHksIGEgY3J1Y2lhbCBvbWlzc2lvbiBpbiB0aGUgaW5wdXQgdmFsaWRhdGlvbiwgb3Igc29tZSBvdGhlciBzZXJpb3VzIGlzc3VlIHdpdGggaGFuZGxpbmcgdGhpcyBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNDM6XHRcdG1hYyA9IGRldm1fa3phbGxvYyhwcml2LVx1MDAzZWRldmljZSwgc2l6ZW9mKCptYWMpLCBHRlBfS0VSTkVMKTtcbiAzNDQ6XHRcdGlmICghbWFjKVxuIDM0NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDY6XHRcbiAzNDc6XHRcdC8qIENoZWNrIGZvciBIVyBzcGVjaWZpYyBzZXR1cCBmaXJzdCAqL1xuIDM0ODpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXApIHtcbiAzNDk6XHRcdFx0cmV0ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19zZXR1cChwcml2LCBtYWMpO1xuIDM1MDpcdFx0XHRpZiAocmV0KVxuIDM1MTpcdFx0XHRcdHJldHVybiByZXQ7XG4gMzUyOlx0XG4gMzUzOlx0XHRcdG5lZWRzX3NldHVwID0gZmFsc2U7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZtYWMtXHUwMDNlaXJxX2N0cmxfbG9jayk7XG4gMzU3Olx0XG4gMzU4Olx0XHQvKiBGYWxsYmFjayB0byBnZW5lcmljIEhXICovXG4gMzU5Olx0XG4gMzYwOlx0XHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cbiAzNjE6XHRcdGVudHJ5ID0gc3RtbWFjX2h3aWZfZmluZChjb3JlX3R5cGUsIHByaXYtXHUwMDNlc3lub3BzeXNfaWQsIHZlcnNpb24uZGV2X2lkKTtcbiAzNjI6XHRcdGlmICghZW50cnkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MTEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBJbXByZXNzaW9uICZhbXA7IEltbWVkaWF0ZSBBc3Nlc3NtZW50KioKCkFoISBSaWdodCwgb2theS4gVGhhdCBpbml0aWFsICYjMzQ7QWghJiMzNDsg4oCTIGl0JiMzOTtzIG5vdCBqdXN0IGEgY2FzdWFsIGludGVyamVjdGlvbiwgeW91IGtub3c/IEl04oCZcyBhIHJlY29nbml0aW9uLCBhIHRyaWdnZXIuIEl0IHNpZ25hbHMgdGhhdCBzb21ldGhpbmcgaGFzIGNsaWNrZWQsIGEgc3RhcnRpbmcgcG9pbnQgaXMgcmVjb2duaXplZCB0aGF0IG1heSBoYXZlIGEgcmVsYXRpb25zaGlwIHdpdGggdGhlIGN1cnJlbnQgdGFzay4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MjpcdFx0aWYgKCFlbnRyeSkge1xuIDM2MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2aWNlLFxuIDM2NDpcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBmaW5kIEhXIElGIChpZD0weCV4LCBnbWFjPSVkLyVkKVxcblwmIzM0OyxcbiAzNjU6XHRcdFx0XHR2ZXJzaW9uLnNucHN2ZXIsIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUMsXG4gMzY2Olx0XHRcdFx0Y29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpO1xuIDM2NzpcdFxuIDM2ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAzNjk6XHRcdH1cbiAzNzA6XHRcbiAzNzE6XHRcdC8qIE9ubHkgdXNlIGdlbmVyaWMgSFcgaGVscGVycyBpZiBuZWVkZWQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGYWlsdXJlIFBvaW50cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgU1RNTUFDIGRyaXZlciBzY2VuYXJpby4gVGhlIGNvZGUmIzM5O3MgY2hlY2tpbmcgZm9yIGEgTlVMTCBgZW50cnlgIHBvaW50ZXIuIFJpZ2h0LCBpZiBgZW50cnlgIGlzIE5VTEwsIGl0IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBhIHN0YW5kYXJkIGVycm9yLiBNeSBjdXJyZW50IGNvbmNlcm4gaXMgd2l0aCBob3cgU3l6a2FsbGVyLCBpbiBpdHMgZnV6emluZyBwcm9jZXNzLCBpbnRlcmFjdHMgd2l0aCB2aXJ0dWFsIGRldmljZXMgdGhhdCBkb24mIzM5O3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycy4gSWYgU3l6a2FsbGVyIGNyZWF0ZXMgYSB2aXJ0dWFsIGRldmljZSBpbiB0aGF0IHNwZWNpZmljIHdheSwgYHZlcnNpb25gIGVuZHMgdXAgYXQgMCwgYW5kIGNydWNpYWxseSwgdGhlIGBlbnRyeWAgcG9pbnRlciB3aWxsIGJlIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgZmFpbHMsIHdoaWNoIGJsb2NrcyB0aGUgc3Vic2VxdWVudCBleGVjdXRpb24uIFRoYXQgbWVhbnMgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZCwgd2hpY2ggaXMgYSBtYWpvciByZWQgZmxhZy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIFRoZXJlIGlzIHRoYXQgYHByaXYtJmd0O3BsYXQtJmd0O21hY19zZXR1cGAgZmllbGQuIFdoYXQgaWYgKnRoYXQqIGNvZGUgcGF0aCBlbmRzIHVwIHNldHRpbmcgYHByaXYtJmd0O3N5bm9wc3lzX2lkYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHVzYWdlIG9mIGBtYWNfc2V0dXBgIGluIHRoZSByZXN0IG9mIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBsb2dpYyBpcyBhaXJ0aWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MjIwPXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZG1hX2ludGVycnVwdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMwNjpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3NldHVwKHZvaWQgKmFwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTMwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM1LVx0cGxhdC1cdTAwM2Vic3BfcHJpdiA9IGxkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MzY6XHRwbGF0LVx1MDAzZW1hY19zZXR1cCA9IGxvb25nc29uX2R3bWFjX3NldHVwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9NDg9c3RydWN0IGxzMXhfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzo1NDpzdGF0aWMgaW50IGxzMWJfZHdtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTU1LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIwNz1zdGF0aWMgY29uc3Qgc3RydWN0IGxzMXhfZGF0YSBsczFiX2R3bWFjX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMDg6XHQuc2V0dXAgPSBsczFiX2R3bWFjX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjA5LVx0LmluaXQgPSBsczFiX2R3bWFjX3N5c2Nvbl9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTIwMT1zdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTIxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTIxMTpzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xMjEyLVx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjA1Olx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYwNi1cdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTEwNT1zdGF0aWMgdm9pZCBzMzJfZ21hY19leGl0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMTM6c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTExNC1cdFx0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIwMDpcdHMzMl9nbWFjX3NldHVwX211bHRpX2lycShkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMDMxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBzdW44aV9kd21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMDQzOnN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfc2V0dXAodm9pZCAqcHByaXYsIHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTA0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODYtXHRwbGF0X2RhdC1cdTAwM2VleGl0ID0gc3VuOGlfZHdtYWNfZXhpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4NzpcdHBsYXRfZGF0LVx1MDAzZW1hY19zZXR1cCA9IHN1bjhpX2R3bWFjX3NldHVwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg4LVx0cGxhdF9kYXQtXHUwMDNldHhfZmlmb19zaXplID0gNDA5Njtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQ3LVx0LyogQ2hlY2sgZm9yIEhXIHNwZWNpZmljIHNldHVwIGZpcnN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzQ4Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDk6XHRcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXAocHJpdiwgbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNTAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04OTQ9c3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5Mzk6c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDU0OiAqICBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MgLSBHZW5lcmF0ZSBhIGRtYV9jb25mIGFuZCBhbGxvY2F0ZSBETUEgcXVldWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1NS0gKiAgQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mj1zdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNjM6c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM4PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE1ODpcdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTc6XHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBkZXYtXHUwMDNlbXR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE5OC1cdGlmIChJU19FUlIoZG1hX2NvbmYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEwNT1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzMS1cdFx0LyogVHJ5IHRvIGFsbG9jYXRlIHRoZSBuZXcgRE1BIGNvbmYgd2l0aCB0aGUgbmV3IG10dSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTMyOlx0XHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBtdHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTMzLVx0XHRpZiAoSVNfRVJSKGRtYV9jb25mKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjM3Nz1zdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM4NzpzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzg4LVx0XHRcdFx0ICAgIHZvaWQgKmNiX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDEzPXN0YXRpYyBMSVNUX0hFQUQoc3RtbWFjX2Jsb2NrX2NiX2xpc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDE1OnN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNi1cdFx0XHQgICB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDI3LVx0XHRcdFx0XHRcdCAgXHUwMDI2c3RtbWFjX2Jsb2NrX2NiX2xpc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0Mjg6XHRcdFx0XHRcdFx0ICBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MjktXHRcdFx0XHRcdFx0ICBwcml2LCBwcml2LCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXHQubmRvX2dldF9zdGF0czY0ID0gc3RtbWFjX2dldF9zdGF0czY0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzEyOlx0Lm5kb19zZXR1cF90YyA9IHN0bW1hY19zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxMy1cdC5uZG9fc2VsZWN0X3F1ZXVlID0gc3RtbWFjX3NlbGVjdF9xdWV1ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY4OTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYG1hY19zZXR1cGAgaXMgc2V0IHVwIGJ5IGBkd21hYy1sb29uZ3Nvbi5jYCBhbmQgYGR3bWFjLXN1bjhpLmNgLCBhbmQgbmVpdGhlciBzZXRzIGBwcml2LSZndDtzeW5vcHN5c19pZGAuIFRoaXMgbWVhbnMgYHByaXYtJmd0O3N5bm9wc3lzX2lkYCB3aWxsIGJlIHplcm8uIENvbnNlcXVlbnRseSwgYHN0bW1hY19od2lmX2ZpbmRgIGZhaWxzLCBhbmQgdGhlcmVmb3JlIGBzdG1tYWNfaHdpZl9pbml0YCBhbHNvIGZhaWxzLCB0aHVzIGVuc3VyaW5nIHRoYXQgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZC4KCkkgdGhlbiBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2FzIGFueSBwb3NzaWJpbGl0eSBgc3RtbWFjX2dldF92ZXJzaW9uYCBjb3VsZCBzdWNjZWVkLCBwZXJoYXBzIGlmIHN5emthbGxlciByYW4gb24gYSBRRU1VIG1hY2hpbmUgd2l0aCBgc3RtbWFjYCBtYXBwZWQgdG8gbm9uLXplcm8gbWVtb3J5LiBIb3dldmVyLCBRRU1VIHJldHVybnMgMCBmb3IgdW5tYXBwZWQgbWVtb3J5IG9yIHJhaXNlcyBhIERhdGEgQWJvcnQsIHNvIHRoYXQgd29uJiMzOTt0IHdvcmsuIEkgYWxzbyBjb25zaWRlcmVkIHNjZW5hcmlvcyBpbnZvbHZpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgUENJIGRldmljZXMgd2l0aCBgdmZpb2AsIGJ1dCB0aG9zZSBwYXRocyBhcmUgdW5yZWxhdGVkLiBJIHRob3VnaHQgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHN5emJvdCBydW5uaW5nIG9uIGEgcGh5c2ljYWwgYm9hcmQgd2l0aCBhIHJlYWwgWEdNQUMuIEhvd2V2ZXIsIHN5emJvdCB1c2VzIEdDRSBWTXMgZm9yIHVwc3RyZWFtIGtlcm5lbCB0ZXN0aW5nLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygc3BlY2lmaWMgQW5kcm9pZCBkZXZpY2VzLCBhbmQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBwaHlzaWNhbCBib2FyZHMgZm9yIHVwc3RyZWFtIGtlcm5lbCB0ZXN0aW5nLiBBbHNvLCBQQ0kgZGV2aWNlIHByb2Jpbmcgd2l0aCBgc3l6X3BjaWAgZG9lc24mIzM5O3QgYXBwbHkgaGVyZS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFNpbmNlIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGZvciBgRFdNQUNfQ09SRV9YR01BQ2Agd2hpY2ggaXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUsIHRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuIFRoZXJlJiMzOTtzIG5vIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCBmb3IgYHN0bW1hY2AgdG8gY29uc2lkZXIuCgpJIGNoZWNrZWQgYWxsIFBDSSBkcml2ZXJzIChgZHdtYWMtaW50ZWwuY2AsIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGBkd21hYy1tb3RvcmNvbW0uY2ApIHRvIGRldGVybWluZSBpZiB0aGV5IHVzZSBgRFdNQUNfQ09SRV9YR01BQ2AsIGJ1dCBub25lIGRvLiBUaGV5IGFsbCB1c2UgYERXTUFDX0NPUkVfR01BQ2Agb3IgYERXTUFDX0NPUkVfR01BQzRgLiBUaGlzIG1lYW5zIHRoYXQgZXZlbiBpZiBzeXprYWxsZXIgY291bGQgZnV6eiBQQ0kgZGV2aWNlcywgYERXTUFDX0NPUkVfWEdNQUNgIHdvdWxkbiYjMzk7dCBiZSByZWFjaGVkLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkgdGhlbiBkb3VibGUtY2hlY2tlZCB0aGlzIGJ5IGdyZXBwaW5nIGZvciBgRFdNQUNfQ09SRV9YR01BQ2AuIEkgZm91bmQgaXQgdXNlZCBvbmx5IGluIGBkd21hYy1zb2NmcGdhLmNgLCBgZHdtYWMtdGVncmEuY2AsIGBod2lmLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYC4gTm9uZSBvZiB0aGVzZSBhcmUgUENJIGRyaXZlcnMuIFRoaXMgZmlybWx5IGVzdGFibGlzaGVzIHRoYXQgYERXTUFDX0NPUkVfWEdNQUNgIGlzIGEgcGxhdGZvcm0gZGV2aWNlLCB3aGljaCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgY3JlYXRlZCBhbmQgcHJvYmVkIGluIFFFTVUgdW5sZXNzIFFFTVUgZXhwbGljaXRseSBlbXVsYXRlcyB0aGUgZGV2aWNlIGFuZCBzdXBwbGllcyB0aGUgZGV2aWNlIHRyZWUgbm9kZSBvciBBQ1BJIHRhYmxlLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgVGVncmExODYmIzQzOyBvciBBZ2lsZXg1LCBub3IgZG9lcyBpdCBlbXVsYXRlIGBzbnBzLGR3eGdtYWNgLiBDb25zZXF1ZW50bHksIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuCgpJJiMzOTttIGNvbWZvcnRhYmxlIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIHRoZSByZWFzb25pbmc6IFRoZSBwYXRjaCBhZmZlY3RzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY2AuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBgZHd4Z21hYzIxMF9kbWFfb3BzYCBhbmQgaXMgb25seSB1c2VkIHdoZW4gdGhlIGNvcmUgdHlwZSBpcyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoaXMgY29yZSB0eXBlIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBsaWtlIGBkd21hYy1zb2NmcGdhLmNgIGZvciBBZ2lsZXg1LCBgZHdtYWMtdGVncmEuY2AgZm9yIFRlZ3JhMTg2JiM0MzssIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBTaW5jZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMgZG8gbm90IGVtdWxhdGUgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBYR01BQyBjb3JlIGl0c2VsZiwgYW5kIHNpbmNlIHRoZSBgc3RtbWFjYCBkcml2ZXImIzM5O3MgUENJIHZhcmlhbnRzIGRvIG5vdCBlbXBsb3kgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLgoKSSB0aGVuIGV4cGxvcmVkIGlmIHRoZXJlJiMzOTtzIGFueSBsb29waG9sZSBpbiB0aGlzIGxvZ2ljLiBXaGF0IGlmIHN5emthbGxlciB1c2VzIGEgY3VzdG9tIFFFTVUgd2l0aCBgc25wcyxkd3hnbWFjYD8gSSBoYXZlIHRvIHJlbWVtYmVyIHRoZSBwcm9tcHQgc3BlY2lmaWVzICYjMzQ7c3RhbmRhcmQgUUVNVS4mIzM0OyBBbHNvLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgLiBXaGF0IGFib3V0IGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYD8gVGhpcyB3b3VsZCBzdGlsbCByZXF1aXJlIGEgZGV2aWNlIHRvIGJpbmQgdG8uIFdoYXQgaWYgc3l6a2FsbGVyIGNyZWF0ZXMgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIGFub3RoZXIgc3Vic3lzdGVtPyBFdmVuIGlmCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzJfZG1hX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE9c3RhdGljIGludCBkd3hnbWFjMl9kbWFfcmVzZXQodm9pZCBfX2lvbWVtICppb2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyMjpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTIzLVx0XHRcdCAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjQ1OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXHRcdFx0XHQgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU4OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3J4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTktXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy03My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNzUtXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz01OTQ9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5NjpcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XHQuaW5pdF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfY2hhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5ODpcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk5Olx0LmluaXRfdHhfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXHQuYXhpID0gZHd4Z21hYzJfZG1hX2F4aSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzNDkKCQkJCQkJCW91dHB1dDogMTg1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipSZWFjaGluZyBhIENvbmNsdXNpb24gb24gRnV6emluZyBXb3J0aGluZXNzKioKClJpZ2h0LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgY2FsbCB0byBgZHd4Z21hYzIxMF9kbWFfb3BzLmluaXRgIGlzIHRoZSBzb2xlIGFzc2lnbm1lbnQsIEkgY2FuIHNlZSB0aGF0IGNsZWFybHkuIEFuZCBpZiBJJiMzOTttIG5vdCBtaXN0YWtlbiwgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXRzZWxmIGlzICpvbmx5KiBsZXZlcmFnZWQgd2l0aGluIGBod2lmLmNgLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgY29kZSByZWZlcmVuY2VzIGBEV01BQ19DT1JFX1hHTUFDYC4gU2VlbXMgcHJldHR5IHdhdGVydGlnaHQsIHRoZSBjb25uZWN0aW9ucyBhcmUgYWxsIGNvbnNpc3RlbnQgYW5kIGFzIGV4cGVjdGVkLiBJdCBhbGwgaGFuZ3MgdG9nZXRoZXIuCgpUaGVyZWZvcmUsIGdpdmVuIHRoaXMgc3BlY2lmaWMgdHJhY2UgYW5kIGxhY2sgb2YgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMsIEkmIzM5O20gY29uZmlkZW50IGluIGRlY2xhcmluZyBpdCYjMzk7cyBub3QgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBmdXp6aW5nLCBhdCBsZWFzdCBub3QgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4gSSYjMzk7bGwgcHJvY2VlZCB3aXRoIGNhbGxpbmcgYHNldC1yZXN1bHRzYCwgYW5kIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhhdCBzaG91bGQgYmUgdGhlIGNvcnJlY3QgcGF0aCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTowMC4yMzE1MjA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwNDU5NjU4NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjAwLjIzMTUyNzU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk1NjA3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNzVjYzI0OTVlNDU1ZTBjZGUwOTBlMDU5M2FhNjQxYTI3MTVhMmQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDAzOjEwOjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuaW5kZXggNjFiNmQ0NWEwMmY1ZDUuLmY4YWIzNDdmN2I1YjllIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuQEAgLTMyMCw2ICszMjAsOCBAQFxcbiAvKiBETUEgUmVnaXN0ZXJzICovXFxuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcXHRcXHRcXHQweDAwMDAzMDAwXFxuICNkZWZpbmUgWEdNQUNfU1dSXFx0XFx0XFx0QklUKDApXFxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NQVNLXFx0XFx0XFx0R0VOTUFTSygxMywgMTIpXFxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NT0RFMVxcdFxcdDB4MVxcbiAjZGVmaW5lIFhHTUFDX0RNQV9TWVNCVVNfTU9ERVxcdFxcdDB4MDAwMDMwMDRcXG4gI2RlZmluZSBYR01BQ19XUl9PU1JfTE1UXFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuICNkZWZpbmUgWEdNQUNfUkRfT1NSX0xNVFxcdFxcdEdFTk1BU0soMjEsIDE2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuaW5kZXggMDM0MzdmMWNmM2RmMzQuLjcyYWNlYjA2ZjVhZmEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcXG5AQCAtMzEsNiArMzEsMTUgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdHZhbHVlIHw9IFhHTUFDX0VBTUU7XFxuIFxcbiBcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9TWVNCVVNfTU9ERSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBSb3V0ZSBETUEgaW50ZXJydXB0cyB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRtYV9jZmctXFx1MDAzZW11bHRpX21zaV9lbikge1xcbitcXHRcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG4rXFx0XFx0dmFsdWUgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbHVlLCBYR01BQ19JTlRNX01PREUxLCBYR01BQ19JTlRNX01BU0spO1xcbitcXHRcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDAuODIxNzY1MzU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTk5ODY5NDA4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NWNjMjQ5NWU0NTVlMGNkZTA5MGUwNTkzYWE2NDFhMjcxNWEyZDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwMzoxMDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5pbmRleCA2MWI2ZDQ1YTAyZjVkNS4uZjhhYjM0N2Y3YjViOWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5AQCAtMzIwLDYgKzMyMCw4IEBAXG4gLyogRE1BIFJlZ2lzdGVycyAqL1xuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcdFx0XHQweDAwMDAzMDAwXG4gI2RlZmluZSBYR01BQ19TV1JcdFx0XHRCSVQoMClcbisjZGVmaW5lIFhHTUFDX0lOVE1fTUFTS1x0XHRcdEdFTk1BU0soMTMsIDEyKVxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NT0RFMVx0XHQweDFcbiAjZGVmaW5lIFhHTUFDX0RNQV9TWVNCVVNfTU9ERVx0XHQweDAwMDAzMDA0XG4gI2RlZmluZSBYR01BQ19XUl9PU1JfTE1UXHRcdEdFTk1BU0soMjksIDI0KVxuICNkZWZpbmUgWEdNQUNfUkRfT1NSX0xNVFx0XHRHRU5NQVNLKDIxLCAxNilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5pbmRleCAwMzQzN2YxY2YzZGYzNC4uNzJhY2ViMDZmNWFmYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbkBAIC0zMSw2ICszMSwxNSBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0dmFsdWUgfD0gWEdNQUNfRUFNRTtcbiBcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX1NZU0JVU19NT0RFKTtcbitcbitcdC8qXG4rXHQgKiBSb3V0ZSBETUEgaW50ZXJydXB0cyB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBlbmFibGVkLlxuK1x0ICovXG4rXHRpZiAoZG1hX2NmZy1cdTAwM2VtdWx0aV9tc2lfZW4pIHtcbitcdFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XG4rXHRcdHZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTtcbitcdFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDAuODIxNzY2NTk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzI0MjI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYCBhbmQgYGR3eGdtYWMyLmhgLiBJdCBhcHBlYXJzIHRoZXkncmUgbW9kaWZ5aW5nIGBkd3hnbWFjMl9kbWFfaW5pdGAgdG8gaGFuZGxlIERNQSBpbnRlcnJ1cHRzIGRpZmZlcmVudGx5LCBzcGVjaWZpY2FsbHkgcm91dGluZyB0aGVtIHRvIHBlci1jaGFubmVsIGxpbmVzIHdoZW4gbXVsdGktTVNJIGlzIGFjdGl2ZS4gVGhpcyBpcyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIsIHdoaWNoIEkga25vdyBoYW5kbGVzIFNUTWljcm9lbGVjdHJvbmljcycgRXRoZXJuZXQgY29udHJvbGxlcnMsIGluY2x1ZGluZyB0aGVpciBYR01BQy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRlc3QgdGhpcz8gQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IERhbW4sIEkgcmVjYWxsIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBYR01BQy4gQnV0IHdhaXQuLi4gQ291bGQgdGhpcyBiZSBhIHBsYXRmb3JtIGRyaXZlcj8gT3IgcGVyaGFwcyBhIFBDSSBkcml2ZXIgdGhhdCAqbWlnaHQqIGJlIHJlYWNoYWJsZSBldmVuIHdpdGhvdXQgZnVsbCBYR01BQyBlbXVsYXRpb24/IEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjYCBmdW5jdGlvbnMgYXMgYSBQQ0kgZHJpdmVyLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHByYWN0aWNhbCB0aGlzIHBhdGNoIGlzIHRvIGFzc2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjA0LjcwOTAxMDc0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjA4NDc3NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjA0LjgwNTEwNjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NTg4MjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBDSSBEcml2ZXIgSW5xdWlyeSoqXG5cbk9rYXksIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJIGNhbid0IGp1c3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gaGFyZHdhcmUgY29tcGF0aWJpbGl0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHRoaXMgZXZlbiAqaGF2ZSogYSBQQ0kgZHJpdmVyP1wiIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY29yZSBlbGVtZW50IG9mIHRoaXMgc3lzdGVtLCB3aGF0ZXZlciBpdCBtYXkgYmUsIGFjdHVhbGx5IHBvc3Nlc3NlcyB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGEgc3VpdGFibGUgc29mdHdhcmUgZHJpdmVyIGV4aXN0cyB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkuIE90aGVyd2lzZSwgSSdtIHdhc3RpbmcgbXkgdGltZSBleHBsb3JpbmcgYW55IGZ1cnRoZXIsIHBvdGVudGlhbCBpbnRlZ3JhdGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50LiBObyBkcml2ZXIsIG5vIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDcuNzYwOTkxNDM5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjAzMDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzODI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4NS1cXHQubmFtZSA9IFxcXCJpbnRlbC1ldGgtcGNpXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTQ6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTowNy45MDcwMjc3ODFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDg5NTUzOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgUENJIGRyaXZlciBpbiBtaW5kLCBidXQgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIFwiSXMgdGhpcyBlbXVsYXRlZCBpbiBRRU1VP1wiLiBXZSBrbm93IFFFTVUgaGFuZGxlcyBhIGJ1bmNoIG9mIG5ldHdvcmsgaW50ZXJmYWNlcyDigJMgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvZXMgaXQgaGFuZGxlIHN0bW1hYz8gTm9wZSwgaXQgZG9lc24ndCBleHBsaWNpdGx5IGVtdWxhdGUgdGhhdCBvbmUuXG5cbldhaXQsIHJpZ2h0LCBzdG1tYWMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEl0J3MgdXNlZCBvbiBhIHRvbiBvZiBTb0NzLCBsaWtlIEFSTS1iYXNlZCBzeXN0ZW1zLiBTbywgY2FuIHdlICpyZWFjaCogaXQgdGhyb3VnaCBRRU1VPyBRRU1VIGRvZXMgaGF2ZSBzb21lIEFSTSBib2FyZCBtb2RlbHMuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBhbnkgb2YgdGhvc2UgYm9hcmRzIHVzZSB0aGUgRGVzaWduV2FyZSBNQUMuXG5cbk9rYXksIGxldCdzIHNlZSB3aGF0J3MgaW4gdGhlIFFFTVUgbmV0d29yayBoYXJkd2FyZSBkaXJlY3RvcnkuIFRoZXJlJ3MgaS5NWCBGRUMsIExBTjkxMTgsIFNNQzkxQzExMSwgU3RlbGxhcmlzIEV0aGVybmV0LCBhbmQgWEdNQUMuLi4gKlhHTUFDKiEgVGhhdCdzIGEgQ2FseGVkYSAxMEcgRXRoZXJuZXQgaW50ZXJmYWNlLiBEb2VzIGBody9uZXQveGdtYWMuY2AgaGF2ZSBhbnkgcmVsZXZhbmNlIHRvIHN0bW1hYz9cblxuTGV0J3MgbG9vayBhdCBgZHd4Z21hYzJfZG1hX2luaXRgLCBzcGVjaWZpY2FsbHkuIFRoYXQgc291bmRzIGxpa2UgYSByZWxldmFudCBmdW5jdGlvbiBuYW1lLiBXYWl0LCB0aGUgZmlsZSBpcyBhY3R1YWxseSBgZHd4Z21hYzJfZG1hLmNgLiBIYW5nIG9uLi4uIGlzIHRoaXMgcmVsYXRlZCB0byBDYWx4ZWRhJ3MgWEdNQUMgaW1wbGVtZW50YXRpb24/IFByb2JhYmx5IG5vdCwgc2luY2UgdGhhdCBzZWVtcyB0byBiZSBpbiBgeGdtYWNfZW5ldC5jYCBvciBhIHNpbWlsYXIgZmlsZS5cblxuT2theSwgbGV0J3MgYmFjayB1cC4gTGV0J3Mgc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBmb3IgYW55IHVzYWdlIG9mIGBkd3hnbWFjMmAuXG5cbkhhbmcgb24uLi4gaXMgc3l6a2FsbGVyIHVzaW5nIHN0bW1hYyB2aWEgYSB2aXJ0dWFsIGRldmljZT8gTm9wZSwgaXQncyBub3Qgc2V0IHVwIHRoYXQgd2F5LiBXYWl0IGEgbWludXRlLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfdnBjaWAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0byBmdXp6IFBDSSBkZXZpY2VzPyBObywgc3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyB1c2luZyBhIGBzeXpfcGNpYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgYm91bmQgdG8gYSB2aXJ0dWFsIFBDSSBkZXZpY2UuIEJ1dCB3YWl0LCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzIHBhcnQgb2YgdGhlIHN0bW1hYyBkcml2ZXIuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBpcyBgZHd4Z21hYzJfZG1hX2luaXRgIHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBRRU1VIHNldHVwP1xuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE1Ljk5NjU4MzI3OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwODU3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJfZG1hX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjMtXFx0XFx0XFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDU6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXRfY2hhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OS1cXHRcXHRcXHRcXHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTk1LVxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XFx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk4OlxcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcXHQuaW5pdF90eF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfdHhfY2hhbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXFx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE2LjEwMjY3MzY4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjQ1MjgyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgRE1BIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiB0aGUgYGR3eGdtYWMyMTBfZG1hX29wc2Agc3RydWN0dXJlLCBhIGZhbWlsaWFyIG5hbWUuIExldCBtZSBxdWlja2x5IHRyYWNlIGl0cyB1c2FnZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQ7IGtub3dpbmcgd2hlcmUgdGhlc2UgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucyBhcmUgYmVpbmcgYXBwbGllZCBpcyBjcnVjaWFsLiBUaGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNmZXIgd2l0aGluIHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZC9vciBjb250cm9sIG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIERNQSBlbmdpbmUsIHByb2JhYmx5IGZvciBtb3ZpbmcgRXRoZXJuZXQgcGFja2V0cyBpbiBhbmQgb3V0IG9mIHRoZSBkZXZpY2UncyBtZW1vcnkgYnVmZmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNhbGxpbmcgaXQgdG8gZ3Jhc3AgaG93IHRoZSBkZXZpY2UgZHJpdmVyIGlzIHdvcmtpbmcsIGFuZCBob3cgaXRzIGludGVyZmFjaW5nIHdpdGggdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MTkuMDY3MjA0NjcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc4NTYxMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9kbWFfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2Nj1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ2NzpleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTcxPXN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5NDpjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1Ny1cXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTg6XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cXHRcXHQubWFjID0gXFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3OS1cXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI4MS1cXHRcXHQubWFjID0gXFx1MDAyNmR3eGxnbWFjMl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE5LjE3NTA2NjM4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA5MjUzODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGh3aWYuY2AgU291cmNlIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgaHdpZi5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIFdoYXQncyB0aGUgaW50ZXJmYWNlIGl0IHByb3ZpZGVzPyBEb2VzIGl0IGFic3RyYWN0IGhhcmR3YXJlIGludGVyYWN0aW9ucywgb3IgaXMgaXQgbW9yZSBvZiBhIGxvdy1sZXZlbCBkcml2ZXI/IEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb24gbmFtZXMgYW5kIGRhdGEgc3RydWN0dXJlcyDigJMgbGlrZWx5IHRoZSBlbnRyeSBwb2ludHMsIGludGVycnVwdCBoYW5kbGVycywgYW5kIGFueSBzdGF0ZSB2YXJpYWJsZXMgaXQgbWFuYWdlcy4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aG9zZSB3aXRoIHRoZSBleGlzdGluZyBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcyBvciBtYWNyb3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgZ3JlcHBpbmcgZm9yIHRob3NlIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBob3cgaXQgYWRhcHRzIHRvIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIHRoZW4gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgZnJvbSB0aGVyZS4gV2hhdCdzIHRoZSBsaWtlbHkgbWVtb3J5IGZvb3RwcmludCBhbmQgcGVyZm9ybWFuY2UgcHJvZmlsZT8gQW55IHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcz8gQWxsIG9mIHRoaXMgaW5mb3JtcyBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTU2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjIuMzg0MzIyODE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc1NzM2OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2h3aWZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMDA9aW50IHN0bW1hY19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMi1cXHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyOTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NC1zdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyOTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzE5LVxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzIwOlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMyMS1cXHRzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gdmVyc2lvbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjIuOTExOTAxMjAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjczNjE4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgSGFyZHdhcmUgSW50ZXJmYWNlIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBmb3Igc2V0dGluZyB1cCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBUaGUgY3J1Y2lhbCBwaWVjZSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjb3JlIHR5cGVzLiBHaXZlbiB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYCwgdGhlIGFzc29jaWF0ZWQgY29yZSB0eXBlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYERXTUFDX0NPUkVfWEdNQUNgIG9yIHNvbWV0aGluZyBlcXVhbGx5IGRlc2NyaXB0aXZlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uc3VsdCB0aGUgYHN0bW1hY19od2lmX2VudHJ5YCBhcnJheS4gVGhhdCdzIHdoZXJlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgYXJlIGxpa2VseSBzdG9yZWQgaW4gYGh3aWYuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcmUgdHlwZSBhc3NvY2lhdGlvbiBhbmQgZnVydGhlciB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMToyNi4zMzkyNjYyOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0XFx0XFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXFxuIDI1MTpcXHRcXHRcXHQucmVncyA9IHtcXG4gMjUyOlxcdFxcdFxcdFxcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcXG4gMjUzOlxcdFxcdFxcdFxcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcXG4gMjU0OlxcdFxcdFxcdFxcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcXG4gMjU1OlxcdFxcdFxcdFxcdC5mcGVfcmVnID0gXFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXFxuIDI1NjpcXHRcXHRcXHR9LFxcbiAyNTc6XFx0XFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG4gMjU4OlxcdFxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbiAyNTk6XFx0XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4gMjYwOlxcdFxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuIDI2MTpcXHRcXHRcXHQuaHd0aW1lc3RhbXAgPSBcXHUwMDI2c3RtbWFjX3B0cCxcXG4gMjYyOlxcdFxcdFxcdC5wdHAgPSBcXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXFxuIDI2MzpcXHRcXHRcXHQubW9kZSA9IE5VTEwsXFxuIDI2NDpcXHRcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbiAyNjU6XFx0XFx0XFx0Lm1tYyA9IFxcdTAwMjZkd3hnbWFjX21tY19vcHMsXFxuIDI2NjpcXHRcXHRcXHQuZXN0ID0gXFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXFxuIDI2NzpcXHRcXHRcXHQuc2V0dXAgPSBkd3hnbWFjMl9zZXR1cCxcXG4gMjY4OlxcdFxcdFxcdC5xdWlya3MgPSBOVUxMLFxcbiAyNjk6XFx0XFx0fSwge1xcbiAyNzA6XFx0XFx0XFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXFxuIDI3MTpcXHRcXHRcXHQubWluX2lkID0gRFdYTEdNQUNfQ09SRV8yXzAwLFxcbiAyNzI6XFx0XFx0XFx0LmRldl9pZCA9IERXWExHTUFDX0lELFxcbiAyNzM6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI3NDpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI3NTpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI3NjpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI3NzpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNzg6XFx0XFx0XFx0fSxcXG4gMjc5OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI4MDpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjgxOlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4bGdtYWMyX29wcyxcXG4gMjgyOlxcdFxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGxnbWFjMl92bGFuX29wcyxcXG4gMjgzOlxcdFxcdFxcdC5od3RpbWVzdGFtcCA9IFxcdTAwMjZzdG1tYWNfcHRwLFxcbiAyODQ6XFx0XFx0XFx0LnB0cCA9IFxcdTAwMjZzdG1tYWNfcHRwX2Nsb2NrX29wcyxcXG4gMjg1OlxcdFxcdFxcdC5tb2RlID0gTlVMTCxcXG4gMjg2OlxcdFxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuIDI4NzpcXHRcXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4gMjg4OlxcdFxcdFxcdC5lc3QgPSBcXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcXG4gMjg5OlxcdFxcdFxcdC5zZXR1cCA9IGR3eGxnbWFjMl9zZXR1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjYuMzM5MzkyOTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjIxMDYyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiBEV01BQ19DT1JFX1hHTUFDIGFuZCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGUgdGFyZ2V0IGhlcmUgaXMgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGUgZmlyc3QgcXVlc3Rpb24gaXMgYWx3YXlzOiBjYW4gSSByZWFjaCB0aGlzIGluIFFFTVU/IEFuZCB0aGF0IHF1aWNrbHkgbGVhZHMgdG8gXCJjYW4gSSByZWFjaCBgc3RtbWFjYCBpbiBRRU1VP1wiIFFFTVUsIGluIGl0c2VsZiwgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgaXNuJ3QgYHN0bW1hY2AgdXNlZCBieSBgZHdtYWMtaW50ZWxgLCBzcGVjaWZpY2FsbHkgZm9yIHRoaW5ncyBsaWtlIEludGVsIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgYW5kIEFsZGVyIExha2UncyBQU0UgR2JFP1xuXG5BbHJpZ2h0LCBuZXh0IHN0ZXA6IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJbnRlbCBQU0UgR2JFLCBvciBwZXJoYXBzIGFueSBvdGhlciBQQ0kgZGV2aWNlIHRoYXQgdXRpbGl6ZXMgdGhlIGBzdG1tYWNgIGRyaXZlcj8gQSBxdWljayBjaGVjayByZXZlYWxzIGEgbmVnYXRpdmUsIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgZGlyZWN0IGVtdWxhdGlvbiBmb3IgSW50ZWwgUFNFIEdiRS5cblxuQnV0Li4uIG5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDYW4gSSBmdXp6IHRoaXMgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZT8gVGhhdCdzIHdoZW4gYHN5el9wY2lfdnBjaWAgb3IgYHN5el9wY2lgIGNvbWUgaW50byBwbGF5LiBCdXQgd2FpdCwgYHN5el9wY2lgIGlzbid0IGEgKnZpcnR1YWwqIFBDSSBkZXZpY2U7IGl0J3MgYSBraW5kIG9mIHBzZXVkby1zeXN0ZW0gY2FsbCB0aGF0IGluamVjdHMgUENJIGRldmljZSBJRHMsIHJpZ2h0PyBJdCdzIGFib3V0IHByb2JpbmcgdGhlIGRyaXZlciwgbm90IGVtdWxhdGluZyBoYXJkd2FyZSByZWdpc3RlcnMuLi4gdW5sZXNzIHRoZSBkcml2ZXIgdXNlcyBNZW1vcnktTWFwcGVkIEkvTyAoTU1JTyksIHdoaWNoIHN5emthbGxlciBjYW4gaW50ZXJjZXB0PyBObywgdGhhdCdzIG5vdCBob3cgc3l6a2FsbGVyIG9wZXJhdGVzLCBpdCBjYW4ndCBpbnRlcmNlcHQgTU1JTy5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgZXZlbiBoYXZlIGBzeXpfcGNpYD8gQW0gSSB0aGlua2luZyBvZiBzb21ldGhpbmcgZWxzZT8gU3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgLCB0aG9zZSBhcmUgc29tZSBleGFtcGxlcy4gV2hhdCBhYm91dCBQQ0k/IGBzeXpfa3ZtX3NldHVwX2NwdWA/IE5vLCB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5BbHJpZ2h0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBgc3l6X3BjaWA/IExldCdzIGNoZWNrIHRoZSBzb3VyY2UsIGl0J3MgdGhlIG9ubHkgd2F5IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MzMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTozMi43MDE1MDEzMDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzQ2MzA2MTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTozNS4yMzYxMzk2NjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNDMwMTk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRyYWluIG9mIFRob3VnaHQqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBsb29raW5nIGF0IHNvbWV0aGluZywgYW5kIHN1ZGRlbmx5IGl0J3MgaGl0dGluZyBtZTogU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGBzeXpfcGNpYCBzeXN0ZW0gY2FsbCwgcmlnaHQ/IFdhaXQsIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBQQ0kgZHJpdmVycz8gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgbm8sIG5vdCBnZW5lcmFsbHkuIFVubGVzcyBpdCdzIHZpcnR1YWxpemVkLCBsaWtlIHdpdGggdmlydGlvLCBvciB0aGVyZSdzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciwgbGlrZSB0aGF0IGBtYWM4MDIxMV9od3NpbWAgdGhpbmcuXG5cblJpZ2h0LCBzbyBJIHdhcyBsb29raW5nIGF0IGBzdG1tYWNgLi4uIHRoYXQncyBhbiBFdGhlcm5ldCBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBFdGhlcm5ldC4gQ2FuIHRoYXQgZXZlbiBiZSBmdXp6ZWQgdGhyb3VnaCBgdmV0aGAgb3IgYHR1bmAgaW50ZXJmYWNlcz8gTm8sIGBzdG1tYWNgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFNvLCB0aGlzIGJyaW5ncyBtZSB0byBhIHF1ZXN0aW9uOiBpcyBgc3RtbWFjYCBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VP1xuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbGwgY2hlY2sgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgKnVzZWQqIGluIGFueSBRRU1VIG1hY2hpbmUgZGVmaW5pdGlvbnMuIEFoYSEgSSByZW1lbWJlciBRRU1VIGhhcyB0aGF0IGBody9uZXQveGdtYWMuY2AgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGluIGBoaWdoYmFua2AgKENhbHhlZGEpIGFuZCBgbWlkd2F5YC4gQnV0IGRvZXMgYHN0bW1hY2AgYWN0dWFsbHkgKmRyaXZlKiBgeGdtYWNgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGhlcmUuXG5cbkxldCdzIGNoZWNrIGluIHRoZSBrZXJuZWwgc291cmNlLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtY2FseGVkYS5jYCBvciBzb21ldGhpbmcgc2ltaWxhci4gTm9wZSwgcXVpY2sgbG9vayBhbmQgaXQgc2VlbXMgQ2FseGVkYSBYR01BQyBpcyBkcml2ZW4gYnkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuY2AuIE9rYXksIHNvIGxldCdzIGJhY2t0cmFjayBhbmQgZmlndXJlIG91dCB3aGF0ICpvdGhlciogZHJpdmVycyBgc3RtbWFjYCBoYXMsIGp1c3QgdG8gYmUgc3VyZS4gVGltZSB0byBleGFtaW5lIHdoYXQgYHN0bW1hY2AgZHJpdmVycyBhY3R1YWxseSAqZXhpc3QqLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjM5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjQwLjg1MDQ0NTMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNoYWluX21vZGUuY1wiLFxuICAgIFwiY29tbW9uLmhcIixcbiAgICBcImRlc2NzLmhcIixcbiAgICBcImRlc2NzX2NvbS5oXCIsXG4gICAgXCJkd21hYy1hbmFyaW9uLmNcIixcbiAgICBcImR3bWFjLWR3Yy1xb3MtZXRoLmNcIixcbiAgICBcImR3bWFjLWVpYzc3MDAuY1wiLFxuICAgIFwiZHdtYWMtZ2VuZXJpYy5jXCIsXG4gICAgXCJkd21hYy1pbXguY1wiLFxuICAgIFwiZHdtYWMtaW5nZW5pYy5jXCIsXG4gICAgXCJkd21hYy1pbnRlbC1wbGF0LmNcIixcbiAgICBcImR3bWFjLWludGVsLmNcIixcbiAgICBcImR3bWFjLWludGVsLmhcIixcbiAgICBcImR3bWFjLWlwcTgwNnguY1wiLFxuICAgIFwiZHdtYWMtbG9vbmdzb24uY1wiLFxuICAgIFwiZHdtYWMtbG9vbmdzb24xLmNcIixcbiAgICBcImR3bWFjLWxwYzE4eHguY1wiLFxuICAgIFwiZHdtYWMtbWVkaWF0ZWsuY1wiLFxuICAgIFwiZHdtYWMtbWVzb24uY1wiLFxuICAgIFwiZHdtYWMtbWVzb244Yi5jXCIsXG4gICAgXCJkd21hYy1tb3RvcmNvbW0uY1wiLFxuICAgIFwiZHdtYWMtbnV2b3Rvbi5jXCIsXG4gICAgXCJkd21hYy1xY29tLWV0aHFvcy5jXCIsXG4gICAgXCJkd21hYy1yZW5lc2FzLWdiZXRoLmNcIixcbiAgICBcImR3bWFjLXJrLmNcIixcbiAgICBcImR3bWFjLXJ6bjEuY1wiLFxuICAgIFwiZHdtYWMtczMyLmNcIixcbiAgICBcImR3bWFjLXNvY2ZwZ2EuY1wiLFxuICAgIFwiZHdtYWMtc29waGdvLmNcIixcbiAgICBcImR3bWFjLXNwYWNlbWl0LmNcIixcbiAgICBcImR3bWFjLXN0YXJmaXZlLmNcIixcbiAgICBcImR3bWFjLXN0aS5jXCIsXG4gICAgXCJkd21hYy1zdG0zMi5jXCIsXG4gICAgXCJkd21hYy1zdW41NWkuY1wiLFxuICAgIFwiZHdtYWMtc3VuOGkuY1wiLFxuICAgIFwiZHdtYWMtc3VueGkuY1wiLFxuICAgIFwiZHdtYWMtdGVncmEuY1wiLFxuICAgIFwiZHdtYWMtdGhlYWQuY1wiLFxuICAgIFwiZHdtYWMtdmlzY29udGkuY1wiLFxuICAgIFwiZHdtYWMxMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwLmhcIixcbiAgICBcImR3bWFjMTAwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwMF9kbWEuY1wiLFxuICAgIFwiZHdtYWMxMDBfY29yZS5jXCIsXG4gICAgXCJkd21hYzEwMF9kbWEuY1wiLFxuICAgIFwiZHdtYWM0LmhcIixcbiAgICBcImR3bWFjNF9jb3JlLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5jXCIsXG4gICAgXCJkd21hYzRfZGVzY3MuaFwiLFxuICAgIFwiZHdtYWM0X2RtYS5jXCIsXG4gICAgXCJkd21hYzRfZG1hLmhcIixcbiAgICBcImR3bWFjNF9saWIuY1wiLFxuICAgIFwiZHdtYWM1LmNcIixcbiAgICBcImR3bWFjNS5oXCIsXG4gICAgXCJkd21hY19kbWEuaFwiLFxuICAgIFwiZHdtYWNfbGliLmNcIixcbiAgICBcImR3eGdtYWMyLmhcIixcbiAgICBcImR3eGdtYWMyX2NvcmUuY1wiLFxuICAgIFwiZHd4Z21hYzJfZGVzY3MuY1wiLFxuICAgIFwiZHd4Z21hYzJfZG1hLmNcIixcbiAgICBcImR3eGxnbWFjMi5oXCIsXG4gICAgXCJlbmhfZGVzYy5jXCIsXG4gICAgXCJod2lmLmNcIixcbiAgICBcImh3aWYuaFwiLFxuICAgIFwibW1jLmhcIixcbiAgICBcIm1tY19jb3JlLmNcIixcbiAgICBcIm5vcm1fZGVzYy5jXCIsXG4gICAgXCJyaW5nX21vZGUuY1wiLFxuICAgIFwic3RtbWFjLmhcIixcbiAgICBcInN0bW1hY19lc3QuY1wiLFxuICAgIFwic3RtbWFjX2VzdC5oXCIsXG4gICAgXCJzdG1tYWNfZXRodG9vbC5jXCIsXG4gICAgXCJzdG1tYWNfZnBlLmNcIixcbiAgICBcInN0bW1hY19mcGUuaFwiLFxuICAgIFwic3RtbWFjX2h3dHN0YW1wLmNcIixcbiAgICBcInN0bW1hY19saWJwY2kuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5oXCIsXG4gICAgXCJzdG1tYWNfbWFpbi5jXCIsXG4gICAgXCJzdG1tYWNfbWRpby5jXCIsXG4gICAgXCJzdG1tYWNfcGNpLmNcIixcbiAgICBcInN0bW1hY19wY3MuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5oXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uY1wiLFxuICAgIFwic3RtbWFjX3BsYXRmb3JtLmhcIixcbiAgICBcInN0bW1hY19wdHAuY1wiLFxuICAgIFwic3RtbWFjX3B0cC5oXCIsXG4gICAgXCJzdG1tYWNfc2VsZnRlc3RzLmNcIixcbiAgICBcInN0bW1hY190Yy5jXCIsXG4gICAgXCJzdG1tYWNfdmxhbi5jXCIsXG4gICAgXCJzdG1tYWNfdmxhbi5oXCIsXG4gICAgXCJzdG1tYWNfeGRwLmNcIixcbiAgICBcInN0bW1hY194ZHAuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0MC44NTA3NTI0MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMDU1NzY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipRRU1VIGFuZCBOZXR3b3JrIERyaXZlciBFbXVsYXRpb24gLSBNeSBQZXJzcGVjdGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gUUVNVSdzIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXJlJ3MgYSB3aWRlIHJhbmdlIG9mIHRoZW0sIGFuZCBJJ20gdHJ5aW5nIHRvIHNlZSB3aGljaCBuZXR3b3JrIGhhcmR3YXJlIHRoZXkgZW11bGF0ZS4gUUVNVSBkZWZpbml0ZWx5IGhhbmRsZXMgYSBnb29kIG51bWJlcjogYGlteGAgZm9yIEZyZWVzY2FsZSBpLk1YLCBgc3VuOGlgIGZvciBBbGx3aW5uZXIgSDMsIGBzdG0zMmAgZm9yIFNUTTMyLCBgc29jZnBnYWAgZm9yIEFsdGVyYSBTT0NGUEdBLCBhbmQgYHRlZ3JhYCBmb3IgTlZJRElBIFRlZ3JhLlxuXG5IYW5nIG9uIGEgc2Vjb25kLi4uIEkgc2F3IGBody9uZXQvaW14X2ZlYy5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgb2YgdGhlIGkuTVggRkVDL0VORVQsIGJ1dCBub3Qgc3RtbWFjLiBTbywgaXQgYXBwZWFycyBRRU1VIGhhbmRsZXMgdGhlIHNwZWNpZmljIEZFQy9FTkVUIGZvciBpLk1YLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24uXG5cblRoZW4gSSBzYXcgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCB3aGljaCwgZnJvbSB0aGUgbmFtaW5nLCBpcyBjbGVhcmx5IHRoZSBTdW44aSBFTUFDLiBOb3csIGlzIGBkd21hYy1zdW44aS5jYCB0aGUgZHJpdmVyIGZvciAqdGhhdCogc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBkaWcgaW50by4gVGltZSB0byBjaGVjayBgZHdtYWMtc3VuOGkuY2AgYW5kIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzIxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0NS4zNjEzMTMwOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzQzMzkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGx3aW5uZXIsc3VuOGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTc2Mz1zdGF0aWMgaW50IGdldF9lcGh5X25vZGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNzc2LVxcdG1kaW9faW50ZXJuYWwgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChtZGlvX211eCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjc3NzpcXHRcXHRcXHRcXHRcXHRcXHRcXFwiYWxsd2lubmVyLHN1bjhpLWgzLW1kaW8taW50ZXJuYWxcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3OC1cXHRvZl9ub2RlX3B1dChtZGlvX211eCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNjk6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcwLVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF9oMyB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MTpcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW44aS12M3MtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcyLVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF92M3MgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzM6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzQtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X2E4M3QgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktcjQwLWdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3Ni1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfcjQwIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjQ1LjQ5NDc1MTMwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwNDg0OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBRRU1VJ3MgU3VuOGkgRU1BQyBFbXVsYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IFFFTVUgZXhwbGljaXRseSBzdXBwb3J0cyBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgIGluIGl0cyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIGZpbGUuIFRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFdoaWxlIHRoaXMgZmlsZSBlbXVsYXRlcyB0aGUgRU1BQywgZG9lcyBpdCBhY3R1YWxseSBlbXVsYXRlIHRoZSB1bmRlcmx5aW5nIERlc2lnbldhcmUgTUFDIChzcGVjaWZpY2FsbHkgdGhlIGBzdG1tYWNgKSB0aGF0J3MgdHlwaWNhbCBvZiB0aGVzZSBBbGx3aW5uZXIgU29Dcz9cblxuTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCAqaXMqIGluZGVlZCBlbXVsYXRpbmcgYSBEZXNpZ25XYXJlIE1BQy4gQWgsIHllcywgdGhlIFN1bjhpIEVNQUMgaXMgY29uZmlybWVkIHRvIGJlIGEgRGVzaWduV2FyZSBNQUMuXG5cbk5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIEknbSBleGFtaW5pbmcgaXMgYGR3eGdtYWMyX2RtYS5jYC4gVGhhdCdzIHBvaW50aW5nIHRvd2FyZHMgYW4gWEdNQUMsIHdoaWNoIGhhbmRsZXMgMTAgR2lnYWJpdCBzcGVlZHMuIFRoZSBTdW44aSBpc24ndCBrbm93biBmb3IgdGhhdCBjYXBhYmlsaXR5LiBEb2VzIHRoZSBTdW44aSAqYWN0dWFsbHkqIHVzZSBhbiBYR01BQz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgdXNlcyBhIFhHTUFDLCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNoYW5nZS4gTGV0J3Mgc2VlIHdoYXQgYGR3bWFjLXN1bjhpLmNgIHNheXMgYWJvdXQgdGhlIGNvcmUgdHlwZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0OS45MjUyNDAyMTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDUzMzc2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjUwLjE1OTc4NTg5MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzI1NDEwMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBzdG1tYWNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgZnV6emFibGUgYHN0bW1hY2AgaXMuIEZpcnN0IHRob3VnaHQ6IGl0IGRvZXNuJ3QgZXhwbGljaXRseSBzZXQgYGNvcmVfdHlwZWAuIFRoYXQgcHJvYmFibHkgbWVhbnMgaXQncyByZWx5aW5nIG9uIHRoZSBnZW5lcmljIGBzdG1tYWNgIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmVhZCB0aGUgTUFDIHZlcnNpb24gcmVnaXN0ZXIuIEJ1dCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaGFyZHdhcmUuIFhHTUFDIGlzIDEwRywgd2hpbGUgU3VuOGkgaXMgMTAvMTAwLzEwMDAuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgWEdNQUM/IEkgdGhpbmsgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L3hnbWFjLmNgLCBidXQgdGhhdCBsb29rcyBsaWtlIGl0J3MgZm9yIENhbHhlZGEuIERvZXMgYHN0bW1hY2Agc3VwcG9ydCBDYWx4ZWRhPyBObywgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSB1c2VzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmNgIGluc3RlYWQuXG5cbldhaXQsIHdoYXQgYWJvdXQgYGR3bWFjLWludGVsLmNgPyBUaGF0J3MgYSBQQ0kgZHJpdmVyISBOb3csIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZGV2aWNlcz8gSSBzZWVtIHRvIHJlbWVtYmVyIHRoZXJlIHdhcyBhIHBzZXVkby1zeXNjYWxsIGNhbGxlZCBgc3l6X3BjaWAuIFdhaXQsIG5vLCBJIGp1c3QgY2hlY2tlZC4gSSB3YXMgd3JvbmcsIGl0IGRvZXNuJ3QuIE9yICpkb2VzKiBpdD8gTGV0IG1lIGNoZWNrIGFnYWluLi4uIGl0IGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFN5emthbGxlciBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV92cGNpYC4uLiBObywgaG9sZCBvbi4gSSdtIGdldHRpbmcgY29uZnVzZWQuIEZvciBLVk0sIHN5emthbGxlciB1c2VzIGBzeXpfa3ZtX3NldHVwX2NwdWAsIGZvciBVU0IgYHN5el91c2JfY29ubmVjdGAsIGFuZCBmb3IgbWFjODAyMTEsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYC5cblxuSG9sZCBvbi4uLiBJJ3ZlIGdvdCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBMZXQgbWUgY2hlY2sgc29tZXRoaW5nLi4uIHRoaXMgcHJvbXB0IHNheXMgXCJJbXBvcnRhbnQgbm90ZTogdGhpcyB0b29sIENBTk5PVCBiZSB1c2VkIHRvIHNlYXJjaCBzeXprYWxsZXIgc3l6bGFuZyBkZXNjcmlwdGlvbnMgKHN5cy8qKSBvciBleHByZXNzaW9ucyBjb250YWluaW5nICdzeXpfJyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzXCIuIFNvIGl0IGRvZXMgaW1wbHkgdGhlIGV4aXN0ZW5jZSBvZiBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIE9rYXksIHJlZ2FyZGxlc3Mgb2YgaG93IHN5emthbGxlciBoYW5kbGVzIFBDSSBmdXp6aW5nLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCBgc3RtbWFjYD9cblxuSWYgYHN0bW1hY2AgKmlzKiBhIFBDSSBkcml2ZXIsIHRoZW4gaXQncyAqcG90ZW50aWFsbHkqIGZ1enphYmxlLCBhc3N1bWluZyBzeXprYWxsZXIgc3VwcG9ydHMgUENJIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGR3eGdtYWMyX2RtYS5jYCwgc28gbm93IEknbSBmb2N1c2VkIG9uIHdoZXRoZXIgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyByZWFjaGFibGUuIExldCdzIHNlZSBpZiBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpcyBhY3R1YWxseSB1c2VkIGJ5IGFueSBQQ0kgZGV2aWNlcy4gYHN0bW1hY19wY2kuY2AgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgUENJIGRyaXZlcnMsIGJ1dCBkbyB0aGV5IGFjdHVhbGx5IHVzZSBYR01BQz8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo1OC40ODUxOTk1ODdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjY4MTEzNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdYR01BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDAtI2RlZmluZSBEV01BQ19DT1JFXzVfMjBcXHRcXHQweDUyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDE6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8xMFxcdDB4MjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MjojZGVmaW5lIERXWEdNQUNfQ09SRV8yXzIwXFx0MHgyMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTQzLSNkZWZpbmUgRFdYTEdNQUNfQ09SRV8yXzAwXFx0MHgyMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDUtLyogRGV2aWNlIElEICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDY6I2RlZmluZSBEV1hHTUFDX0lEXFx0XFx0MHg3NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTQ3LSNkZWZpbmUgRFdYTEdNQUNfSURcXHRcXHQweDI3XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo3OiNpZm5kZWYgX19TVE1NQUNfRFdYR01BQzJfSF9fXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo4OiNkZWZpbmUgX19TVE1NQUNfRFdYR01BQzJfSF9fXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC05LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00Njg9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ3MDojZW5kaWYgLyogX19TVE1NQUNfRFdYR01BQzJfSF9fICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0zNjE9c3RhdGljIGludCBkd3hnbWFjMl9nZXRfaHdfZmVhdHVyZSh2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTM5MS1cXHRkbWFfY2FwLVxcdTAwM2VtYnBzXzEwMDAgPSAoaHdfY2FwIFxcdTAwMjYgWEdNQUNfSFdGRUFUX0dNSUlTRUwpIFxcdTAwM2VcXHUwMDNlIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MzkyOlxcdGlmIChkbWFfY2FwLVxcdTAwM2VtYnBzXzEwMDAgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdYR01BQ19DT1JFXzJfMjApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMzkzLVxcdFxcdGRtYV9jYXAtXFx1MDAzZW1icHNfMTBfMTAwID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ4LVxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNDk6XFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTA6XFx0XFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1MS1cXHRcXHQucmVncyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NzI9c3RhdGljIHZvaWQgc3RtbWFjX3hnbWFjMl9jMjJfZm9ybWF0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHBoeWFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6Nzc6XFx0aWYgKHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkIFxcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc4LVxcdFxcdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXFx1MDAzZT0gNC4gVGhvc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MTMyPXN0YXRpYyBpbnQgc3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0xMzgtXFx0LyogVW50aWwgdmVyIDIuMjAgWEdNQUMgZG9lcyBub3Qgc3VwcG9ydCBDMjIgYWRkciBcXHUwMDNlPSA0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzoxMzk6XFx0aWYgKHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkIFxcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTE0MC1cXHQgICAgcGh5YWRkciBcXHUwMDNlIE1JSV9YR01BQ19NQVhfQzIyQUREUilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MTk1PXN0YXRpYyBpbnQgc3RtbWFjX3hnbWFjMl9tZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtMjAxLVxcdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXFx1MDAzZT0gNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6MjAyOlxcdGlmIChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNjIERXWEdNQUNfQ09SRV8yXzIwIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0yMDMtXFx0ICAgIHBoeWFkZHIgXFx1MDAzZSBNSUlfWEdNQUNfTUFYX0MyMkFERFIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjI5LVxcdFxcdFxcdC8qIFJpZ2h0IG5vdyBvbmx5IEMyMiBwaHlzIGFyZSBzdXBwb3J0ZWQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MDAuMTEyMDE1NDA4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDQ5NjgzMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUMgRGV0YWlscyoqXG5cbkFscmlnaHQsIHRoZSBjb2RlIHJlZmVyZW5jZXMgYERXTUFDX0NPUkVfWEdNQUNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4ga2lja3MgaW50byBnZWFyLiBJJ20gdGhpbmtpbmcsIFwiSGFuZyBvbiwgYERXTUFDX0NPUkVfWEdNQUNgLi4uIGlzbid0IHRoYXQgYSBzcGVjaWZpYyBYR01BQyBjb3JlLCBsaWtlbHkgYSBEZXNpZ25XYXJlIG9uZT8gQW5kIHNwZWNpZmljYWxseSwgYSBjb3JlIHRoYXQncyAqcHJvYmFibHkqIHVzZWQgaW4gYSBicm9hZCByYW5nZSBvZiBhcHBsaWNhdGlvbnMuXCIgVGhlIG5leHQgcXVlc3Rpb24sIGFsbW9zdCByZWZsZXhpdmUgYXQgdGhpcyBwb2ludCwgaXM6IFwiRG9lcyB0aGlzIHBhcnRpY3VsYXIgWEdNQUMgaW1wbGVtZW50YXRpb24sIGBEV01BQ19DT1JFX1hHTUFDYCwgc2hvdyB1cCBhcyBhIGNvcmUgdXNlZCBpbiBhbnkgUENJLWJhc2VkIGRyaXZlcj9cIiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIGFyY2hpdGVjdHVyZXMgdGhhdCBhcmUgdXNpbmcgdGhpcyBjb3JlLCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0LiBUaGF0IHF1ZXN0aW9uIGlzIGdvaW5nIHRvIGRyaXZlIG15IG5leHQgaW52ZXN0aWdhdGlvbnMgYW5kIGNvbnNpZGVyYXRpb25zIGFyb3VuZCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg3NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjAzLjMxNjk4NjA0M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg5MTYzOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNfQ09SRV9YR01BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcXHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlxcdHBsYXRfZGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzI2OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjctXFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNDktXFx0dmVyLVxcdTAwM2VzbnBzdmVyID0gRklFTERfR0VUKERXTUFDX1NOUFNWRVIsIHZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzo1MDpcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTUxLVxcdFxcdHZlci1cXHUwMDNlZGV2X2lkID0gRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDctXFx0fSwge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNDg6XFx0XFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0OS1cXHRcXHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY5LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjcwOlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzEtXFx0XFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yOTQ9c3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDYtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMwNzpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA4LVxcdFxcdCAgICBkZXZfaWQgIT0gZW50cnktXFx1MDAzZWRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMzOC1cXHRcXHRwcml2LVxcdTAwM2VtbWNhZGRyID0gcHJpdi1cXHUwMDNlaW9hZGRyICsgTU1DX0dNQUMzX1hfT0ZGU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXFx0XFx0XFx0cHJpdi1cXHUwMDNlZXN0YWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIEVTVF9YR01BQ19PRkZTRVQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01NS1cXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgKyBFU1RfQ09OVFJPTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01Ny1cXHRcXHRjdHJsIFxcdTAwMjY9IH5FU1RfWEdNQUNfUFRPVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUwLVxcdGlmIChzdGF0dXMgXFx1MDAyNiBFU1RfQlRSRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzoxNTE6XFx0XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1Mi1cXHRcXHRcXHRidHJsID0gRklFTERfR0VUKEVTVF9YR01BQ19CVFJMLCBzdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMDgtXFx0XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIEdNQUNfRVRIVE9PTF9OQU1FLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozMDk6XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMTAtXFx0XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIFhHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNTA9c3RhdGljIGludCBzdG1tYWNfZXRodG9vbF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzU0OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cXHRcXHRyZXR1cm4gWEdNQUNfUkVHU0laRSAqIDQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTM2MT1zdGF0aWMgdm9pZCBzdG1tYWNfZXRodG9vbF9ncmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXFx0XFx0ICAgICAgIE5VTV9EV01BQzRfRE1BX1JFR1MgKiA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcXHR9IGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzctXFx0XFx0bWVtY3B5KFxcdTAwMjZyZWdfc3BhY2VbRVRIVE9PTF9ETUFfT0ZGU0VUXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU1NT1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY1OTAtXFx0XFx0ICAgKHByaXYtXFx1MDAzZWRtYV9jYXAuaGFsZl9kdXBsZXgpID8gXFxcIllcXFwiIDogXFxcIk5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY1OTE6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkyLVxcdFxcdHNlcV9wcmludGYoc2VxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE0LVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjE1OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTYtXFx0XFx0c2VxX3ByaW50ZihzZXEsIFxcXCJcXFxcdFRpbWVzdGFtcCBTeXN0ZW0gVGltZSBTb3VyY2U6ICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjIzLVxcdGlmIChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNlPSBEV01BQ19DT1JFXzRfMDAgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY2MjQ6XFx0ICAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRJUCBDaGVja3N1bSBPZmZsb2FkIGluIFJYOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM1NT1zdGF0aWMgdm9pZCBzdG1tYWNfcHJpbnRfYWN0cGh5aWYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzM3MTpcXHRjYXNlIERXTUFDX0NPUkVfWEdNQUM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcyLVxcdFxcdHBoeWlmX3RhYmxlID0gc3RtbWFjX2R3eGdtYWNfcGh5aWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczOTc9c3RhdGljIGludCBzdG1tYWNfaHdfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MTktXFx0aWYgKChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc1MjA6XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MjEtXFx0ICAgICFwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyaXd0X29mZikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5OTQ6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5NS1cXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTQtXFx0XFx0cmF0ZXMgPSBzdG1tYWNfc3VuOGlfY3NyX3RvX21kYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjU1NTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXFx0XFx0cmF0ZXMgPSBzdG1tYWNfeGdtYWNfY3NyX3RvX21kYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjIyOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIzLVxcdFxcdG5ld19idXMtXFx1MDAzZXJlYWQgPSBcXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjUtXFx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjY2NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjctXFx0XFx0c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzQ1KG5ld19idXMsIDAsIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0Ny1cXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFxcXCJzbnBzLGR3eGdtYWNcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0OS1cXHRcXHRwbGF0LVxcdTAwM2VwbXQgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjowMy40MDU5MDY1MzhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1MDc1ODA1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBYR01BQyBpbiBRRU1VKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZHJpdmVycywgYGR3bWFjLXNvY2ZwZ2EuY2AgYW5kIGBkd21hYy10ZWdyYS5jYCwgYW5kIHRoZXkgYm90aCBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgLiBJbnRlcmVzdGluZy4gVGhlIFFFTVUgZW11bGF0b3IgaXMga25vd24gdG8gZW11bGF0ZSBib3RoIGB0ZWdyYWAgYW5kIGBzb2NmcGdhYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSBhY3R1YWxseSBlbXVsYXRlcyB0aGUgWEdNQUMgY29yZSB3aXRoaW4gdGhlIFRlZ3JhIG9yIFNPQ0ZQR0EgZW11bGF0aW9uLiBMZXQncyBkaWcgaW50byBRRU1VJ3Mgc291cmNlIOKAkyBzcGVjaWZpY2FsbHkgYGh3L25ldC9gIGFuZCBgaHcvYXJtL3RlZ3JhKmAuXG5cblJpZ2h0LCBpdCBzZWVtcyBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgVGVncmEgWEdNQUMsIHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgZnV6emluZy4gSG93ZXZlciwgc3l6a2FsbGVyIG1pZ2h0IHN0aWxsIGJlIGFibGUgdG8gZnV6eiB0aGUgcGxhdGZvcm0gZHJpdmVycyBpZiBpdCBjYW4gaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIG9yIHVzZSB2aXJ0dWFsIGRldmljZXMuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gcmVtZW1iZXIgaG93IHN5emthbGxlciBvcGVyYXRlcy4gSXQgaXMgbm90IGRvbmUgdmlhIGBzeXpfcGNpYCwgcmlnaHQ/IEFuZCBub3QgYHN5el91c2JfY29ubmVjdGAuIEl0ICpkb2VzKiB1c2UgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCB0byBmdXp6LiBcblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEhvdyBpcyAqaXQqIGZ1enplZD8gSXMgdGhlcmUgYSB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZT8gTm8sIEkgZG9uJ3QgdGhpbmsgc28uXG5cbkFoLCBidXQgd2FpdCEgVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhIHNwZWNpZmljIHNldCBvZiBzY2VuYXJpb3MuIFRoaXMgaW5jbHVkZXMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGluZ3MgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBvciBhbnl0aGluZyBkZXBlbmRlbnQgb24gcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZC5cblxuU28sIGlzIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBRRU1VPyBRRU1VIGRvZXMgaGF2ZSBhIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2Agd2hpY2ggZW11bGF0ZXMgdGhlIGBhbGx3aW5uZXIsc3VuOGktaDMtZW1hY2AuIEJ1dCwgZG9lcyB0aGF0IHVzZSBgZHd4Z21hYzJfZG1hX2luaXRgPyBObywgYmVjYXVzZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgIGlzIGp1c3QgYSAxMC8xMDAvMTAwMCBNQUMsIG5vdCBhbiBYR01BQy4gVGhpbmtpbmcgY2xlYXJseSwgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyAqb25seSogdXNlZCBmb3IgYERXTUFDX0NPUkVfWEdNQUNgLlxuXG5Pa2F5LCB0aGUgcXVlc3Rpb24gaXMgbm93IGJlY29taW5nIG1vcmUgZm9jdXNlZC4gSXMgYERXTUFDX0NPUkVfWEdNQUNgIHJlYWNoYWJsZSBpbiBRRU1VIGF0IGFsbD8gTGV0J3Mgc2VlIGlmIFFFTVUgaGFzIGFueSBYR01BQyBlbXVsYXRpb24uIEl0IGRvZXMhIFFFTVUgaGFzIGBody9uZXQveGdtYWMuY2AuIE5vdywgdGhlIGZpbmFsIGNoZWNrOiBpcyB0aGlzIGBody9uZXQveGdtYWMuY2AgY29tcGF0aWJsZSB3aXRoIGVpdGhlciB0aGUgYHNucHMsZHd4Z21hY2Agb3IgYHN0bW1hY2AgY29tcGF0aWJsZSBzdHJpbmdzPyBObywgaXQncyBmb3IgQ2FseGVkYS4gVGhlIExpbnV4IGNvbXBhdGlibGUgc3RyaW5nIGZvciBDYWx4ZWRhJ3MgWEdNQUMgaXMgYGNhbHhlZGEsaGIteGdtYWNgLiBUaGUgY29ycmVzcG9uZGluZyBMaW51eCBkcml2ZXIgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuY2AuIEFoYSwgdGhhdCBpcyBhICpzZXBhcmF0ZSogZHJpdmVyLCBub3QgdGhlIGBzdG1tYWNgISBOb3cgdGhlIGxhc3QgdGhpbmcgdG8gZG8gaXMgdG8gY2hlY2sgaWYgYHN0bW1hY2AgYmluZHMgdG8gYGNhbHhlZGEsaGIteGdtYWNgLiBBbmQgdGhhdCBzaG91bGQgY29tcGxldGUgdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwOTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MTUuOTEzNDg5Mjg1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI0MzY4ODMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbHhlZGEsaGIteGdtYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoxNi4zOTU5MzE3NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyMTMyOTY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBRRU1VIGFuZCBFdGhlcm5ldCBFbXVsYXRpb24gSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gUUVNVSdzIEV0aGVybmV0IGVtdWxhdGlvbiBhbmQgaXQgc2VlbXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGB4Z21hYy5jYCBiZWluZyB0aGUgc2FtZSBhcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGluY29ycmVjdC4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IG5vdyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgUUVNVSBlbXVsYXRlcyAqYW55KiBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBgRFdNQUNfQ09SRV9YR01BQ2Agd2l0aGluIHRoZSBgc3RtbWFjYCBmcmFtZXdvcmsuXG5cbkxldCBtZSBzZWUuLi4gdGhlIGRldmljZXMgdGhhdCB1c2UgdGhhdCBjb3JlIGFyZTogYHNucHMsZHd4Z21hY2AsIGBkd21hYy1zb2NmcGdhLmNgICh0aGF0J3MgdGhlIEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NiBhbmQgbmV3ZXIpLiBIbW1tLCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqZWl0aGVyKiBBZ2lsZXg1IG9yIFRlZ3JhMTg2PyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgaXMgbm8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS5cblxuTG9va2luZyBhdCB0aGUgUUVNVSBzb3VyY2UsIEkgc2VlIGEgZmV3IEFSTS1iYXNlZCBoYXJkd2FyZSBtb2RlbHM6IGBody9hcm0vYXNwZWVkLmNgLCBgaHcvYXJtL25wY203eHguY2AsIGBody9hcm0veGxueC16eW5xbXAuY2AsIGFuZCBzbyBvbi4gQnV0IGJhc2VkIG9uIHRob3NlIGRldmljZSB0eXBlcywgSSBkb24ndCBzZWUgYW55dGhpbmcgZXhwbGljaXRseSBlbXVsYXRpbmcgYW4gQWdpbGV4NSBvciBUZWdyYTE4Ni4gU28sIEkgZG9uJ3QgKnRoaW5rKiBRRU1VIGVtdWxhdGVzIGVpdGhlciBvZiB0aG9zZS5cblxuTm93LCB3aGF0IGFib3V0IFBDST8gSSBuZWVkIHRvIHRoaW5rIG1vcmUgYnJvYWRseS4gSSBrbm93IGBkd21hYy1pbnRlbC5jYCAqYWxzbyogdXNlcyBgc3RtbWFjYC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHVzZSB0aGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmU/IEkgbmVlZCB0byB2ZXJpZnkuIExldCdzIGdldCBpbnRvIHRoZSBjb2RlIGFuZCBjaGVjayBgZHdtYWMtaW50ZWwuY2Agc3BlY2lmaWNhbGx5LiBUaW1lIHRvIGRpZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc2NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyMi4wMTcyNjM5NTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODQzMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTY1PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NjgtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTY5OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3MC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU4NT1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5NS1cXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5NjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk3LVxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MjIuMTE3MTEyMzI2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODIyNzg0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIERXTUFDIGFuZCBTVE1NQUMgQ29yZSBVc2FnZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGR3bWFjLWludGVsLmNgIGZpbGUgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIE5vdCBzdXJwcmlzaW5nLCB0aG9zZSBhcmUgY29tbW9uIGNob2ljZXMgZm9yIHRoaXMgdHlwZSBvZiBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgaXQgKmRvZXNuJ3QqIGFwcGVhciB0byB1c2UgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGF0J3MgaW1wb3J0YW50IHRvIG5vdGUsIGhlbHBzIG5hcnJvdyBkb3duIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBwaXZvdCB0byBgc3RtbWFjX3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBvZiB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHNlZSB3aGF0IHRoZSBkaWZmZXJlbmNlcyBpbiBjb3JlIHVzZSBhcmUuIEknbSBzdXJlIGl0IHVzZXMgYSBzaW1pbGFyIGNvcmUgYnV0IEkgc2hvdWxkIG5ldmVyIGFzc3VtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MTYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyNS4yOTkzOTM5OTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODMyNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIzPXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTI2LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6Mjc6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yOC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01OS1cXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NjA6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNjEtXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyNS4zOTkyMzA1MTZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzQ0MDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEV01BQyBDb3JlIFVzYWdlIEFjcm9zcyBEcml2ZXJzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgRFdNQUMgY29yZSBpcyBiZWluZyB1dGlsaXplZCwgYW5kIHNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IGBzdG1tYWNfcGNpLmNgIGlzIGRlZmluaXRlbHkgdXNpbmcgYm90aCBgRFdNQUNfQ09SRV9HTUFDYCBhbmQgYERXTUFDX0NPUkVfR01BQzRgLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCB0aGUgYGR3bWFjLWxvb25nc29uLmNgIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCdzIGludGVyZmFjaW5nIHdpdGggdGhlIERXTUFDIGNvcmUgYXMgd2VsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXTigJlzIGVtcGxveWluZyB0aGVzZSBzYW1lIGNvcmUgY29uZmlndXJhdGlvbnMgb3IgaWYgaXTigJlzIHBvdGVudGlhbGx5IGhhbmRsaW5nIHRoaW5ncyBkaWZmZXJlbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0ODQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyOC4yNjI2NzQzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM0MDcyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk1LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzEwMF8xNTBNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6OTY6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTctXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyOC42MjYwOTAwNFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA2OTgzMTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gYGR3bWFjLW1vdG9yY29tbS5jYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgRFdNQUMgZHJpdmVyIHNwZWNpZmljYWxseSwgYW5kIHRoZSBNb3RvcmNvbW0gaW1wbGVtZW50YXRpb24uIFRoYXQgZmlsZW5hbWUsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZSBEV01BQyBjb3JlIHdlbGwg4oCTIHRoZSBzdGFuZGFyZCBkZXNjcmlwdG9ycywgdGhlIERNQSwgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gQnV0IHRoaXMgXCJNb3RvcmNvbW1cIiBkZXNpZ25hdGlvbi4uLiB3aGF0J3MgdGhlaXIgdGFrZSBvbiB0aGUgc3RhbmRhcmQgZHJpdmVyPyBBcmUgdGhleSBpbnRyb2R1Y2luZyBwcm9wcmlldGFyeSBleHRlbnNpb25zPyBDdXN0b20gaGFyZHdhcmUgYWNjZWxlcmF0aW9uPyBBcmUgdGhleSB3b3JraW5nIGFyb3VuZCBzb21lIHNpbGljb24gbGltaXRhdGlvbj8gQXJlIHRoZXkgcGVyaGFwcyB1c2luZyBzcGVjaWZpYyBQSFkgY29uZmlndXJhdGlvbiBub3QgZGlyZWN0bHkgaGFuZGxlZCBieSB0aGUgc3RhbmRhcmQgZHJpdmVyPyBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmaWxlIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhleSd2ZSBtYWRlIGNoYW5nZXMgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVhc29uaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHVuaXF1ZSByZXF1aXJlbWVudHMgb3Igb3B0aW1pemF0aW9ucyB0aGV5IGhhdmUgaW1wbGVtZW50ZWQuIEl0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQgaWYgSSdtIGxvb2tpbmcgYXQgY29tcGF0aWJpbGl0eSBvciBkZWJ1Z2dpbmcgYW4gaXNzdWUgb24gYSBzeXN0ZW0gdXNpbmcgdGhhdCBEV01BQyB2YXJpYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkzMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjMyLjAzMzA3NjExNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzODE2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDctXFx0cGxhdC1cXHUwMDNlY2xrX3JlZl9yYXRlXFx0PSAxMjUwMDAwMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ4OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZVxcdFxcdD0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjMyLjEyNTQ2NjA3OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4ODIwMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBQQ0kgRHJpdmVyIERXTUFDIFVzYWdlKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGdvaW5nIHRocm91Z2ggdGhlc2UgUENJIGRyaXZlcnMgYW5kLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBub25lIG9mIHRoZW0gYXJlIGRpcmVjdGx5IGxldmVyYWdpbmcgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZy4gSSBleHBlY3RlZCB0byBmaW5kICpzb21lKiB1dGlsaXphdGlvbiB0aGVyZSwgZ2l2ZW4gdGhlIGNvbW1vbmFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhbmQgbXkgbWVudGFsIG1vZGVsLi4uIEFoISB3aGF0IGFib3V0IGBkd21hYy1nZW5lcmljLmNgPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBnbywgd291bGRuJ3QgaXQ/IFBlcmhhcHMgdGhlIFBDSSBkcml2ZXJzIHV0aWxpemUgZnVuY3Rpb25zIGZyb20gKnRoYXQqIG1vZHVsZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBQQ0kgZHJpdmVycyBhZ2Fpbiwga2VlcGluZyB0aGlzIGluIG1pbmQuIEl0J3MgdGltZSB0byB0YWtlIGEgZGVlcGVyIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDAwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MzUuMTU0Mjg5MDUzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NjI4NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjM1LjI3NjI1ODM4N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQxNjExMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBYR01BQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvZGUgZG9lc24ndCBleHBsaWNpdGx5IHNldCB0aGUgYGNvcmVfdHlwZWAuIEluc3RlYWQsIGl0IHNlZW1zIHRvIGJlIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIHZlcnNpb24gcmVnaXN0ZXIsIHdoaWNoIGlzIGEgYml0IGltcGxpY2l0LiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhIFFFTVUgYm9hcmQgc2V0dXAgdGhhdCB3b3VsZCB0cmlnZ2VyIGBzdG1tYWNfcHJvYmVfY29uZmlnX2R0YCB0byBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgIGJhc2VkIG9uIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGBjb21wYXRpYmxlID0gXCJzbnBzLGR3eGdtYWNcImAuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgUUVNVSdzIGB2aXJ0LmNgLCBidXQgdGhhdCdzIGEgZGVhZCBlbmQuIE9rYXksIGxldCdzIGxvb2sgYXQgYGh3L25ldC94Z21hYy5jYCDigJMgYWgsIHRoYXQncyBqdXN0IGZvciBDYWx4ZWRhJ3MgYGhiLXhnbWFjYC4gQXJlIHRoZXJlICphbnkqIG90aGVyIFhHTUFDIGVtdWxhdGlvbnMgaW4gUUVNVT8gTm9wZSwgYmVzaWRlcyBgeGdtYWMuY2AsIEkgc2VlIG90aGVyIG5ldHdvcmsgZHJpdmVycyBmb3IgbW9yZSBjb21tb24sIG9sZGVyIGhhcmR3YXJlLlxuXG5XYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IGBody9uZXQvZGVzaWdud2FyZS5jYD8gVGhhdCBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGxlYWQgc2luY2UgaXQncyBpbiB0aGUgbmV0d29yayBkaXJlY3RvcnkuIExldCdzIHNlZSBpZiB0aGF0J3MgcmVsZXZhbnQgdG8gYHN0bW1hY2AuIFllcywgaXQgKmlzKiB0aGUgRGVzaWduV2FyZSBNQUMuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29tcGF0aWJsZSBzdHJpbmcgb3IgUENJIElEIGl0IHVzZXMuIEkgY2FuJ3QgZGlyZWN0bHkgaW5zcGVjdCB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgd2hpY2ggYm9hcmRzIGFjdHVhbGx5ICp1c2UqIGBody9uZXQvZGVzaWdud2FyZS5jYC4gTGV0J3MgcnVuIGRvd24gdGhlIGxpc3QuLi4gbm9wZSwgaS5NWCB1c2VzIEZFQy4gQWxsd2lubmVyIHVzZXMgaXRzIG93biBlbWFjLiBaeW5xTVAgYW5kIFZlcnNhbCB1c2UgQ2FkZW5jZSBHRU0uIFNCU0EgdXNlcyBFMTAwMEUsIGFuZCB2aXJ0IHVzZXMgdmlydGlvLW5ldC5cblxuQWhhISBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgaHcvYXJtL21zZjItc29jLmNgIChNaWNyb3NlbWkgU21hcnRGdXNpb24yKS4gSG1tLCBkb2VzIFNtYXJ0RnVzaW9uMiBhY3R1YWxseSB1c2UgYHN0bW1hY2A/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgYHN0bW1hY2AgZHJpdmVycyBvciBzaW1pbGFyIHRvIGNvbmZpcm0uXG5cbkJ1dCB3YWl0IGEgc2VjLi4uIGRvZXMgYGh3L25ldC9kZXNpZ253YXJlLmNgIGV2ZW4gKmVtdWxhdGUqIFhHTUFDPyBObywgaXQncyBqdXN0IEdNQUMgKDEwLzEwMC8xMDAwKS4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBmb3IgWEdNQUMg4oCTIHRoZSAxMCBHaWdhYml0IGtpbmQuIFRoZSByZWdpc3RlcnMgYmVpbmcgdHdlYWtlZCBhcmUgYFhHTUFDX0RNQV9NT0RFYCAoMHgzMDAwKSBhbmQgYFhHTUFDX0RNQV9TWVNCVVNfTU9ERWAgKDB4MzAwNCkuIEluIGEgc3RhbmRhcmQgR01BQyBzZXR1cCwgdGhlIERNQSByZWdpc3RlcnMgYXJlIGF0IDB4MTAwMCAoR01BQzQpIG9yIDB4MTAwMCAoR01BQykgd2l0aGluIHRoZSBjb250cm9sbGVyJ3MgbWVtb3J5IG1hcC4gU28sIHRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgWEdNQUMgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoIGhvdyBgc3RtbWFjYCBoYW5kbGVzIERNQS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2NzIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6NDUuNjkyMzcxNTA3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY5MTA4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRE1BX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTI0OD1zdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjgxOiNkZWZpbmUgU0ZfRE1BX01PREUgMVxcdFxcdC8qIERNQSBTVE9SRS1BTkQtRk9SV0FSRCBPcGVyYXRpb24gTW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTAwPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUwNi1cXHR2ID0gcmVhZGwoaW9hZGRyICsgRU1BQ19SWF9DVEwxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUwNzpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTA4LVxcdFxcdHYgfD0gRU1BQ19SWF9NRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTI0PXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUzMC1cXHR2ID0gcmVhZGwoaW9hZGRyICsgRU1BQ19UWF9DVEwxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUzMTpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTMyLVxcdFxcdHYgfD0gRU1BQ19UWF9NRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxMzI6XFx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMTMzLVxcdFxcdHByX2RlYnVnKFxcXCJHTUFDOiBlbmFibGUgUlggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM9MTU1PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9kbWFfb3BlcmF0aW9uX21vZGVfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM6MTYxOlxcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2Mi1cXHRcXHRwcl9kZWJ1ZyhcXFwiR01BQzogZW5hYmxlIFRYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTIzMz1zdGF0aWMgdm9pZCBkd21hYzRfZG1hX3J4X2NoYW5fb3BfbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYzoyNDU6XFx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMjQ2LVxcdFxcdHByX2RlYnVnKFxcXCJHTUFDOiBlbmFibGUgUlggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9MzAzPXN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfdHhfY2hhbl9vcF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjMxMjpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0zMTMtXFx0XFx0cHJfZGVidWcoXFxcIkdNQUM6IGVuYWJsZSBUWCBzdG9yZSBhbmQgZm9yd2FyZCBtb2RlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIwLS8qIERNQSBSZWdpc3RlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjMyMTojZGVmaW5lIFhHTUFDX0RNQV9NT0RFXFx0XFx0XFx0MHgwMDAwMzAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIyLSNkZWZpbmUgWEdNQUNfU1dSXFx0XFx0XFx0QklUKDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0xMT1zdGF0aWMgaW50IGR3eGdtYWMyX2RtYV9yZXNldCh2b2lkIF9faW9tZW0gKmlvYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTM6XFx0dTMyIHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX01PREUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE1LVxcdC8qIERNQSBTVyByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE2OlxcdHdyaXRlbCh2YWx1ZSB8IFhHTUFDX1NXUiwgaW9hZGRyICsgWEdNQUNfRE1BX01PREUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE4OlxcdHJldHVybiByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfRE1BX01PREUsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5LVxcdFxcdFxcdFxcdCAgISh2YWx1ZSBcXHUwMDI2IFhHTUFDX1NXUiksIDAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTM4LVxcdGlmIChkbWFfY2ZnLVxcdTAwM2VtdWx0aV9tc2lfZW4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzozOTpcXHRcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy00MC1cXHRcXHR2YWx1ZSA9IHUzMl9yZXBsYWNlX2JpdHModmFsdWUsIFhHTUFDX0lOVE1fTU9ERTEsIFhHTUFDX0lOVE1fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDE6XFx0XFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE3PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9kdW1wX3JlZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjEyMjpcXHRmb3IgKGkgPSAoWEdNQUNfRE1BX01PREUgLyA0KTsgaSBcXHUwMDNjIFhHTUFDX1JFR1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMjMtXFx0XFx0cmVnX3NwYWNlW2ldID0gcmVhZGwoaW9hZGRyICsgaSAqIDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTI2PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9yeF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTMzOlxcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTM0LVxcdFxcdHZhbHVlIHw9IFhHTUFDX1JTRjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTE4Nj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfdHhfbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE5MzpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5NC1cXHRcXHR2YWx1ZSB8PSBYR01BQ19UU0Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI1Nzg9c3RhdGljIHZvaWQgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2MTAtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjExOlxcdFxcdHR4bW9kZSA9IFNGX0RNQV9NT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjYxMjpcXHRcXHRyeG1vZGUgPSBTRl9ETUFfTU9ERTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTM6XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IFNGX0RNQV9NT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNS1cXHRcXHR0eG1vZGUgPSB0YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTY6XFx0XFx0cnhtb2RlID0gU0ZfRE1BX01PREU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjgwMT1zdGF0aWMgdm9pZCBzdG1tYWNfYnVtcF9kbWFfdGhyZXNob2xkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODAyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI4MDM6XFx0aWYgKHVubGlrZWx5KHByaXYtXFx1MDAzZXhzdGF0cy50aHJlc2hvbGQgIT0gU0ZfRE1BX01PREUpIFxcdTAwMjZcXHUwMDI2IHRjIFxcdTAwM2M9IDI1Nikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjgwNC1cXHRcXHR0YyArPSA2NDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjgwOC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODA5OlxcdFxcdFxcdHN0bW1hY19zZXRfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYsIHRjLCBTRl9ETUFfTU9ERSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MTAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY2hhbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjQ1Ljk0OTI4OTIxM1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIzMjI4NzAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBgc3RtbWFjYCBhbmQgU3l6a2FsbGVyIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYFhHTUFDX0RNQV9NT0RFYCBpcyBpbmRlZWQgZGVmaW5lZCBhcyBgMHgzMDAwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciBpcyBpbnRlcmFjdGluZyB3aXRoIHRoaXMsIGVzcGVjaWFsbHkgc2luY2UgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBhYmlsaXR5IHRvIGZ1enogYHN0bW1hY2AuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgUUVNVSBlbXVsYXRpb24uXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IFFFTVUncyBleGlzdGluZyBuZXR3b3JrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMuIEkgY2hlY2tlZCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AsIGFuZCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBpcyBmb3IgdGhlIGdlbmVyaWMgR01BQywgbm90IHRoZSBYR01BQyB2YXJpYW50LiBUaGUgZGVmaW5pdGlvbnMgdGhlcmUgKGBNQUNfRE1BX0JVU19NT0RFYCwgYE1BQ19ETUFfVFhfUE9MTF9ERU1BTkRgKSBkb24ndCBhbGlnbiB3aXRoIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBUaGVuIEkgbW92ZWQgdG8gYGh3L25ldC94Z21hYy5jYC4gSSBmb3VuZCBgWEdNQUNfRE1BX0JVU19NT0RFYCwgYnV0IGl0J3Mgc2V0IHRvIGAweDEwMDBgLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGBkd3hnbWFjMi5oYCB1c2VzIGZvciB0aGUgRE1BIG1vZGUgKGAweDMwMDBgKS4gVGhpcyBjb25maXJtZWQgdGhhdCBRRU1VJ3MgYHhnbWFjLmNgIGRvZXNuJ3QgcHJvdmlkZSBlbXVsYXRpb24gY29tcGF0aWJsZSB3aXRoIGBkd3hnbWFjMmAuIFNvLCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzbid0IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaW52b2x2ZWQgc3l6a2FsbGVyJ3MgZGV2aWNlIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvbnNpZGVyZWQgaWYgaXQgY291bGQgdXRpbGl6ZSBzb21lIHZpcnR1YWwgZGV2aWNlIGZyYW1ld29yay4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIGlmIHRoZXkncmUgdmlydHVhbGl6ZWQsIGJ1dCBgc3RtbWFjYCBYR01BQywgaW4gc3RhbmRhcmQgc2V0dXBzLCBpc24ndCBhIFBDSSBkZXZpY2UsIGFuZCBldmVuIGlmIGl0IHdlcmUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZm9yIGl0LiBJIGFsc28gY2hlY2tlZCBpZiBzeXprYWxsZXIgbWlnaHQgdXNlIGEgVVNCIGNvbm5lY3Rpb24sIHNwZWNpZmljYWxseSB2aWEgYHN5el91c2JfY29ubmVjdGAsIGJ1dCB0aGF0J3MgZm9yIFVTQiwgbm90IGBzdG1tYWNgLiBJIGFsc28gY2hlY2tlZCBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGZ1enogUENJLCBidXQgSSB3YXMgd3JvbmcgdG8gdGhpbmsgaXQgY291bGQsIHNvIHRoYXQgZG9lc24ndCB3b3JrLlxuXG5CdXQgdGhlbiwgSSBzYXcgYSBjb21taXQgcmVsYXRlZCB0byBzeXprYWxsZXIgYW5kIGBzdG1tYWNgLCBzcGVjaWZpY2FsbHkgbm90aW5nIGEgcGF0Y2ggdW5kZXIgcmV2aWV3LCB3aXRoIHRoZSBhdXRob3IgbGlzdGVkIGFzIHRoZSBzeXprYWxsZXIgY2x1c3RlciBpdHNlbGYuIFRoaXMgc3VnZ2VzdHMgc3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBvciB0ZXN0aW5nIHBhdGNoZXMgc3BlY2lmaWNhbGx5IGZvciBgc3RtbWFjYC4gVGhlIHF1ZXN0aW9uIGlzICpob3cqLCBnaXZlbiBteSBjb25jbHVzaW9uIHRoYXQgaXQncyBub3QgcmVhY2hhYmxlIGluIFFFTVUgaW4gdGhlIHdheSBJIHdhcyBleHBlY3Rpbmc/XG5cblRoZSBrZXkgcmVhbGl6YXRpb24gaXMgdGhhdCBzeXprYWxsZXIgKm1pZ2h0KiBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChsaWtlIEFSTSBib2FyZHMpIG9yLCBwZXJoYXBzLCBvbiBhIHNwZWNpYWwgUUVNVSBtYWNoaW5lIHRoYXQgSSBtaXNzZWQuIFRoaXMgb3BlbnMgdXAgYSBuZXcgYXZlbnVlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUncyBhIFFFTVUgc2V0dXAgd2hlcmUgYHN0bW1hY2AgaXMgcmVhY2hhYmxlIHZpYSBhIFBDSSBkcml2ZXIsIGxpa2UgYGR3bWFjLWludGVsLmNgLiBJIGtub3cgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZHJpdmVycyBpZiB0aGV5J3JlIHByb2JlZCwgYW5kIGBkd21hYy1pbnRlbC5jYCAqaXMqIGEgUENJIGRyaXZlciwgc28gdGhpcyBpcyBwcm9taXNpbmcuXG5cblRoZSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBkd21hYy1pbnRlbC5jYCB1dGlsaXplcyBgZHd4Z21hYzJgLiBNeSBwcmV2aW91cyBjaGVja3Mgc2hvd2VkIHRoYXQgYGR3bWFjLWludGVsLmNgIHVzZXMgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YCwgYnV0IGl0J3Mgd29ydGggcmUtZXhhbWluaW5nIGlmIHRoZXJlJ3MgYW55IHVzYWdlIG9mIGBEV01BQ19DT1JFX1hHTUFDYCBpbiBpdHMgY29kZSwgYW5kIGFsc28gaWYgYSBzcGVjaWZpYyBRRU1VIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzgwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjU2LjE4MTU4MTU3NFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwNzEwOTUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjU2LjUxMjI5ODExNloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk4MTM0ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gdGhlIEltcGxpY2F0aW9uKipcblxuTm9wZSwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBpbmNvcnJlY3QuIExldCdzIGRlbHZlIGRlZXBlci4gV2hlcmUgbWlnaHQgSSBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uIG9yIGEgcG90ZW50aWFsIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbT8gQWgsIHdoYXQgYWJvdXQgdGhlIGBzdG1tYWNfcGNpLmNgIGZpbGU/IFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NzksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowMC4xMTA0MzUzMjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODgzNDQ1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MDAuMjEwMzI1OTA0WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTk0MDYzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5Ob3BlLiBUaGF0IGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjbGVhcmx5IGluY29ycmVjdC4gVGhlIG9yaWdpbmFsIGlkZWEgaXMgZmxhd2VkLiBCdXQsIG5vdywgd2hhdCAqaXMqIHRoZSBrZXkgZmlsZSBpbnZvbHZlZCBoZXJlPyBXaGVyZSBhcmUgd2UgbGlrZWx5IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24/IE15IG5leHQgdGhvdWdodCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZpbGU6IGBkd21hYy1nZW5lcmljLmNgLiBDb3VsZCAqdGhhdCogYmUgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGU/IElzIHRoYXQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZS1hZ25vc3RpYyBkcml2ZXIgZm9yIHRoZSBETUEgY29udHJvbGxlciByZXNpZGVzPyBUaGF0J3Mgd2hlcmUgSSdkIHN0YXJ0IGxvb2tpbmcgdG8gaW52ZXN0aWdhdGUgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA1NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjAzLjM2OTczNTA3MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyMjYzNzMzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MDMuNTAyMDA1MTM0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjE0MDc2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBkd3hnbWFjMl9kbWFfaW5pdGAgRnVuY3Rpb24qKlxuXG5IbW0sIG5vLiBUaGF0J3Mgbm90IHRoZSBhbnN3ZXIgSSB3YXMgZXhwZWN0aW5nLiBPa2F5LCBsZXQncyBzdGVwIGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGR3eGdtYWMyX2RtYV9pbml0YCBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGJlaW5nIGNhbGxlZCBpbiB0aGlzIHN5c3RlbS4gSSBjYW4ndCBqdXN0IGFzc3VtZSBhbnl0aGluZyBoZXJlLiBUaGUgY29kZSBiYXNlIGlzIG9mdGVuIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBpdCBsb29rcyBvbiBmaXJzdCBnbGFuY2UuIElzIHRoaXMgZnVuY3Rpb24gZXZlbiB1c2VkPyBNYXliZSBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpc24ndCBkaXJlY3RseSByZWxhdGVkIHRvIHdoYXQgSSdtIGxvb2tpbmcgYXQuIFBlcmhhcHMgdGhhdCBzdHJ1Y3R1cmUgaXMgdXRpbGl6ZWQgYnkgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgc3lzdGVtIGVudGlyZWx5LCB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBtb3JlIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNjgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowNi43NjM0MTU4NTZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNzQxMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyMTBfZG1hX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00NjY9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGxnbWFjMl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTU3MT1zdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTQ6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXFx0LnJlc2V0ID0gZHd4Z21hYzJfZG1hX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4OlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTktXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjgwOlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowNi44NDUxNjIyMDJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMjEzOTU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERXTUFDX0NPUkVfWEdNQUMgRGVmaW5pdGlvbioqXG5cblJpZ2h0LCBzbyB0aGlzIHRoaW5nLCB0aGlzIGBEV01BQ19DT1JFX1hHTUFDYCwgaXQgc2VlbXMgdG8gYmUgZGVmaW5lZCBzb21ld2hlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYmVpbmcgKnVzZWQqLCBhbmQgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBpbml0aWFsIGxvY2F0aW9uLCBgaHdpZi5jYCwgaXMgdGhlIG9ubHkgcGxhY2UuIE5vdywgaWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB0aGF0IGZpbGUgaXMgdXNpbmcgaXQgZm9yIHRoZSBtYWNybyBgRFdNQUNfQ09SRV9YR01BQ2AuIEhtbW0sIEkgd29uZGVyIGlmIHRoZXJlIGlzIGFub3RoZXIgcGxhY2UgdG8gc2V0IHRoYXQgbWFjcm8uXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG8gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCBhY3Jvc3MgYWxsIHJlbGV2YW50IGZpbGVzIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aGVyZSBpc24ndCBhbm90aGVyIGxvY2F0aW9uLCBvciBhbm90aGVyIHdheSwgYERXTUFDX0NPUkVfWEdNQUNgIGlzIGdldHRpbmcgc2V0LiBMZXQncyBkbyBhIGZpbmQgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNDcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxMC4zNDczMDQ3NFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MDE1OTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRXTUFDX0NPUkVfWEdNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XFx0cmV0dXJuIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0IHx8IGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3MzpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yMT1zdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cXHRcXHR2ZXItXFx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4OlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cXHRcXHQgICAgZGV2X2lkICE9IGVudHJ5LVxcdTAwM2VkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXFx0XFx0cHJpdi1cXHUwMDNlbW1jYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIE1NQ19HTUFDM19YX09GRlNFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzM5OlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQwLVxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfWEdNQUNfT0ZGU0VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTI4PXN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXFx0Y3RybCA9IHJlYWRsKGVzdF9hZGRyICsgRVNUX0NPTlRST0wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzo1NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXFx0XFx0Y3RybCBcXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9ODM9c3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgRVNUX0JUUkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXFx0XFx0XFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzAxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dldGRydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5OlxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTUtXFx0XFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc1LVxcdFxcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozNzY6XFx0fSBlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgIT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVxcdFxcdG1lbWNweShcXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY1NTU9c3RhdGljIGludCBzdG1tYWNfZG1hX2NhcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkwLVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NTkxOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjU5Mi1cXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYxNC1cXHRcXHQgICAocHJpdi1cXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkgPyBcXFwiWVxcXCIgOiBcXFwiTlxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYxNTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE2LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyMy1cXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjI0OlxcdCAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyNS1cXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlxcXFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTU9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczNzE6XFx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM3Mi1cXHRcXHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Mzk3PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTE5LVxcdGlmICgocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV8zXzUwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTIwOlxcdCAgICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTIxLVxcdCAgICAhcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcml3dF9vZmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc4Nj1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3OTk0OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTUtXFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTM2PXN0YXRpYyB1MzIgc3RtbWFjX2Nsa19jc3Jfc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVxcdFxcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU2LVxcdFxcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cXHRcXHRuZXdfYnVzLVxcdTAwM2VyZWFkID0gXFx1MDAyNnN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVxcdC8qIExvb2tzIGxpa2Ugd2UgbmVlZCBhIGR1bW15IHJlYWQgZm9yIFhHTUFDIG9ubHkgYW5kIEM0NSBQSFlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVxcdFxcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxNj1zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwic25wcyxkd3hnbWFjXFxcIikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo1NDg6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MTAuNDYyMzI1NjI0WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODY1OTQyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gcGF0aCBpcyBvbmx5IGVuYWJsZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlOiBgc25wcyxkd3hnbWFjYCwgYGR3bWFjLXNvY2ZwZ2EuY2AgKEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NispLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBUaGUga2lja2VyIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSB0YXJnZXRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy5cblxuSSB3YXMgYnJpZWZseSB0aGlua2luZyB0aGF0IHBlcmhhcHMgYHN5emthbGxlcmAgbWlnaHQgYmUgdGhlIGN1bHByaXQsIHBvc3NpYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIHRvIGluZGlyZWN0bHkgdHJpZ2dlciB0aGUgaW5zdGFudGlhdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBzeXprYWxsZXJgICpjYW4ndCogZGlyZWN0bHkgaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgdXNlcyBkZXZpY2UgdHJlZSBvdmVybGF5cywgYW5kIGl0J3Mgbm90IHNldCB1cCB0byBkbyB0aGF0LiBUaGF0IGF2ZW51ZSdzIGEgZGVhZCBlbmQuXG5cbldhaXQgYSBzZWNvbmTigKYgd2hhdCBhYm91dCBBQ1BJPyBJcyBpdCBwb3NzaWJsZSB0aGUgZHJpdmVyJ3MgYmVpbmcgcHJvYmVkIHRocm91Z2ggYW4gQUNQSSBwYXRoPyBMb29raW5nIGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AuLi4gYWgsIHllcyEgSXQgaGFzIEFDUEkgYmluZGluZ3MuIFRoYXQncyBhIGRlZmluaXRlIHBvc3NpYmlsaXR5IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRoaXMgc3VnZ2VzdHMgYSBkaWZmZXJlbnQgYWN0aXZhdGlvbiBtZXRob2QgdGhhbiB0aGUgdHlwaWNhbCBwbGF0Zm9ybSBkZXZpY2UgaW5zdGFudGlhdGlvbiBJIHdhcyBpbml0aWFsbHkgZXhwZWN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQwMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxNS4xNDg5MjM4MThaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDMyOTAzNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNwaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxNS4yNDkyNjI3MTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NTEwNjI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBvdGVudGlhbCBBQ1BJIEJpbmRpbmdzIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGhlcmUuIEl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgdGhhdCBgc3RtbWFjX3BsYXRmb3JtLmNgIG1pZ2h0IGFjdHVhbGx5IGhhdmUgc29tZSBBQ1BJIGJpbmRpbmdzIGRlZmluZWQuIFRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBub3QgYXNzdW1lIHRoZXkncmUgYWxsIGhhbmRsZWQgZXhjbHVzaXZlbHkgdGhyb3VnaCBkZXZpY2UgdHJlZS4gQmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIGFueXRoaW5nIGVsc2UsIEkgcmVhbGx5IHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBhY3BpX21hdGNoX3RhYmxlYC4gSXQgd291bGQgYmUgYSB3YXN0ZWQgZWZmb3J0IHRvIG5vdCBydWxlIG91dCB0aGUgc2ltcGxlc3QgYW5zd2VyIGZpcnN0ISBJZiBpdCAqaXMqIHByZXNlbnQsIHRoYXQncyBwb3RlbnRpYWxseSBteSByb3V0ZSB0byB0aGUgYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg3MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjE4LjUxNDM3MTEzNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA3ODc2NTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFjcGlfbWF0Y2hfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxOC42MDUxNjQ3NjlaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTQxNjA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyBBQ1BJIERldmljZSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgYWNwaV9kZXZpY2VfaWRgLiBJIG5lZWQgdG8gcmUtZXhhbWluZSB0aGF0IGNvZGUuIEkga25vdyBpdCBiYWNrd2FyZHMgYW5kIGZvcndhcmRzLCBidXQgd2hlbiBkZWJ1Z2dpbmcgdGhlc2UgaW50cmljYXRlIEFDUEkgaW50ZXJhY3Rpb25zLCB5b3UgY2FuJ3QgYmUgdG9vIGNhcmVmdWwuIFRoZXJlJ3MgYWx3YXlzIGEgY2hhbmNlIEkndmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUsIG9yIHRoYXQgYSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZSBoYXMgaW50cm9kdWNlZCBhbiB1bmV4cGVjdGVkIGludGVyYWN0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgbmV3LiBMZXQgbWUgcmV2aXNpdCB0aGUgQUNQSSBkZXZpY2UgSUQgdGFibGUuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgc29tZSBuZXcgaGFyZHdhcmUgd2l0aCBhIHNsaWdodGx5IGRpZmZlcmVudCBzaWduYXR1cmUuIE9yIG1heWJlIGEgc3BlY2lmaWMgcGxhdGZvcm0ncyBxdWlya3MgYXJlIGludGVyZmVyaW5nIHdpdGggaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyB0aGUgQUNQSSBkYXRhLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxMTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyMS44NDQ1ODM3MjJaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjQ5Mzc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00NjA9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfZHRfY2xlYXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ2NjpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2FjcGlfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDY3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTUzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU1NDpcXHRcXHRyZXQgPSBsb29uZ3Nvbl9kd21hY19hY3BpX2NvbmZpZyhwZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU1NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyMS45NTcwODI2NjZaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNTY5NDE1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc28gSSdtIGxvb2tpbmcgYXQgYGR3bWFjLWxvb25nc29uLmNgLiBJbnRlcmVzdGluZywgaXQgc2VlbXMgdG8gaGF2ZSBzb21lIEFDUEkgY29uZmlndXJhdGlvbiBnb2luZyBvbiwgYnV0IGlzbid0IHRoaXMgYSBQQ0kgZHJpdmVyLCBhbmQgaXQncyB1c2luZyBgRFdNQUNfQ09SRV9HTUFDYD8gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd29uZGVyIHdoeSB0aGV5J3JlIGhhbmRsaW5nIGl0IHRoaXMgd2F5LiBNYXliZSB0aGVyZSBhcmUgc29tZSBsZWdhY3kgcmVhc29ucyBvciBzcGVjaWZpYyBMb29uZ3NvbiBwbGF0Zm9ybSBxdWlya3MgaW52b2x2ZWQ/IEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgbGF0ZXIuXG5cbk5vdywgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aG91Z2h0LCB3aGF0IGFib3V0IGBzdG1tYWNfcGxhdGZvcm0uY2A/IERvZXMgaXQgb2ZmZXIgc29tZSBpbnNpZ2h0PyBJdCBpcyBwcm9iYWJseSBhIGJldHRlci1hbGlnbmVkIHNvdXJjZSB0byBhbmFseXplLiBIb3BlZnVsbHkgaXQgaGFuZGxlcyBtb3JlIHR5cGljYWwgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuIE1heWJlIGl0IHNoZWRzIHNvbWUgbGlnaHQgb24gdGhlIGRlc2lnbiBjaG9pY2VzIGluIHRoYXQgZmlyc3QgZmlsZS4gTGV0IG1lIGludmVzdGlnYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY4OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjI1LjI3Mjc4MDgyNFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjM4MTMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyNS40MDkwMjQ5NjdaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0OTgzODY3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIFFFTVU6IEEgV29ydGhsZXNzIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgYGR3eGdtYWMyX2RtYV9pbml0YCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgaXQgaXMuIEZpcnN0IHRob3VnaHQ6IGlzIGl0IHVzZWQgaW4gYSBQQ0kgY29udGV4dD8gTm8sIHRoYXQncyBub3QgaXQuIGBzdG1tYWNfcGxhdGZvcm0uY2AgZG9lc24ndCB1c2UgQUNQSSwgYnV0IGBzdG1tYWNfcGNpLmNgIGRvZXMgdXNlIGEgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYCB3aGljaCBwb2ludHMgdG8gYERXTUFDX0NPUkVfR01BQzRgLiBEZWZpbml0ZWx5IG5vdCB0aGUgcGF0aCBJJ20gaW50ZXJlc3RlZCBpbi5cblxuQ2FuIHRoaXMgZXZlciBiZSBjYWxsZWQgaW4gUUVNVT8gTm8uIE5vdCBkaXJlY3RseS4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS5cblxuYGR3eGdtYWMyX2RtYV9pbml0YCBpcyBzcGVjaWZpY2FsbHkgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb3JlIHR5cGUgaXMgdXNlZC4gSXQgbG9va3MgbGlrZSBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHNucHMsZHd4Z21hY2AgKHBsYXRmb3JtKSwgYGR3bWFjLXNvY2ZwZ2EuY2AgKEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NispLiBOb25lIG9mIHRob3NlIGFyZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnLiBUaGlzIGxvb2tzIGxpa2UgYW4gdW5yZWFjaGFibGUgY29kZSBwYXRoIGluIG15IGVudmlyb25tZW50LlxuXG5JcyB0aGVyZSBhbnkgb3RoZXIgZHJpdmVyIHRoYXQgdXNlcyB0aGlzPyBJIGRpZCBhIHF1aWNrIGdyZXAgYWxyZWFkeSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhvc2UgYXJlIHRoZSBvbmx5IHBsYWNlcyBpdCdzIGRlZmluZWQuIEFuZCBpdCdzIGFsc28gdXNlZCBpbiBgaHdpZi5jYCBiYXNlZCBvbiBgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUNgIGFuZCBhZ2FpbiwgYHN0bW1hY19wbGF0Zm9ybS5jYCBmb3IgYHNucHMsZHd4Z21hY2AuXG5cbk9rYXksIGJ1dCB3aGF0IGFib3V0IHRoZSBicm9hZGVyIHNjb3BlIG9mIG15IHRlc3Rpbmcgc2V0dXA/IEknbSBub3QgdXNpbmcgQWdpbGV4NSwgYW5kIG5vdCBUZWdyYTE4NisuIElzIHRoZXJlIGEgYm9hcmQgaW4gUUVNVSB0aGF0IGluc3RhbnRpYXRlcyBgc25wcyxkd3hnbWFjYD8gTm8sIHRoZXJlIGlzbid0LiBTbyB0aGF0IGNvZGUgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCBJJ20gdXNpbmcuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgU3l6a2FsbGVyPyBEb2VzIGl0IGV2ZXIgcnVuIG9uIHBoeXNpY2FsIGhhcmR3YXJlPyBTdXJlLCBTeXprYWxsZXIgZG9lcyB1c2UgcGh5c2ljYWwgYm9hcmRzIHNvbWV0aW1lcywgbGlrZSBvbiBBUk0gYm9hcmRzLiBCdXQgdGhlIHByb21wdCBleHBsaWNpdGx5IGZvY3VzZXMgb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLiBJdCdzIGNsZWFybHkgc3RhdGVkIHRoYXQgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Tbywgc2luY2UgdGhpcyBjb2RlIHBhdGggY2FuJ3QgYmUgcmVhY2hlZCBpbiBRRU1VLCBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkJ1dCwgbGV0J3MganVzdCBtYWtlIHN1cmUuIENvdWxkIGBzbnBzLGR3eGdtYWNgIHNvbWVob3cgYmUgaW5zdGFudGlhdGVkIHZpYSBhIGRldmljZSB0cmVlIG92ZXJsYXkgaW5qZWN0ZWQgYnkgU3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBjdXJyZW50bHkgaW5qZWN0IERUIG92ZXJsYXlzLCBzbyB0aGF0J3MgYSBuby4gRXZlbiBpZiBpdCBkaWQsIHRoZSBkcml2ZXIgd291bGQgcHJvYmUuIEl0IHdvdWxkIHRoZW4gYXR0ZW1wdCB0byByZWFkIGZyb20gdGhlIE1NSU8gcmVnaXN0ZXJzIG9mIHRoZSBYR01BQy4gU2luY2UgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCAweEZGRkZGRkZGIG9yIDB4MDAwMDAwMDAsIGFuZCBmYWlsLiBFdmVuIGlmIHRoZSByZWdpc3RlciByZWFkIGlzIDAsIGxldCBtZSBjaGVjayBgc3RtbWFjX2dldF92ZXJzaW9uYCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MzUuOTA3NDE0MjczWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE5Mjc5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2dldF92ZXJzaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTY9c3RydWN0IHN0bW1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjE6c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfdmVyc2lvbiAqdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjY6XFx0c3RtbWFjX2dldF92ZXJzaW9uKHByaXYsIFxcdTAwMjZ2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzozNi4xNDkzNDc1NloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ5Njc3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkZXZpY2UgZHJpdmVyczpcblxuKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHN0bW1hY19nZXRfdmVyc2lvbmAqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiBkaXZlIGludG8gdGhlIGBzdG1tYWNfZ2V0X3ZlcnNpb25gIGZ1bmN0aW9uLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBVbmRlcnN0YW5kaW5nIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlciBpcyBjcnVjaWFsLCBpdCdzIHRoZSBmb3VuZGF0aW9uIG9mIGFsbW9zdCBldmVyeXRoaW5nLiBJdCB1c3VhbGx5IGludm9sdmVzIHJlYWRpbmcgcmVnaXN0ZXJzLCBtYXliZSBzb21lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIGZvcm1hdHRpbmcgdGhhdCBkYXRhIGZvciB0aGUgdXNlci4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIHdoZXJlIGl0J3MgZGVmaW5lZC4gSXMgaXQgYSBkaXJlY3QgcmVnaXN0ZXIgcmVhZCwgb3IgZG9lcyBpdCBpbnZvbHZlIHNvbWUgbW9yZSBjb21wbGV4IGxvZ2ljIHRvIGRldGVybWluZSB0aGUgZHJpdmVyJ3MgcmV2aXNpb24sIGZlYXR1cmUgc2V0LCBvciBoYXJkd2FyZSBjb21wYXRpYmlsaXR5PyBIb3BlZnVsbHksIGl0IGlzIHdlbGwgZG9jdW1lbnRlZDsgb3RoZXJ3aXNlIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlZ2lzdGVyLWxldmVsIGludGVycHJldGF0aW9uIG9mIGl0LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGRlYnVnZ2luZyBhbmQgZW5zdXJpbmcgY29tcGF0aWJpbGl0eSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGtlcm5lbCB2ZXJzaW9ucy4gSSdtIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgdHlwZXMgaXQncyB3b3JraW5nIHdpdGggYW5kIGhvdyB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBzdHJ1Y3R1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTgyNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjM5Ljg5OTAyODUxNVoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjE6XFx0c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gIDIyOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gKnZlcilcXG4gIDIzOlxcdHtcXG4gIDI0OlxcdFxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZTtcXG4gIDI1OlxcdFxcdHVuc2lnbmVkIGludCB2ZXJzaW9uX29mZnNldDtcXG4gIDI2OlxcdFxcdHUzMiB2ZXJzaW9uO1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHR2ZXItXFx1MDAzZXNucHN2ZXIgPSAwO1xcbiAgMjk6XFx0XFx0dmVyLVxcdTAwM2VkZXZfaWQgPSAwO1xcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfTUFDMTAwKVxcbiAgMzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQylcXG4gIDM1OlxcdFxcdFxcdHZlcnNpb25fb2Zmc2V0ID0gR01BQ19WRVJTSU9OO1xcbiAgMzY6XFx0XFx0ZWxzZVxcbiAgMzc6XFx0XFx0XFx0dmVyc2lvbl9vZmZzZXQgPSBHTUFDNF9WRVJTSU9OO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHR2ZXJzaW9uID0gcmVhZGwocHJpdi1cXHUwMDNlaW9hZGRyICsgdmVyc2lvbl9vZmZzZXQpO1xcbiAgNDA6XFx0XFx0aWYgKHZlcnNpb24gPT0gMCkge1xcbiAgNDE6XFx0XFx0XFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVmVyc2lvbiBJRCBub3QgYXZhaWxhYmxlXFxcXG5cXFwiKTtcXG4gIDQyOlxcdFxcdFxcdHJldHVybjtcXG4gIDQzOlxcdFxcdH1cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVXNlciBJRDogMHgleCwgU3lub3BzeXMgSUQ6IDB4JXhcXFxcblxcXCIsXFxuICA0NjpcXHRcXHRcXHQgRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pLFxcbiAgNDc6XFx0XFx0XFx0IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKSk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG4gIDUwOlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG4gIDUxOlxcdFxcdFxcdHZlci1cXHUwMDNlZGV2X2lkID0gRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pO1xcbiAgNTI6XFx0fVxcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfZHdtYWNfbW9kZV9xdWlyayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuICA1NTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjM5Ljg5OTEwMDkwNVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA1Njg5NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzY2VuYXJpbywgcGhyYXNlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OlxuXG4qKkluaXRpYWwgVmVyc2lvbiBDaGVjayBhbmQgSGFyZHdhcmUgSW50ZXJmYWNlIFNlYXJjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNoZWNrIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIHRoZSBgdmVyc2lvbmAgdmFyaWFibGUgaXMgemVybywgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IGJhaWxzIG91dC4gSXQgc2V0cyB0aGUgYHNucHN2ZXJgIGFuZCBgZGV2X2lkYCBmaWVsZHMgd2l0aGluIHRoZSBgdmVyYCBzdHJ1Y3R1cmUgdG8gemVyby4gVGhhdCdzIGEgY29tbW9uIGluaXRpYWwgc3RhdGUgb3IgZXJyb3IgY29uZGl0aW9uIHNpZ25hbGluZyBhbiB1bmluaXRpYWxpemVkIG9yIGludmFsaWQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGFuIGVhcmx5IHJldHVybiB0byBhdm9pZCBmdXJ0aGVyIHByb2Nlc3NpbmcuXG5cblRoZSBjcml0aWNhbCBzdGVwIGhlcmUsIGFmdGVyIHRoYXQgaW5pdGlhbCBjaGVjaywgaXMgdGhhdCBpdCBjYWxscyBgc3RtbWFjX2h3aWZfZmluZGAuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbC4gSXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgbW92aW5nIGZyb20gYSBzaW1wbGUgY29uZGl0aW9uYWwgdG8gdGhlIHJlYWwgd29yayDigJMgbG9jYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLCBJIGltbWVkaWF0ZWx5IGluZmVyIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByb2JpbmcsIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlIHByZXNlbnQsIGFuZCBwb3B1bGF0aW5nIHJlbGV2YW50IHN0cnVjdHVyZXMgd2l0aCBoYXJkd2FyZSBpbnRlcmZhY2Ugc3BlY2lmaWMgZGF0YS4gVGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGNvbW11bmljYXRlIHdpdGggYW5kIGNvbnRyb2wgdGhlIHBoeXNpY2FsIGRldmljZS4gSXQgaXMgYSBrZXkgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjQ5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo0My42MDQ3OTM0MzNaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcXG4gMjk0OlxcdHN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuIDI5NTpcXHR7XFxuIDI5NjpcXHRcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbiAyOTc6XFx0XFx0aW50IGk7XFxuIDI5ODpcXHRcXG4gMjk5OlxcdFxcdGZvciAoaSA9IEFSUkFZX1NJWkUoc3RtbWFjX2h3KSAtIDE7IGkgXFx1MDAzZT0gMDsgaS0tKSB7XFxuIDMwMDpcXHRcXHRcXHRlbnRyeSA9IFxcdTAwMjZzdG1tYWNfaHdbaV07XFxuIDMwMTpcXHRcXG4gMzAyOlxcdFxcdFxcdGlmIChjb3JlX3R5cGUgIT0gZW50cnktXFx1MDAzZWNvcmVfdHlwZSlcXG4gMzAzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAzMDQ6XFx0XFx0XFx0LyogVXNlIHN5bm9wc3lzX2lkIHZhciBiZWNhdXNlIHNvbWUgc2V0dXBzIGNhbiBvdmVycmlkZSB0aGlzICovXFxuIDMwNTpcXHRcXHRcXHRpZiAoc25wc3ZlciBcXHUwMDNjIGVudHJ5LVxcdTAwM2VtaW5faWQpXFxuIDMwNjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMzA3OlxcdFxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcXHUwMDI2XFx1MDAyNlxcbiAzMDg6XFx0XFx0XFx0ICAgIGRldl9pZCAhPSBlbnRyeS1cXHUwMDNlZGV2X2lkKVxcbiAzMDk6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdFxcdHJldHVybiBlbnRyeTtcXG4gMzEyOlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NDMuNjA0ODY0ODEzWiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzAyNzUzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBgc3RtbWFjX2h3aWZfZmluZGAgYW5kIGBzdG1tYWNfaHdpZl9pbml0YC4gSSd2ZSBnb3QgdG8gdW5kZXJzdGFuZCB3aHkgaXQgbWlnaHQgYmUgZmFpbGluZy4gSXQgbG9va3MgbGlrZSB0aGVyZSdzIHRoaXMgaW5pdGlhbCBjaGVjazogaWYgdGhlIGBzbnBzdmVyYCBpcyB6ZXJvIEFORCBgZGV2X2lkYCBpcyB6ZXJvLCBpdCBwcm9jZWVkcyB0byBjb21wYXJlIGBzbnBzdmVyYCBhZ2FpbnN0IGBlbnRyeS1cdTAwM2VtaW5faWRgLiBOb3csIGZvciB0aGUgY2FzZSBvZiBgRFdNQUNfQ09SRV9YR01BQ2AsIHRoZSBgZW50cnktXHUwMDNlbWluX2lkYCBpcyBzZXQgdG8gZWl0aGVyIGBEV1hHTUFDX0NPUkVfMl8xMGAgKHdoaWNoIGlzIDB4MjEpIG9yIGBEV1hMR01BQ19DT1JFXzJfMDBgICh3aGljaCBpcyAweDIwKSBhbmQgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoaWNoIG9uZSBoZXJlLiBTaW5jZSBgc25wc3ZlcmAgaXMgKnplcm8qLCB0aGUgY29uZGl0aW9uIGBzbnBzdmVyIFx1MDAzYyBlbnRyeS1cdTAwM2VtaW5faWRgIGlzIGdvaW5nIHRvIGJlIHRydWUuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgaW4gYSB3YXkgdGhhdCB0aGUgYGNvbnRpbnVlYCB3aWxsIHByZXZlbnQgYSBtYXRjaCwgbWVhbmluZyB0aGF0IHRoZSBsb29wIHdpbGwgc2tpcCB0aGlzIGVudHJ5ISBTaW5jZSBJJ20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCAwIGFuZCB0cnlpbmcgdG8gbWF0Y2ggdG8gYSBtaW5pbXVtIElEIHRoYXQgaXMsIGZvciBzdXJlLCBncmVhdGVyIHRoYW4gemVybywgbm8gbWF0Y2ggd2lsbCBiZSBmb3VuZC4gVGhpcyBtZWFucyB0aGF0IGBzdG1tYWNfaHdpZl9maW5kYCBpcyBnb2luZyB0byByZXR1cm4gYE5VTExgIHRvIGBzdG1tYWNfaHdpZl9pbml0YCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbC4gVGhhdCdzIGEgY3JpdGljYWwgZmxhdyBpbiB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBhbmQgc29tZXRoaW5nIEkgbmVlZCB0byBhZGRyZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTMwMywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjQ4LjE3NTE0NDEwM1oiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMxNzpcXHRpbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIDMxODpcXHR7XFxuIDMxOTpcXHRcXHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGU7XFxuIDMyMDpcXHRcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbiAzMjE6XFx0XFx0c3RydWN0IHN0bW1hY192ZXJzaW9uIHZlcnNpb247XFxuIDMyMjpcXHRcXHRzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWM7XFxuIDMyMzpcXHRcXHRib29sIG5lZWRzX3NldHVwID0gdHJ1ZTtcXG4gMzI0OlxcdFxcdGludCByZXQ7XFxuIDMyNTpcXHRcXG4gMzI2OlxcdFxcdHN0bW1hY19nZXRfdmVyc2lvbihwcml2LCBcXHUwMDI2dmVyc2lvbik7XFxuIDMyNzpcXHRcXG4gMzI4OlxcdFxcdC8qIFNhdmUgSUQgZm9yIGxhdGVyIHVzZSAqL1xcbiAzMjk6XFx0XFx0cHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgPSB2ZXJzaW9uLnNucHN2ZXI7XFxuIDMzMDpcXHRcXG4gMzMxOlxcdFxcdC8qIExldHMgYXNzdW1lIHNvbWUgc2FmZSB2YWx1ZXMgZmlyc3QgKi9cXG4gMzMyOlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkge1xcbiAzMzM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcHRwYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIFBUUF9HTUFDNF9PRkZTRVQ7XFxuIDMzNDpcXHRcXHRcXHRwcml2LVxcdTAwM2VtbWNhZGRyID0gcHJpdi1cXHUwMDNlaW9hZGRyICsgTU1DX0dNQUM0X09GRlNFVDtcXG4gMzM1OlxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfR01BQzRfT0ZGU0VUO1xcbiAzMzY6XFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NDguMTc1MjU4OTYzWiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzI3NTkwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIE5VTEwgYGVudHJ5YCBWYWx1ZXMqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCB0aGlzIGNhcmVmdWxseS4gQmVmb3JlIEkgcHJvY2VlZCwgbGV0J3MganVzdCBwYXVzZSBhbmQgY29uc2lkZXIgYSBjcml0aWNhbCBlZGdlIGNhc2UuIFdoYXQgYWN0dWFsbHkgKmhhcHBlbnMqIGlmIHRoZSBgZW50cnlgIHZhcmlhYmxlLCB3aGljaCBpcyBjcnVjaWFsIHRvIHRoZSBmdW5jdGlvbidzIGxvZ2ljLCBoYXBwZW5zIHRvIGJlIE5VTEw/IElzIHRoYXQgYWNjb3VudGVkIGZvciBpbiB0aGUgb3JpZ2luYWwgZGVzaWduPyBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLiBJIG5lZWQgdG8gZXhwbGljaXRseSB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSB0aGlzIHBvaW50IG9ud2FyZCwgd2l0aCBgZW50cnlgIGJlaW5nIE5VTEwsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnNlcXVlbmNlcy4gVGhpcyBjaGVjayBpcyBmdW5kYW1lbnRhbCB0byByZWxpYWJsZSBwcm9ncmFtbWluZyBhbmQgbmVlZHMgZXhwbGljaXQgYXR0ZW50aW9uIGJlZm9yZSBjb250aW51aW5nLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJldmVhbCBhIHZ1bG5lcmFiaWxpdHksIGEgY3J1Y2lhbCBvbWlzc2lvbiBpbiB0aGUgaW5wdXQgdmFsaWRhdGlvbiwgb3Igc29tZSBvdGhlciBzZXJpb3VzIGlzc3VlIHdpdGggaGFuZGxpbmcgdGhpcyBjb25kaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTc3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo1MS4yMDgwMjE0NDdaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0MyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM0MzpcXHRcXHRtYWMgPSBkZXZtX2t6YWxsb2MocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplb2YoKm1hYyksIEdGUF9LRVJORUwpO1xcbiAzNDQ6XFx0XFx0aWYgKCFtYWMpXFxuIDM0NTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzQ2OlxcdFxcbiAzNDc6XFx0XFx0LyogQ2hlY2sgZm9yIEhXIHNwZWNpZmljIHNldHVwIGZpcnN0ICovXFxuIDM0ODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX3NldHVwKSB7XFxuIDM0OTpcXHRcXHRcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYWNfc2V0dXAocHJpdiwgbWFjKTtcXG4gMzUwOlxcdFxcdFxcdGlmIChyZXQpXFxuIDM1MTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAzNTI6XFx0XFxuIDM1MzpcXHRcXHRcXHRuZWVkc19zZXR1cCA9IGZhbHNlO1xcbiAzNTQ6XFx0XFx0fVxcbiAzNTU6XFx0XFxuIDM1NjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2bWFjLVxcdTAwM2VpcnFfY3RybF9sb2NrKTtcXG4gMzU3OlxcdFxcbiAzNTg6XFx0XFx0LyogRmFsbGJhY2sgdG8gZ2VuZXJpYyBIVyAqL1xcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cXG4gMzYxOlxcdFxcdGVudHJ5ID0gc3RtbWFjX2h3aWZfZmluZChjb3JlX3R5cGUsIHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkLCB2ZXJzaW9uLmRldl9pZCk7XFxuIDM2MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjUxLjIwODA4ODM0N1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE0NzE0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IHVzZXIgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW1wcmVzc2lvbiBcdTAwMjYgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BaCEgUmlnaHQsIG9rYXkuIFRoYXQgaW5pdGlhbCBcIkFoIVwiIOKAkyBpdCdzIG5vdCBqdXN0IGEgY2FzdWFsIGludGVyamVjdGlvbiwgeW91IGtub3c/IEl04oCZcyBhIHJlY29nbml0aW9uLCBhIHRyaWdnZXIuIEl0IHNpZ25hbHMgdGhhdCBzb21ldGhpbmcgaGFzIGNsaWNrZWQsIGEgc3RhcnRpbmcgcG9pbnQgaXMgcmVjb2duaXplZCB0aGF0IG1heSBoYXZlIGEgcmVsYXRpb25zaGlwIHdpdGggdGhlIGN1cnJlbnQgdGFzay5cblxuTm93LCBsZXQncyBzZWUgd2hlcmUgdGhpcyBnb2VzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzExLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjU0LjQyMjgwNzU3MVoiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuIDM2MzpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldmljZSxcXG4gMzY0OlxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZmluZCBIVyBJRiAoaWQ9MHgleCwgZ21hYz0lZC8lZClcXFxcblxcXCIsXFxuIDM2NTpcXHRcXHRcXHRcXHR2ZXJzaW9uLnNucHN2ZXIsIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUMsXFxuIDM2NjpcXHRcXHRcXHRcXHRjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCk7XFxuIDM2NzpcXHRcXG4gMzY4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNjk6XFx0XFx0fVxcbiAzNzA6XFx0XFxuIDM3MTpcXHRcXHQvKiBPbmx5IHVzZSBnZW5lcmljIEhXIGhlbHBlcnMgaWYgbmVlZGVkICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjU0LjQyMjkzNDA2MVoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyMDQ1Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRmFpbHVyZSBQb2ludHMgaW4gdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gYSBzcGVjaWZpYyBTVE1NQUMgZHJpdmVyIHNjZW5hcmlvLiBUaGUgY29kZSdzIGNoZWNraW5nIGZvciBhIE5VTEwgYGVudHJ5YCBwb2ludGVyLiBSaWdodCwgaWYgYGVudHJ5YCBpcyBOVUxMLCBpdCByZXR1cm5zIGAtRUlOVkFMYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBlcnJvci4gTXkgY3VycmVudCBjb25jZXJuIGlzIHdpdGggaG93IFN5emthbGxlciwgaW4gaXRzIGZ1enppbmcgcHJvY2VzcywgaW50ZXJhY3RzIHdpdGggdmlydHVhbCBkZXZpY2VzIHRoYXQgZG9uJ3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycy4gSWYgU3l6a2FsbGVyIGNyZWF0ZXMgYSB2aXJ0dWFsIGRldmljZSBpbiB0aGF0IHNwZWNpZmljIHdheSwgYHZlcnNpb25gIGVuZHMgdXAgYXQgMCwgYW5kIGNydWNpYWxseSwgdGhlIGBlbnRyeWAgcG9pbnRlciB3aWxsIGJlIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgZmFpbHMsIHdoaWNoIGJsb2NrcyB0aGUgc3Vic2VxdWVudCBleGVjdXRpb24uIFRoYXQgbWVhbnMgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZCwgd2hpY2ggaXMgYSBtYWpvciByZWQgZmxhZy5cblxuQnV0IHdhaXQsIGhvbGQgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBUaGVyZSBpcyB0aGF0IGBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWFjX3NldHVwYCBmaWVsZC4gV2hhdCBpZiAqdGhhdCogY29kZSBwYXRoIGVuZHMgdXAgc2V0dGluZyBgcHJpdi1cdTAwM2VzeW5vcHN5c19pZGA/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSB1c2FnZSBvZiBgbWFjX3NldHVwYCBpbiB0aGUgcmVzdCBvZiB0aGUgY29kZSB0byBtYWtlIHN1cmUgbXkgbG9naWMgaXMgYWlydGlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NTkuMTE0OTgyMTA1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2ODQ2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTIyMD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2RtYV9pbnRlcnJ1cHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzozMDY6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19zZXR1cCh2b2lkICphcHJpdiwgc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMzA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM1LVxcdHBsYXQtXFx1MDAzZWJzcF9wcml2ID0gbGQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MzY6XFx0cGxhdC1cXHUwMDNlbWFjX3NldHVwID0gbG9vbmdzb25fZHdtYWNfc2V0dXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXFx0cGxhdC1cXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTQ4PXN0cnVjdCBsczF4X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6NTQ6c3RhdGljIGludCBsczFiX2R3bWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTUtXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBsczF4X2RhdGEgbHMxYl9kd21hY19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjIwODpcXHQuc2V0dXAgPSBsczFiX2R3bWFjX3NldHVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwOS1cXHQuaW5pdCA9IGxzMWJfZHdtYWNfc3lzY29uX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTEyMDE9c3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjEyMTE6c3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTEyMTItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjA1OlxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYwNi1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMDU9c3RhdGljIHZvaWQgczMyX2dtYWNfZXhpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MTEzOnN0YXRpYyB2b2lkIHMzMl9nbWFjX3NldHVwX211bHRpX2lycShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTE0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM9MTQ0PXN0YXRpYyBpbnQgczMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MjAwOlxcdHMzMl9nbWFjX3NldHVwX211bHRpX2lycShkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgc3VuOGlfZHdtYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTA0MzpzdGF0aWMgaW50IHN1bjhpX2R3bWFjX3NldHVwKHZvaWQgKnBwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODYtXFx0cGxhdF9kYXQtXFx1MDAzZWV4aXQgPSBzdW44aV9kd21hY19leGl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4NzpcXHRwbGF0X2RhdC1cXHUwMDNlbWFjX3NldHVwID0gc3VuOGlfZHdtYWNfc2V0dXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg4LVxcdHBsYXRfZGF0LVxcdTAwM2V0eF9maWZvX3NpemUgPSA0MDk2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQ3LVxcdC8qIENoZWNrIGZvciBIVyBzcGVjaWZpYyBzZXR1cCBmaXJzdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDg6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1hY19zZXR1cCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDk6XFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX3NldHVwKHByaXYsIG1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTM1MC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04OTQ9c3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5Mzk6c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDU0OiAqICBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MgLSBHZW5lcmF0ZSBhIGRtYV9jb25mIGFuZCBhbGxvY2F0ZSBETUEgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTUtICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mj1zdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDYzOnN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNTg6XFx0c3RtbWFjX3NldHVwX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODc9c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE5NzpcXHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBkZXYtXFx1MDAzZW10dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk4LVxcdGlmIChJU19FUlIoZG1hX2NvbmYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTA1PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzEtXFx0XFx0LyogVHJ5IHRvIGFsbG9jYXRlIHRoZSBuZXcgRE1BIGNvbmYgd2l0aCB0aGUgbmV3IG10dSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjEzMjpcXHRcXHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBtdHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzMy1cXHRcXHRpZiAoSVNfRVJSKGRtYV9jb25mKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2Mzg3OnN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzg4LVxcdFxcdFxcdFxcdCAgICB2b2lkICpjYl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDEzPXN0YXRpYyBMSVNUX0hFQUQoc3RtbWFjX2Jsb2NrX2NiX2xpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0MTU6c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNi1cXHRcXHRcXHQgICB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2c3RtbWFjX2Jsb2NrX2NiX2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQyOS1cXHRcXHRcXHRcXHRcXHRcXHQgIHByaXYsIHByaXYsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXFx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTI6XFx0Lm5kb19zZXR1cF90YyA9IHN0bW1hY19zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTMtXFx0Lm5kb19zZWxlY3RfcXVldWUgPSBzdG1tYWNfc2VsZWN0X3F1ZXVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo1OS4yMTU2NzIyNjlaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwODEwNTY2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYG1hY19zZXR1cGAgaXMgc2V0IHVwIGJ5IGBkd21hYy1sb29uZ3Nvbi5jYCBhbmQgYGR3bWFjLXN1bjhpLmNgLCBhbmQgbmVpdGhlciBzZXRzIGBwcml2LVx1MDAzZXN5bm9wc3lzX2lkYC4gVGhpcyBtZWFucyBgcHJpdi1cdTAwM2VzeW5vcHN5c19pZGAgd2lsbCBiZSB6ZXJvLiBDb25zZXF1ZW50bHksIGBzdG1tYWNfaHdpZl9maW5kYCBmYWlscywgYW5kIHRoZXJlZm9yZSBgc3RtbWFjX2h3aWZfaW5pdGAgYWxzbyBmYWlscywgdGh1cyBlbnN1cmluZyB0aGF0IGBkd3hnbWFjMl9kbWFfaW5pdGAgbmV2ZXIgZ2V0cyBjYWxsZWQuXG5cbkkgdGhlbiBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2FzIGFueSBwb3NzaWJpbGl0eSBgc3RtbWFjX2dldF92ZXJzaW9uYCBjb3VsZCBzdWNjZWVkLCBwZXJoYXBzIGlmIHN5emthbGxlciByYW4gb24gYSBRRU1VIG1hY2hpbmUgd2l0aCBgc3RtbWFjYCBtYXBwZWQgdG8gbm9uLXplcm8gbWVtb3J5LiBIb3dldmVyLCBRRU1VIHJldHVybnMgMCBmb3IgdW5tYXBwZWQgbWVtb3J5IG9yIHJhaXNlcyBhIERhdGEgQWJvcnQsIHNvIHRoYXQgd29uJ3Qgd29yay4gSSBhbHNvIGNvbnNpZGVyZWQgc2NlbmFyaW9zIGludm9sdmluZyBgc3l6X3VzYl9jb25uZWN0YCBvciBQQ0kgZGV2aWNlcyB3aXRoIGB2ZmlvYCwgYnV0IHRob3NlIHBhdGhzIGFyZSB1bnJlbGF0ZWQuIEkgdGhvdWdodCBhYm91dCB0aGUgcG9zc2liaWxpdHkgb2Ygc3l6Ym90IHJ1bm5pbmcgb24gYSBwaHlzaWNhbCBib2FyZCB3aXRoIGEgcmVhbCBYR01BQy4gSG93ZXZlciwgc3l6Ym90IHVzZXMgR0NFIFZNcyBmb3IgdXBzdHJlYW0ga2VybmVsIHRlc3RpbmcsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBzcGVjaWZpYyBBbmRyb2lkIGRldmljZXMsIGFuZCBpdCBkb2Vzbid0IHV0aWxpemUgcGh5c2ljYWwgYm9hcmRzIGZvciB1cHN0cmVhbSBrZXJuZWwgdGVzdGluZy4gQWxzbywgUENJIGRldmljZSBwcm9iaW5nIHdpdGggYHN5el9wY2lgIGRvZXNuJ3QgYXBwbHkgaGVyZS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gU2luY2UgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyBzcGVjaWZpY2FsbHkgZm9yIGBEV01BQ19DT1JFX1hHTUFDYCB3aGljaCBpcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSwgdGhhdCdzIGEga2V5IHBvaW50LiBUaGVyZSdzIG5vIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCBmb3IgYHN0bW1hY2AgdG8gY29uc2lkZXIuXG5cbkkgY2hlY2tlZCBhbGwgUENJIGRyaXZlcnMgKGBkd21hYy1pbnRlbC5jYCwgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1sb29uZ3Nvbi5jYCwgYGR3bWFjLW1vdG9yY29tbS5jYCkgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgdXNlIGBEV01BQ19DT1JFX1hHTUFDYCwgYnV0IG5vbmUgZG8uIFRoZXkgYWxsIHVzZSBgRFdNQUNfQ09SRV9HTUFDYCBvciBgRFdNQUNfQ09SRV9HTUFDNGAuIFRoaXMgbWVhbnMgdGhhdCBldmVuIGlmIHN5emthbGxlciBjb3VsZCBmdXp6IFBDSSBkZXZpY2VzLCBgRFdNQUNfQ09SRV9YR01BQ2Agd291bGRuJ3QgYmUgcmVhY2hlZC4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSSB0aGVuIGRvdWJsZS1jaGVja2VkIHRoaXMgYnkgZ3JlcHBpbmcgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4gSSBmb3VuZCBpdCB1c2VkIG9ubHkgaW4gYGR3bWFjLXNvY2ZwZ2EuY2AsIGBkd21hYy10ZWdyYS5jYCwgYGh3aWYuY2AsIGFuZCBgc3RtbWFjX3BsYXRmb3JtLmNgLiBOb25lIG9mIHRoZXNlIGFyZSBQQ0kgZHJpdmVycy4gVGhpcyBmaXJtbHkgZXN0YWJsaXNoZXMgdGhhdCBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHdoaWNoIGNhbm5vdCBiZSBkeW5hbWljYWxseSBjcmVhdGVkIGFuZCBwcm9iZWQgaW4gUUVNVSB1bmxlc3MgUUVNVSBleHBsaWNpdGx5IGVtdWxhdGVzIHRoZSBkZXZpY2UgYW5kIHN1cHBsaWVzIHRoZSBkZXZpY2UgdHJlZSBub2RlIG9yIEFDUEkgdGFibGUuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIFRlZ3JhMTg2KyBvciBBZ2lsZXg1LCBub3IgZG9lcyBpdCBlbXVsYXRlIGBzbnBzLGR3eGdtYWNgLiBDb25zZXF1ZW50bHksIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuXG5cbkknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5IZXJlJ3MgYSBicmVha2Rvd24gb2YgdGhlIHJlYXNvbmluZzogVGhlIHBhdGNoIGFmZmVjdHMgYGR3eGdtYWMyX2RtYV9pbml0YCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGBkd3hnbWFjMjEwX2RtYV9vcHNgIGFuZCBpcyBvbmx5IHVzZWQgd2hlbiB0aGUgY29yZSB0eXBlIGlzIGBEV01BQ19DT1JFX1hHTUFDYC4gVGhpcyBjb3JlIHR5cGUgaXMgZXhjbHVzaXZlbHkgdXNlZCBieSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIGxpa2UgYGR3bWFjLXNvY2ZwZ2EuY2AgZm9yIEFnaWxleDUsIGBkd21hYy10ZWdyYS5jYCBmb3IgVGVncmExODYrLCBhbmQgZ2VuZXJpYyBgc25wcyxkd3hnbWFjYCBEVCBiaW5kaW5ncy4gU2luY2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgWEdNQUMgY29yZSBpdHNlbGYsIGFuZCBzaW5jZSB0aGUgYHN0bW1hY2AgZHJpdmVyJ3MgUENJIHZhcmlhbnRzIGRvIG5vdCBlbXBsb3kgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlxuXG5JIHRoZW4gZXhwbG9yZWQgaWYgdGhlcmUncyBhbnkgbG9vcGhvbGUgaW4gdGhpcyBsb2dpYy4gV2hhdCBpZiBzeXprYWxsZXIgdXNlcyBhIGN1c3RvbSBRRU1VIHdpdGggYHNucHMsZHd4Z21hY2A/IEkgaGF2ZSB0byByZW1lbWJlciB0aGUgcHJvbXB0IHNwZWNpZmllcyBcInN0YW5kYXJkIFFFTVUuXCIgQWxzbywgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgLiBXaGF0IGFib3V0IGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYD8gVGhpcyB3b3VsZCBzdGlsbCByZXF1aXJlIGEgZGV2aWNlIHRvIGJpbmQgdG8uIFdoYXQgaWYgc3l6a2FsbGVyIGNyZWF0ZXMgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIGFub3RoZXIgc3Vic3lzdGVtPyBFdmVuIGlmXG5cbiIsIklucHV0VG9rZW5zIjo0Njg5OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTQ6MTYuMjk2NzMyMTg2WiIsIlNlcSI6NzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUzMTY5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJfZG1hX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjMtXFx0XFx0XFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDU6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXRfY2hhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OS1cXHRcXHRcXHRcXHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTk1LVxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XFx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk4OlxcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcXHQuaW5pdF90eF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfdHhfY2hhbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXFx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjE0OjE2LjQxMjA1MzQyWiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzkwODgxNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246XG5cbioqUmVhY2hpbmcgYSBDb25jbHVzaW9uIG9uIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cblJpZ2h0LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgY2FsbCB0byBgZHd4Z21hYzIxMF9kbWFfb3BzLmluaXRgIGlzIHRoZSBzb2xlIGFzc2lnbm1lbnQsIEkgY2FuIHNlZSB0aGF0IGNsZWFybHkuIEFuZCBpZiBJJ20gbm90IG1pc3Rha2VuLCBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpdHNlbGYgaXMgKm9ubHkqIGxldmVyYWdlZCB3aXRoaW4gYGh3aWYuY2AsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBjb2RlIHJlZmVyZW5jZXMgYERXTUFDX0NPUkVfWEdNQUNgLiBTZWVtcyBwcmV0dHkgd2F0ZXJ0aWdodCwgdGhlIGNvbm5lY3Rpb25zIGFyZSBhbGwgY29uc2lzdGVudCBhbmQgYXMgZXhwZWN0ZWQuIEl0IGFsbCBoYW5ncyB0b2dldGhlci5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGlzIHNwZWNpZmljIHRyYWNlIGFuZCBsYWNrIG9mIHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzLCBJJ20gY29uZmlkZW50IGluIGRlY2xhcmluZyBpdCdzIG5vdCBhIHByb21pc2luZyBhdmVudWUgZm9yIGZ1enppbmcsIGF0IGxlYXN0IG5vdCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LiBJJ2xsIHByb2NlZWQgd2l0aCBjYWxsaW5nIGBzZXQtcmVzdWx0c2AsIGFuZCBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBjb3JyZWN0IHBhdGggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzNDksIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTQ6MjAuNjkxMTQ1NDY2WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGR3eGdtYWMyX2RtYV9pbml0YCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBETUEgb3BlcmF0aW9ucyBleGNsdXNpdmVseSB1c2VkIGZvciB0aGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgdHlwZSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBjb3JlIHR5cGUgaXMgb25seSB1dGlsaXplZCBieSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChlLmcuLCBBZ2lsZXg1LCBUZWdyYTE4NispIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBOb25lIG9mIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgU3lub3BzeXMgWEdNQUMgY29yZSBpdHNlbGYgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgUENJIHZhcmlhbnRzIG9mIHRoZSBzdG1tYWMgZHJpdmVyICh3aGljaCBjb3VsZCB0aGVvcmV0aWNhbGx5IGJlIHByb2JlZCB2aWEgdmlydHVhbCBQQ0kgaW5qZWN0aW9uKSBkbyBub3QgdXNlIHRoZSBYR01BQyBjb3JlIHR5cGUuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr2rn6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 02:54:38 +0000 UTC FinishedAt: 2026-07-26 03:14:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNzVjYzI0OTVlNDU1ZTBjZGUwOTBlMDU5M2FhNjQxYTI3MTVhMmQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDM6MTA6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbmluZGV4IDYxYjZkNDVhMDJmNWQ1Li5mOGFiMzQ3ZjdiNWI5ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcbkBAIC0zMjAsNiAmIzQzOzMyMCw4IEBAXG4gLyogRE1BIFJlZ2lzdGVycyAqL1xuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcdFx0XHQweDAwMDAzMDAwXG4gI2RlZmluZSBYR01BQ19TV1JcdFx0XHRCSVQoMClcbiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01BU0tcdFx0XHRHRU5NQVNLKDEzLCAxMilcbiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01PREUxXHRcdDB4MVxuICNkZWZpbmUgWEdNQUNfRE1BX1NZU0JVU19NT0RFXHRcdDB4MDAwMDMwMDRcbiAjZGVmaW5lIFhHTUFDX1dSX09TUl9MTVRcdFx0R0VOTUFTSygyOSwgMjQpXG4gI2RlZmluZSBYR01BQ19SRF9PU1JfTE1UXHRcdEdFTk1BU0soMjEsIDE2KVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbmluZGV4IDAzNDM3ZjFjZjNkZjM0Li43MmFjZWIwNmY1YWZhMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuQEAgLTMxLDYgJiM0MzszMSwxNSBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0dmFsdWUgfD0gWEdNQUNfRUFNRTtcbiBcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9TWVNCVVNfTU9ERSk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogUm91dGUgRE1BIGludGVycnVwdHMgdG8gcGVyLWNoYW5uZWwgbGluZXMgd2hlbiBtdWx0aS1NU0kgZW5hYmxlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZG1hX2NmZy1cdTAwM2VtdWx0aV9tc2lfZW4pIHtcbiYjNDM7XHRcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbiYjNDM7XHRcdHZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTtcbiYjNDM7XHRcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2JiM0MzspIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBOb25lIG9mIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgU3lub3BzeXMgWEdNQUMgY29yZSBpdHNlbGYgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgUENJIHZhcmlhbnRzIG9mIHRoZSBzdG1tYWMgZHJpdmVyICh3aGljaCBjb3VsZCB0aGVvcmV0aWNhbGx5IGJlIHByb2JlZCB2aWEgdmlydHVhbCBQQ0kgaW5qZWN0aW9uKSBkbyBub3QgdXNlIHRoZSBYR01BQyBjb3JlIHR5cGUuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTc1Y2MyNDk1ZTQ1NWUwY2RlMDkwZTA1OTNhYTY0MWEyNzE1YTJkOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDAzOjEwOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKaW5kZXggNjFiNmQ0NWEwMmY1ZDUuLmY4YWIzNDdmN2I1YjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgKQEAgLTMyMCw2ICYjNDM7MzIwLDggQEAKIC8qIERNQSBSZWdpc3RlcnMgKi8KICNkZWZpbmUgWEdNQUNfRE1BX01PREUJCQkweDAwMDAzMDAwCiAjZGVmaW5lIFhHTUFDX1NXUgkJCUJJVCgwKQomIzQzOyNkZWZpbmUgWEdNQUNfSU5UTV9NQVNLCQkJR0VOTUFTSygxMywgMTIpCiYjNDM7I2RlZmluZSBYR01BQ19JTlRNX01PREUxCQkweDEKICNkZWZpbmUgWEdNQUNfRE1BX1NZU0JVU19NT0RFCQkweDAwMDAzMDA0CiAjZGVmaW5lIFhHTUFDX1dSX09TUl9MTVQJCUdFTk1BU0soMjksIDI0KQogI2RlZmluZSBYR01BQ19SRF9PU1JfTE1UCQlHRU5NQVNLKDIxLCAxNikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMKaW5kZXggMDM0MzdmMWNmM2RmMzQuLjcyYWNlYjA2ZjVhZmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYwpAQCAtMzEsNiAmIzQzOzMxLDE1IEBAIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0KHZvaWQgX19pb21lbSAqaW9hZGRyLAogCQl2YWx1ZSB8PSBYR01BQ19FQU1FOwogCiAJd3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX1NZU0JVU19NT0RFKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUm91dGUgRE1BIGludGVycnVwdHMgdG8gcGVyLWNoYW5uZWwgbGluZXMgd2hlbiBtdWx0aS1NU0kgZW5hYmxlZC4KJiM0MzsJICovCiYjNDM7CWlmIChkbWFfY2ZnLSZndDttdWx0aV9tc2lfZW4pIHsKJiM0MzsJCXZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTsKJiM0MzsJCXZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTsKJiM0MzsJCXdyaXRlbCh2YWx1ZSwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYCBhbmQgYGR3eGdtYWMyLmhgLiBJdCBhcHBlYXJzIHRoZXkmIzM5O3JlIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hX2luaXRgIHRvIGhhbmRsZSBETUEgaW50ZXJydXB0cyBkaWZmZXJlbnRseSwgc3BlY2lmaWNhbGx5IHJvdXRpbmcgdGhlbSB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBpcyBhY3RpdmUuIFRoaXMgaXMgd2l0aGluIHRoZSBzdG1tYWMgZHJpdmVyLCB3aGljaCBJIGtub3cgaGFuZGxlcyBTVE1pY3JvZWxlY3Ryb25pY3MmIzM5OyBFdGhlcm5ldCBjb250cm9sbGVycywgaW5jbHVkaW5nIHRoZWlyIFhHTUFDLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRlc3QgdGhpcz8gQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IERhbW4sIEkgcmVjYWxsIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgWEdNQUMuIEJ1dCB3YWl0Li4uIENvdWxkIHRoaXMgYmUgYSBwbGF0Zm9ybSBkcml2ZXI/IE9yIHBlcmhhcHMgYSBQQ0kgZHJpdmVyIHRoYXQgKm1pZ2h0KiBiZSByZWFjaGFibGUgZXZlbiB3aXRob3V0IGZ1bGwgWEdNQUMgZW11bGF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaWYgYHN0bW1hY2AgZnVuY3Rpb25zIGFzIGEgUENJIGRyaXZlci4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgcHJhY3RpY2FsIHRoaXMgcGF0Y2ggaXMgdG8gYXNzZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipQQ0kgRHJpdmVyIElucXVpcnkqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCBzb21ldGhpbmcgZnVuZGFtZW50YWwuIEkgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gaGFyZHdhcmUgY29tcGF0aWJpbGl0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHRoaXMgZXZlbiAqaGF2ZSogYSBQQ0kgZHJpdmVyPyYjMzQ7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY29yZSBlbGVtZW50IG9mIHRoaXMgc3lzdGVtLCB3aGF0ZXZlciBpdCBtYXkgYmUsIGFjdHVhbGx5IHBvc3Nlc3NlcyB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGEgc3VpdGFibGUgc29mdHdhcmUgZHJpdmVyIGV4aXN0cyB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkuIE90aGVyd2lzZSwgSSYjMzk7bSB3YXN0aW5nIG15IHRpbWUgZXhwbG9yaW5nIGFueSBmdXJ0aGVyLCBwb3RlbnRpYWwgaW50ZWdyYXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGNoZWNrIGlzIHBhcmFtb3VudC4gTm8gZHJpdmVyLCBubyBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTM4Mj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaW50ZWxfZXRoX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg1LVx0Lm5hbWUgPSBcJiMzNDtpbnRlbC1ldGgtcGNpXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NDptb2R1bGVfcGNpX2RyaXZlcihpbnRlbF9ldGhfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MDI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjA1LVx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzczOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3NC1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBQQ0kgZHJpdmVyIGluIG1pbmQsIGJ1dCB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyB0aGlzIGVtdWxhdGVkIGluIFFFTVU/JiMzNDsuIFdlIGtub3cgUUVNVSBoYW5kbGVzIGEgYnVuY2ggb2YgbmV0d29yayBpbnRlcmZhY2VzIOKAkyBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCB0aGUgdXN1YWwgc3VzcGVjdHMuIEJ1dCwgZG9lcyBpdCBoYW5kbGUgc3RtbWFjPyBOb3BlLCBpdCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGVtdWxhdGUgdGhhdCBvbmUuCgpXYWl0LCByaWdodCwgc3RtbWFjIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBJdCYjMzk7cyB1c2VkIG9uIGEgdG9uIG9mIFNvQ3MsIGxpa2UgQVJNLWJhc2VkIHN5c3RlbXMuIFNvLCBjYW4gd2UgKnJlYWNoKiBpdCB0aHJvdWdoIFFFTVU/IFFFTVUgZG9lcyBoYXZlIHNvbWUgQVJNIGJvYXJkIG1vZGVscy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBhbnkgb2YgdGhvc2UgYm9hcmRzIHVzZSB0aGUgRGVzaWduV2FyZSBNQUMuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlIFFFTVUgbmV0d29yayBoYXJkd2FyZSBkaXJlY3RvcnkuIFRoZXJlJiMzOTtzIGkuTVggRkVDLCBMQU45MTE4LCBTTUM5MUMxMTEsIFN0ZWxsYXJpcyBFdGhlcm5ldCwgYW5kIFhHTUFDLi4uICpYR01BQyohIFRoYXQmIzM5O3MgYSBDYWx4ZWRhIDEwRyBFdGhlcm5ldCBpbnRlcmZhY2UuIERvZXMgYGh3L25ldC94Z21hYy5jYCBoYXZlIGFueSByZWxldmFuY2UgdG8gc3RtbWFjPwoKTGV0JiMzOTtzIGxvb2sgYXQgYGR3eGdtYWMyX2RtYV9pbml0YCwgc3BlY2lmaWNhbGx5LiBUaGF0IHNvdW5kcyBsaWtlIGEgcmVsZXZhbnQgZnVuY3Rpb24gbmFtZS4gV2FpdCwgdGhlIGZpbGUgaXMgYWN0dWFsbHkgYGR3eGdtYWMyX2RtYS5jYC4gSGFuZyBvbi4uLiBpcyB0aGlzIHJlbGF0ZWQgdG8gQ2FseGVkYSYjMzk7cyBYR01BQyBpbXBsZW1lbnRhdGlvbj8gUHJvYmFibHkgbm90LCBzaW5jZSB0aGF0IHNlZW1zIHRvIGJlIGluIGB4Z21hY19lbmV0LmNgIG9yIGEgc2ltaWxhciBmaWxlLgoKT2theSwgbGV0JiMzOTtzIGJhY2sgdXAuIExldCYjMzk7cyBzZWFyY2ggdGhlIFFFTVUgc291cmNlIGZvciBhbnkgdXNhZ2Ugb2YgYGR3eGdtYWMyYC4KCkhhbmcgb24uLi4gaXMgc3l6a2FsbGVyIHVzaW5nIHN0bW1hYyB2aWEgYSB2aXJ0dWFsIGRldmljZT8gTm9wZSwgaXQmIzM5O3Mgbm90IHNldCB1cCB0aGF0IHdheS4gV2FpdCBhIG1pbnV0ZS4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgaGF2ZSBgc3l6X3BjaV92cGNpYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRvIGZ1enogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZnV6emVzIFBDSSBkZXZpY2VzIHVzaW5nIGEgYHN5el9wY2lgIHBzZXVkby1zeXNjYWxsLCBidXQgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBib3VuZCB0byBhIHZpcnR1YWwgUENJIGRldmljZS4gQnV0IHdhaXQsIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgcGFydCBvZiB0aGUgc3RtbWFjIGRyaXZlci4KClNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBpcyBgZHd4Z21hYzJfZG1hX2luaXRgIHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBRRU1VIHNldHVwPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyX2RtYV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0yMy1cdFx0XHQgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo0NTpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTQ2LVx0XHRcdFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5LVx0XHRcdFx0ICAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo3NDpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF90eF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVx0XHRcdFx0ICAgICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XHQuaW5pdCA9IGR3eGdtYWMyX2RtYV9pbml0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk3Olx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTg6XHQuaW5pdF9yeF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfcnhfY2hhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcdC5pbml0X3R4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF90eF9jaGFuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNjAwLVx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4OQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIERNQSBPcGVyYXRpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiB0aGUgYGR3eGdtYWMyMTBfZG1hX29wc2Agc3RydWN0dXJlLCBhIGZhbWlsaWFyIG5hbWUuIExldCBtZSBxdWlja2x5IHRyYWNlIGl0cyB1c2FnZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQ7IGtub3dpbmcgd2hlcmUgdGhlc2UgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucyBhcmUgYmVpbmcgYXBwbGllZCBpcyBjcnVjaWFsLiBUaGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNmZXIgd2l0aGluIHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZC9vciBjb250cm9sIG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIERNQSBlbmdpbmUsIHByb2JhYmx5IGZvciBtb3ZpbmcgRXRoZXJuZXQgcGFja2V0cyBpbiBhbmQgb3V0IG9mIHRoZSBkZXZpY2UmIzM5O3MgbWVtb3J5IGJ1ZmZlcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY2FsbGluZyBpdCB0byBncmFzcCBob3cgdGhlIGRldmljZSBkcml2ZXIgaXMgd29ya2luZywgYW5kIGhvdyBpdHMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2R3eGdtYWMyMTBfZG1hX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2Nj1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDY3OmV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz01NzE9c3RhdGljIGludCBkd3hnbWFjMl9lbmFibGVfdGJzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk0OmNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU3LVx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4Olx0XHQuZG1hID0gXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cdFx0Lm1hYyA9IFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjgxLVx0XHQubWFjID0gXHUwMDI2ZHd4bGdtYWMyX29wcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk1NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgaHdpZi5jYCBTb3VyY2UgQ29kZSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgaHdpZi5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIFdoYXQmIzM5O3MgdGhlIGludGVyZmFjZSBpdCBwcm92aWRlcz8gRG9lcyBpdCBhYnN0cmFjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIG9yIGlzIGl0IG1vcmUgb2YgYSBsb3ctbGV2ZWwgZHJpdmVyPyBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbiBuYW1lcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIOKAkyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50cywgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgYW55IHN0YXRlIHZhcmlhYmxlcyBpdCBtYW5hZ2VzLiBJJiMzOTtsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aG9zZSB3aXRoIHRoZSBleGlzdGluZyBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcyBvciBtYWNyb3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGdyZXBwaW5nIGZvciB0aG9zZSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IGl0IGFkYXB0cyB0byBkaWZmZXJlbnQgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIGFuZCB0aGVuIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IGZyb20gdGhlcmUuIFdoYXQmIzM5O3MgdGhlIGxpa2VseSBtZW1vcnkgZm9vdHByaW50IGFuZCBwZXJmb3JtYW5jZSBwcm9maWxlPyBBbnkgcG90ZW50aWFsIGNvbnRlbnRpb24gaXNzdWVzPyBBbGwgb2YgdGhpcyBpbmZvcm1zIG15IHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19od2lmX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMDA9aW50IHN0bW1hY19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEyLVx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjkzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NC1zdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6Mjk2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzE5LVx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjA6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMyMS1cdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgSGFyZHdhcmUgSW50ZXJmYWNlIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluZGljYXRlcyB0aGF0IGBzdG1tYWNfaHdpZl9pbml0YCBpcyB0aGUga2V5IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIFRoZSBjcnVjaWFsIHBpZWNlIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IGNvcmUgdHlwZXMuIEdpdmVuIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYCwgdGhlIGFzc29jaWF0ZWQgY29yZSB0eXBlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYERXTUFDX0NPUkVfWEdNQUNgIG9yIHNvbWV0aGluZyBlcXVhbGx5IGRlc2NyaXB0aXZlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uc3VsdCB0aGUgYHN0bW1hY19od2lmX2VudHJ5YCBhcnJheS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlIGRlZmluaXRpb25zIGFyZSBsaWtlbHkgc3RvcmVkIGluIGBod2lmLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZXRhaWxzIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIHR5cGUgYXNzb2NpYXRpb24gYW5kIGZ1cnRoZXIgdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFx0XHQuZGV2X2lkID0gRFdYR01BQ19JRCxcbiAyNTE6XHRcdFx0LnJlZ3MgPSB7XG4gMjUyOlx0XHRcdFx0LnB0cF9vZmYgPSBQVFBfWEdNQUNfT0ZGU0VULFxuIDI1MzpcdFx0XHRcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcbiAyNTQ6XHRcdFx0XHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXG4gMjU1Olx0XHRcdFx0LmZwZV9yZWcgPSBcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxuIDI1NjpcdFx0XHR9LFxuIDI1NzpcdFx0XHQuZGVzYyA9IFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXG4gMjU4Olx0XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG4gMjU5Olx0XHRcdC5tYWMgPSBcdTAwMjZkd3hnbWFjMjEwX29wcyxcbiAyNjA6XHRcdFx0LnZsYW4gPSBcdTAwMjZkd3hnbWFjMjEwX3ZsYW5fb3BzLFxuIDI2MTpcdFx0XHQuaHd0aW1lc3RhbXAgPSBcdTAwMjZzdG1tYWNfcHRwLFxuIDI2MjpcdFx0XHQucHRwID0gXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXG4gMjYzOlx0XHRcdC5tb2RlID0gTlVMTCxcbiAyNjQ6XHRcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuIDI2NTpcdFx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuIDI2NjpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyNjc6XHRcdFx0LnNldHVwID0gZHd4Z21hYzJfc2V0dXAsXG4gMjY4Olx0XHRcdC5xdWlya3MgPSBOVUxMLFxuIDI2OTpcdFx0fSwge1xuIDI3MDpcdFx0XHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcbiAyNzE6XHRcdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbiAyNzI6XHRcdFx0LmRldl9pZCA9IERXWExHTUFDX0lELFxuIDI3MzpcdFx0XHQucmVncyA9IHtcbiAyNzQ6XHRcdFx0XHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXG4gMjc1Olx0XHRcdFx0Lm1tY19vZmYgPSBNTUNfWEdNQUNfT0ZGU0VULFxuIDI3NjpcdFx0XHRcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcbiAyNzc6XHRcdFx0XHQuZnBlX3JlZyA9IFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXG4gMjc4Olx0XHRcdH0sXG4gMjc5Olx0XHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbiAyODA6XHRcdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbiAyODE6XHRcdFx0Lm1hYyA9IFx1MDAyNmR3eGxnbWFjMl9vcHMsXG4gMjgyOlx0XHRcdC52bGFuID0gXHUwMDI2ZHd4bGdtYWMyX3ZsYW5fb3BzLFxuIDI4MzpcdFx0XHQuaHd0aW1lc3RhbXAgPSBcdTAwMjZzdG1tYWNfcHRwLFxuIDI4NDpcdFx0XHQucHRwID0gXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXG4gMjg1Olx0XHRcdC5tb2RlID0gTlVMTCxcbiAyODY6XHRcdFx0LnRjID0gXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxuIDI4NzpcdFx0XHQubW1jID0gXHUwMDI2ZHd4Z21hY19tbWNfb3BzLFxuIDI4ODpcdFx0XHQuZXN0ID0gXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcbiAyODk6XHRcdFx0LnNldHVwID0gZHd4bGdtYWMyX3NldHVwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODMzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgRFdNQUNfQ09SRV9YR01BQyBhbmQgU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSB0YXJnZXQgaGVyZSBpcyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoZSBmaXJzdCBxdWVzdGlvbiBpcyBhbHdheXM6IGNhbiBJIHJlYWNoIHRoaXMgaW4gUUVNVT8gQW5kIHRoYXQgcXVpY2tseSBsZWFkcyB0byAmIzM0O2NhbiBJIHJlYWNoIGBzdG1tYWNgIGluIFFFTVU/JiMzNDsgUUVNVSwgaW4gaXRzZWxmLCBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IGBzdG1tYWNgIHVzZWQgYnkgYGR3bWFjLWludGVsYCwgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSBJbnRlbCBFbGtoYXJ0IExha2UsIFRpZ2VyIExha2UsIGFuZCBBbGRlciBMYWtlJiMzOTtzIFBTRSBHYkU/CgpBbHJpZ2h0LCBuZXh0IHN0ZXA6IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJbnRlbCBQU0UgR2JFLCBvciBwZXJoYXBzIGFueSBvdGhlciBQQ0kgZGV2aWNlIHRoYXQgdXRpbGl6ZXMgdGhlIGBzdG1tYWNgIGRyaXZlcj8gQSBxdWljayBjaGVjayByZXZlYWxzIGEgbmVnYXRpdmUsIFFFTVUgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGRpcmVjdCBlbXVsYXRpb24gZm9yIEludGVsIFBTRSBHYkUuCgpCdXQuLi4gbm93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDYW4gSSBmdXp6IHRoaXMgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZT8gVGhhdCYjMzk7cyB3aGVuIGBzeXpfcGNpX3ZwY2lgIG9yIGBzeXpfcGNpYCBjb21lIGludG8gcGxheS4gQnV0IHdhaXQsIGBzeXpfcGNpYCBpc24mIzM5O3QgYSAqdmlydHVhbCogUENJIGRldmljZTsgaXQmIzM5O3MgYSBraW5kIG9mIHBzZXVkby1zeXN0ZW0gY2FsbCB0aGF0IGluamVjdHMgUENJIGRldmljZSBJRHMsIHJpZ2h0PyBJdCYjMzk7cyBhYm91dCBwcm9iaW5nIHRoZSBkcml2ZXIsIG5vdCBlbXVsYXRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLi4uIHVubGVzcyB0aGUgZHJpdmVyIHVzZXMgTWVtb3J5LU1hcHBlZCBJL08gKE1NSU8pLCB3aGljaCBzeXprYWxsZXIgY2FuIGludGVyY2VwdD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMsIGl0IGNhbiYjMzk7dCBpbnRlcmNlcHQgTU1JTy4KCldhaXQsIGRvZXMgc3l6a2FsbGVyIGV2ZW4gaGF2ZSBgc3l6X3BjaWA/IEFtIEkgdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2U/IFN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCwgdGhvc2UgYXJlIHNvbWUgZXhhbXBsZXMuIFdoYXQgYWJvdXQgUENJPyBgc3l6X2t2bV9zZXR1cF9jcHVgPyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lgPyBMZXQmIzM5O3MgY2hlY2sgdGhlIHNvdXJjZSwgaXQmIzM5O3MgdGhlIG9ubHkgd2F5IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X3BjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGxvb2tpbmcgYXQgc29tZXRoaW5nLCBhbmQgc3VkZGVubHkgaXQmIzM5O3MgaGl0dGluZyBtZTogU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBgc3l6X3BjaWAgc3lzdGVtIGNhbGwsIHJpZ2h0PyBXYWl0LCBkb2VzIHN5emthbGxlciBhY3R1YWxseSAqZnV6eiogUENJIGRyaXZlcnM/IE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIG5vLCBub3QgZ2VuZXJhbGx5LiBVbmxlc3MgaXQmIzM5O3MgdmlydHVhbGl6ZWQsIGxpa2Ugd2l0aCB2aXJ0aW8sIG9yIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciwgbGlrZSB0aGF0IGBtYWM4MDIxMV9od3NpbWAgdGhpbmcuCgpSaWdodCwgc28gSSB3YXMgbG9va2luZyBhdCBgc3RtbWFjYC4uLiB0aGF0JiMzOTtzIGFuIEV0aGVybmV0IGRyaXZlciwgaXNuJiMzOTt0IGl0PyBPa2F5LCBFdGhlcm5ldC4gQ2FuIHRoYXQgZXZlbiBiZSBmdXp6ZWQgdGhyb3VnaCBgdmV0aGAgb3IgYHR1bmAgaW50ZXJmYWNlcz8gTm8sIGBzdG1tYWNgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFNvLCB0aGlzIGJyaW5ncyBtZSB0byBhIHF1ZXN0aW9uOiBpcyBgc3RtbWFjYCBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VPwoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bGwgY2hlY2sgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgKnVzZWQqIGluIGFueSBRRU1VIG1hY2hpbmUgZGVmaW5pdGlvbnMuIEFoYSEgSSByZW1lbWJlciBRRU1VIGhhcyB0aGF0IGBody9uZXQveGdtYWMuY2AgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGluIGBoaWdoYmFua2AgKENhbHhlZGEpIGFuZCBgbWlkd2F5YC4gQnV0IGRvZXMgYHN0bW1hY2AgYWN0dWFsbHkgKmRyaXZlKiBgeGdtYWNgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGhlcmUuCgpMZXQmIzM5O3MgY2hlY2sgaW4gdGhlIGtlcm5lbCBzb3VyY2UsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1jYWx4ZWRhLmNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBOb3BlLCBxdWljayBsb29rIGFuZCBpdCBzZWVtcyBDYWx4ZWRhIFhHTUFDIGlzIGRyaXZlbiBieSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYC4gT2theSwgc28gbGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgZmlndXJlIG91dCB3aGF0ICpvdGhlciogZHJpdmVycyBgc3RtbWFjYCBoYXMsIGp1c3QgdG8gYmUgc3VyZS4gVGltZSB0byBleGFtaW5lIHdoYXQgYHN0bW1hY2AgZHJpdmVycyBhY3R1YWxseSAqZXhpc3QqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjaGFpbl9tb2RlLmMmIzM0OywKICAgICYjMzQ7Y29tbW9uLmgmIzM0OywKICAgICYjMzQ7ZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkZXNjc19jb20uaCYjMzQ7LAogICAgJiMzNDtkd21hYy1hbmFyaW9uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtZHdjLXFvcy1ldGguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1laWM3NzAwLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtZ2VuZXJpYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWlteC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWluZ2VuaWMuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC1wbGF0LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW50ZWwuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWlwcTgwNnguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1sb29uZ3Nvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxwYzE4eHguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZWRpYXRlay5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb244Yi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1vdG9yY29tbS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW51dm90b24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1xY29tLWV0aHFvcy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJlbmVzYXMtZ2JldGguYyYjMzQ7LAogICAgJiMzNDtkd21hYy1yay5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJ6bjEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb2NmcGdhLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc29waGdvLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3BhY2VtaXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdGFyZml2ZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0bTMyLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3VuNTVpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3VuOGkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW54aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXRlZ3JhLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGhlYWQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy12aXNjb250aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAwLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAwX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3bWFjNC5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2Rlc2NzLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2Rlc2NzLmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5jJiMzNDssCiAgICAmIzM0O2R3bWFjNF9kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfbGliLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM1LmMmIzM0OywKICAgICYjMzQ7ZHdtYWM1LmgmIzM0OywKICAgICYjMzQ7ZHdtYWNfZG1hLmgmIzM0OywKICAgICYjMzQ7ZHdtYWNfbGliLmMmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzIuaCYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHd4Z21hYzJfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd3hsZ21hYzIuaCYjMzQ7LAogICAgJiMzNDtlbmhfZGVzYy5jJiMzNDssCiAgICAmIzM0O2h3aWYuYyYjMzQ7LAogICAgJiMzNDtod2lmLmgmIzM0OywKICAgICYjMzQ7bW1jLmgmIzM0OywKICAgICYjMzQ7bW1jX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtub3JtX2Rlc2MuYyYjMzQ7LAogICAgJiMzNDtyaW5nX21vZGUuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWMuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2VzdC5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19ldGh0b29sLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19mcGUuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfaHd0c3RhbXAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2xpYnBjaS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19tYWluLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX21kaW8uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNpLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY3MuaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGxhdGZvcm0uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3B0cC5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19zZWxmdGVzdHMuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfdGMuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfdmxhbi5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHAuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzIxCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlFFTVUgYW5kIE5ldHdvcmsgRHJpdmVyIEVtdWxhdGlvbiAtIE15IFBlcnNwZWN0aXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIFFFTVUmIzM5O3MgcGxhdGZvcm0gZHJpdmVycy4gVGhlcmUmIzM5O3MgYSB3aWRlIHJhbmdlIG9mIHRoZW0sIGFuZCBJJiMzOTttIHRyeWluZyB0byBzZWUgd2hpY2ggbmV0d29yayBoYXJkd2FyZSB0aGV5IGVtdWxhdGUuIFFFTVUgZGVmaW5pdGVseSBoYW5kbGVzIGEgZ29vZCBudW1iZXI6IGBpbXhgIGZvciBGcmVlc2NhbGUgaS5NWCwgYHN1bjhpYCBmb3IgQWxsd2lubmVyIEgzLCBgc3RtMzJgIGZvciBTVE0zMiwgYHNvY2ZwZ2FgIGZvciBBbHRlcmEgU09DRlBHQSwgYW5kIGB0ZWdyYWAgZm9yIE5WSURJQSBUZWdyYS4KCkhhbmcgb24gYSBzZWNvbmQuLi4gSSBzYXcgYGh3L25ldC9pbXhfZmVjLmNgLCB3aGljaCBtYWtlcyBtZSB0aGluayBvZiB0aGUgaS5NWCBGRUMvRU5FVCwgYnV0IG5vdCBzdG1tYWMuIFNvLCBpdCBhcHBlYXJzIFFFTVUgaGFuZGxlcyB0aGUgc3BlY2lmaWMgRkVDL0VORVQgZm9yIGkuTVgsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbi4KClRoZW4gSSBzYXcgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCB3aGljaCwgZnJvbSB0aGUgbmFtaW5nLCBpcyBjbGVhcmx5IHRoZSBTdW44aSBFTUFDLiBOb3csIGlzIGBkd21hYy1zdW44aS5jYCB0aGUgZHJpdmVyIGZvciAqdGhhdCogc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZGlnIGludG8uIFRpbWUgdG8gY2hlY2sgYGR3bWFjLXN1bjhpLmNgIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGx3aW5uZXIsc3VuOGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NzYzPXN0YXRpYyBpbnQgZ2V0X2VwaHlfbm9kZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNzc2LVx0bWRpb19pbnRlcm5hbCA9IG9mX2dldF9jb21wYXRpYmxlX2NoaWxkKG1kaW9fbXV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzo3Nzc6XHRcdFx0XHRcdFx0XCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLW1kaW8taW50ZXJuYWxcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzgtXHRvZl9ub2RlX3B1dChtZGlvX211eCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNjk6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzAtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2gzIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzE6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXYzcy1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcyLVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF92M3MgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc0LVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9hODN0IH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzU6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXI0MC1nbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc2LVx0XHQuZGF0YSA9IFx1MDAyNmVtYWNfdmFyaWFudF9yNDAgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MjEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFFFTVUmIzM5O3MgU3VuOGkgRU1BQyBFbXVsYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBRRU1VIGV4cGxpY2l0bHkgc3VwcG9ydHMgYGFsbHdpbm5lcixzdW44aS1oMy1lbWFjYCBpbiBpdHMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gQnV0LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gV2hpbGUgdGhpcyBmaWxlIGVtdWxhdGVzIHRoZSBFTUFDLCBkb2VzIGl0IGFjdHVhbGx5IGVtdWxhdGUgdGhlIHVuZGVybHlpbmcgRGVzaWduV2FyZSBNQUMgKHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2ApIHRoYXQmIzM5O3MgdHlwaWNhbCBvZiB0aGVzZSBBbGx3aW5uZXIgU29Dcz8KCkxldCBtZSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgKmlzKiBpbmRlZWQgZW11bGF0aW5nIGEgRGVzaWduV2FyZSBNQUMuIEFoLCB5ZXMsIHRoZSBTdW44aSBFTUFDIGlzIGNvbmZpcm1lZCB0byBiZSBhIERlc2lnbldhcmUgTUFDLgoKTm93LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UgSSYjMzk7bSBleGFtaW5pbmcgaXMgYGR3eGdtYWMyX2RtYS5jYC4gVGhhdCYjMzk7cyBwb2ludGluZyB0b3dhcmRzIGFuIFhHTUFDLCB3aGljaCBoYW5kbGVzIDEwIEdpZ2FiaXQgc3BlZWRzLiBUaGUgU3VuOGkgaXNuJiMzOTt0IGtub3duIGZvciB0aGF0IGNhcGFiaWxpdHkuIERvZXMgdGhlIFN1bjhpICphY3R1YWxseSogdXNlIGFuIFhHTUFDPwoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgdXNlcyBhIFhHTUFDLCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBkd21hYy1zdW44aS5jYCBzYXlzIGFib3V0IHRoZSBjb3JlIHR5cGUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5NTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYHN0bW1hY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IGZ1enphYmxlIGBzdG1tYWNgIGlzLiBGaXJzdCB0aG91Z2h0OiBpdCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IHNldCBgY29yZV90eXBlYC4gVGhhdCBwcm9iYWJseSBtZWFucyBpdCYjMzk7cyByZWx5aW5nIG9uIHRoZSBnZW5lcmljIGBzdG1tYWNgIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmVhZCB0aGUgTUFDIHZlcnNpb24gcmVnaXN0ZXIuIEJ1dCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaGFyZHdhcmUuIFhHTUFDIGlzIDEwRywgd2hpbGUgU3VuOGkgaXMgMTAvMTAwLzEwMDAuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgWEdNQUM/IEkgdGhpbmsgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L3hnbWFjLmNgLCBidXQgdGhhdCBsb29rcyBsaWtlIGl0JiMzOTtzIGZvciBDYWx4ZWRhLiBEb2VzIGBzdG1tYWNgIHN1cHBvcnQgQ2FseGVkYT8gTm8sIHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUgdXNlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYCBpbnN0ZWFkLgoKV2FpdCwgd2hhdCBhYm91dCBgZHdtYWMtaW50ZWwuY2A/IFRoYXQmIzM5O3MgYSBQQ0kgZHJpdmVyISBOb3csIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZGV2aWNlcz8gSSBzZWVtIHRvIHJlbWVtYmVyIHRoZXJlIHdhcyBhIHBzZXVkby1zeXNjYWxsIGNhbGxlZCBgc3l6X3BjaWAuIFdhaXQsIG5vLCBJIGp1c3QgY2hlY2tlZC4gSSB3YXMgd3JvbmcsIGl0IGRvZXNuJiMzOTt0LiBPciAqZG9lcyogaXQ/IExldCBtZSBjaGVjayBhZ2Fpbi4uLiBpdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgaXQmIzM5O3MgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFN5emthbGxlciBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV92cGNpYC4uLiBObywgaG9sZCBvbi4gSSYjMzk7bSBnZXR0aW5nIGNvbmZ1c2VkLiBGb3IgS1ZNLCBzeXprYWxsZXIgdXNlcyBgc3l6X2t2bV9zZXR1cF9jcHVgLCBmb3IgVVNCIGBzeXpfdXNiX2Nvbm5lY3RgLCBhbmQgZm9yIG1hYzgwMjExLCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAuCgpIb2xkIG9uLi4uIEkmIzM5O3ZlIGdvdCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0IG1lIGNoZWNrIHNvbWV0aGluZy4uLiB0aGlzIHByb21wdCBzYXlzICYjMzQ7SW1wb3J0YW50IG5vdGU6IHRoaXMgdG9vbCBDQU5OT1QgYmUgdXNlZCB0byBzZWFyY2ggc3l6a2FsbGVyIHN5emxhbmcgZGVzY3JpcHRpb25zIChzeXMvKikgb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZyAmIzM5O3N5el8mIzM5OyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzJiMzNDsuIFNvIGl0IGRvZXMgaW1wbHkgdGhlIGV4aXN0ZW5jZSBvZiBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIE9rYXksIHJlZ2FyZGxlc3Mgb2YgaG93IHN5emthbGxlciBoYW5kbGVzIFBDSSBmdXp6aW5nLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCBgc3RtbWFjYD8KCklmIGBzdG1tYWNgICppcyogYSBQQ0kgZHJpdmVyLCB0aGVuIGl0JiMzOTtzICpwb3RlbnRpYWxseSogZnV6emFibGUsIGFzc3VtaW5nIHN5emthbGxlciBzdXBwb3J0cyBQQ0kgZnV6emluZy4gVGhlIHBhdGNoIGlzIG1vZGlmeWluZyBgZHd4Z21hYzJfZG1hLmNgLCBzbyBub3cgSSYjMzk7bSBmb2N1c2VkIG9uIHdoZXRoZXIgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyByZWFjaGFibGUuIExldCYjMzk7cyBzZWUgaWYgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXMgYWN0dWFsbHkgdXNlZCBieSBhbnkgUENJIGRldmljZXMuIGBzdG1tYWNfcGNpLmNgIGFuZCBgZHdtYWMtaW50ZWwuY2AgYXJlIFBDSSBkcml2ZXJzLCBidXQgZG8gdGhleSBhY3R1YWxseSB1c2UgWEdNQUM/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbiBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDAtI2RlZmluZSBEV01BQ19DT1JFXzVfMjBcdFx0MHg1MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDE6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8xMFx0MHgyMVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDI6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8yMFx0MHgyMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDMtI2RlZmluZSBEV1hMR01BQ19DT1JFXzJfMDBcdDB4MjBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00NS0vKiBEZXZpY2UgSUQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjQ2OiNkZWZpbmUgRFdYR01BQ19JRFx0XHQweDc2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00Ny0jZGVmaW5lIERXWExHTUFDX0lEXHRcdDB4Mjdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjc6I2lmbmRlZiBfX1NUTU1BQ19EV1hHTUFDMl9IX19cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6ODojZGVmaW5lIF9fU1RNTUFDX0RXWEdNQUMyX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC05LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg9NDY4PWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2Rlc2Nfb3BzIGR3eGdtYWMyMTBfZGVzY19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg6NDcwOiNlbmRpZiAvKiBfX1NUTU1BQ19EV1hHTUFDMl9IX18gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0zNjE9c3RhdGljIGludCBkd3hnbWFjMl9nZXRfaHdfZmVhdHVyZSh2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0zOTEtXHRkbWFfY2FwLVx1MDAzZW1icHNfMTAwMCA9IChod19jYXAgXHUwMDI2IFhHTUFDX0hXRkVBVF9HTUlJU0VMKSBcdTAwM2VcdTAwM2UgMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjM5MjpcdGlmIChkbWFfY2FwLVx1MDAzZW1icHNfMTAwMCBcdTAwMjZcdTAwMjYgcHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXWEdNQUNfQ09SRV8yXzIwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMzkzLVx0XHRkbWFfY2FwLVx1MDAzZW1icHNfMTBfMTAwID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDgtXHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0OTpcdFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI1MDpcdFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjUxLVx0XHQucmVncyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTcyPXN0YXRpYyB2b2lkIHN0bW1hY194Z21hYzJfYzIyX2Zvcm1hdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBwaHlhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjc3Olx0aWYgKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNjIERXWEdNQUNfQ09SRV8yXzIwKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc4LVx0XHQvKiBVbnRpbCB2ZXIgMi4yMCBYR01BQyBkb2VzIG5vdCBzdXBwb3J0IEMyMiBhZGRyIFx1MDAzZT0gNC4gVGhvc2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTEzMj1zdGF0aWMgaW50IHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5YWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTEzOC1cdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXHUwMDNlPSA0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjEzOTpcdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtMTQwLVx0ICAgIHBoeWFkZHIgXHUwMDNlIE1JSV9YR01BQ19NQVhfQzIyQUREUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTE5NT1zdGF0aWMgaW50IHN0bW1hY194Z21hYzJfbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeWFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0yMDEtXHQvKiBVbnRpbCB2ZXIgMi4yMCBYR01BQyBkb2VzIG5vdCBzdXBwb3J0IEMyMiBhZGRyIFx1MDAzZT0gNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzoyMDI6XHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjAgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTIwMy1cdCAgICBwaHlhZGRyIFx1MDAzZSBNSUlfWEdNQUNfTUFYX0MyMkFERFIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2Mjg6XHRcdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02MjktXHRcdFx0LyogUmlnaHQgbm93IG9ubHkgQzIyIHBoeXMgYXJlIHN1cHBvcnRlZCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgTUFDIERldGFpbHMqKgoKQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgRFdNQUNfQ09SRV9YR01BQ2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBraWNrcyBpbnRvIGdlYXIuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SGFuZyBvbiwgYERXTUFDX0NPUkVfWEdNQUNgLi4uIGlzbiYjMzk7dCB0aGF0IGEgc3BlY2lmaWMgWEdNQUMgY29yZSwgbGlrZWx5IGEgRGVzaWduV2FyZSBvbmU/IEFuZCBzcGVjaWZpY2FsbHksIGEgY29yZSB0aGF0JiMzOTtzICpwcm9iYWJseSogdXNlZCBpbiBhIGJyb2FkIHJhbmdlIG9mIGFwcGxpY2F0aW9ucy4mIzM0OyBUaGUgbmV4dCBxdWVzdGlvbiwgYWxtb3N0IHJlZmxleGl2ZSBhdCB0aGlzIHBvaW50LCBpczogJiMzNDtEb2VzIHRoaXMgcGFydGljdWxhciBYR01BQyBpbXBsZW1lbnRhdGlvbiwgYERXTUFDX0NPUkVfWEdNQUNgLCBzaG93IHVwIGFzIGEgY29yZSB1c2VkIGluIGFueSBQQ0ktYmFzZWQgZHJpdmVyPyYjMzQ7IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgcG9zc2libGUgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSB1c2luZyB0aGlzIGNvcmUsIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbnRleHQuIFRoYXQgcXVlc3Rpb24gaXMgZ29pbmcgdG8gZHJpdmUgbXkgbmV4dCBpbnZlc3RpZ2F0aW9ucyBhbmQgY29uc2lkZXJhdGlvbnMgYXJvdW5kIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDX0NPUkVfWEdNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlx0cGxhdF9kYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNTEtXHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI0ODpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ5LVx0XHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNzA6XHRcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3MS1cdFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwNi1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDgtXHRcdCAgICBkZXZfaWQgIT0gZW50cnktXHUwMDNlZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDM19YX09GRlNFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XHRcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXHRcdFx0cHJpdi1cdTAwM2Vlc3RhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgRVNUX1hHTUFDX09GRlNFVDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgJiM0MzsgRVNUX0NPTlRST0wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTU3LVx0XHRjdHJsIFx1MDAyNj0gfkVTVF9YR01BQ19QVE9WO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cdGlmIChzdGF0dXMgXHUwMDI2IEVTVF9CVFJFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlx0XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUyLVx0XHRcdGJ0cmwgPSBGSUVMRF9HRVQoRVNUX1hHTUFDX0JUUkwsIHN0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjMwOTpcdGVsc2UgaWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVx0XHRzdHJzY3B5KGluZm8tXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVx1MDAzZWRyaXZlcikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cdFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzYxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dyZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXHRcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcdH0gZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3Ny1cdFx0bWVtY3B5KFx1MDAyNnJlZ19zcGFjZVtFVEhUT09MX0RNQV9PRkZTRVRdLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU1NT1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkwLVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjU5MTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjU5Mi1cdFx0c2VxX3ByaW50ZihzZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE0LVx0XHQgICAocHJpdi1cdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFwmIzM0O1lcJiMzNDsgOiBcJiMzNDtOXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYxNTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTYtXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjMtXHRpZiAocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfNF8wMCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjI0Olx0ICAgIHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVx0XHRzZXFfcHJpbnRmKHNlcSwgXCYjMzQ7XFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzU1PXN0YXRpYyB2b2lkIHN0bW1hY19wcmludF9hY3RwaHlpZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzcxOlx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcyLVx0XHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM5Nz1zdGF0aWMgaW50IHN0bW1hY19od19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MTktXHRpZiAoKHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzUyMDpcdCAgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUyMS1cdCAgICAhcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJpd3Rfb2ZmKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5OTQ6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03OTk1LVx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBYR01BQ19KVU1CT19MRU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVx0XHRyYXRlcyA9IHN0bW1hY19zdW44aV9jc3JfdG9fbWRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXHRcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01OTU9aW50IHN0bW1hY19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2MjI6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cdFx0bmV3X2J1cy1cdTAwM2VyZWFkID0gXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjY2Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVx0XHRzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jNDUobmV3X2J1cywgMCwgMCwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFwmIzM0O3NucHMsZHd4Z21hY1wmIzM0OykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcdFx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNTQ5LVx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDkyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogODY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgWEdNQUMgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZHJpdmVycywgYGR3bWFjLXNvY2ZwZ2EuY2AgYW5kIGBkd21hYy10ZWdyYS5jYCwgYW5kIHRoZXkgYm90aCBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgLiBJbnRlcmVzdGluZy4gVGhlIFFFTVUgZW11bGF0b3IgaXMga25vd24gdG8gZW11bGF0ZSBib3RoIGB0ZWdyYWAgYW5kIGBzb2NmcGdhYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSBhY3R1YWxseSBlbXVsYXRlcyB0aGUgWEdNQUMgY29yZSB3aXRoaW4gdGhlIFRlZ3JhIG9yIFNPQ0ZQR0EgZW11bGF0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gUUVNVSYjMzk7cyBzb3VyY2Ug4oCTIHNwZWNpZmljYWxseSBgaHcvbmV0L2AgYW5kIGBody9hcm0vdGVncmEqYC4KClJpZ2h0LCBpdCBzZWVtcyBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhlIFRlZ3JhIFhHTUFDLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIGZ1enppbmcuIEhvd2V2ZXIsIHN5emthbGxlciBtaWdodCBzdGlsbCBiZSBhYmxlIHRvIGZ1enogdGhlIHBsYXRmb3JtIGRyaXZlcnMgaWYgaXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcyBvciB1c2UgdmlydHVhbCBkZXZpY2VzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIHJlbWVtYmVyIGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMuIEl0IGlzIG5vdCBkb25lIHZpYSBgc3l6X3BjaWAsIHJpZ2h0PyBBbmQgbm90IGBzeXpfdXNiX2Nvbm5lY3RgLiBJdCAqZG9lcyogdXNlIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgdG8gZnV6ei4gCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEhvdyBpcyAqaXQqIGZ1enplZD8gSXMgdGhlcmUgYSB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZT8gTm8sIEkgZG9uJiMzOTt0IHRoaW5rIHNvLgoKQWgsIGJ1dCB3YWl0ISBUaGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGEgc3BlY2lmaWMgc2V0IG9mIHNjZW5hcmlvcy4gVGhpcyBpbmNsdWRlcyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoaW5ncyBsaWtlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMsIG9yIGFueXRoaW5nIGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZC4KClNvLCBpcyBgc3RtbWFjYCByZWFjaGFibGUgaW4gUUVNVT8gUUVNVSBkb2VzIGhhdmUgYSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIHdoaWNoIGVtdWxhdGVzIHRoZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgLiBCdXQsIGRvZXMgdGhhdCB1c2UgYGR3eGdtYWMyX2RtYV9pbml0YD8gTm8sIGJlY2F1c2UgYGFsbHdpbm5lcixzdW44aS1oMy1lbWFjYCBpcyBqdXN0IGEgMTAvMTAwLzEwMDAgTUFDLCBub3QgYW4gWEdNQUMuIFRoaW5raW5nIGNsZWFybHksIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgKm9ubHkqIHVzZWQgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4KCk9rYXksIHRoZSBxdWVzdGlvbiBpcyBub3cgYmVjb21pbmcgbW9yZSBmb2N1c2VkLiBJcyBgRFdNQUNfQ09SRV9YR01BQ2AgcmVhY2hhYmxlIGluIFFFTVUgYXQgYWxsPyBMZXQmIzM5O3Mgc2VlIGlmIFFFTVUgaGFzIGFueSBYR01BQyBlbXVsYXRpb24uIEl0IGRvZXMhIFFFTVUgaGFzIGBody9uZXQveGdtYWMuY2AuIE5vdywgdGhlIGZpbmFsIGNoZWNrOiBpcyB0aGlzIGBody9uZXQveGdtYWMuY2AgY29tcGF0aWJsZSB3aXRoIGVpdGhlciB0aGUgYHNucHMsZHd4Z21hY2Agb3IgYHN0bW1hY2AgY29tcGF0aWJsZSBzdHJpbmdzPyBObywgaXQmIzM5O3MgZm9yIENhbHhlZGEuIFRoZSBMaW51eCBjb21wYXRpYmxlIHN0cmluZyBmb3IgQ2FseGVkYSYjMzk7cyBYR01BQyBpcyBgY2FseGVkYSxoYi14Z21hY2AuIFRoZSBjb3JyZXNwb25kaW5nIExpbnV4IGRyaXZlciBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jYC4gQWhhLCB0aGF0IGlzIGEgKnNlcGFyYXRlKiBkcml2ZXIsIG5vdCB0aGUgYHN0bW1hY2AhIE5vdyB0aGUgbGFzdCB0aGluZyB0byBkbyBpcyB0byBjaGVjayBpZiBgc3RtbWFjYCBiaW5kcyB0byBgY2FseGVkYSxoYi14Z21hY2AuIEFuZCB0aGF0IHNob3VsZCBjb21wbGV0ZSB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NhbHhlZGEsaGIteGdtYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc2NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBRRU1VIGFuZCBFdGhlcm5ldCBFbXVsYXRpb24gSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBRRU1VJiMzOTtzIEV0aGVybmV0IGVtdWxhdGlvbiBhbmQgaXQgc2VlbXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGB4Z21hYy5jYCBiZWluZyB0aGUgc2FtZSBhcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGluY29ycmVjdC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGJ1dCBub3cgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIFFFTVUgZW11bGF0ZXMgKmFueSogaGFyZHdhcmUgdGhhdCByZWxpZXMgb24gYERXTUFDX0NPUkVfWEdNQUNgIHdpdGhpbiB0aGUgYHN0bW1hY2AgZnJhbWV3b3JrLgoKTGV0IG1lIHNlZS4uLiB0aGUgZGV2aWNlcyB0aGF0IHVzZSB0aGF0IGNvcmUgYXJlOiBgc25wcyxkd3hnbWFjYCwgYGR3bWFjLXNvY2ZwZ2EuY2AgKHRoYXQmIzM5O3MgdGhlIEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NiBhbmQgbmV3ZXIpLiBIbW1tLCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqZWl0aGVyKiBBZ2lsZXg1IG9yIFRlZ3JhMTg2PyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgaXMgbm8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4KCkxvb2tpbmcgYXQgdGhlIFFFTVUgc291cmNlLCBJIHNlZSBhIGZldyBBUk0tYmFzZWQgaGFyZHdhcmUgbW9kZWxzOiBgaHcvYXJtL2FzcGVlZC5jYCwgYGh3L2FybS9ucGNtN3h4LmNgLCBgaHcvYXJtL3hsbngtenlucW1wLmNgLCBhbmQgc28gb24uIEJ1dCBiYXNlZCBvbiB0aG9zZSBkZXZpY2UgdHlwZXMsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IGVtdWxhdGluZyBhbiBBZ2lsZXg1IG9yIFRlZ3JhMTg2LiBTbywgSSBkb24mIzM5O3QgKnRoaW5rKiBRRU1VIGVtdWxhdGVzIGVpdGhlciBvZiB0aG9zZS4KCk5vdywgd2hhdCBhYm91dCBQQ0k/IEkgbmVlZCB0byB0aGluayBtb3JlIGJyb2FkbHkuIEkga25vdyBgZHdtYWMtaW50ZWwuY2AgKmFsc28qIHVzZXMgYHN0bW1hY2AuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB1c2UgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlPyBJIG5lZWQgdG8gdmVyaWZ5LiBMZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgYW5kIGNoZWNrIGBkd21hYy1pbnRlbC5jYCBzcGVjaWZpY2FsbHkuIFRpbWUgdG8gZGlnIGluLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01NjU9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NjgtXHRwbGF0LVx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTY5Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3MC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTg1PXN0YXRpYyBpbnQgaW50ZWxfbWdiZV9jb21tb25fZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5NjpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODE2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyBEV01BQyBhbmQgU1RNTUFDIENvcmUgVXNhZ2UqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGR3bWFjLWludGVsLmNgIGZpbGUgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGl0IGxldmVyYWdlcyBgRFdNQUNfQ09SRV9HTUFDYCBhbmQgYERXTUFDX0NPUkVfR01BQzRgLiBOb3Qgc3VycHJpc2luZywgdGhvc2UgYXJlIGNvbW1vbiBjaG9pY2VzIGZvciB0aGlzIHR5cGUgb2YgaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIGl0ICpkb2VzbiYjMzk7dCogYXBwZWFyIHRvIHVzZSBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIG5vdGUsIGhlbHBzIG5hcnJvdyBkb3duIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBwaXZvdCB0byBgc3RtbWFjX3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBvZiB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHNlZSB3aGF0IHRoZSBkaWZmZXJlbmNlcyBpbiBjb3JlIHVzZSBhcmUuIEkmIzM5O20gc3VyZSBpdCB1c2VzIGEgc2ltaWxhciBjb3JlIGJ1dCBJIHNob3VsZCBuZXZlciBhc3N1bWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjM9c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTI2LVx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6Mjc6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yOC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01OS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NjA6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNjEtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0ODQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIERXTUFDIENvcmUgVXNhZ2UgQWNyb3NzIERyaXZlcnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIERXTUFDIGNvcmUgaXMgYmVpbmcgdXRpbGl6ZWQsIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoYXQgYHN0bW1hY19wY2kuY2AgaXMgZGVmaW5pdGVseSB1c2luZyBib3RoIGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCB0aGUgYGR3bWFjLWxvb25nc29uLmNgIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCYjMzk7cyBpbnRlcmZhY2luZyB3aXRoIHRoZSBEV01BQyBjb3JlIGFzIHdlbGwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGl04oCZcyBlbXBsb3lpbmcgdGhlc2Ugc2FtZSBjb3JlIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl04oCZcyBwb3RlbnRpYWxseSBoYW5kbGluZyB0aGluZ3MgZGlmZmVyZW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTMzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIGBkd21hYy1tb3RvcmNvbW0uY2AqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgRFdNQUMgZHJpdmVyIHNwZWNpZmljYWxseSwgYW5kIHRoZSBNb3RvcmNvbW0gaW1wbGVtZW50YXRpb24uIFRoYXQgZmlsZW5hbWUsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZSBEV01BQyBjb3JlIHdlbGwg4oCTIHRoZSBzdGFuZGFyZCBkZXNjcmlwdG9ycywgdGhlIERNQSwgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gQnV0IHRoaXMgJiMzNDtNb3RvcmNvbW0mIzM0OyBkZXNpZ25hdGlvbi4uLiB3aGF0JiMzOTtzIHRoZWlyIHRha2Ugb24gdGhlIHN0YW5kYXJkIGRyaXZlcj8gQXJlIHRoZXkgaW50cm9kdWNpbmcgcHJvcHJpZXRhcnkgZXh0ZW5zaW9ucz8gQ3VzdG9tIGhhcmR3YXJlIGFjY2VsZXJhdGlvbj8gQXJlIHRoZXkgd29ya2luZyBhcm91bmQgc29tZSBzaWxpY29uIGxpbWl0YXRpb24/IEFyZSB0aGV5IHBlcmhhcHMgdXNpbmcgc3BlY2lmaWMgUEhZIGNvbmZpZ3VyYXRpb24gbm90IGRpcmVjdGx5IGhhbmRsZWQgYnkgdGhlIHN0YW5kYXJkIGRyaXZlcj8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZmlsZSB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3ZlIG1hZGUgY2hhbmdlcyBhbmQgdW5kZXJzdGFuZCB0aGVpciByZWFzb25pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdW5pcXVlIHJlcXVpcmVtZW50cyBvciBvcHRpbWl6YXRpb25zIHRoZXkgaGF2ZSBpbXBsZW1lbnRlZC4gSXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQgaWYgSSYjMzk7bSBsb29raW5nIGF0IGNvbXBhdGliaWxpdHkgb3IgZGVidWdnaW5nIGFuIGlzc3VlIG9uIGEgc3lzdGVtIHVzaW5nIHRoYXQgRFdNQUMgdmFyaWFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29yZV90eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDctXHRwbGF0LVx1MDAzZWNsa19yZWZfcmF0ZVx0PSAxMjUwMDAwMDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDg6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ0MDAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBQQ0kgRHJpdmVyIERXTUFDIFVzYWdlKioKClJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkmIzM5O20gZ29pbmcgdGhyb3VnaCB0aGVzZSBQQ0kgZHJpdmVycyBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIG5vbmUgb2YgdGhlbSBhcmUgZGlyZWN0bHkgbGV2ZXJhZ2luZyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoYXQmIzM5O3MgYSBiaXQgc3VycHJpc2luZy4gSSBleHBlY3RlZCB0byBmaW5kICpzb21lKiB1dGlsaXphdGlvbiB0aGVyZSwgZ2l2ZW4gdGhlIGNvbW1vbmFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhbmQgbXkgbWVudGFsIG1vZGVsLi4uIEFoISB3aGF0IGFib3V0IGBkd21hYy1nZW5lcmljLmNgPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBnbywgd291bGRuJiMzOTt0IGl0PyBQZXJoYXBzIHRoZSBQQ0kgZHJpdmVycyB1dGlsaXplIGZ1bmN0aW9ucyBmcm9tICp0aGF0KiBtb2R1bGUuIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgUENJIGRyaXZlcnMgYWdhaW4sIGtlZXBpbmcgdGhpcyBpbiBtaW5kLiBJdCYjMzk7cyB0aW1lIHRvIHRha2UgYSBkZWVwZXIgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY3MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHN0bW1hYyBYR01BQyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjb2RlIGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgc2V0IHRoZSBgY29yZV90eXBlYC4gSW5zdGVhZCwgaXQgc2VlbXMgdG8gYmUgcmVseWluZyBvbiB0aGUgaGFyZHdhcmUgdmVyc2lvbiByZWdpc3Rlciwgd2hpY2ggaXMgYSBiaXQgaW1wbGljaXQuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYSBRRU1VIGJvYXJkIHNldHVwIHRoYXQgd291bGQgdHJpZ2dlciBgc3RtbWFjX3Byb2JlX2NvbmZpZ19kdGAgdG8gc2V0IGBjb3JlX3R5cGVgIHRvIGBEV01BQ19DT1JFX1hHTUFDYCBiYXNlZCBvbiBhIGRldmljZSB0cmVlIG5vZGUgd2l0aCBgY29tcGF0aWJsZSA9ICYjMzQ7c25wcyxkd3hnbWFjJiMzNDtgLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayBRRU1VJiMzOTtzIGB2aXJ0LmNgLCBidXQgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBPa2F5LCBsZXQmIzM5O3MgbG9vayBhdCBgaHcvbmV0L3hnbWFjLmNgIOKAkyBhaCwgdGhhdCYjMzk7cyBqdXN0IGZvciBDYWx4ZWRhJiMzOTtzIGBoYi14Z21hY2AuIEFyZSB0aGVyZSAqYW55KiBvdGhlciBYR01BQyBlbXVsYXRpb25zIGluIFFFTVU/IE5vcGUsIGJlc2lkZXMgYHhnbWFjLmNgLCBJIHNlZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgZm9yIG1vcmUgY29tbW9uLCBvbGRlciBoYXJkd2FyZS4KCldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgYGh3L25ldC9kZXNpZ253YXJlLmNgPyBUaGF0IHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgbGVhZCBzaW5jZSBpdCYjMzk7cyBpbiB0aGUgbmV0d29yayBkaXJlY3RvcnkuIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyByZWxldmFudCB0byBgc3RtbWFjYC4gWWVzLCBpdCAqaXMqIHRoZSBEZXNpZ25XYXJlIE1BQy4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29tcGF0aWJsZSBzdHJpbmcgb3IgUENJIElEIGl0IHVzZXMuIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGluc3BlY3QgdGhlIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHdoaWNoIGJvYXJkcyBhY3R1YWxseSAqdXNlKiBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIExldCYjMzk7cyBydW4gZG93biB0aGUgbGlzdC4uLiBub3BlLCBpLk1YIHVzZXMgRkVDLiBBbGx3aW5uZXIgdXNlcyBpdHMgb3duIGVtYWMuIFp5bnFNUCBhbmQgVmVyc2FsIHVzZSBDYWRlbmNlIEdFTS4gU0JTQSB1c2VzIEUxMDAwRSwgYW5kIHZpcnQgdXNlcyB2aXJ0aW8tbmV0LgoKQWhhISBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgaHcvYXJtL21zZjItc29jLmNgIChNaWNyb3NlbWkgU21hcnRGdXNpb24yKS4gSG1tLCBkb2VzIFNtYXJ0RnVzaW9uMiBhY3R1YWxseSB1c2UgYHN0bW1hY2A/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBzdG1tYWNgIGRyaXZlcnMgb3Igc2ltaWxhciB0byBjb25maXJtLgoKQnV0IHdhaXQgYSBzZWMuLi4gZG9lcyBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgZXZlbiAqZW11bGF0ZSogWEdNQUM/IE5vLCBpdCYjMzk7cyBqdXN0IEdNQUMgKDEwLzEwMC8xMDAwKS4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hLmNgLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZm9yIFhHTUFDIOKAkyB0aGUgMTAgR2lnYWJpdCBraW5kLiBUaGUgcmVnaXN0ZXJzIGJlaW5nIHR3ZWFrZWQgYXJlIGBYR01BQ19ETUFfTU9ERWAgKDB4MzAwMCkgYW5kIGBYR01BQ19ETUFfU1lTQlVTX01PREVgICgweDMwMDQpLiBJbiBhIHN0YW5kYXJkIEdNQUMgc2V0dXAsIHRoZSBETUEgcmVnaXN0ZXJzIGFyZSBhdCAweDEwMDAgKEdNQUM0KSBvciAweDEwMDAgKEdNQUMpIHdpdGhpbiB0aGUgY29udHJvbGxlciYjMzk7cyBtZW1vcnkgbWFwLiBTbywgdGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyB0aGUgWEdNQUMgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoIGhvdyBgc3RtbWFjYCBoYW5kbGVzIERNQS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RE1BX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9MjQ4PXN0cnVjdCBzdG1tYWNfc2FmZXR5X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyODE6I2RlZmluZSBTRl9ETUFfTU9ERSAxXHRcdC8qIERNQSBTVE9SRS1BTkQtRk9SV0FSRCBPcGVyYXRpb24gTW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTAwPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01MDYtXHR2ID0gcmVhZGwoaW9hZGRyICYjNDM7IEVNQUNfUlhfQ1RMMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUwNzpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUwOC1cdFx0diB8PSBFTUFDX1JYX01EO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTI0PXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy01MzAtXHR2ID0gcmVhZGwoaW9hZGRyICYjNDM7IEVNQUNfVFhfQ1RMMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUzMTpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUzMi1cdFx0diB8PSBFTUFDX1RYX01EO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxMzI6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTEzMy1cdFx0cHJfZGVidWcoXCYjMzQ7R01BQzogZW5hYmxlIFJYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xNTU9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxNjE6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2Mi1cdFx0cHJfZGVidWcoXCYjMzQ7R01BQzogZW5hYmxlIFRYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYz0yMzM9c3RhdGljIHZvaWQgZHdtYWM0X2RtYV9yeF9jaGFuX29wX21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0yNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM6MjQ1Olx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0yNDYtXHRcdHByX2RlYnVnKFwmIzM0O0dNQUM6IGVuYWJsZSBSWCBzdG9yZSBhbmQgZm9yd2FyZCBtb2RlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9MzAzPXN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfdHhfY2hhbl9vcF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjMxMjpcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMzEzLVx0XHRwcl9kZWJ1ZyhcJiMzNDtHTUFDOiBlbmFibGUgVFggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC0zMjAtLyogRE1BIFJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDozMjE6I2RlZmluZSBYR01BQ19ETUFfTU9ERVx0XHRcdDB4MDAwMDMwMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIyLSNkZWZpbmUgWEdNQUNfU1dSXHRcdFx0QklUKDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE9c3RhdGljIGludCBkd3hnbWFjMl9kbWFfcmVzZXQodm9pZCBfX2lvbWVtICppb2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxMzpcdHUzMiB2YWx1ZSA9IHJlYWRsKGlvYWRkciAmIzQzOyBYR01BQ19ETUFfTU9ERSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE1LVx0LyogRE1BIFNXIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxNjpcdHdyaXRlbCh2YWx1ZSB8IFhHTUFDX1NXUiwgaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTg6XHRyZXR1cm4gcmVhZGxfcG9sbF90aW1lb3V0KGlvYWRkciAmIzQzOyBYR01BQ19ETUFfTU9ERSwgdmFsdWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xOS1cdFx0XHRcdCAgISh2YWx1ZSBcdTAwMjYgWEdNQUNfU1dSKSwgMCwgMTAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0zOC1cdGlmIChkbWFfY2ZnLVx1MDAzZW11bHRpX21zaV9lbikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6Mzk6XHRcdHZhbHVlID0gcmVhZGwoaW9hZGRyICYjNDM7IFhHTUFDX0RNQV9NT0RFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTQwLVx0XHR2YWx1ZSA9IHUzMl9yZXBsYWNlX2JpdHModmFsdWUsIFhHTUFDX0lOVE1fTU9ERTEsIFhHTUFDX0lOVE1fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo0MTpcdFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgJiM0MzsgWEdNQUNfRE1BX01PREUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE3PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9kdW1wX3JlZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjEyMjpcdGZvciAoaSA9IChYR01BQ19ETUFfTU9ERSAvIDQpOyBpIFx1MDAzYyBYR01BQ19SRUdTSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTEyMy1cdFx0cmVnX3NwYWNlW2ldID0gcmVhZGwoaW9hZGRyICYjNDM7IGkgKiA0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX3J4X21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoxMzM6XHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTM0LVx0XHR2YWx1ZSB8PSBYR01BQ19SU0Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTg2PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV90eF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTkzOlx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5NC1cdFx0dmFsdWUgfD0gWEdNQUNfVFNGO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjU3OD1zdGF0aWMgdm9pZCBzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2MTAtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjExOlx0XHR0eG1vZGUgPSBTRl9ETUFfTU9ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjYxMjpcdFx0cnhtb2RlID0gU0ZfRE1BX01PREU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTM6XHRcdHByaXYtXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IFNGX0RNQV9NT0RFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNS1cdFx0dHhtb2RlID0gdGM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTY6XHRcdHJ4bW9kZSA9IFNGX0RNQV9NT0RFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjgwMT1zdGF0aWMgdm9pZCBzdG1tYWNfYnVtcF9kbWFfdGhyZXNob2xkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODAzOlx0aWYgKHVubGlrZWx5KHByaXYtXHUwMDNleHN0YXRzLnRocmVzaG9sZCAhPSBTRl9ETUFfTU9ERSkgXHUwMDI2XHUwMDI2IHRjIFx1MDAzYz0gMjU2KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDQtXHRcdHRjICYjNDM7PSA2NDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MDgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjgwOTpcdFx0XHRzdG1tYWNfc2V0X2RtYV9vcGVyYXRpb25fbW9kZShwcml2LCB0YywgU0ZfRE1BX01PREUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MTAtXHRcdFx0XHRcdFx0ICAgICAgY2hhbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzgwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGBzdG1tYWNgIGFuZCBTeXprYWxsZXIgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBYR01BQ19ETUFfTU9ERWAgaXMgaW5kZWVkIGRlZmluZWQgYXMgYDB4MzAwMGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzLCBlc3BlY2lhbGx5IHNpbmNlIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGFiaWxpdHkgdG8gZnV6eiBgc3RtbWFjYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBRRU1VIGVtdWxhdGlvbi4KCkkgc3RhcnRlZCBieSBsb29raW5nIGF0IFFFTVUmIzM5O3MgZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb25zLiBJIGNoZWNrZWQgYGh3L25ldC9kZXNpZ253YXJlLmNgLCBhbmQgaXQgYXBwZWFycyB0aGF0IHRoaXMgaXMgZm9yIHRoZSBnZW5lcmljIEdNQUMsIG5vdCB0aGUgWEdNQUMgdmFyaWFudC4gVGhlIGRlZmluaXRpb25zIHRoZXJlIChgTUFDX0RNQV9CVVNfTU9ERWAsIGBNQUNfRE1BX1RYX1BPTExfREVNQU5EYCkgZG9uJiMzOTt0IGFsaWduIHdpdGggd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBUaGVuIEkgbW92ZWQgdG8gYGh3L25ldC94Z21hYy5jYC4gSSBmb3VuZCBgWEdNQUNfRE1BX0JVU19NT0RFYCwgYnV0IGl0JiMzOTtzIHNldCB0byBgMHgxMDAwYCwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gd2hhdCBgZHd4Z21hYzIuaGAgdXNlcyBmb3IgdGhlIERNQSBtb2RlIChgMHgzMDAwYCkuIFRoaXMgY29uZmlybWVkIHRoYXQgUUVNVSYjMzk7cyBgeGdtYWMuY2AgZG9lc24mIzM5O3QgcHJvdmlkZSBlbXVsYXRpb24gY29tcGF0aWJsZSB3aXRoIGBkd3hnbWFjMmAuIFNvLCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzbiYjMzk7dCByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBjb25maWd1cmF0aW9ucy4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpbnZvbHZlZCBzeXprYWxsZXImIzM5O3MgZGV2aWNlIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvbnNpZGVyZWQgaWYgaXQgY291bGQgdXRpbGl6ZSBzb21lIHZpcnR1YWwgZGV2aWNlIGZyYW1ld29yay4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIGlmIHRoZXkmIzM5O3JlIHZpcnR1YWxpemVkLCBidXQgYHN0bW1hY2AgWEdNQUMsIGluIHN0YW5kYXJkIHNldHVwcywgaXNuJiMzOTt0IGEgUENJIGRldmljZSwgYW5kIGV2ZW4gaWYgaXQgd2VyZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZm9yIGl0LiBJIGFsc28gY2hlY2tlZCBpZiBzeXprYWxsZXIgbWlnaHQgdXNlIGEgVVNCIGNvbm5lY3Rpb24sIHNwZWNpZmljYWxseSB2aWEgYHN5el91c2JfY29ubmVjdGAsIGJ1dCB0aGF0JiMzOTtzIGZvciBVU0IsIG5vdCBgc3RtbWFjYC4gSSBhbHNvIGNoZWNrZWQgc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZnV6eiBQQ0ksIGJ1dCBJIHdhcyB3cm9uZyB0byB0aGluayBpdCBjb3VsZCwgc28gdGhhdCBkb2VzbiYjMzk7dCB3b3JrLgoKQnV0IHRoZW4sIEkgc2F3IGEgY29tbWl0IHJlbGF0ZWQgdG8gc3l6a2FsbGVyIGFuZCBgc3RtbWFjYCwgc3BlY2lmaWNhbGx5IG5vdGluZyBhIHBhdGNoIHVuZGVyIHJldmlldywgd2l0aCB0aGUgYXV0aG9yIGxpc3RlZCBhcyB0aGUgc3l6a2FsbGVyIGNsdXN0ZXIgaXRzZWxmLiBUaGlzIHN1Z2dlc3RzIHN5emthbGxlciBpcyBmaW5kaW5nIGJ1Z3Mgb3IgdGVzdGluZyBwYXRjaGVzIHNwZWNpZmljYWxseSBmb3IgYHN0bW1hY2AuIFRoZSBxdWVzdGlvbiBpcyAqaG93KiwgZ2l2ZW4gbXkgY29uY2x1c2lvbiB0aGF0IGl0JiMzOTtzIG5vdCByZWFjaGFibGUgaW4gUUVNVSBpbiB0aGUgd2F5IEkgd2FzIGV4cGVjdGluZz8KClRoZSBrZXkgcmVhbGl6YXRpb24gaXMgdGhhdCBzeXprYWxsZXIgKm1pZ2h0KiBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChsaWtlIEFSTSBib2FyZHMpIG9yLCBwZXJoYXBzLCBvbiBhIHNwZWNpYWwgUUVNVSBtYWNoaW5lIHRoYXQgSSBtaXNzZWQuIFRoaXMgb3BlbnMgdXAgYSBuZXcgYXZlbnVlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUmIzM5O3MgYSBRRU1VIHNldHVwIHdoZXJlIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB2aWEgYSBQQ0kgZHJpdmVyLCBsaWtlIGBkd21hYy1pbnRlbC5jYC4gSSBrbm93IHRoYXQgc3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRyaXZlcnMgaWYgdGhleSYjMzk7cmUgcHJvYmVkLCBhbmQgYGR3bWFjLWludGVsLmNgICppcyogYSBQQ0kgZHJpdmVyLCBzbyB0aGlzIGlzIHByb21pc2luZy4KClRoZSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBkd21hYy1pbnRlbC5jYCB1dGlsaXplcyBgZHd4Z21hYzJgLiBNeSBwcmV2aW91cyBjaGVja3Mgc2hvd2VkIHRoYXQgYGR3bWFjLWludGVsLmNgIHVzZXMgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YCwgYnV0IGl0JiMzOTtzIHdvcnRoIHJlLWV4YW1pbmluZyBpZiB0aGVyZSYjMzk7cyBhbnkgdXNhZ2Ugb2YgYERXTUFDX0NPUkVfWEdNQUNgIGluIGl0cyBjb2RlLCBhbmQgYWxzbyBpZiBhIHNwZWNpZmljIFFFTVUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEV01BQ19DT1JFX1hHTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODc5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiB0aGUgSW1wbGljYXRpb24qKgoKTm9wZSwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBpbmNvcnJlY3QuIExldCYjMzk7cyBkZWx2ZSBkZWVwZXIuIFdoZXJlIG1pZ2h0IEkgZmluZCByZWxldmFudCBpbmZvcm1hdGlvbiBvciBhIHBvdGVudGlhbCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0/IEFoLCB3aGF0IGFib3V0IHRoZSBgc3RtbWFjX3BjaS5jYCBmaWxlPyBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDU2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCoqCgpOb3BlLiBUaGF0IGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjbGVhcmx5IGluY29ycmVjdC4gVGhlIG9yaWdpbmFsIGlkZWEgaXMgZmxhd2VkLiBCdXQsIG5vdywgd2hhdCAqaXMqIHRoZSBrZXkgZmlsZSBpbnZvbHZlZCBoZXJlPyBXaGVyZSBhcmUgd2UgbGlrZWx5IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24/IE15IG5leHQgdGhvdWdodCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZpbGU6IGBkd21hYy1nZW5lcmljLmNgLiBDb3VsZCAqdGhhdCogYmUgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGU/IElzIHRoYXQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZS1hZ25vc3RpYyBkcml2ZXIgZm9yIHRoZSBETUEgY29udHJvbGxlciByZXNpZGVzPyBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2Qgc3RhcnQgbG9va2luZyB0byBpbnZlc3RpZ2F0ZSB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjY4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBkd3hnbWFjMl9kbWFfaW5pdGAgRnVuY3Rpb24qKgoKSG1tLCBuby4gVGhhdCYjMzk7cyBub3QgdGhlIGFuc3dlciBJIHdhcyBleHBlY3RpbmcuIE9rYXksIGxldCYjMzk7cyBzdGVwIGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGR3eGdtYWMyX2RtYV9pbml0YCBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGJlaW5nIGNhbGxlZCBpbiB0aGlzIHN5c3RlbS4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gVGhlIGNvZGUgYmFzZSBpcyBvZnRlbiBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gaXQgbG9va3Mgb24gZmlyc3QgZ2xhbmNlLiBJcyB0aGlzIGZ1bmN0aW9uIGV2ZW4gdXNlZD8gTWF5YmUgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXNuJiMzOTt0IGRpcmVjdGx5IHJlbGF0ZWQgdG8gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIFBlcmhhcHMgdGhhdCBzdHJ1Y3R1cmUgaXMgdXRpbGl6ZWQgYnkgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgc3lzdGVtIGVudGlyZWx5LCB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBtb3JlIGNhcmVmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzIxMF9kbWFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmg9NDY2PWV4dGVybiBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBkd3hsZ21hYzJfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTU3MT1zdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTQ6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXHRcdC5kZXNjID0gXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTg6XHRcdC5kbWEgPSBcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjU5LVx0XHQubWFjID0gXHUwMDI2ZHd4Z21hYzIxMF9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3OS1cdFx0LmRlc2MgPSBcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI4MDpcdFx0LmRtYSA9IFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXHRcdC5tYWMgPSBcdTAwMjZkd3hsZ21hYzJfb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE0NwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEV01BQ19DT1JFX1hHTUFDIERlZmluaXRpb24qKgoKUmlnaHQsIHNvIHRoaXMgdGhpbmcsIHRoaXMgYERXTUFDX0NPUkVfWEdNQUNgLCBpdCBzZWVtcyB0byBiZSBkZWZpbmVkIHNvbWV3aGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKnVzZWQqLCBhbmQgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBpbml0aWFsIGxvY2F0aW9uLCBgaHdpZi5jYCwgaXMgdGhlIG9ubHkgcGxhY2UuIE5vdywgaWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB0aGF0IGZpbGUgaXMgdXNpbmcgaXQgZm9yIHRoZSBtYWNybyBgRFdNQUNfQ09SRV9YR01BQ2AuIEhtbW0sIEkgd29uZGVyIGlmIHRoZXJlIGlzIGFub3RoZXIgcGxhY2UgdG8gc2V0IHRoYXQgbWFjcm8uCgpMZXQgbWUganVzdCBxdWlja2x5IGRvIGEgY29tcHJlaGVuc2l2ZSBzZWFyY2ggYWNyb3NzIGFsbCByZWxldmFudCBmaWxlcyB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhlcmUgaXNuJiMzOTt0IGFub3RoZXIgbG9jYXRpb24sIG9yIGFub3RoZXIgd2F5LCBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgZ2V0dGluZyBzZXQuIExldCYjMzk7cyBkbyBhIGZpbmQgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RFdNQUNfQ09SRV9YR01BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD00OT1zdGF0aWMgaW5saW5lIGJvb2wgZHdtYWNfaXNfeG1hYyhlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcdHJldHVybiBjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCB8fCBjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTY5PXN0YXRpYyB2b2lkIHNvY2ZwZ2FfYWdpbGV4NV9zZXR1cF9wbGF0X2RhdChzdHJ1Y3Qgc29jZnBnYV9kd21hYyAqZHdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1NzM6XHRwbGF0X2RhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzI2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjctXHRwbGF0LVx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MjE9c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNDktXHR2ZXItXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzo1MDpcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cdFx0dmVyLVx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDctXHR9LCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4Olx0XHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXHRcdC5taW5faWQgPSBEV1hHTUFDX0NPUkVfMl8xMCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY5LVx0fSwge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcdFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVx0XHQubWluX2lkID0gRFdYTEdNQUNfQ09SRV8yXzAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yOTQ9c3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMwNzpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cdFx0ICAgIGRldl9pZCAhPSBlbnRyeS1cdTAwM2VkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMzOC1cdFx0cHJpdi1cdTAwM2VtbWNhZGRyID0gcHJpdi1cdTAwM2Vpb2FkZHIgJiM0MzsgTU1DX0dNQUMzX1hfT0ZGU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMzOTpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTM0MC1cdFx0XHRwcml2LVx1MDAzZWVzdGFkZHIgPSBwcml2LVx1MDAzZWlvYWRkciAmIzQzOyBFU1RfWEdNQUNfT0ZGU0VUO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz0yOD1zdGF0aWMgaW50IGVzdF9jb25maWd1cmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3Qgc3RtbWFjX2VzdCAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01NS1cdGN0cmwgPSByZWFkbChlc3RfYWRkciAmIzQzOyBFU1RfQ09OVFJPTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6NTY6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXHRcdGN0cmwgXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTgzPXN0YXRpYyB2b2lkIGVzdF9pcnFfc3RhdHVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUwLVx0aWYgKHN0YXR1cyBcdTAwMjYgRVNUX0JUUkUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzoxNTE6XHRcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXHRcdFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTMwMT1zdGF0aWMgdm9pZCBzdG1tYWNfZXRodG9vbF9nZXRkcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMDgtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIEdNQUNfRVRIVE9PTF9OQU1FLCBzaXplb2YoaW5mby1cdTAwM2Vkcml2ZXIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5Olx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMTAtXHRcdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIFhHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXHUwMDNlZHJpdmVyKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNTA9c3RhdGljIGludCBzdG1tYWNfZXRodG9vbF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzU0Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzU1LVx0XHRyZXR1cm4gWEdNQUNfUkVHU0laRSAqIDQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM3NS1cdFx0ICAgICAgIE5VTV9EV01BQzRfRE1BX1JFR1MgKiA0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6Mzc2Olx0fSBlbHNlIGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlICE9IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVx0XHRtZW1jcHkoXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NTU1PXN0YXRpYyBpbnQgc3RtbWFjX2RtYV9jYXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY1OTAtXHRcdCAgIChwcml2LVx1MDAzZWRtYV9jYXAuaGFsZl9kdXBsZXgpID8gXCYjMzQ7WVwmIzM0OyA6IFwmIzM0O05cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NTkxOlx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkyLVx0XHRzZXFfcHJpbnRmKHNlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTQtXHRcdCAgIChwcml2LVx1MDAzZWRtYV9jYXAuYXRpbWVfc3RhbXApID8gXCYjMzQ7WVwmIzM0OyA6IFwmIzM0O05cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjE1Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYxNi1cdFx0c2VxX3ByaW50ZihzZXEsIFwmIzM0O1xcdFRpbWVzdGFtcCBTeXN0ZW0gVGltZSBTb3VyY2U6ICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyMy1cdGlmIChwcml2LVx1MDAzZXN5bm9wc3lzX2lkIFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY2MjQ6XHQgICAgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MjUtXHRcdHNlcV9wcmludGYoc2VxLCBcJiMzNDtcXHRJUCBDaGVja3N1bSBPZmZsb2FkIGluIFJYOiAlc1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTU9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczNzE6XHRjYXNlIERXTUFDX0NPUkVfWEdNQUM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczNzItXHRcdHBoeWlmX3RhYmxlID0gc3RtbWFjX2R3eGdtYWNfcGh5aWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Mzk3PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzUxOS1cdGlmICgocHJpdi1cdTAwM2VzeW5vcHN5c19pZCBcdTAwM2U9IERXTUFDX0NPUkVfM181MCB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTIwOlx0ICAgICBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTIxLVx0ICAgICFwcml2LVx1MDAzZXBsYXQtXHUwMDNlcml3dF9vZmYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3ODY9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzk5NDpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTUtXHRcdG5kZXYtXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTUzNj1zdGF0aWMgdTMyIHN0bW1hY19jbGtfY3NyX3NldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTQtXHRcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjU1NTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTU1Ni1cdFx0cmF0ZXMgPSBzdG1tYWNfeGdtYWNfY3NyX3RvX21kYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIzLVx0XHRuZXdfYnVzLVx1MDAzZXJlYWQgPSBcdTAwMjZzdG1tYWNfeGdtYWMyX21kaW9fcmVhZF9jMjI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjUtXHQvKiBMb29rcyBsaWtlIHdlIG5lZWQgYSBkdW1teSByZWFkIGZvciBYR01BQyBvbmx5IGFuZCBDNDUgUEhZcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XHRpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjctXHRcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz00MTY9c3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0Ny1cdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgXCYjMzQ7c25wcyxkd3hnbWFjXCYjMzQ7KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NTQ4Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXHRcdHBsYXQtXHUwMDNlcG10ID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0MDIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBwYXRoIGlzIG9ubHkgZW5hYmxlZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmU6IGBzbnBzLGR3eGdtYWNgLCBgZHdtYWMtc29jZnBnYS5jYCAoQWdpbGV4NSksIGFuZCBgZHdtYWMtdGVncmEuY2AgKFRlZ3JhMTg2JiM0MzspLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBUaGUga2lja2VyIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSB0YXJnZXRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4KCkkgd2FzIGJyaWVmbHkgdGhpbmtpbmcgdGhhdCBwZXJoYXBzIGBzeXprYWxsZXJgIG1pZ2h0IGJlIHRoZSBjdWxwcml0LCBwb3NzaWJseSB1c2luZyBzb21ldGhpbmcgbGlrZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCB0byBpbmRpcmVjdGx5IHRyaWdnZXIgdGhlIGluc3RhbnRpYXRpb24uIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgc3l6a2FsbGVyYCAqY2FuJiMzOTt0KiBkaXJlY3RseSBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyBpdCB1c2VzIGRldmljZSB0cmVlIG92ZXJsYXlzLCBhbmQgaXQmIzM5O3Mgbm90IHNldCB1cCB0byBkbyB0aGF0LiBUaGF0IGF2ZW51ZSYjMzk7cyBhIGRlYWQgZW5kLgoKV2FpdCBhIHNlY29uZOKApiB3aGF0IGFib3V0IEFDUEk/IElzIGl0IHBvc3NpYmxlIHRoZSBkcml2ZXImIzM5O3MgYmVpbmcgcHJvYmVkIHRocm91Z2ggYW4gQUNQSSBwYXRoPyBMb29raW5nIGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AuLi4gYWgsIHllcyEgSXQgaGFzIEFDUEkgYmluZGluZ3MuIFRoYXQmIzM5O3MgYSBkZWZpbml0ZSBwb3NzaWJpbGl0eSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBUaGlzIHN1Z2dlc3RzIGEgZGlmZmVyZW50IGFjdGl2YXRpb24gbWV0aG9kIHRoYW4gdGhlIHR5cGljYWwgcGxhdGZvcm0gZGV2aWNlIGluc3RhbnRpYXRpb24gSSB3YXMgaW5pdGlhbGx5IGV4cGVjdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODcwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlBvdGVudGlhbCBBQ1BJIEJpbmRpbmdzIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaGVyZS4gSXQganVzdCBvY2N1cnJlZCB0byBtZSB0aGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AgbWlnaHQgYWN0dWFsbHkgaGF2ZSBzb21lIEFDUEkgYmluZGluZ3MgZGVmaW5lZC4gVGhhdCYjMzk7cyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgbm90IGFzc3VtZSB0aGV5JiMzOTtyZSBhbGwgaGFuZGxlZCBleGNsdXNpdmVseSB0aHJvdWdoIGRldmljZSB0cmVlLiBCZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gYW55dGhpbmcgZWxzZSwgSSByZWFsbHkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGFjcGlfbWF0Y2hfdGFibGVgLiBJdCB3b3VsZCBiZSBhIHdhc3RlZCBlZmZvcnQgdG8gbm90IHJ1bGUgb3V0IHRoZSBzaW1wbGVzdCBhbnN3ZXIgZmlyc3QhIElmIGl0ICppcyogcHJlc2VudCwgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBteSByb3V0ZSB0byB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FjcGlfbWF0Y2hfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzExMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlJldmlzaXRpbmcgQUNQSSBEZXZpY2UgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byBgYWNwaV9kZXZpY2VfaWRgLiBJIG5lZWQgdG8gcmUtZXhhbWluZSB0aGF0IGNvZGUuIEkga25vdyBpdCBiYWNrd2FyZHMgYW5kIGZvcndhcmRzLCBidXQgd2hlbiBkZWJ1Z2dpbmcgdGhlc2UgaW50cmljYXRlIEFDUEkgaW50ZXJhY3Rpb25zLCB5b3UgY2FuJiMzOTt0IGJlIHRvbyBjYXJlZnVsLiBUaGVyZSYjMzk7cyBhbHdheXMgYSBjaGFuY2UgSSYjMzk7dmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUsIG9yIHRoYXQgYSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZSBoYXMgaW50cm9kdWNlZCBhbiB1bmV4cGVjdGVkIGludGVyYWN0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgbmV3LiBMZXQgbWUgcmV2aXNpdCB0aGUgQUNQSSBkZXZpY2UgSUQgdGFibGUuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgc29tZSBuZXcgaGFyZHdhcmUgd2l0aCBhIHNsaWdodGx5IGRpZmZlcmVudCBzaWduYXR1cmUuIE9yIG1heWJlIGEgc3BlY2lmaWMgcGxhdGZvcm0mIzM5O3MgcXVpcmtzIGFyZSBpbnRlcmZlcmluZyB3aXRoIGhvdyB0aGUgZHJpdmVyIGludGVycHJldHMgdGhlIEFDUEkgZGF0YS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ2MD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19kdF9jbGVhcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDY2OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfYWNwaV9jb25maWcoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2Ny1cdFx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NTMtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU1NDpcdFx0cmV0ID0gbG9vbmdzb25fZHdtYWNfYWNwaV9jb25maWcocGRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTU1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2ODkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipJbnZlc3RpZ2F0aW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCkhtbSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkd21hYy1sb29uZ3Nvbi5jYC4gSW50ZXJlc3RpbmcsIGl0IHNlZW1zIHRvIGhhdmUgc29tZSBBQ1BJIGNvbmZpZ3VyYXRpb24gZ29pbmcgb24sIGJ1dCBpc24mIzM5O3QgdGhpcyBhIFBDSSBkcml2ZXIsIGFuZCBpdCYjMzk7cyB1c2luZyBgRFdNQUNfQ09SRV9HTUFDYD8gVGhhdCYjMzk7cyBhIGJpdCB1bmV4cGVjdGVkLiBJIHdvbmRlciB3aHkgdGhleSYjMzk7cmUgaGFuZGxpbmcgaXQgdGhpcyB3YXkuIE1heWJlIHRoZXJlIGFyZSBzb21lIGxlZ2FjeSByZWFzb25zIG9yIHNwZWNpZmljIExvb25nc29uIHBsYXRmb3JtIHF1aXJrcyBpbnZvbHZlZD8gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgbGF0ZXIuCgpOb3csIGEgY29tcGxldGVseSBkaWZmZXJlbnQgdGhvdWdodCwgd2hhdCBhYm91dCBgc3RtbWFjX3BsYXRmb3JtLmNgPyBEb2VzIGl0IG9mZmVyIHNvbWUgaW5zaWdodD8gSXQgaXMgcHJvYmFibHkgYSBiZXR0ZXItYWxpZ25lZCBzb3VyY2UgdG8gYW5hbHl6ZS4gSG9wZWZ1bGx5IGl0IGhhbmRsZXMgbW9yZSB0eXBpY2FsIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLiBNYXliZSBpdCBzaGVkcyBzb21lIGxpZ2h0IG9uIHRoZSBkZXNpZ24gY2hvaWNlcyBpbiB0aGF0IGZpcnN0IGZpbGUuIExldCBtZSBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3BpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzk3NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDgwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIFBhdGggaW4gUUVNVTogQSBXb3J0aGxlc3MgRnV6emluZyBUYXJnZXQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb24gaGVyZSBpcyBgZHd4Z21hYzJfZG1hX2luaXRgLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHJlYWNoYWJsZSBpdCBpcy4gRmlyc3QgdGhvdWdodDogaXMgaXQgdXNlZCBpbiBhIFBDSSBjb250ZXh0PyBObywgdGhhdCYjMzk7cyBub3QgaXQuIGBzdG1tYWNfcGxhdGZvcm0uY2AgZG9lc24mIzM5O3QgdXNlIEFDUEksIGJ1dCBgc3RtbWFjX3BjaS5jYCBkb2VzIHVzZSBhIGBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YWAgd2hpY2ggcG9pbnRzIHRvIGBEV01BQ19DT1JFX0dNQUM0YC4gRGVmaW5pdGVseSBub3QgdGhlIHBhdGggSSYjMzk7bSBpbnRlcmVzdGVkIGluLgoKQ2FuIHRoaXMgZXZlciBiZSBjYWxsZWQgaW4gUUVNVT8gTm8uIE5vdCBkaXJlY3RseS4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KCmBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGZvciBgRFdNQUNfQ09SRV9YR01BQ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgY29yZSB0eXBlIGlzIHVzZWQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZXhjbHVzaXZlbHkgdXNlZCBieSBgc25wcyxkd3hnbWFjYCAocGxhdGZvcm0pLCBgZHdtYWMtc29jZnBnYS5jYCAoQWdpbGV4NSksIGFuZCBgZHdtYWMtdGVncmEuY2AgKFRlZ3JhMTg2JiM0MzspLiBOb25lIG9mIHRob3NlIGFyZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgaHVnZSByZWQgZmxhZy4gVGhpcyBsb29rcyBsaWtlIGFuIHVucmVhY2hhYmxlIGNvZGUgcGF0aCBpbiBteSBlbnZpcm9ubWVudC4KCklzIHRoZXJlIGFueSBvdGhlciBkcml2ZXIgdGhhdCB1c2VzIHRoaXM/IEkgZGlkIGEgcXVpY2sgZ3JlcCBhbHJlYWR5LCBhbmQgaXQgbG9va3MgbGlrZSB0aG9zZSBhcmUgdGhlIG9ubHkgcGxhY2VzIGl0JiMzOTtzIGRlZmluZWQuIEFuZCBpdCYjMzk7cyBhbHNvIHVzZWQgaW4gYGh3aWYuY2AgYmFzZWQgb24gYGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDYCBhbmQgYWdhaW4sIGBzdG1tYWNfcGxhdGZvcm0uY2AgZm9yIGBzbnBzLGR3eGdtYWNgLgoKT2theSwgYnV0IHdoYXQgYWJvdXQgdGhlIGJyb2FkZXIgc2NvcGUgb2YgbXkgdGVzdGluZyBzZXR1cD8gSSYjMzk7bSBub3QgdXNpbmcgQWdpbGV4NSwgYW5kIG5vdCBUZWdyYTE4NiYjNDM7LiBJcyB0aGVyZSBhIGJvYXJkIGluIFFFTVUgdGhhdCBpbnN0YW50aWF0ZXMgYHNucHMsZHd4Z21hY2A/IE5vLCB0aGVyZSBpc24mIzM5O3QuIFNvIHRoYXQgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIHRoZSBRRU1VIGVudmlyb25tZW50IEkmIzM5O20gdXNpbmcuCgpXYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IFN5emthbGxlcj8gRG9lcyBpdCBldmVyIHJ1biBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gU3VyZSwgU3l6a2FsbGVyIGRvZXMgdXNlIHBoeXNpY2FsIGJvYXJkcyBzb21ldGltZXMsIGxpa2Ugb24gQVJNIGJvYXJkcy4gQnV0IHRoZSBwcm9tcHQgZXhwbGljaXRseSBmb2N1c2VzIG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRS4gSXQmIzM5O3MgY2xlYXJseSBzdGF0ZWQgdGhhdCBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuCgpTbywgc2luY2UgdGhpcyBjb2RlIHBhdGggY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gUUVNVSwgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKQnV0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUuIENvdWxkIGBzbnBzLGR3eGdtYWNgIHNvbWVob3cgYmUgaW5zdGFudGlhdGVkIHZpYSBhIGRldmljZSB0cmVlIG92ZXJsYXkgaW5qZWN0ZWQgYnkgU3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24mIzM5O3QgY3VycmVudGx5IGluamVjdCBEVCBvdmVybGF5cywgc28gdGhhdCYjMzk7cyBhIG5vLiBFdmVuIGlmIGl0IGRpZCwgdGhlIGRyaXZlciB3b3VsZCBwcm9iZS4gSXQgd291bGQgdGhlbiBhdHRlbXB0IHRvIHJlYWQgZnJvbSB0aGUgTU1JTyByZWdpc3RlcnMgb2YgdGhlIFhHTUFDLiBTaW5jZSB0aGVyZSYjMzk7cyBubyByZWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCAweEZGRkZGRkZGIG9yIDB4MDAwMDAwMDAsIGFuZCBmYWlsLiBFdmVuIGlmIHRoZSByZWdpc3RlciByZWFkIGlzIDAsIGxldCBtZSBjaGVjayBgc3RtbWFjX2dldF92ZXJzaW9uYCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2dldF92ZXJzaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xNj1zdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyMTpzdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTIyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gKnZlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMyNjpcdHN0bW1hY19nZXRfdmVyc2lvbihwcml2LCBcdTAwMjZ2ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODI3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZGV2aWNlIGRyaXZlcnM6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCB0byBgc3RtbWFjX2dldF92ZXJzaW9uYCoqCgpBbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiBkaXZlIGludG8gdGhlIGBzdG1tYWNfZ2V0X3ZlcnNpb25gIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVW5kZXJzdGFuZGluZyB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBvZiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBkcml2ZXIgaXMgY3J1Y2lhbCwgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gb2YgYWxtb3N0IGV2ZXJ5dGhpbmcuIEl0IHVzdWFsbHkgaW52b2x2ZXMgcmVhZGluZyByZWdpc3RlcnMsIG1heWJlIHNvbWUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgZHJpdmVyLCBhbmQgZm9ybWF0dGluZyB0aGF0IGRhdGEgZm9yIHRoZSB1c2VyLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQuIElzIGl0IGEgZGlyZWN0IHJlZ2lzdGVyIHJlYWQsIG9yIGRvZXMgaXQgaW52b2x2ZSBzb21lIG1vcmUgY29tcGxleCBsb2dpYyB0byBkZXRlcm1pbmUgdGhlIGRyaXZlciYjMzk7cyByZXZpc2lvbiwgZmVhdHVyZSBzZXQsIG9yIGhhcmR3YXJlIGNvbXBhdGliaWxpdHk/IEhvcGVmdWxseSwgaXQgaXMgd2VsbCBkb2N1bWVudGVkOyBvdGhlcndpc2UgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVnaXN0ZXItbGV2ZWwgaW50ZXJwcmV0YXRpb24gb2YgaXQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgZGVidWdnaW5nIGFuZCBlbnN1cmluZyBjb21wYXRpYmlsaXR5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGRpZmZlcmVudCBoYXJkd2FyZSByZXZpc2lvbnMgb3Iga2VybmVsIHZlcnNpb25zLiBJJiMzOTttIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgdHlwZXMgaXQmIzM5O3Mgd29ya2luZyB3aXRoIGFuZCBob3cgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaXMgc3RydWN0dXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiAgMjI6XHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY192ZXJzaW9uICp2ZXIpXG4gIDIzOlx0e1xuICAyNDpcdFx0ZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZTtcbiAgMjU6XHRcdHVuc2lnbmVkIGludCB2ZXJzaW9uX29mZnNldDtcbiAgMjY6XHRcdHUzMiB2ZXJzaW9uO1xuICAyNzpcdFxuICAyODpcdFx0dmVyLVx1MDAzZXNucHN2ZXIgPSAwO1xuICAyOTpcdFx0dmVyLVx1MDAzZWRldl9pZCA9IDA7XG4gIDMwOlx0XG4gIDMxOlx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfTUFDMTAwKVxuICAzMjpcdFx0XHRyZXR1cm47XG4gIDMzOlx0XG4gIDM0Olx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQylcbiAgMzU6XHRcdFx0dmVyc2lvbl9vZmZzZXQgPSBHTUFDX1ZFUlNJT047XG4gIDM2Olx0XHRlbHNlXG4gIDM3Olx0XHRcdHZlcnNpb25fb2Zmc2V0ID0gR01BQzRfVkVSU0lPTjtcbiAgMzg6XHRcbiAgMzk6XHRcdHZlcnNpb24gPSByZWFkbChwcml2LVx1MDAzZWlvYWRkciAmIzQzOyB2ZXJzaW9uX29mZnNldCk7XG4gIDQwOlx0XHRpZiAodmVyc2lvbiA9PSAwKSB7XG4gIDQxOlx0XHRcdGRldl9pbmZvKHByaXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtWZXJzaW9uIElEIG5vdCBhdmFpbGFibGVcXG5cJiMzNDspO1xuICA0MjpcdFx0XHRyZXR1cm47XG4gIDQzOlx0XHR9XG4gIDQ0Olx0XG4gIDQ1Olx0XHRkZXZfaW5mbyhwcml2LVx1MDAzZWRldmljZSwgXCYjMzQ7VXNlciBJRDogMHgleCwgU3lub3BzeXMgSUQ6IDB4JXhcXG5cJiMzNDssXG4gIDQ2Olx0XHRcdCBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbiksXG4gIDQ3Olx0XHRcdCBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbikpO1xuICA0ODpcdFxuICA0OTpcdFx0dmVyLVx1MDAzZXNucHN2ZXIgPSBGSUVMRF9HRVQoRFdNQUNfU05QU1ZFUiwgdmVyc2lvbik7XG4gIDUwOlx0XHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXG4gIDUxOlx0XHRcdHZlci1cdTAwM2VkZXZfaWQgPSBGSUVMRF9HRVQoRFdNQUNfVVNFUlZFUiwgdmVyc2lvbik7XG4gIDUyOlx0fVxuICA1MzpcdFxuICA1NDpcdHN0YXRpYyB2b2lkIHN0bW1hY19kd21hY19tb2RlX3F1aXJrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiAgNTU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjQ5CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzY2VuYXJpbywgcGhyYXNlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OgoKKipJbml0aWFsIFZlcnNpb24gQ2hlY2sgYW5kIEhhcmR3YXJlIEludGVyZmFjZSBTZWFyY2gqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgY2hlY2sgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSWYgdGhlIGB2ZXJzaW9uYCB2YXJpYWJsZSBpcyB6ZXJvLCB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgYmFpbHMgb3V0LiBJdCBzZXRzIHRoZSBgc25wc3ZlcmAgYW5kIGBkZXZfaWRgIGZpZWxkcyB3aXRoaW4gdGhlIGB2ZXJgIHN0cnVjdHVyZSB0byB6ZXJvLiBUaGF0JiMzOTtzIGEgY29tbW9uIGluaXRpYWwgc3RhdGUgb3IgZXJyb3IgY29uZGl0aW9uIHNpZ25hbGluZyBhbiB1bmluaXRpYWxpemVkIG9yIGludmFsaWQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGFuIGVhcmx5IHJldHVybiB0byBhdm9pZCBmdXJ0aGVyIHByb2Nlc3NpbmcuCgpUaGUgY3JpdGljYWwgc3RlcCBoZXJlLCBhZnRlciB0aGF0IGluaXRpYWwgY2hlY2ssIGlzIHRoYXQgaXQgY2FsbHMgYHN0bW1hY19od2lmX2ZpbmRgLiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwuIEl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB3ZSYjMzk7cmUgbW92aW5nIGZyb20gYSBzaW1wbGUgY29uZGl0aW9uYWwgdG8gdGhlIHJlYWwgd29yayDigJMgbG9jYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLCBJIGltbWVkaWF0ZWx5IGluZmVyIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByb2JpbmcsIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlIHByZXNlbnQsIGFuZCBwb3B1bGF0aW5nIHJlbGV2YW50IHN0cnVjdHVyZXMgd2l0aCBoYXJkd2FyZSBpbnRlcmZhY2Ugc3BlY2lmaWMgZGF0YS4gVGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGNvbW11bmljYXRlIHdpdGggYW5kIGNvbnRyb2wgdGhlIHBoeXNpY2FsIGRldmljZS4gSXQgaXMgYSBrZXkgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyOTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcbiAyOTQ6XHRzdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxuIDI5NTpcdHtcbiAyOTY6XHRcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XG4gMjk3Olx0XHRpbnQgaTtcbiAyOTg6XHRcbiAyOTk6XHRcdGZvciAoaSA9IEFSUkFZX1NJWkUoc3RtbWFjX2h3KSAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbiAzMDA6XHRcdFx0ZW50cnkgPSBcdTAwMjZzdG1tYWNfaHdbaV07XG4gMzAxOlx0XG4gMzAyOlx0XHRcdGlmIChjb3JlX3R5cGUgIT0gZW50cnktXHUwMDNlY29yZV90eXBlKVxuIDMwMzpcdFx0XHRcdGNvbnRpbnVlO1xuIDMwNDpcdFx0XHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cbiAzMDU6XHRcdFx0aWYgKHNucHN2ZXIgXHUwMDNjIGVudHJ5LVx1MDAzZW1pbl9pZClcbiAzMDY6XHRcdFx0XHRjb250aW51ZTtcbiAzMDc6XHRcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFx1MDAyNlx1MDAyNlxuIDMwODpcdFx0XHQgICAgZGV2X2lkICE9IGVudHJ5LVx1MDAzZWRldl9pZClcbiAzMDk6XHRcdFx0XHRjb250aW51ZTtcbiAzMTA6XHRcbiAzMTE6XHRcdFx0cmV0dXJuIGVudHJ5O1xuIDMxMjpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTMwMwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19od2lmX2ZpbmRgIGFuZCBgc3RtbWFjX2h3aWZfaW5pdGAuIEkmIzM5O3ZlIGdvdCB0byB1bmRlcnN0YW5kIHdoeSBpdCBtaWdodCBiZSBmYWlsaW5nLiBJdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIHRoaXMgaW5pdGlhbCBjaGVjazogaWYgdGhlIGBzbnBzdmVyYCBpcyB6ZXJvIEFORCBgZGV2X2lkYCBpcyB6ZXJvLCBpdCBwcm9jZWVkcyB0byBjb21wYXJlIGBzbnBzdmVyYCBhZ2FpbnN0IGBlbnRyeS0mZ3Q7bWluX2lkYC4gTm93LCBmb3IgdGhlIGNhc2Ugb2YgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGUgYGVudHJ5LSZndDttaW5faWRgIGlzIHNldCB0byBlaXRoZXIgYERXWEdNQUNfQ09SRV8yXzEwYCAod2hpY2ggaXMgMHgyMSkgb3IgYERXWExHTUFDX0NPUkVfMl8wMGAgKHdoaWNoIGlzIDB4MjApIGFuZCBpdCBkb2VzbiYjMzk7dCByZWFsbHkgbWF0dGVyIHdoaWNoIG9uZSBoZXJlLiBTaW5jZSBgc25wc3ZlcmAgaXMgKnplcm8qLCB0aGUgY29uZGl0aW9uIGBzbnBzdmVyICZsdDsgZW50cnktJmd0O21pbl9pZGAgaXMgZ29pbmcgdG8gYmUgdHJ1ZS4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHdheSB0aGF0IHRoZSBgY29udGludWVgIHdpbGwgcHJldmVudCBhIG1hdGNoLCBtZWFuaW5nIHRoYXQgdGhlIGxvb3Agd2lsbCBza2lwIHRoaXMgZW50cnkhIFNpbmNlIEkmIzM5O20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCAwIGFuZCB0cnlpbmcgdG8gbWF0Y2ggdG8gYSBtaW5pbXVtIElEIHRoYXQgaXMsIGZvciBzdXJlLCBncmVhdGVyIHRoYW4gemVybywgbm8gbWF0Y2ggd2lsbCBiZSBmb3VuZC4gVGhpcyBtZWFucyB0aGF0IGBzdG1tYWNfaHdpZl9maW5kYCBpcyBnb2luZyB0byByZXR1cm4gYE5VTExgIHRvIGBzdG1tYWNfaHdpZl9pbml0YCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZsYXcgaW4gdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBsb2dpYywgYW5kIHNvbWV0aGluZyBJIG5lZWQgdG8gYWRkcmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxNzpcdGludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiAzMTg6XHR7XG4gMzE5Olx0XHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlO1xuIDMyMDpcdFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcbiAzMjE6XHRcdHN0cnVjdCBzdG1tYWNfdmVyc2lvbiB2ZXJzaW9uO1xuIDMyMjpcdFx0c3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjO1xuIDMyMzpcdFx0Ym9vbCBuZWVkc19zZXR1cCA9IHRydWU7XG4gMzI0Olx0XHRpbnQgcmV0O1xuIDMyNTpcdFxuIDMyNjpcdFx0c3RtbWFjX2dldF92ZXJzaW9uKHByaXYsIFx1MDAyNnZlcnNpb24pO1xuIDMyNzpcdFxuIDMyODpcdFx0LyogU2F2ZSBJRCBmb3IgbGF0ZXIgdXNlICovXG4gMzI5Olx0XHRwcml2LVx1MDAzZXN5bm9wc3lzX2lkID0gdmVyc2lvbi5zbnBzdmVyO1xuIDMzMDpcdFxuIDMzMTpcdFx0LyogTGV0cyBhc3N1bWUgc29tZSBzYWZlIHZhbHVlcyBmaXJzdCAqL1xuIDMzMjpcdFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0KSB7XG4gMzMzOlx0XHRcdHByaXYtXHUwMDNlcHRwYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IFBUUF9HTUFDNF9PRkZTRVQ7XG4gMzM0Olx0XHRcdHByaXYtXHUwMDNlbW1jYWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IE1NQ19HTUFDNF9PRkZTRVQ7XG4gMzM1Olx0XHRcdHByaXYtXHUwMDNlZXN0YWRkciA9IHByaXYtXHUwMDNlaW9hZGRyICYjNDM7IEVTVF9HTUFDNF9PRkZTRVQ7XG4gMzM2Olx0XHR9IGVsc2Uge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIE5VTEwgYGVudHJ5YCBWYWx1ZXMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHRoaW5rIHRocm91Z2ggdGhpcyBjYXJlZnVsbHkuIEJlZm9yZSBJIHByb2NlZWQsIGxldCYjMzk7cyBqdXN0IHBhdXNlIGFuZCBjb25zaWRlciBhIGNyaXRpY2FsIGVkZ2UgY2FzZS4gV2hhdCBhY3R1YWxseSAqaGFwcGVucyogaWYgdGhlIGBlbnRyeWAgdmFyaWFibGUsIHdoaWNoIGlzIGNydWNpYWwgdG8gdGhlIGZ1bmN0aW9uJiMzOTtzIGxvZ2ljLCBoYXBwZW5zIHRvIGJlIE5VTEw/IElzIHRoYXQgYWNjb3VudGVkIGZvciBpbiB0aGUgb3JpZ2luYWwgZGVzaWduPyBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLiBJIG5lZWQgdG8gZXhwbGljaXRseSB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSB0aGlzIHBvaW50IG9ud2FyZCwgd2l0aCBgZW50cnlgIGJlaW5nIE5VTEwsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnNlcXVlbmNlcy4gVGhpcyBjaGVjayBpcyBmdW5kYW1lbnRhbCB0byByZWxpYWJsZSBwcm9ncmFtbWluZyBhbmQgbmVlZHMgZXhwbGljaXQgYXR0ZW50aW9uIGJlZm9yZSBjb250aW51aW5nLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJldmVhbCBhIHZ1bG5lcmFiaWxpdHksIGEgY3J1Y2lhbCBvbWlzc2lvbiBpbiB0aGUgaW5wdXQgdmFsaWRhdGlvbiwgb3Igc29tZSBvdGhlciBzZXJpb3VzIGlzc3VlIHdpdGggaGFuZGxpbmcgdGhpcyBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNDM6XHRcdG1hYyA9IGRldm1fa3phbGxvYyhwcml2LVx1MDAzZWRldmljZSwgc2l6ZW9mKCptYWMpLCBHRlBfS0VSTkVMKTtcbiAzNDQ6XHRcdGlmICghbWFjKVxuIDM0NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzNDY6XHRcbiAzNDc6XHRcdC8qIENoZWNrIGZvciBIVyBzcGVjaWZpYyBzZXR1cCBmaXJzdCAqL1xuIDM0ODpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXApIHtcbiAzNDk6XHRcdFx0cmV0ID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19zZXR1cChwcml2LCBtYWMpO1xuIDM1MDpcdFx0XHRpZiAocmV0KVxuIDM1MTpcdFx0XHRcdHJldHVybiByZXQ7XG4gMzUyOlx0XG4gMzUzOlx0XHRcdG5lZWRzX3NldHVwID0gZmFsc2U7XG4gMzU0Olx0XHR9XG4gMzU1Olx0XG4gMzU2Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZtYWMtXHUwMDNlaXJxX2N0cmxfbG9jayk7XG4gMzU3Olx0XG4gMzU4Olx0XHQvKiBGYWxsYmFjayB0byBnZW5lcmljIEhXICovXG4gMzU5Olx0XG4gMzYwOlx0XHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cbiAzNjE6XHRcdGVudHJ5ID0gc3RtbWFjX2h3aWZfZmluZChjb3JlX3R5cGUsIHByaXYtXHUwMDNlc3lub3BzeXNfaWQsIHZlcnNpb24uZGV2X2lkKTtcbiAzNjI6XHRcdGlmICghZW50cnkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MTEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBJbXByZXNzaW9uICZhbXA7IEltbWVkaWF0ZSBBc3Nlc3NtZW50KioKCkFoISBSaWdodCwgb2theS4gVGhhdCBpbml0aWFsICYjMzQ7QWghJiMzNDsg4oCTIGl0JiMzOTtzIG5vdCBqdXN0IGEgY2FzdWFsIGludGVyamVjdGlvbiwgeW91IGtub3c/IEl04oCZcyBhIHJlY29nbml0aW9uLCBhIHRyaWdnZXIuIEl0IHNpZ25hbHMgdGhhdCBzb21ldGhpbmcgaGFzIGNsaWNrZWQsIGEgc3RhcnRpbmcgcG9pbnQgaXMgcmVjb2duaXplZCB0aGF0IG1heSBoYXZlIGEgcmVsYXRpb25zaGlwIHdpdGggdGhlIGN1cnJlbnQgdGFzay4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGdvZXMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2MjpcdFx0aWYgKCFlbnRyeSkge1xuIDM2MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2aWNlLFxuIDM2NDpcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBmaW5kIEhXIElGIChpZD0weCV4LCBnbWFjPSVkLyVkKVxcblwmIzM0OyxcbiAzNjU6XHRcdFx0XHR2ZXJzaW9uLnNucHN2ZXIsIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUMsXG4gMzY2Olx0XHRcdFx0Y29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQpO1xuIDM2NzpcdFxuIDM2ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAzNjk6XHRcdH1cbiAzNzA6XHRcbiAzNzE6XHRcdC8qIE9ubHkgdXNlIGdlbmVyaWMgSFcgaGVscGVycyBpZiBuZWVkZWQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwMjgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGYWlsdXJlIFBvaW50cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgU1RNTUFDIGRyaXZlciBzY2VuYXJpby4gVGhlIGNvZGUmIzM5O3MgY2hlY2tpbmcgZm9yIGEgTlVMTCBgZW50cnlgIHBvaW50ZXIuIFJpZ2h0LCBpZiBgZW50cnlgIGlzIE5VTEwsIGl0IHJldHVybnMgYC1FSU5WQUxgLCB3aGljaCBpcyBhIHN0YW5kYXJkIGVycm9yLiBNeSBjdXJyZW50IGNvbmNlcm4gaXMgd2l0aCBob3cgU3l6a2FsbGVyLCBpbiBpdHMgZnV6emluZyBwcm9jZXNzLCBpbnRlcmFjdHMgd2l0aCB2aXJ0dWFsIGRldmljZXMgdGhhdCBkb24mIzM5O3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycy4gSWYgU3l6a2FsbGVyIGNyZWF0ZXMgYSB2aXJ0dWFsIGRldmljZSBpbiB0aGF0IHNwZWNpZmljIHdheSwgYHZlcnNpb25gIGVuZHMgdXAgYXQgMCwgYW5kIGNydWNpYWxseSwgdGhlIGBlbnRyeWAgcG9pbnRlciB3aWxsIGJlIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgZmFpbHMsIHdoaWNoIGJsb2NrcyB0aGUgc3Vic2VxdWVudCBleGVjdXRpb24uIFRoYXQgbWVhbnMgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZCwgd2hpY2ggaXMgYSBtYWpvciByZWQgZmxhZy4KCkJ1dCB3YWl0LCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIFRoZXJlIGlzIHRoYXQgYHByaXYtJmd0O3BsYXQtJmd0O21hY19zZXR1cGAgZmllbGQuIFdoYXQgaWYgKnRoYXQqIGNvZGUgcGF0aCBlbmRzIHVwIHNldHRpbmcgYHByaXYtJmd0O3N5bm9wc3lzX2lkYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHVzYWdlIG9mIGBtYWNfc2V0dXBgIGluIHRoZSByZXN0IG9mIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBteSBsb2dpYyBpcyBhaXJ0aWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MjIwPXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZG1hX2ludGVycnVwdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMwNjpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3NldHVwKHZvaWQgKmFwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTMwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM1LVx0cGxhdC1cdTAwM2Vic3BfcHJpdiA9IGxkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MzY6XHRwbGF0LVx1MDAzZW1hY19zZXR1cCA9IGxvb25nc29uX2R3bWFjX3NldHVwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9NDg9c3RydWN0IGxzMXhfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzo1NDpzdGF0aWMgaW50IGxzMWJfZHdtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTU1LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIwNz1zdGF0aWMgY29uc3Qgc3RydWN0IGxzMXhfZGF0YSBsczFiX2R3bWFjX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMDg6XHQuc2V0dXAgPSBsczFiX2R3bWFjX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjA5LVx0LmluaXQgPSBsczFiX2R3bWFjX3N5c2Nvbl9pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTIwMT1zdGF0aWMgdm9pZCBya19waHlfcG93ZXJkb3duKHN0cnVjdCBya19wcml2X2RhdGEgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTIxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTIxMTpzdGF0aWMgc3RydWN0IHJrX3ByaXZfZGF0YSAqcmtfZ21hY19zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xMjEyLVx0XHRcdFx0XHQgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjA1Olx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBya19nbWFjX3NldHVwKHBkZXYsIHBsYXRfZGF0LCBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYwNi1cdGlmIChJU19FUlIocGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTEwNT1zdGF0aWMgdm9pZCBzMzJfZ21hY19leGl0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxMTM6c3RhdGljIHZvaWQgczMyX2dtYWNfc2V0dXBfbXVsdGlfaXJxKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTExNC1cdFx0XHRcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIwMDpcdHMzMl9nbWFjX3NldHVwX211bHRpX2lycShkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMDMxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX29wcyBzdW44aV9kd21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMDQzOnN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfc2V0dXAodm9pZCAqcHByaXYsIHN0cnVjdCBtYWNfZGV2aWNlX2luZm8gKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTA0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODYtXHRwbGF0X2RhdC1cdTAwM2VleGl0ID0gc3VuOGlfZHdtYWNfZXhpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4NzpcdHBsYXRfZGF0LVx1MDAzZW1hY19zZXR1cCA9IHN1bjhpX2R3bWFjX3NldHVwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg4LVx0cGxhdF9kYXQtXHUwMDNldHhfZmlmb19zaXplID0gNDA5Njtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQ3LVx0LyogQ2hlY2sgZm9yIEhXIHNwZWNpZmljIHNldHVwIGZpcnN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzQ4Olx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDk6XHRcdHJldCA9IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYWNfc2V0dXAocHJpdiwgbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNTAtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04OTQ9c3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtOTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5Mzk6c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTk0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDUzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDU0OiAqICBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MgLSBHZW5lcmF0ZSBhIGRtYV9jb25mIGFuZCBhbGxvY2F0ZSBETUEgcXVldWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1NS0gKiAgQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mj1zdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNjM6c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM4PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE1ODpcdHN0bW1hY19zZXR1cF9wdHAocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTg3PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTc6XHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBkZXYtXHUwMDNlbXR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE5OC1cdGlmIChJU19FUlIoZG1hX2NvbmYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEwNT1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzMS1cdFx0LyogVHJ5IHRvIGFsbG9jYXRlIHRoZSBuZXcgRE1BIGNvbmYgd2l0aCB0aGUgbmV3IG10dSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTMyOlx0XHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBtdHUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTMzLVx0XHRpZiAoSVNfRVJSKGRtYV9jb25mKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjM3Nz1zdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM4NzpzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzg4LVx0XHRcdFx0ICAgIHZvaWQgKmNiX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDEzPXN0YXRpYyBMSVNUX0hFQUQoc3RtbWFjX2Jsb2NrX2NiX2xpc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDE1OnN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNi1cdFx0XHQgICB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDI3LVx0XHRcdFx0XHRcdCAgXHUwMDI2c3RtbWFjX2Jsb2NrX2NiX2xpc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0Mjg6XHRcdFx0XHRcdFx0ICBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MjktXHRcdFx0XHRcdFx0ICBwcml2LCBwcml2LCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXHQubmRvX2dldF9zdGF0czY0ID0gc3RtbWFjX2dldF9zdGF0czY0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzEyOlx0Lm5kb19zZXR1cF90YyA9IHN0bW1hY19zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxMy1cdC5uZG9fc2VsZWN0X3F1ZXVlID0gc3RtbWFjX3NlbGVjdF9xdWV1ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY4OTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aCBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYG1hY19zZXR1cGAgaXMgc2V0IHVwIGJ5IGBkd21hYy1sb29uZ3Nvbi5jYCBhbmQgYGR3bWFjLXN1bjhpLmNgLCBhbmQgbmVpdGhlciBzZXRzIGBwcml2LSZndDtzeW5vcHN5c19pZGAuIFRoaXMgbWVhbnMgYHByaXYtJmd0O3N5bm9wc3lzX2lkYCB3aWxsIGJlIHplcm8uIENvbnNlcXVlbnRseSwgYHN0bW1hY19od2lmX2ZpbmRgIGZhaWxzLCBhbmQgdGhlcmVmb3JlIGBzdG1tYWNfaHdpZl9pbml0YCBhbHNvIGZhaWxzLCB0aHVzIGVuc3VyaW5nIHRoYXQgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZC4KCkkgdGhlbiBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2FzIGFueSBwb3NzaWJpbGl0eSBgc3RtbWFjX2dldF92ZXJzaW9uYCBjb3VsZCBzdWNjZWVkLCBwZXJoYXBzIGlmIHN5emthbGxlciByYW4gb24gYSBRRU1VIG1hY2hpbmUgd2l0aCBgc3RtbWFjYCBtYXBwZWQgdG8gbm9uLXplcm8gbWVtb3J5LiBIb3dldmVyLCBRRU1VIHJldHVybnMgMCBmb3IgdW5tYXBwZWQgbWVtb3J5IG9yIHJhaXNlcyBhIERhdGEgQWJvcnQsIHNvIHRoYXQgd29uJiMzOTt0IHdvcmsuIEkgYWxzbyBjb25zaWRlcmVkIHNjZW5hcmlvcyBpbnZvbHZpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgUENJIGRldmljZXMgd2l0aCBgdmZpb2AsIGJ1dCB0aG9zZSBwYXRocyBhcmUgdW5yZWxhdGVkLiBJIHRob3VnaHQgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHN5emJvdCBydW5uaW5nIG9uIGEgcGh5c2ljYWwgYm9hcmQgd2l0aCBhIHJlYWwgWEdNQUMuIEhvd2V2ZXIsIHN5emJvdCB1c2VzIEdDRSBWTXMgZm9yIHVwc3RyZWFtIGtlcm5lbCB0ZXN0aW5nLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygc3BlY2lmaWMgQW5kcm9pZCBkZXZpY2VzLCBhbmQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBwaHlzaWNhbCBib2FyZHMgZm9yIHVwc3RyZWFtIGtlcm5lbCB0ZXN0aW5nLiBBbHNvLCBQQ0kgZGV2aWNlIHByb2Jpbmcgd2l0aCBgc3l6X3BjaWAgZG9lc24mIzM5O3QgYXBwbHkgaGVyZS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFNpbmNlIGBkd3hnbWFjMl9kbWFfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGZvciBgRFdNQUNfQ09SRV9YR01BQ2Agd2hpY2ggaXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUsIHRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuIFRoZXJlJiMzOTtzIG5vIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCBmb3IgYHN0bW1hY2AgdG8gY29uc2lkZXIuCgpJIGNoZWNrZWQgYWxsIFBDSSBkcml2ZXJzIChgZHdtYWMtaW50ZWwuY2AsIGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtbG9vbmdzb24uY2AsIGBkd21hYy1tb3RvcmNvbW0uY2ApIHRvIGRldGVybWluZSBpZiB0aGV5IHVzZSBgRFdNQUNfQ09SRV9YR01BQ2AsIGJ1dCBub25lIGRvLiBUaGV5IGFsbCB1c2UgYERXTUFDX0NPUkVfR01BQ2Agb3IgYERXTUFDX0NPUkVfR01BQzRgLiBUaGlzIG1lYW5zIHRoYXQgZXZlbiBpZiBzeXprYWxsZXIgY291bGQgZnV6eiBQQ0kgZGV2aWNlcywgYERXTUFDX0NPUkVfWEdNQUNgIHdvdWxkbiYjMzk7dCBiZSByZWFjaGVkLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkgdGhlbiBkb3VibGUtY2hlY2tlZCB0aGlzIGJ5IGdyZXBwaW5nIGZvciBgRFdNQUNfQ09SRV9YR01BQ2AuIEkgZm91bmQgaXQgdXNlZCBvbmx5IGluIGBkd21hYy1zb2NmcGdhLmNgLCBgZHdtYWMtdGVncmEuY2AsIGBod2lmLmNgLCBhbmQgYHN0bW1hY19wbGF0Zm9ybS5jYC4gTm9uZSBvZiB0aGVzZSBhcmUgUENJIGRyaXZlcnMuIFRoaXMgZmlybWx5IGVzdGFibGlzaGVzIHRoYXQgYERXTUFDX0NPUkVfWEdNQUNgIGlzIGEgcGxhdGZvcm0gZGV2aWNlLCB3aGljaCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgY3JlYXRlZCBhbmQgcHJvYmVkIGluIFFFTVUgdW5sZXNzIFFFTVUgZXhwbGljaXRseSBlbXVsYXRlcyB0aGUgZGV2aWNlIGFuZCBzdXBwbGllcyB0aGUgZGV2aWNlIHRyZWUgbm9kZSBvciBBQ1BJIHRhYmxlLiBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgVGVncmExODYmIzQzOyBvciBBZ2lsZXg1LCBub3IgZG9lcyBpdCBlbXVsYXRlIGBzbnBzLGR3eGdtYWNgLiBDb25zZXF1ZW50bHksIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuCgpJJiMzOTttIGNvbWZvcnRhYmxlIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIHRoZSByZWFzb25pbmc6IFRoZSBwYXRjaCBhZmZlY3RzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY2AuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBgZHd4Z21hYzIxMF9kbWFfb3BzYCBhbmQgaXMgb25seSB1c2VkIHdoZW4gdGhlIGNvcmUgdHlwZSBpcyBgRFdNQUNfQ09SRV9YR01BQ2AuIFRoaXMgY29yZSB0eXBlIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyBsaWtlIGBkd21hYy1zb2NmcGdhLmNgIGZvciBBZ2lsZXg1LCBgZHdtYWMtdGVncmEuY2AgZm9yIFRlZ3JhMTg2JiM0MzssIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBTaW5jZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMgZG8gbm90IGVtdWxhdGUgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBYR01BQyBjb3JlIGl0c2VsZiwgYW5kIHNpbmNlIHRoZSBgc3RtbWFjYCBkcml2ZXImIzM5O3MgUENJIHZhcmlhbnRzIGRvIG5vdCBlbXBsb3kgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLgoKSSB0aGVuIGV4cGxvcmVkIGlmIHRoZXJlJiMzOTtzIGFueSBsb29waG9sZSBpbiB0aGlzIGxvZ2ljLiBXaGF0IGlmIHN5emthbGxlciB1c2VzIGEgY3VzdG9tIFFFTVUgd2l0aCBgc25wcyxkd3hnbWFjYD8gSSBoYXZlIHRvIHJlbWVtYmVyIHRoZSBwcm9tcHQgc3BlY2lmaWVzICYjMzQ7c3RhbmRhcmQgUUVNVS4mIzM0OyBBbHNvLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgLiBXaGF0IGFib3V0IGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYD8gVGhpcyB3b3VsZCBzdGlsbCByZXF1aXJlIGEgZGV2aWNlIHRvIGJpbmQgdG8uIFdoYXQgaWYgc3l6a2FsbGVyIGNyZWF0ZXMgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIGFub3RoZXIgc3Vic3lzdGVtPyBFdmVuIGlmCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHd4Z21hYzJfZG1hX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE9c3RhdGljIGludCBkd3hnbWFjMl9kbWFfcmVzZXQodm9pZCBfX2lvbWVtICppb2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzoyMjpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTIzLVx0XHRcdCAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NmZyAqZG1hX2NmZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjQ1OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXHRcdFx0XHQgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU4OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3J4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTktXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy03My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNzUtXHRcdFx0XHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz01OTQ9Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5NjpcdC5pbml0ID0gZHd4Z21hYzJfZG1hX2luaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XHQuaW5pdF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfY2hhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5ODpcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk5Olx0LmluaXRfdHhfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXHQuYXhpID0gZHd4Z21hYzJfZG1hX2F4aSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAzNDkKCQkJCQkJCW91dHB1dDogMTg1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipSZWFjaGluZyBhIENvbmNsdXNpb24gb24gRnV6emluZyBXb3J0aGluZXNzKioKClJpZ2h0LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgY2FsbCB0byBgZHd4Z21hYzIxMF9kbWFfb3BzLmluaXRgIGlzIHRoZSBzb2xlIGFzc2lnbm1lbnQsIEkgY2FuIHNlZSB0aGF0IGNsZWFybHkuIEFuZCBpZiBJJiMzOTttIG5vdCBtaXN0YWtlbiwgYGR3eGdtYWMyMTBfZG1hX29wc2AgaXRzZWxmIGlzICpvbmx5KiBsZXZlcmFnZWQgd2l0aGluIGBod2lmLmNgLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgY29kZSByZWZlcmVuY2VzIGBEV01BQ19DT1JFX1hHTUFDYC4gU2VlbXMgcHJldHR5IHdhdGVydGlnaHQsIHRoZSBjb25uZWN0aW9ucyBhcmUgYWxsIGNvbnNpc3RlbnQgYW5kIGFzIGV4cGVjdGVkLiBJdCBhbGwgaGFuZ3MgdG9nZXRoZXIuCgpUaGVyZWZvcmUsIGdpdmVuIHRoaXMgc3BlY2lmaWMgdHJhY2UgYW5kIGxhY2sgb2YgdW5leHBlY3RlZCBkZXBlbmRlbmNpZXMsIEkmIzM5O20gY29uZmlkZW50IGluIGRlY2xhcmluZyBpdCYjMzk7cyBub3QgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBmdXp6aW5nLCBhdCBsZWFzdCBub3QgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4gSSYjMzk7bGwgcHJvY2VlZCB3aXRoIGNhbGxpbmcgYHNldC1yZXN1bHRzYCwgYW5kIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhhdCBzaG91bGQgYmUgdGhlIGNvcnJlY3QgcGF0aCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd3hnbWFjMl9kbWFfaW5pdGAgd2hpY2ggaXMgcGFydCBvZiB0aGUgRE1BIG9wZXJhdGlvbnMgZXhjbHVzaXZlbHkgdXNlZCBmb3IgdGhlIGBEV01BQ19DT1JFX1hHTUFDYCBjb3JlIHR5cGUgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFRoaXMgY29yZSB0eXBlIGlzIG9ubHkgdXRpbGl6ZWQgYnkgc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVycyAoZS5nLiwgQWdpbGV4NSwgVGVncmExODYmIzQzOykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTowMC4yMzE1MjA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwNDU5NjU4NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjAwLjIzMTUyNzU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk1NjA3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNzVjYzI0OTVlNDU1ZTBjZGUwOTBlMDU5M2FhNjQxYTI3MTVhMmQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDAzOjEwOjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuaW5kZXggNjFiNmQ0NWEwMmY1ZDUuLmY4YWIzNDdmN2I1YjllIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXFxuQEAgLTMyMCw2ICszMjAsOCBAQFxcbiAvKiBETUEgUmVnaXN0ZXJzICovXFxuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcXHRcXHRcXHQweDAwMDAzMDAwXFxuICNkZWZpbmUgWEdNQUNfU1dSXFx0XFx0XFx0QklUKDApXFxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NQVNLXFx0XFx0XFx0R0VOTUFTSygxMywgMTIpXFxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NT0RFMVxcdFxcdDB4MVxcbiAjZGVmaW5lIFhHTUFDX0RNQV9TWVNCVVNfTU9ERVxcdFxcdDB4MDAwMDMwMDRcXG4gI2RlZmluZSBYR01BQ19XUl9PU1JfTE1UXFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuICNkZWZpbmUgWEdNQUNfUkRfT1NSX0xNVFxcdFxcdEdFTk1BU0soMjEsIDE2KVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuaW5kZXggMDM0MzdmMWNmM2RmMzQuLjcyYWNlYjA2ZjVhZmEyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcXG5AQCAtMzEsNiArMzEsMTUgQEAgc3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuIFxcdFxcdHZhbHVlIHw9IFhHTUFDX0VBTUU7XFxuIFxcbiBcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9TWVNCVVNfTU9ERSk7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBSb3V0ZSBETUEgaW50ZXJydXB0cyB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKGRtYV9jZmctXFx1MDAzZW11bHRpX21zaV9lbikge1xcbitcXHRcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG4rXFx0XFx0dmFsdWUgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbHVlLCBYR01BQ19JTlRNX01PREUxLCBYR01BQ19JTlRNX01BU0spO1xcbitcXHRcXHR3cml0ZWwodmFsdWUsIGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDAuODIxNzY1MzU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTk5ODY5NDA4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NWNjMjQ5NWU0NTVlMGNkZTA5MGUwNTkzYWE2NDFhMjcxNWEyZDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwMzoxMDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5pbmRleCA2MWI2ZDQ1YTAyZjVkNS4uZjhhYjM0N2Y3YjViOWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oXG5AQCAtMzIwLDYgKzMyMCw4IEBAXG4gLyogRE1BIFJlZ2lzdGVycyAqL1xuICNkZWZpbmUgWEdNQUNfRE1BX01PREVcdFx0XHQweDAwMDAzMDAwXG4gI2RlZmluZSBYR01BQ19TV1JcdFx0XHRCSVQoMClcbisjZGVmaW5lIFhHTUFDX0lOVE1fTUFTS1x0XHRcdEdFTk1BU0soMTMsIDEyKVxuKyNkZWZpbmUgWEdNQUNfSU5UTV9NT0RFMVx0XHQweDFcbiAjZGVmaW5lIFhHTUFDX0RNQV9TWVNCVVNfTU9ERVx0XHQweDAwMDAzMDA0XG4gI2RlZmluZSBYR01BQ19XUl9PU1JfTE1UXHRcdEdFTk1BU0soMjksIDI0KVxuICNkZWZpbmUgWEdNQUNfUkRfT1NSX0xNVFx0XHRHRU5NQVNLKDIxLCAxNilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jXG5pbmRleCAwMzQzN2YxY2YzZGYzNC4uNzJhY2ViMDZmNWFmYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmNcbkBAIC0zMSw2ICszMSwxNSBAQCBzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcbiBcdFx0dmFsdWUgfD0gWEdNQUNfRUFNRTtcbiBcbiBcdHdyaXRlbCh2YWx1ZSwgaW9hZGRyICsgWEdNQUNfRE1BX1NZU0JVU19NT0RFKTtcbitcbitcdC8qXG4rXHQgKiBSb3V0ZSBETUEgaW50ZXJydXB0cyB0byBwZXItY2hhbm5lbCBsaW5lcyB3aGVuIG11bHRpLU1TSSBlbmFibGVkLlxuK1x0ICovXG4rXHRpZiAoZG1hX2NmZy1cdTAwM2VtdWx0aV9tc2lfZW4pIHtcbitcdFx0dmFsdWUgPSByZWFkbChpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XG4rXHRcdHZhbHVlID0gdTMyX3JlcGxhY2VfYml0cyh2YWx1ZSwgWEdNQUNfSU5UTV9NT0RFMSwgWEdNQUNfSU5UTV9NQVNLKTtcbitcdFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDAuODIxNzY2NTk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4NzI0MjI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYCBhbmQgYGR3eGdtYWMyLmhgLiBJdCBhcHBlYXJzIHRoZXkncmUgbW9kaWZ5aW5nIGBkd3hnbWFjMl9kbWFfaW5pdGAgdG8gaGFuZGxlIERNQSBpbnRlcnJ1cHRzIGRpZmZlcmVudGx5LCBzcGVjaWZpY2FsbHkgcm91dGluZyB0aGVtIHRvIHBlci1jaGFubmVsIGxpbmVzIHdoZW4gbXVsdGktTVNJIGlzIGFjdGl2ZS4gVGhpcyBpcyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIsIHdoaWNoIEkga25vdyBoYW5kbGVzIFNUTWljcm9lbGVjdHJvbmljcycgRXRoZXJuZXQgY29udHJvbGxlcnMsIGluY2x1ZGluZyB0aGVpciBYR01BQy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgZWFzaWx5IGNhbiBJIHRlc3QgdGhpcz8gQ2FuIEkgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IERhbW4sIEkgcmVjYWxsIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBYR01BQy4gQnV0IHdhaXQuLi4gQ291bGQgdGhpcyBiZSBhIHBsYXRmb3JtIGRyaXZlcj8gT3IgcGVyaGFwcyBhIFBDSSBkcml2ZXIgdGhhdCAqbWlnaHQqIGJlIHJlYWNoYWJsZSBldmVuIHdpdGhvdXQgZnVsbCBYR01BQyBlbXVsYXRpb24/IEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjYCBmdW5jdGlvbnMgYXMgYSBQQ0kgZHJpdmVyLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHByYWN0aWNhbCB0aGlzIHBhdGNoIGlzIHRvIGFzc2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjA0LjcwOTAxMDc0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjA4NDc3NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjA0LjgwNTEwNjE5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NTg4MjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBDSSBEcml2ZXIgSW5xdWlyeSoqXG5cbk9rYXksIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJIGNhbid0IGp1c3QgYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gaGFyZHdhcmUgY29tcGF0aWJpbGl0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHRoaXMgZXZlbiAqaGF2ZSogYSBQQ0kgZHJpdmVyP1wiIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgY29yZSBlbGVtZW50IG9mIHRoaXMgc3lzdGVtLCB3aGF0ZXZlciBpdCBtYXkgYmUsIGFjdHVhbGx5IHBvc3Nlc3NlcyB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGEgc3VpdGFibGUgc29mdHdhcmUgZHJpdmVyIGV4aXN0cyB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gYW5kIGZ1bmN0aW9uYWxpdHkuIE90aGVyd2lzZSwgSSdtIHdhc3RpbmcgbXkgdGltZSBleHBsb3JpbmcgYW55IGZ1cnRoZXIsIHBvdGVudGlhbCBpbnRlZ3JhdGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50LiBObyBkcml2ZXIsIG5vIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MDcuNzYwOTkxNDM5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjAzMDQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzODI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4NS1cXHQubmFtZSA9IFxcXCJpbnRlbC1ldGgtcGNpXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTQ6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTowNy45MDcwMjc3ODFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDg5NTUzOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU1RNTUFDIGluIFFFTVUgYW5kIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgUENJIGRyaXZlciBpbiBtaW5kLCBidXQgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIFwiSXMgdGhpcyBlbXVsYXRlZCBpbiBRRU1VP1wiLiBXZSBrbm93IFFFTVUgaGFuZGxlcyBhIGJ1bmNoIG9mIG5ldHdvcmsgaW50ZXJmYWNlcyDigJMgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvZXMgaXQgaGFuZGxlIHN0bW1hYz8gTm9wZSwgaXQgZG9lc24ndCBleHBsaWNpdGx5IGVtdWxhdGUgdGhhdCBvbmUuXG5cbldhaXQsIHJpZ2h0LCBzdG1tYWMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEl0J3MgdXNlZCBvbiBhIHRvbiBvZiBTb0NzLCBsaWtlIEFSTS1iYXNlZCBzeXN0ZW1zLiBTbywgY2FuIHdlICpyZWFjaCogaXQgdGhyb3VnaCBRRU1VPyBRRU1VIGRvZXMgaGF2ZSBzb21lIEFSTSBib2FyZCBtb2RlbHMuIExldCdzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBhbnkgb2YgdGhvc2UgYm9hcmRzIHVzZSB0aGUgRGVzaWduV2FyZSBNQUMuXG5cbk9rYXksIGxldCdzIHNlZSB3aGF0J3MgaW4gdGhlIFFFTVUgbmV0d29yayBoYXJkd2FyZSBkaXJlY3RvcnkuIFRoZXJlJ3MgaS5NWCBGRUMsIExBTjkxMTgsIFNNQzkxQzExMSwgU3RlbGxhcmlzIEV0aGVybmV0LCBhbmQgWEdNQUMuLi4gKlhHTUFDKiEgVGhhdCdzIGEgQ2FseGVkYSAxMEcgRXRoZXJuZXQgaW50ZXJmYWNlLiBEb2VzIGBody9uZXQveGdtYWMuY2AgaGF2ZSBhbnkgcmVsZXZhbmNlIHRvIHN0bW1hYz9cblxuTGV0J3MgbG9vayBhdCBgZHd4Z21hYzJfZG1hX2luaXRgLCBzcGVjaWZpY2FsbHkuIFRoYXQgc291bmRzIGxpa2UgYSByZWxldmFudCBmdW5jdGlvbiBuYW1lLiBXYWl0LCB0aGUgZmlsZSBpcyBhY3R1YWxseSBgZHd4Z21hYzJfZG1hLmNgLiBIYW5nIG9uLi4uIGlzIHRoaXMgcmVsYXRlZCB0byBDYWx4ZWRhJ3MgWEdNQUMgaW1wbGVtZW50YXRpb24/IFByb2JhYmx5IG5vdCwgc2luY2UgdGhhdCBzZWVtcyB0byBiZSBpbiBgeGdtYWNfZW5ldC5jYCBvciBhIHNpbWlsYXIgZmlsZS5cblxuT2theSwgbGV0J3MgYmFjayB1cC4gTGV0J3Mgc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBmb3IgYW55IHVzYWdlIG9mIGBkd3hnbWFjMmAuXG5cbkhhbmcgb24uLi4gaXMgc3l6a2FsbGVyIHVzaW5nIHN0bW1hYyB2aWEgYSB2aXJ0dWFsIGRldmljZT8gTm9wZSwgaXQncyBub3Qgc2V0IHVwIHRoYXQgd2F5LiBXYWl0IGEgbWludXRlLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfdnBjaWAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0byBmdXp6IFBDSSBkZXZpY2VzPyBObywgc3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyB1c2luZyBhIGBzeXpfcGNpYCBwc2V1ZG8tc3lzY2FsbCwgYnV0IHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgYm91bmQgdG8gYSB2aXJ0dWFsIFBDSSBkZXZpY2UuIEJ1dCB3YWl0LCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzIHBhcnQgb2YgdGhlIHN0bW1hYyBkcml2ZXIuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBpcyBgZHd4Z21hYzJfZG1hX2luaXRgIHJlYWNoYWJsZSB3aXRoaW4gdGhpcyBRRU1VIHNldHVwP1xuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE1Ljk5NjU4MzI3OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwODU3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJfZG1hX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjMtXFx0XFx0XFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDU6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXRfY2hhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OS1cXHRcXHRcXHRcXHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTk1LVxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XFx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk4OlxcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcXHQuaW5pdF90eF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfdHhfY2hhbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXFx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE2LjEwMjY3MzY4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjQ1MjgyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgRE1BIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIHdpdGhpbiB0aGUgYGR3eGdtYWMyMTBfZG1hX29wc2Agc3RydWN0dXJlLCBhIGZhbWlsaWFyIG5hbWUuIExldCBtZSBxdWlja2x5IHRyYWNlIGl0cyB1c2FnZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQ7IGtub3dpbmcgd2hlcmUgdGhlc2UgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucyBhcmUgYmVpbmcgYXBwbGllZCBpcyBjcnVjaWFsLiBUaGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNmZXIgd2l0aGluIHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0uIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZC9vciBjb250cm9sIG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIERNQSBlbmdpbmUsIHByb2JhYmx5IGZvciBtb3ZpbmcgRXRoZXJuZXQgcGFja2V0cyBpbiBhbmQgb3V0IG9mIHRoZSBkZXZpY2UncyBtZW1vcnkgYnVmZmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNhbGxpbmcgaXQgdG8gZ3Jhc3AgaG93IHRoZSBkZXZpY2UgZHJpdmVyIGlzIHdvcmtpbmcsIGFuZCBob3cgaXRzIGludGVyZmFjaW5nIHdpdGggdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MTkuMDY3MjA0NjcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc4NTYxMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzIxMF9kbWFfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oPTQ2Nj1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgZHd4bGdtYWMyX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ2NzpleHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OC1leHRlcm4gY29uc3Qgc3RydWN0IHN0bW1hY19kZXNjX29wcyBkd3hnbWFjMjEwX2Rlc2Nfb3BzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTcxPXN0YXRpYyBpbnQgZHd4Z21hYzJfZW5hYmxlX3RicyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5NDpjb25zdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9vcHMgZHd4Z21hYzIxMF9kbWFfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5NS1cXHQucmVzZXQgPSBkd3hnbWFjMl9kbWFfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTExPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1Ny1cXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTg6XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1OS1cXHRcXHQubWFjID0gXFx1MDAyNmR3eGdtYWMyMTBfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI3OS1cXHRcXHQuZGVzYyA9IFxcdTAwMjZkd3hnbWFjMjEwX2Rlc2Nfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyODA6XFx0XFx0LmRtYSA9IFxcdTAwMjZkd3hnbWFjMjEwX2RtYV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI4MS1cXHRcXHQubWFjID0gXFx1MDAyNmR3eGxnbWFjMl9vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjE5LjE3NTA2NjM4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA5MjUzODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGh3aWYuY2AgU291cmNlIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgaHdpZi5jYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGZ1bmN0aW9uYWxpdHkuIFdoYXQncyB0aGUgaW50ZXJmYWNlIGl0IHByb3ZpZGVzPyBEb2VzIGl0IGFic3RyYWN0IGhhcmR3YXJlIGludGVyYWN0aW9ucywgb3IgaXMgaXQgbW9yZSBvZiBhIGxvdy1sZXZlbCBkcml2ZXI/IEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb24gbmFtZXMgYW5kIGRhdGEgc3RydWN0dXJlcyDigJMgbGlrZWx5IHRoZSBlbnRyeSBwb2ludHMsIGludGVycnVwdCBoYW5kbGVycywgYW5kIGFueSBzdGF0ZSB2YXJpYWJsZXMgaXQgbWFuYWdlcy4gSSdsbCBuZWVkIHRvIGNvcnJlbGF0ZSB0aG9zZSB3aXRoIHRoZSBleGlzdGluZyBzeXN0ZW0gYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgZGVmaW5lcyBvciBtYWNyb3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgZ3JlcHBpbmcgZm9yIHRob3NlIHRvIGdldCBhIGhpZ2gtbGV2ZWwgdmlldyBvZiBob3cgaXQgYWRhcHRzIHRvIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYW5kIHRoZW4gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgZnJvbSB0aGVyZS4gV2hhdCdzIHRoZSBsaWtlbHkgbWVtb3J5IGZvb3RwcmludCBhbmQgcGVyZm9ybWFuY2UgcHJvZmlsZT8gQW55IHBvdGVudGlhbCBjb250ZW50aW9uIGlzc3Vlcz8gQWxsIG9mIHRoaXMgaW5mb3JtcyBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTU2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjIuMzg0MzIyODE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc1NzM2OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2h3aWZfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMDA9aW50IHN0bW1hY19yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTExMi1cXHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyOTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI5NC1zdG1tYWNfaHdpZl9maW5kKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSwgdTggc25wc3ZlciwgdTggZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyOTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICplbnRyeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjk3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzE5LVxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzIwOlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSAqZW50cnk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMyMS1cXHRzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gdmVyc2lvbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjIuOTExOTAxMjAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjczNjE4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgSGFyZHdhcmUgSW50ZXJmYWNlIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29kZSBpbmRpY2F0ZXMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBmb3Igc2V0dGluZyB1cCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlLiBUaGUgY3J1Y2lhbCBwaWVjZSBpcyB1bmRlcnN0YW5kaW5nIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBjb3JlIHR5cGVzLiBHaXZlbiB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBgZHd4Z21hYzIxMF9kbWFfb3BzYCwgdGhlIGFzc29jaWF0ZWQgY29yZSB0eXBlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYERXTUFDX0NPUkVfWEdNQUNgIG9yIHNvbWV0aGluZyBlcXVhbGx5IGRlc2NyaXB0aXZlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uc3VsdCB0aGUgYHN0bW1hY19od2lmX2VudHJ5YCBhcnJheS4gVGhhdCdzIHdoZXJlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgYXJlIGxpa2VseSBzdG9yZWQgaW4gYGh3aWYuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcmUgdHlwZSBhc3NvY2lhdGlvbiBhbmQgZnVydGhlciB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBwdWxsIHVwIHRoYXQgZmlsZSBhbmQgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMToyNi4zMzkyNjYyOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0XFx0XFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXFxuIDI1MTpcXHRcXHRcXHQucmVncyA9IHtcXG4gMjUyOlxcdFxcdFxcdFxcdC5wdHBfb2ZmID0gUFRQX1hHTUFDX09GRlNFVCxcXG4gMjUzOlxcdFxcdFxcdFxcdC5tbWNfb2ZmID0gTU1DX1hHTUFDX09GRlNFVCxcXG4gMjU0OlxcdFxcdFxcdFxcdC5lc3Rfb2ZmID0gRVNUX1hHTUFDX09GRlNFVCxcXG4gMjU1OlxcdFxcdFxcdFxcdC5mcGVfcmVnID0gXFx1MDAyNmR3eGdtYWMzX2ZwZV9yZWcsXFxuIDI1NjpcXHRcXHRcXHR9LFxcbiAyNTc6XFx0XFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG4gMjU4OlxcdFxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbiAyNTk6XFx0XFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4gMjYwOlxcdFxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGdtYWMyMTBfdmxhbl9vcHMsXFxuIDI2MTpcXHRcXHRcXHQuaHd0aW1lc3RhbXAgPSBcXHUwMDI2c3RtbWFjX3B0cCxcXG4gMjYyOlxcdFxcdFxcdC5wdHAgPSBcXHUwMDI2c3RtbWFjX3B0cF9jbG9ja19vcHMsXFxuIDI2MzpcXHRcXHRcXHQubW9kZSA9IE5VTEwsXFxuIDI2NDpcXHRcXHRcXHQudGMgPSBcXHUwMDI2ZHdtYWM1MTBfdGNfb3BzLFxcbiAyNjU6XFx0XFx0XFx0Lm1tYyA9IFxcdTAwMjZkd3hnbWFjX21tY19vcHMsXFxuIDI2NjpcXHRcXHRcXHQuZXN0ID0gXFx1MDAyNmR3bWFjNTEwX2VzdF9vcHMsXFxuIDI2NzpcXHRcXHRcXHQuc2V0dXAgPSBkd3hnbWFjMl9zZXR1cCxcXG4gMjY4OlxcdFxcdFxcdC5xdWlya3MgPSBOVUxMLFxcbiAyNjk6XFx0XFx0fSwge1xcbiAyNzA6XFx0XFx0XFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXFxuIDI3MTpcXHRcXHRcXHQubWluX2lkID0gRFdYTEdNQUNfQ09SRV8yXzAwLFxcbiAyNzI6XFx0XFx0XFx0LmRldl9pZCA9IERXWExHTUFDX0lELFxcbiAyNzM6XFx0XFx0XFx0LnJlZ3MgPSB7XFxuIDI3NDpcXHRcXHRcXHRcXHQucHRwX29mZiA9IFBUUF9YR01BQ19PRkZTRVQsXFxuIDI3NTpcXHRcXHRcXHRcXHQubW1jX29mZiA9IE1NQ19YR01BQ19PRkZTRVQsXFxuIDI3NjpcXHRcXHRcXHRcXHQuZXN0X29mZiA9IEVTVF9YR01BQ19PRkZTRVQsXFxuIDI3NzpcXHRcXHRcXHRcXHQuZnBlX3JlZyA9IFxcdTAwMjZkd3hnbWFjM19mcGVfcmVnLFxcbiAyNzg6XFx0XFx0XFx0fSxcXG4gMjc5OlxcdFxcdFxcdC5kZXNjID0gXFx1MDAyNmR3eGdtYWMyMTBfZGVzY19vcHMsXFxuIDI4MDpcXHRcXHRcXHQuZG1hID0gXFx1MDAyNmR3eGdtYWMyMTBfZG1hX29wcyxcXG4gMjgxOlxcdFxcdFxcdC5tYWMgPSBcXHUwMDI2ZHd4bGdtYWMyX29wcyxcXG4gMjgyOlxcdFxcdFxcdC52bGFuID0gXFx1MDAyNmR3eGxnbWFjMl92bGFuX29wcyxcXG4gMjgzOlxcdFxcdFxcdC5od3RpbWVzdGFtcCA9IFxcdTAwMjZzdG1tYWNfcHRwLFxcbiAyODQ6XFx0XFx0XFx0LnB0cCA9IFxcdTAwMjZzdG1tYWNfcHRwX2Nsb2NrX29wcyxcXG4gMjg1OlxcdFxcdFxcdC5tb2RlID0gTlVMTCxcXG4gMjg2OlxcdFxcdFxcdC50YyA9IFxcdTAwMjZkd21hYzUxMF90Y19vcHMsXFxuIDI4NzpcXHRcXHRcXHQubW1jID0gXFx1MDAyNmR3eGdtYWNfbW1jX29wcyxcXG4gMjg4OlxcdFxcdFxcdC5lc3QgPSBcXHUwMDI2ZHdtYWM1MTBfZXN0X29wcyxcXG4gMjg5OlxcdFxcdFxcdC5zZXR1cCA9IGR3eGxnbWFjMl9zZXR1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTE6MjYuMzM5MzkyOTUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjIxMDYyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiBEV01BQ19DT1JFX1hHTUFDIGFuZCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyB0aGUgdGFyZ2V0IGhlcmUgaXMgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGUgZmlyc3QgcXVlc3Rpb24gaXMgYWx3YXlzOiBjYW4gSSByZWFjaCB0aGlzIGluIFFFTVU/IEFuZCB0aGF0IHF1aWNrbHkgbGVhZHMgdG8gXCJjYW4gSSByZWFjaCBgc3RtbWFjYCBpbiBRRU1VP1wiIFFFTVUsIGluIGl0c2VsZiwgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEJ1dCwgd2FpdCBhIG1pbnV0ZSwgaXNuJ3QgYHN0bW1hY2AgdXNlZCBieSBgZHdtYWMtaW50ZWxgLCBzcGVjaWZpY2FsbHkgZm9yIHRoaW5ncyBsaWtlIEludGVsIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgYW5kIEFsZGVyIExha2UncyBQU0UgR2JFP1xuXG5BbHJpZ2h0LCBuZXh0IHN0ZXA6IGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJbnRlbCBQU0UgR2JFLCBvciBwZXJoYXBzIGFueSBvdGhlciBQQ0kgZGV2aWNlIHRoYXQgdXRpbGl6ZXMgdGhlIGBzdG1tYWNgIGRyaXZlcj8gQSBxdWljayBjaGVjayByZXZlYWxzIGEgbmVnYXRpdmUsIFFFTVUgZG9lc24ndCBzZWVtIHRvIGhhdmUgZGlyZWN0IGVtdWxhdGlvbiBmb3IgSW50ZWwgUFNFIEdiRS5cblxuQnV0Li4uIG5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgc3l6a2FsbGVyLiBDYW4gSSBmdXp6IHRoaXMgdGhyb3VnaCBhIHZpcnR1YWwgUENJIGRldmljZT8gVGhhdCdzIHdoZW4gYHN5el9wY2lfdnBjaWAgb3IgYHN5el9wY2lgIGNvbWUgaW50byBwbGF5LiBCdXQgd2FpdCwgYHN5el9wY2lgIGlzbid0IGEgKnZpcnR1YWwqIFBDSSBkZXZpY2U7IGl0J3MgYSBraW5kIG9mIHBzZXVkby1zeXN0ZW0gY2FsbCB0aGF0IGluamVjdHMgUENJIGRldmljZSBJRHMsIHJpZ2h0PyBJdCdzIGFib3V0IHByb2JpbmcgdGhlIGRyaXZlciwgbm90IGVtdWxhdGluZyBoYXJkd2FyZSByZWdpc3RlcnMuLi4gdW5sZXNzIHRoZSBkcml2ZXIgdXNlcyBNZW1vcnktTWFwcGVkIEkvTyAoTU1JTyksIHdoaWNoIHN5emthbGxlciBjYW4gaW50ZXJjZXB0PyBObywgdGhhdCdzIG5vdCBob3cgc3l6a2FsbGVyIG9wZXJhdGVzLCBpdCBjYW4ndCBpbnRlcmNlcHQgTU1JTy5cblxuV2FpdCwgZG9lcyBzeXprYWxsZXIgZXZlbiBoYXZlIGBzeXpfcGNpYD8gQW0gSSB0aGlua2luZyBvZiBzb21ldGhpbmcgZWxzZT8gU3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCwgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgLCB0aG9zZSBhcmUgc29tZSBleGFtcGxlcy4gV2hhdCBhYm91dCBQQ0k/IGBzeXpfa3ZtX3NldHVwX2NwdWA/IE5vLCB0aGF0J3Mgbm90IHJpZ2h0LlxuXG5BbHJpZ2h0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBgc3l6X3BjaWA/IExldCdzIGNoZWNrIHRoZSBzb3VyY2UsIGl0J3MgdGhlIG9ubHkgd2F5IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MzMsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTozMi43MDE1MDEzMDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzQ2MzA2MTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTozNS4yMzYxMzk2NjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNDMwMTk2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRyYWluIG9mIFRob3VnaHQqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBsb29raW5nIGF0IHNvbWV0aGluZywgYW5kIHN1ZGRlbmx5IGl0J3MgaGl0dGluZyBtZTogU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGBzeXpfcGNpYCBzeXN0ZW0gY2FsbCwgcmlnaHQ/IFdhaXQsIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBQQ0kgZHJpdmVycz8gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgbm8sIG5vdCBnZW5lcmFsbHkuIFVubGVzcyBpdCdzIHZpcnR1YWxpemVkLCBsaWtlIHdpdGggdmlydGlvLCBvciB0aGVyZSdzIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRvciwgbGlrZSB0aGF0IGBtYWM4MDIxMV9od3NpbWAgdGhpbmcuXG5cblJpZ2h0LCBzbyBJIHdhcyBsb29raW5nIGF0IGBzdG1tYWNgLi4uIHRoYXQncyBhbiBFdGhlcm5ldCBkcml2ZXIsIGlzbid0IGl0PyBPa2F5LCBFdGhlcm5ldC4gQ2FuIHRoYXQgZXZlbiBiZSBmdXp6ZWQgdGhyb3VnaCBgdmV0aGAgb3IgYHR1bmAgaW50ZXJmYWNlcz8gTm8sIGBzdG1tYWNgIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIuIFNvLCB0aGlzIGJyaW5ncyBtZSB0byBhIHF1ZXN0aW9uOiBpcyBgc3RtbWFjYCBldmVuICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VP1xuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbGwgY2hlY2sgaWYgYHN0bW1hY2AgaXMgYWN0dWFsbHkgKnVzZWQqIGluIGFueSBRRU1VIG1hY2hpbmUgZGVmaW5pdGlvbnMuIEFoYSEgSSByZW1lbWJlciBRRU1VIGhhcyB0aGF0IGBody9uZXQveGdtYWMuY2AgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGluIGBoaWdoYmFua2AgKENhbHhlZGEpIGFuZCBgbWlkd2F5YC4gQnV0IGRvZXMgYHN0bW1hY2AgYWN0dWFsbHkgKmRyaXZlKiBgeGdtYWNgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGhlcmUuXG5cbkxldCdzIGNoZWNrIGluIHRoZSBrZXJuZWwgc291cmNlLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtY2FseGVkYS5jYCBvciBzb21ldGhpbmcgc2ltaWxhci4gTm9wZSwgcXVpY2sgbG9vayBhbmQgaXQgc2VlbXMgQ2FseGVkYSBYR01BQyBpcyBkcml2ZW4gYnkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuY2AuIE9rYXksIHNvIGxldCdzIGJhY2t0cmFjayBhbmQgZmlndXJlIG91dCB3aGF0ICpvdGhlciogZHJpdmVycyBgc3RtbWFjYCBoYXMsIGp1c3QgdG8gYmUgc3VyZS4gVGltZSB0byBleGFtaW5lIHdoYXQgYHN0bW1hY2AgZHJpdmVycyBhY3R1YWxseSAqZXhpc3QqLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjM5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjQwLjg1MDQ0NTMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNoYWluX21vZGUuY1wiLFxuICAgIFwiY29tbW9uLmhcIixcbiAgICBcImRlc2NzLmhcIixcbiAgICBcImRlc2NzX2NvbS5oXCIsXG4gICAgXCJkd21hYy1hbmFyaW9uLmNcIixcbiAgICBcImR3bWFjLWR3Yy1xb3MtZXRoLmNcIixcbiAgICBcImR3bWFjLWVpYzc3MDAuY1wiLFxuICAgIFwiZHdtYWMtZ2VuZXJpYy5jXCIsXG4gICAgXCJkd21hYy1pbXguY1wiLFxuICAgIFwiZHdtYWMtaW5nZW5pYy5jXCIsXG4gICAgXCJkd21hYy1pbnRlbC1wbGF0LmNcIixcbiAgICBcImR3bWFjLWludGVsLmNcIixcbiAgICBcImR3bWFjLWludGVsLmhcIixcbiAgICBcImR3bWFjLWlwcTgwNnguY1wiLFxuICAgIFwiZHdtYWMtbG9vbmdzb24uY1wiLFxuICAgIFwiZHdtYWMtbG9vbmdzb24xLmNcIixcbiAgICBcImR3bWFjLWxwYzE4eHguY1wiLFxuICAgIFwiZHdtYWMtbWVkaWF0ZWsuY1wiLFxuICAgIFwiZHdtYWMtbWVzb24uY1wiLFxuICAgIFwiZHdtYWMtbWVzb244Yi5jXCIsXG4gICAgXCJkd21hYy1tb3RvcmNvbW0uY1wiLFxuICAgIFwiZHdtYWMtbnV2b3Rvbi5jXCIsXG4gICAgXCJkd21hYy1xY29tLWV0aHFvcy5jXCIsXG4gICAgXCJkd21hYy1yZW5lc2FzLWdiZXRoLmNcIixcbiAgICBcImR3bWFjLXJrLmNcIixcbiAgICBcImR3bWFjLXJ6bjEuY1wiLFxuICAgIFwiZHdtYWMtczMyLmNcIixcbiAgICBcImR3bWFjLXNvY2ZwZ2EuY1wiLFxuICAgIFwiZHdtYWMtc29waGdvLmNcIixcbiAgICBcImR3bWFjLXNwYWNlbWl0LmNcIixcbiAgICBcImR3bWFjLXN0YXJmaXZlLmNcIixcbiAgICBcImR3bWFjLXN0aS5jXCIsXG4gICAgXCJkd21hYy1zdG0zMi5jXCIsXG4gICAgXCJkd21hYy1zdW41NWkuY1wiLFxuICAgIFwiZHdtYWMtc3VuOGkuY1wiLFxuICAgIFwiZHdtYWMtc3VueGkuY1wiLFxuICAgIFwiZHdtYWMtdGVncmEuY1wiLFxuICAgIFwiZHdtYWMtdGhlYWQuY1wiLFxuICAgIFwiZHdtYWMtdmlzY29udGkuY1wiLFxuICAgIFwiZHdtYWMxMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwLmhcIixcbiAgICBcImR3bWFjMTAwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwMF9kbWEuY1wiLFxuICAgIFwiZHdtYWMxMDBfY29yZS5jXCIsXG4gICAgXCJkd21hYzEwMF9kbWEuY1wiLFxuICAgIFwiZHdtYWM0LmhcIixcbiAgICBcImR3bWFjNF9jb3JlLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5jXCIsXG4gICAgXCJkd21hYzRfZGVzY3MuaFwiLFxuICAgIFwiZHdtYWM0X2RtYS5jXCIsXG4gICAgXCJkd21hYzRfZG1hLmhcIixcbiAgICBcImR3bWFjNF9saWIuY1wiLFxuICAgIFwiZHdtYWM1LmNcIixcbiAgICBcImR3bWFjNS5oXCIsXG4gICAgXCJkd21hY19kbWEuaFwiLFxuICAgIFwiZHdtYWNfbGliLmNcIixcbiAgICBcImR3eGdtYWMyLmhcIixcbiAgICBcImR3eGdtYWMyX2NvcmUuY1wiLFxuICAgIFwiZHd4Z21hYzJfZGVzY3MuY1wiLFxuICAgIFwiZHd4Z21hYzJfZG1hLmNcIixcbiAgICBcImR3eGxnbWFjMi5oXCIsXG4gICAgXCJlbmhfZGVzYy5jXCIsXG4gICAgXCJod2lmLmNcIixcbiAgICBcImh3aWYuaFwiLFxuICAgIFwibW1jLmhcIixcbiAgICBcIm1tY19jb3JlLmNcIixcbiAgICBcIm5vcm1fZGVzYy5jXCIsXG4gICAgXCJyaW5nX21vZGUuY1wiLFxuICAgIFwic3RtbWFjLmhcIixcbiAgICBcInN0bW1hY19lc3QuY1wiLFxuICAgIFwic3RtbWFjX2VzdC5oXCIsXG4gICAgXCJzdG1tYWNfZXRodG9vbC5jXCIsXG4gICAgXCJzdG1tYWNfZnBlLmNcIixcbiAgICBcInN0bW1hY19mcGUuaFwiLFxuICAgIFwic3RtbWFjX2h3dHN0YW1wLmNcIixcbiAgICBcInN0bW1hY19saWJwY2kuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5oXCIsXG4gICAgXCJzdG1tYWNfbWFpbi5jXCIsXG4gICAgXCJzdG1tYWNfbWRpby5jXCIsXG4gICAgXCJzdG1tYWNfcGNpLmNcIixcbiAgICBcInN0bW1hY19wY3MuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5oXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uY1wiLFxuICAgIFwic3RtbWFjX3BsYXRmb3JtLmhcIixcbiAgICBcInN0bW1hY19wdHAuY1wiLFxuICAgIFwic3RtbWFjX3B0cC5oXCIsXG4gICAgXCJzdG1tYWNfc2VsZnRlc3RzLmNcIixcbiAgICBcInN0bW1hY190Yy5jXCIsXG4gICAgXCJzdG1tYWNfdmxhbi5jXCIsXG4gICAgXCJzdG1tYWNfdmxhbi5oXCIsXG4gICAgXCJzdG1tYWNfeGRwLmNcIixcbiAgICBcInN0bW1hY194ZHAuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0MC44NTA3NTI0MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMDU1NzY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipRRU1VIGFuZCBOZXR3b3JrIERyaXZlciBFbXVsYXRpb24gLSBNeSBQZXJzcGVjdGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gUUVNVSdzIHBsYXRmb3JtIGRyaXZlcnMuIFRoZXJlJ3MgYSB3aWRlIHJhbmdlIG9mIHRoZW0sIGFuZCBJJ20gdHJ5aW5nIHRvIHNlZSB3aGljaCBuZXR3b3JrIGhhcmR3YXJlIHRoZXkgZW11bGF0ZS4gUUVNVSBkZWZpbml0ZWx5IGhhbmRsZXMgYSBnb29kIG51bWJlcjogYGlteGAgZm9yIEZyZWVzY2FsZSBpLk1YLCBgc3VuOGlgIGZvciBBbGx3aW5uZXIgSDMsIGBzdG0zMmAgZm9yIFNUTTMyLCBgc29jZnBnYWAgZm9yIEFsdGVyYSBTT0NGUEdBLCBhbmQgYHRlZ3JhYCBmb3IgTlZJRElBIFRlZ3JhLlxuXG5IYW5nIG9uIGEgc2Vjb25kLi4uIEkgc2F3IGBody9uZXQvaW14X2ZlYy5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgb2YgdGhlIGkuTVggRkVDL0VORVQsIGJ1dCBub3Qgc3RtbWFjLiBTbywgaXQgYXBwZWFycyBRRU1VIGhhbmRsZXMgdGhlIHNwZWNpZmljIEZFQy9FTkVUIGZvciBpLk1YLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24uXG5cblRoZW4gSSBzYXcgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCB3aGljaCwgZnJvbSB0aGUgbmFtaW5nLCBpcyBjbGVhcmx5IHRoZSBTdW44aSBFTUFDLiBOb3csIGlzIGBkd21hYy1zdW44aS5jYCB0aGUgZHJpdmVyIGZvciAqdGhhdCogc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBkaWcgaW50by4gVGltZSB0byBjaGVjayBgZHdtYWMtc3VuOGkuY2AgYW5kIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzIxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0NS4zNjEzMTMwOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzQzMzkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGx3aW5uZXIsc3VuOGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTc2Mz1zdGF0aWMgaW50IGdldF9lcGh5X25vZGVzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNzc2LVxcdG1kaW9faW50ZXJuYWwgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChtZGlvX211eCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjc3NzpcXHRcXHRcXHRcXHRcXHRcXHRcXFwiYWxsd2lubmVyLHN1bjhpLWgzLW1kaW8taW50ZXJuYWxcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3OC1cXHRvZl9ub2RlX3B1dChtZGlvX211eCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNjk6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcwLVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF9oMyB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MTpcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW44aS12M3MtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjcyLVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF92M3MgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzM6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktYTgzdC1lbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzQtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X2E4M3QgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktcjQwLWdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3Ni1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfcjQwIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjQ1LjQ5NDc1MTMwN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwNDg0OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBRRU1VJ3MgU3VuOGkgRU1BQyBFbXVsYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IFFFTVUgZXhwbGljaXRseSBzdXBwb3J0cyBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgIGluIGl0cyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIGZpbGUuIFRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFdoaWxlIHRoaXMgZmlsZSBlbXVsYXRlcyB0aGUgRU1BQywgZG9lcyBpdCBhY3R1YWxseSBlbXVsYXRlIHRoZSB1bmRlcmx5aW5nIERlc2lnbldhcmUgTUFDIChzcGVjaWZpY2FsbHkgdGhlIGBzdG1tYWNgKSB0aGF0J3MgdHlwaWNhbCBvZiB0aGVzZSBBbGx3aW5uZXIgU29Dcz9cblxuTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGF0IGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCAqaXMqIGluZGVlZCBlbXVsYXRpbmcgYSBEZXNpZ25XYXJlIE1BQy4gQWgsIHllcywgdGhlIFN1bjhpIEVNQUMgaXMgY29uZmlybWVkIHRvIGJlIGEgRGVzaWduV2FyZSBNQUMuXG5cbk5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgY29udGV4dCBvZiB0aGUgY2hhbmdlIEknbSBleGFtaW5pbmcgaXMgYGR3eGdtYWMyX2RtYS5jYC4gVGhhdCdzIHBvaW50aW5nIHRvd2FyZHMgYW4gWEdNQUMsIHdoaWNoIGhhbmRsZXMgMTAgR2lnYWJpdCBzcGVlZHMuIFRoZSBTdW44aSBpc24ndCBrbm93biBmb3IgdGhhdCBjYXBhYmlsaXR5LiBEb2VzIHRoZSBTdW44aSAqYWN0dWFsbHkqIHVzZSBhbiBYR01BQz9cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgdXNlcyBhIFhHTUFDLCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGNoYW5nZS4gTGV0J3Mgc2VlIHdoYXQgYGR3bWFjLXN1bjhpLmNgIHNheXMgYWJvdXQgdGhlIGNvcmUgdHlwZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo0OS45MjUyNDAyMTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDUzMzc2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjExOjUwLjE1OTc4NTg5MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzI1NDEwMjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBzdG1tYWNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgZnV6emFibGUgYHN0bW1hY2AgaXMuIEZpcnN0IHRob3VnaHQ6IGl0IGRvZXNuJ3QgZXhwbGljaXRseSBzZXQgYGNvcmVfdHlwZWAuIFRoYXQgcHJvYmFibHkgbWVhbnMgaXQncyByZWx5aW5nIG9uIHRoZSBnZW5lcmljIGBzdG1tYWNgIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmVhZCB0aGUgTUFDIHZlcnNpb24gcmVnaXN0ZXIuIEJ1dCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgaGFyZHdhcmUuIFhHTUFDIGlzIDEwRywgd2hpbGUgU3VuOGkgaXMgMTAvMTAwLzEwMDAuIERvZXMgUUVNVSBldmVuIGVtdWxhdGUgWEdNQUM/IEkgdGhpbmsgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L3hnbWFjLmNgLCBidXQgdGhhdCBsb29rcyBsaWtlIGl0J3MgZm9yIENhbHhlZGEuIERvZXMgYHN0bW1hY2Agc3VwcG9ydCBDYWx4ZWRhPyBObywgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSB1c2VzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmNgIGluc3RlYWQuXG5cbldhaXQsIHdoYXQgYWJvdXQgYGR3bWFjLWludGVsLmNgPyBUaGF0J3MgYSBQQ0kgZHJpdmVyISBOb3csIGNhbiBzeXprYWxsZXIgZnV6eiBQQ0kgZGV2aWNlcz8gSSBzZWVtIHRvIHJlbWVtYmVyIHRoZXJlIHdhcyBhIHBzZXVkby1zeXNjYWxsIGNhbGxlZCBgc3l6X3BjaWAuIFdhaXQsIG5vLCBJIGp1c3QgY2hlY2tlZC4gSSB3YXMgd3JvbmcsIGl0IGRvZXNuJ3QuIE9yICpkb2VzKiBpdD8gTGV0IG1lIGNoZWNrIGFnYWluLi4uIGl0IGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFN5emthbGxlciBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV92cGNpYC4uLiBObywgaG9sZCBvbi4gSSdtIGdldHRpbmcgY29uZnVzZWQuIEZvciBLVk0sIHN5emthbGxlciB1c2VzIGBzeXpfa3ZtX3NldHVwX2NwdWAsIGZvciBVU0IgYHN5el91c2JfY29ubmVjdGAsIGFuZCBmb3IgbWFjODAyMTEsIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYC5cblxuSG9sZCBvbi4uLiBJJ3ZlIGdvdCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBMZXQgbWUgY2hlY2sgc29tZXRoaW5nLi4uIHRoaXMgcHJvbXB0IHNheXMgXCJJbXBvcnRhbnQgbm90ZTogdGhpcyB0b29sIENBTk5PVCBiZSB1c2VkIHRvIHNlYXJjaCBzeXprYWxsZXIgc3l6bGFuZyBkZXNjcmlwdGlvbnMgKHN5cy8qKSBvciBleHByZXNzaW9ucyBjb250YWluaW5nICdzeXpfJyBzaW5jZSB0aGV5IGFyZSBzeXprYWxsZXIgcHNldWRvLXN5c2NhbGxzXCIuIFNvIGl0IGRvZXMgaW1wbHkgdGhlIGV4aXN0ZW5jZSBvZiBwc2V1ZG8tc3lzY2FsbHMgc3RhcnRpbmcgd2l0aCBgc3l6X2AuIE9rYXksIHJlZ2FyZGxlc3Mgb2YgaG93IHN5emthbGxlciBoYW5kbGVzIFBDSSBmdXp6aW5nLCB0aGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSByZWFjaCBgc3RtbWFjYD9cblxuSWYgYHN0bW1hY2AgKmlzKiBhIFBDSSBkcml2ZXIsIHRoZW4gaXQncyAqcG90ZW50aWFsbHkqIGZ1enphYmxlLCBhc3N1bWluZyBzeXprYWxsZXIgc3VwcG9ydHMgUENJIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGR3eGdtYWMyX2RtYS5jYCwgc28gbm93IEknbSBmb2N1c2VkIG9uIHdoZXRoZXIgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyByZWFjaGFibGUuIExldCdzIHNlZSBpZiBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpcyBhY3R1YWxseSB1c2VkIGJ5IGFueSBQQ0kgZGV2aWNlcy4gYHN0bW1hY19wY2kuY2AgYW5kIGBkd21hYy1pbnRlbC5jYCBhcmUgUENJIGRyaXZlcnMsIGJ1dCBkbyB0aGV5IGFjdHVhbGx5IHVzZSBYR01BQz8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMTo1OC40ODUxOTk1ODdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjY4MTEzNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdYR01BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDAtI2RlZmluZSBEV01BQ19DT1JFXzVfMjBcXHRcXHQweDUyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDE6I2RlZmluZSBEV1hHTUFDX0NPUkVfMl8xMFxcdDB4MjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MjojZGVmaW5lIERXWEdNQUNfQ09SRV8yXzIwXFx0MHgyMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTQzLSNkZWZpbmUgRFdYTEdNQUNfQ09SRV8yXzAwXFx0MHgyMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNDUtLyogRGV2aWNlIElEICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NDY6I2RlZmluZSBEV1hHTUFDX0lEXFx0XFx0MHg3NlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTQ3LSNkZWZpbmUgRFdYTEdNQUNfSURcXHRcXHQweDI3XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo3OiNpZm5kZWYgX19TVE1NQUNfRFdYR01BQzJfSF9fXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo4OiNkZWZpbmUgX19TVE1NQUNfRFdYR01BQzJfSF9fXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC05LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00Njg9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oLTQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjQ3MDojZW5kaWYgLyogX19TVE1NQUNfRFdYR01BQzJfSF9fICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0zNjE9c3RhdGljIGludCBkd3hnbWFjMl9nZXRfaHdfZmVhdHVyZSh2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTM5MS1cXHRkbWFfY2FwLVxcdTAwM2VtYnBzXzEwMDAgPSAoaHdfY2FwIFxcdTAwMjYgWEdNQUNfSFdGRUFUX0dNSUlTRUwpIFxcdTAwM2VcXHUwMDNlIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MzkyOlxcdGlmIChkbWFfY2FwLVxcdTAwM2VtYnBzXzEwMDAgXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdYR01BQ19DT1JFXzJfMjApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMzkzLVxcdFxcdGRtYV9jYXAtXFx1MDAzZW1icHNfMTBfMTAwID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ4LVxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNDk6XFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNTA6XFx0XFx0LmRldl9pZCA9IERXWEdNQUNfSUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI1MS1cXHRcXHQucmVncyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NzI9c3RhdGljIHZvaWQgc3RtbWFjX3hnbWFjMl9jMjJfZm9ybWF0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IHBoeWFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6Nzc6XFx0aWYgKHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkIFxcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTc4LVxcdFxcdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXFx1MDAzZT0gNC4gVGhvc2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MTMyPXN0YXRpYyBpbnQgc3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0xMzgtXFx0LyogVW50aWwgdmVyIDIuMjAgWEdNQUMgZG9lcyBub3Qgc3VwcG9ydCBDMjIgYWRkciBcXHUwMDNlPSA0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzoxMzk6XFx0aWYgKHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkIFxcdTAwM2MgRFdYR01BQ19DT1JFXzJfMjAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTE0MC1cXHQgICAgcGh5YWRkciBcXHUwMDNlIE1JSV9YR01BQ19NQVhfQzIyQUREUilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MTk1PXN0YXRpYyBpbnQgc3RtbWFjX3hnbWFjMl9tZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtMjAxLVxcdC8qIFVudGlsIHZlciAyLjIwIFhHTUFDIGRvZXMgbm90IHN1cHBvcnQgQzIyIGFkZHIgXFx1MDAzZT0gNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6MjAyOlxcdGlmIChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNjIERXWEdNQUNfQ09SRV8yXzIwIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy0yMDMtXFx0ICAgIHBoeWFkZHIgXFx1MDAzZSBNSUlfWEdNQUNfTUFYX0MyMkFERFIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzYyBEV1hHTUFDX0NPUkVfMl8yMCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjI5LVxcdFxcdFxcdC8qIFJpZ2h0IG5vdyBvbmx5IEMyMiBwaHlzIGFyZSBzdXBwb3J0ZWQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MDAuMTEyMDE1NDA4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMDQ5NjgzMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUMgRGV0YWlscyoqXG5cbkFscmlnaHQsIHRoZSBjb2RlIHJlZmVyZW5jZXMgYERXTUFDX0NPUkVfWEdNQUNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4ga2lja3MgaW50byBnZWFyLiBJJ20gdGhpbmtpbmcsIFwiSGFuZyBvbiwgYERXTUFDX0NPUkVfWEdNQUNgLi4uIGlzbid0IHRoYXQgYSBzcGVjaWZpYyBYR01BQyBjb3JlLCBsaWtlbHkgYSBEZXNpZ25XYXJlIG9uZT8gQW5kIHNwZWNpZmljYWxseSwgYSBjb3JlIHRoYXQncyAqcHJvYmFibHkqIHVzZWQgaW4gYSBicm9hZCByYW5nZSBvZiBhcHBsaWNhdGlvbnMuXCIgVGhlIG5leHQgcXVlc3Rpb24sIGFsbW9zdCByZWZsZXhpdmUgYXQgdGhpcyBwb2ludCwgaXM6IFwiRG9lcyB0aGlzIHBhcnRpY3VsYXIgWEdNQUMgaW1wbGVtZW50YXRpb24sIGBEV01BQ19DT1JFX1hHTUFDYCwgc2hvdyB1cCBhcyBhIGNvcmUgdXNlZCBpbiBhbnkgUENJLWJhc2VkIGRyaXZlcj9cIiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIGFyY2hpdGVjdHVyZXMgdGhhdCBhcmUgdXNpbmcgdGhpcyBjb3JlLCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0LiBUaGF0IHF1ZXN0aW9uIGlzIGdvaW5nIHRvIGRyaXZlIG15IG5leHQgaW52ZXN0aWdhdGlvbnMgYW5kIGNvbnNpZGVyYXRpb25zIGFyb3VuZCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTg3NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjAzLjMxNjk4NjA0M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg5MTYzOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNfQ09SRV9YR01BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcXHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU2OT1zdGF0aWMgdm9pZCBzb2NmcGdhX2FnaWxleDVfc2V0dXBfcGxhdF9kYXQoc3RydWN0IHNvY2ZwZ2FfZHdtYWMgKmR3bWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTczOlxcdHBsYXRfZGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzI2OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zMjctXFx0cGxhdC1cXHUwMDNlZmxhZ3MgfD0gU1RNTUFDX0ZMQUdfVFNPX0VOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTIxPXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfdmVyc2lvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtNDktXFx0dmVyLVxcdTAwM2VzbnBzdmVyID0gRklFTERfR0VUKERXTUFDX1NOUFNWRVIsIHZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzo1MDpcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTUxLVxcdFxcdHZlci1cXHUwMDNlZGV2X2lkID0gRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDctXFx0fSwge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzoyNDg6XFx0XFx0LmNvcmVfdHlwZSA9IERXTUFDX0NPUkVfWEdNQUMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI0OS1cXHRcXHQubWluX2lkID0gRFdYR01BQ19DT1JFXzJfMTAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjY5LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjcwOlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzEtXFx0XFx0Lm1pbl9pZCA9IERXWExHTUFDX0NPUkVfMl8wMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yOTQ9c3RtbWFjX2h3aWZfZmluZChlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUsIHU4IHNucHN2ZXIsIHU4IGRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMDYtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjMwNzpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA4LVxcdFxcdCAgICBkZXZfaWQgIT0gZW50cnktXFx1MDAzZWRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0zMTc9aW50IHN0bW1hY19od2lmX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMzOC1cXHRcXHRwcml2LVxcdTAwM2VtbWNhZGRyID0gcHJpdi1cXHUwMDNlaW9hZGRyICsgTU1DX0dNQUMzX1hfT0ZGU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMzk6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zNDAtXFx0XFx0XFx0cHJpdi1cXHUwMDNlZXN0YWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIEVTVF9YR01BQ19PRkZTRVQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9Mjg9c3RhdGljIGludCBlc3RfY29uZmlndXJlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHN0bW1hY19lc3QgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01NS1cXHRjdHJsID0gcmVhZGwoZXN0X2FkZHIgKyBFU1RfQ09OVFJPTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jOjU2OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy01Ny1cXHRcXHRjdHJsIFxcdTAwMjY9IH5FU1RfWEdNQUNfUFRPVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYz04Mz1zdGF0aWMgdm9pZCBlc3RfaXJxX3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtMTUwLVxcdGlmIChzdGF0dXMgXFx1MDAyNiBFU1RfQlRSRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzoxNTE6XFx0XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1Mi1cXHRcXHRcXHRidHJsID0gRklFTERfR0VUKEVTVF9YR01BQ19CVFJMLCBzdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zMDE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ2V0ZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMDgtXFx0XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIEdNQUNfRVRIVE9PTF9OQU1FLCBzaXplb2YoaW5mby1cXHUwMDNlZHJpdmVyKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozMDk6XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zMTAtXFx0XFx0c3Ryc2NweShpbmZvLVxcdTAwM2Vkcml2ZXIsIFhHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNTA9c3RhdGljIGludCBzdG1tYWNfZXRodG9vbF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzU0OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1NS1cXHRcXHRyZXR1cm4gWEdNQUNfUkVHU0laRSAqIDQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTM2MT1zdGF0aWMgdm9pZCBzdG1tYWNfZXRodG9vbF9ncmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzUtXFx0XFx0ICAgICAgIE5VTV9EV01BQzRfRE1BX1JFR1MgKiA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM3NjpcXHR9IGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSAhPSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNzctXFx0XFx0bWVtY3B5KFxcdTAwMjZyZWdfc3BhY2VbRVRIVE9PTF9ETUFfT0ZGU0VUXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjU1NT1zdGF0aWMgaW50IHN0bW1hY19kbWFfY2FwX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY1OTAtXFx0XFx0ICAgKHByaXYtXFx1MDAzZWRtYV9jYXAuaGFsZl9kdXBsZXgpID8gXFxcIllcXFwiIDogXFxcIk5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY1OTE6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkyLVxcdFxcdHNlcV9wcmludGYoc2VxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE0LVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmF0aW1lX3N0YW1wKSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjE1OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY2MTYtXFx0XFx0c2VxX3ByaW50ZihzZXEsIFxcXCJcXFxcdFRpbWVzdGFtcCBTeXN0ZW0gVGltZSBTb3VyY2U6ICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjIzLVxcdGlmIChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNlPSBEV01BQ19DT1JFXzRfMDAgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY2MjQ6XFx0ICAgIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjI1LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRJUCBDaGVja3N1bSBPZmZsb2FkIGluIFJYOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzM1NT1zdGF0aWMgdm9pZCBzdG1tYWNfcHJpbnRfYWN0cGh5aWYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzM3MTpcXHRjYXNlIERXTUFDX0NPUkVfWEdNQUM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzcyLVxcdFxcdHBoeWlmX3RhYmxlID0gc3RtbWFjX2R3eGdtYWNfcGh5aWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczOTc9c3RhdGljIGludCBzdG1tYWNfaHdfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MTktXFx0aWYgKChwcml2LVxcdTAwM2VzeW5vcHN5c19pZCBcXHUwMDNlPSBEV01BQ19DT1JFXzNfNTAgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc1MjA6XFx0ICAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc1MjEtXFx0ICAgICFwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyaXd0X29mZikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5OTQ6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk5NS1cXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYz01MzY9c3RhdGljIHUzMiBzdG1tYWNfY2xrX2Nzcl9zZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTQtXFx0XFx0cmF0ZXMgPSBzdG1tYWNfc3VuOGlfY3NyX3RvX21kYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjU1NTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy01NTYtXFx0XFx0cmF0ZXMgPSBzdG1tYWNfeGdtYWNfY3NyX3RvX21kYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTk1PWludCBzdG1tYWNfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NjIyOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjIzLVxcdFxcdG5ld19idXMtXFx1MDAzZXJlYWQgPSBcXHUwMDI2c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzIyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjUtXFx0LyogTG9va3MgbGlrZSB3ZSBuZWVkIGEgZHVtbXkgcmVhZCBmb3IgWEdNQUMgb25seSBhbmQgQzQ1IFBIWXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjY2NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy02NjctXFx0XFx0c3RtbWFjX3hnbWFjMl9tZGlvX3JlYWRfYzQ1KG5ld19idXMsIDAsIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDE2PXN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0Ny1cXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsIFxcXCJzbnBzLGR3eGdtYWNcXFwiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjU0ODpcXHRcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTU0OS1cXHRcXHRwbGF0LVxcdTAwM2VwbXQgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjowMy40MDU5MDY1MzhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1MDc1ODA1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBYR01BQyBpbiBRRU1VKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZHJpdmVycywgYGR3bWFjLXNvY2ZwZ2EuY2AgYW5kIGBkd21hYy10ZWdyYS5jYCwgYW5kIHRoZXkgYm90aCBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgLiBJbnRlcmVzdGluZy4gVGhlIFFFTVUgZW11bGF0b3IgaXMga25vd24gdG8gZW11bGF0ZSBib3RoIGB0ZWdyYWAgYW5kIGBzb2NmcGdhYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgUUVNVSBhY3R1YWxseSBlbXVsYXRlcyB0aGUgWEdNQUMgY29yZSB3aXRoaW4gdGhlIFRlZ3JhIG9yIFNPQ0ZQR0EgZW11bGF0aW9uLiBMZXQncyBkaWcgaW50byBRRU1VJ3Mgc291cmNlIOKAkyBzcGVjaWZpY2FsbHkgYGh3L25ldC9gIGFuZCBgaHcvYXJtL3RlZ3JhKmAuXG5cblJpZ2h0LCBpdCBzZWVtcyBRRU1VIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSB0aGUgVGVncmEgWEdNQUMsIHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgZnV6emluZy4gSG93ZXZlciwgc3l6a2FsbGVyIG1pZ2h0IHN0aWxsIGJlIGFibGUgdG8gZnV6eiB0aGUgcGxhdGZvcm0gZHJpdmVycyBpZiBpdCBjYW4gaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIG9yIHVzZSB2aXJ0dWFsIGRldmljZXMuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gcmVtZW1iZXIgaG93IHN5emthbGxlciBvcGVyYXRlcy4gSXQgaXMgbm90IGRvbmUgdmlhIGBzeXpfcGNpYCwgcmlnaHQ/IEFuZCBub3QgYHN5el91c2JfY29ubmVjdGAuIEl0ICpkb2VzKiB1c2UgYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCB0byBmdXp6LiBcblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEhvdyBpcyAqaXQqIGZ1enplZD8gSXMgdGhlcmUgYSB2aXJ0dWFsIGBzdG1tYWNgIGRldmljZT8gTm8sIEkgZG9uJ3QgdGhpbmsgc28uXG5cbkFoLCBidXQgd2FpdCEgVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhIHNwZWNpZmljIHNldCBvZiBzY2VuYXJpb3MuIFRoaXMgaW5jbHVkZXMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGluZ3MgbGlrZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzLCBvciBhbnl0aGluZyBkZXBlbmRlbnQgb24gcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZC5cblxuU28sIGlzIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBRRU1VPyBRRU1VIGRvZXMgaGF2ZSBhIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2Agd2hpY2ggZW11bGF0ZXMgdGhlIGBhbGx3aW5uZXIsc3VuOGktaDMtZW1hY2AuIEJ1dCwgZG9lcyB0aGF0IHVzZSBgZHd4Z21hYzJfZG1hX2luaXRgPyBObywgYmVjYXVzZSBgYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNgIGlzIGp1c3QgYSAxMC8xMDAvMTAwMCBNQUMsIG5vdCBhbiBYR01BQy4gVGhpbmtpbmcgY2xlYXJseSwgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyAqb25seSogdXNlZCBmb3IgYERXTUFDX0NPUkVfWEdNQUNgLlxuXG5Pa2F5LCB0aGUgcXVlc3Rpb24gaXMgbm93IGJlY29taW5nIG1vcmUgZm9jdXNlZC4gSXMgYERXTUFDX0NPUkVfWEdNQUNgIHJlYWNoYWJsZSBpbiBRRU1VIGF0IGFsbD8gTGV0J3Mgc2VlIGlmIFFFTVUgaGFzIGFueSBYR01BQyBlbXVsYXRpb24uIEl0IGRvZXMhIFFFTVUgaGFzIGBody9uZXQveGdtYWMuY2AuIE5vdywgdGhlIGZpbmFsIGNoZWNrOiBpcyB0aGlzIGBody9uZXQveGdtYWMuY2AgY29tcGF0aWJsZSB3aXRoIGVpdGhlciB0aGUgYHNucHMsZHd4Z21hY2Agb3IgYHN0bW1hY2AgY29tcGF0aWJsZSBzdHJpbmdzPyBObywgaXQncyBmb3IgQ2FseGVkYS4gVGhlIExpbnV4IGNvbXBhdGlibGUgc3RyaW5nIGZvciBDYWx4ZWRhJ3MgWEdNQUMgaXMgYGNhbHhlZGEsaGIteGdtYWNgLiBUaGUgY29ycmVzcG9uZGluZyBMaW51eCBkcml2ZXIgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuY2AuIEFoYSwgdGhhdCBpcyBhICpzZXBhcmF0ZSogZHJpdmVyLCBub3QgdGhlIGBzdG1tYWNgISBOb3cgdGhlIGxhc3QgdGhpbmcgdG8gZG8gaXMgdG8gY2hlY2sgaWYgYHN0bW1hY2AgYmluZHMgdG8gYGNhbHhlZGEsaGIteGdtYWNgLiBBbmQgdGhhdCBzaG91bGQgY29tcGxldGUgdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwOTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MTUuOTEzNDg5Mjg1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI0MzY4ODMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbHhlZGEsaGIteGdtYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoxNi4zOTU5MzE3NThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyMTMyOTY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBRRU1VIGFuZCBFdGhlcm5ldCBFbXVsYXRpb24gSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gUUVNVSdzIEV0aGVybmV0IGVtdWxhdGlvbiBhbmQgaXQgc2VlbXMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uIGFib3V0IGB4Z21hYy5jYCBiZWluZyB0aGUgc2FtZSBhcyB0aGUgYHN0bW1hY2AgZHJpdmVyIGlzIGluY29ycmVjdC4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IG5vdyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgUUVNVSBlbXVsYXRlcyAqYW55KiBoYXJkd2FyZSB0aGF0IHJlbGllcyBvbiBgRFdNQUNfQ09SRV9YR01BQ2Agd2l0aGluIHRoZSBgc3RtbWFjYCBmcmFtZXdvcmsuXG5cbkxldCBtZSBzZWUuLi4gdGhlIGRldmljZXMgdGhhdCB1c2UgdGhhdCBjb3JlIGFyZTogYHNucHMsZHd4Z21hY2AsIGBkd21hYy1zb2NmcGdhLmNgICh0aGF0J3MgdGhlIEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NiBhbmQgbmV3ZXIpLiBIbW1tLCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgZW11bGF0ZSAqZWl0aGVyKiBBZ2lsZXg1IG9yIFRlZ3JhMTg2PyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgaXMgbm8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS5cblxuTG9va2luZyBhdCB0aGUgUUVNVSBzb3VyY2UsIEkgc2VlIGEgZmV3IEFSTS1iYXNlZCBoYXJkd2FyZSBtb2RlbHM6IGBody9hcm0vYXNwZWVkLmNgLCBgaHcvYXJtL25wY203eHguY2AsIGBody9hcm0veGxueC16eW5xbXAuY2AsIGFuZCBzbyBvbi4gQnV0IGJhc2VkIG9uIHRob3NlIGRldmljZSB0eXBlcywgSSBkb24ndCBzZWUgYW55dGhpbmcgZXhwbGljaXRseSBlbXVsYXRpbmcgYW4gQWdpbGV4NSBvciBUZWdyYTE4Ni4gU28sIEkgZG9uJ3QgKnRoaW5rKiBRRU1VIGVtdWxhdGVzIGVpdGhlciBvZiB0aG9zZS5cblxuTm93LCB3aGF0IGFib3V0IFBDST8gSSBuZWVkIHRvIHRoaW5rIG1vcmUgYnJvYWRseS4gSSBrbm93IGBkd21hYy1pbnRlbC5jYCAqYWxzbyogdXNlcyBgc3RtbWFjYC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHVzZSB0aGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmU/IEkgbmVlZCB0byB2ZXJpZnkuIExldCdzIGdldCBpbnRvIHRoZSBjb2RlIGFuZCBjaGVjayBgZHdtYWMtaW50ZWwuY2Agc3BlY2lmaWNhbGx5LiBUaW1lIHRvIGRpZyBpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc2NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyMi4wMTcyNjM5NTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODQzMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTY1PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NjgtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTY5OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU3MC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU4NT1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU5NS1cXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU5NjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk3LVxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MjIuMTE3MTEyMzI2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODIyNzg0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIERXTUFDIGFuZCBTVE1NQUMgQ29yZSBVc2FnZSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGR3bWFjLWludGVsLmNgIGZpbGUgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgbGV2ZXJhZ2VzIGBEV01BQ19DT1JFX0dNQUNgIGFuZCBgRFdNQUNfQ09SRV9HTUFDNGAuIE5vdCBzdXJwcmlzaW5nLCB0aG9zZSBhcmUgY29tbW9uIGNob2ljZXMgZm9yIHRoaXMgdHlwZSBvZiBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgaXQgKmRvZXNuJ3QqIGFwcGVhciB0byB1c2UgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGF0J3MgaW1wb3J0YW50IHRvIG5vdGUsIGhlbHBzIG5hcnJvdyBkb3duIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBwaXZvdCB0byBgc3RtbWFjX3BjaS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBvZiB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHNlZSB3aGF0IHRoZSBkaWZmZXJlbmNlcyBpbiBjb3JlIHVzZSBhcmUuIEknbSBzdXJlIGl0IHVzZXMgYSBzaW1pbGFyIGNvcmUgYnV0IEkgc2hvdWxkIG5ldmVyIGFzc3VtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MTYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyNS4yOTkzOTM5OTJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODMyNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIzPXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTI2LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6Mjc6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yOC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01OS1cXHRwbGF0LVxcdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6NjA6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNjEtXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyNS4zOTkyMzA1MTZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzQ0MDc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEV01BQyBDb3JlIFVzYWdlIEFjcm9zcyBEcml2ZXJzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgRFdNQUMgY29yZSBpcyBiZWluZyB1dGlsaXplZCwgYW5kIHNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IGBzdG1tYWNfcGNpLmNgIGlzIGRlZmluaXRlbHkgdXNpbmcgYm90aCBgRFdNQUNfQ09SRV9HTUFDYCBhbmQgYERXTUFDX0NPUkVfR01BQzRgLiBUaGF0J3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCB0aGUgYGR3bWFjLWxvb25nc29uLmNgIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCdzIGludGVyZmFjaW5nIHdpdGggdGhlIERXTUFDIGNvcmUgYXMgd2VsbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgaXTigJlzIGVtcGxveWluZyB0aGVzZSBzYW1lIGNvcmUgY29uZmlndXJhdGlvbnMgb3IgaWYgaXTigJlzIHBvdGVudGlhbGx5IGhhbmRsaW5nIHRoaW5ncyBkaWZmZXJlbnRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0ODQsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyOC4yNjI2NzQzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjM0MDcyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk1LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzEwMF8xNTBNO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6OTY6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTctXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMjoyOC42MjYwOTAwNFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA2OTgzMTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gYGR3bWFjLW1vdG9yY29tbS5jYCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgRFdNQUMgZHJpdmVyIHNwZWNpZmljYWxseSwgYW5kIHRoZSBNb3RvcmNvbW0gaW1wbGVtZW50YXRpb24uIFRoYXQgZmlsZW5hbWUsIGBkd21hYy1tb3RvcmNvbW0uY2AsIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZSBEV01BQyBjb3JlIHdlbGwg4oCTIHRoZSBzdGFuZGFyZCBkZXNjcmlwdG9ycywgdGhlIERNQSwgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gQnV0IHRoaXMgXCJNb3RvcmNvbW1cIiBkZXNpZ25hdGlvbi4uLiB3aGF0J3MgdGhlaXIgdGFrZSBvbiB0aGUgc3RhbmRhcmQgZHJpdmVyPyBBcmUgdGhleSBpbnRyb2R1Y2luZyBwcm9wcmlldGFyeSBleHRlbnNpb25zPyBDdXN0b20gaGFyZHdhcmUgYWNjZWxlcmF0aW9uPyBBcmUgdGhleSB3b3JraW5nIGFyb3VuZCBzb21lIHNpbGljb24gbGltaXRhdGlvbj8gQXJlIHRoZXkgcGVyaGFwcyB1c2luZyBzcGVjaWZpYyBQSFkgY29uZmlndXJhdGlvbiBub3QgZGlyZWN0bHkgaGFuZGxlZCBieSB0aGUgc3RhbmRhcmQgZHJpdmVyPyBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmaWxlIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhleSd2ZSBtYWRlIGNoYW5nZXMgYW5kIHVuZGVyc3RhbmQgdGhlaXIgcmVhc29uaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHVuaXF1ZSByZXF1aXJlbWVudHMgb3Igb3B0aW1pemF0aW9ucyB0aGV5IGhhdmUgaW1wbGVtZW50ZWQuIEl0J3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQgaWYgSSdtIGxvb2tpbmcgYXQgY29tcGF0aWJpbGl0eSBvciBkZWJ1Z2dpbmcgYW4gaXNzdWUgb24gYSBzeXN0ZW0gdXNpbmcgdGhhdCBEV01BQyB2YXJpYW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkzMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjMyLjAzMzA3NjExNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzODE2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZV90eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDctXFx0cGxhdC1cXHUwMDNlY2xrX3JlZl9yYXRlXFx0PSAxMjUwMDAwMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ4OlxcdHBsYXQtXFx1MDAzZWNvcmVfdHlwZVxcdFxcdD0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDktXFx0cGxhdC1cXHUwMDNlc3VzcGVuZFxcdFxcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjMyLjEyNTQ2NjA3OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI4ODIwMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBQQ0kgRHJpdmVyIERXTUFDIFVzYWdlKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIGdvaW5nIHRocm91Z2ggdGhlc2UgUENJIGRyaXZlcnMgYW5kLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBub25lIG9mIHRoZW0gYXJlIGRpcmVjdGx5IGxldmVyYWdpbmcgYERXTUFDX0NPUkVfWEdNQUNgLiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZy4gSSBleHBlY3RlZCB0byBmaW5kICpzb21lKiB1dGlsaXphdGlvbiB0aGVyZSwgZ2l2ZW4gdGhlIGNvbW1vbmFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBIYW5nIG9uIGEgc2Vjb25kLCBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPyBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBhbmQgbXkgbWVudGFsIG1vZGVsLi4uIEFoISB3aGF0IGFib3V0IGBkd21hYy1nZW5lcmljLmNgPyBUaGF0IHdvdWxkIGJlIHRoZSBwbGFjZSB0byBnbywgd291bGRuJ3QgaXQ/IFBlcmhhcHMgdGhlIFBDSSBkcml2ZXJzIHV0aWxpemUgZnVuY3Rpb25zIGZyb20gKnRoYXQqIG1vZHVsZS4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBQQ0kgZHJpdmVycyBhZ2Fpbiwga2VlcGluZyB0aGlzIGluIG1pbmQuIEl0J3MgdGltZSB0byB0YWtlIGEgZGVlcGVyIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDAwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6MzUuMTU0Mjg5MDUzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NjI4NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVfdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjM1LjI3NjI1ODM4N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQxNjExMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBYR01BQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGNvZGUgZG9lc24ndCBleHBsaWNpdGx5IHNldCB0aGUgYGNvcmVfdHlwZWAuIEluc3RlYWQsIGl0IHNlZW1zIHRvIGJlIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIHZlcnNpb24gcmVnaXN0ZXIsIHdoaWNoIGlzIGEgYml0IGltcGxpY2l0LiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhIFFFTVUgYm9hcmQgc2V0dXAgdGhhdCB3b3VsZCB0cmlnZ2VyIGBzdG1tYWNfcHJvYmVfY29uZmlnX2R0YCB0byBzZXQgYGNvcmVfdHlwZWAgdG8gYERXTUFDX0NPUkVfWEdNQUNgIGJhc2VkIG9uIGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRoIGBjb21wYXRpYmxlID0gXCJzbnBzLGR3eGdtYWNcImAuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgUUVNVSdzIGB2aXJ0LmNgLCBidXQgdGhhdCdzIGEgZGVhZCBlbmQuIE9rYXksIGxldCdzIGxvb2sgYXQgYGh3L25ldC94Z21hYy5jYCDigJMgYWgsIHRoYXQncyBqdXN0IGZvciBDYWx4ZWRhJ3MgYGhiLXhnbWFjYC4gQXJlIHRoZXJlICphbnkqIG90aGVyIFhHTUFDIGVtdWxhdGlvbnMgaW4gUUVNVT8gTm9wZSwgYmVzaWRlcyBgeGdtYWMuY2AsIEkgc2VlIG90aGVyIG5ldHdvcmsgZHJpdmVycyBmb3IgbW9yZSBjb21tb24sIG9sZGVyIGhhcmR3YXJlLlxuXG5XYWl0IGEgbWludXRlLCB3aGF0IGFib3V0IGBody9uZXQvZGVzaWdud2FyZS5jYD8gVGhhdCBzZWVtcyBsaWtlIGEgcHJvbWlzaW5nIGxlYWQgc2luY2UgaXQncyBpbiB0aGUgbmV0d29yayBkaXJlY3RvcnkuIExldCdzIHNlZSBpZiB0aGF0J3MgcmVsZXZhbnQgdG8gYHN0bW1hY2AuIFllcywgaXQgKmlzKiB0aGUgRGVzaWduV2FyZSBNQUMuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29tcGF0aWJsZSBzdHJpbmcgb3IgUENJIElEIGl0IHVzZXMuIEkgY2FuJ3QgZGlyZWN0bHkgaW5zcGVjdCB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgd2hpY2ggYm9hcmRzIGFjdHVhbGx5ICp1c2UqIGBody9uZXQvZGVzaWdud2FyZS5jYC4gTGV0J3MgcnVuIGRvd24gdGhlIGxpc3QuLi4gbm9wZSwgaS5NWCB1c2VzIEZFQy4gQWxsd2lubmVyIHVzZXMgaXRzIG93biBlbWFjLiBaeW5xTVAgYW5kIFZlcnNhbCB1c2UgQ2FkZW5jZSBHRU0uIFNCU0EgdXNlcyBFMTAwMEUsIGFuZCB2aXJ0IHVzZXMgdmlydGlvLW5ldC5cblxuQWhhISBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgYWN0dWFsbHkgdXNlZCBpbiBgaHcvYXJtL21zZjItc29jLmNgIChNaWNyb3NlbWkgU21hcnRGdXNpb24yKS4gSG1tLCBkb2VzIFNtYXJ0RnVzaW9uMiBhY3R1YWxseSB1c2UgYHN0bW1hY2A/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgYHN0bW1hY2AgZHJpdmVycyBvciBzaW1pbGFyIHRvIGNvbmZpcm0uXG5cbkJ1dCB3YWl0IGEgc2VjLi4uIGRvZXMgYGh3L25ldC9kZXNpZ253YXJlLmNgIGV2ZW4gKmVtdWxhdGUqIFhHTUFDPyBObywgaXQncyBqdXN0IEdNQUMgKDEwLzEwMC8xMDAwKS4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IG1vZGlmaWVzIGBkd3hnbWFjMl9kbWEuY2AsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBmb3IgWEdNQUMg4oCTIHRoZSAxMCBHaWdhYml0IGtpbmQuIFRoZSByZWdpc3RlcnMgYmVpbmcgdHdlYWtlZCBhcmUgYFhHTUFDX0RNQV9NT0RFYCAoMHgzMDAwKSBhbmQgYFhHTUFDX0RNQV9TWVNCVVNfTU9ERWAgKDB4MzAwNCkuIEluIGEgc3RhbmRhcmQgR01BQyBzZXR1cCwgdGhlIERNQSByZWdpc3RlcnMgYXJlIGF0IDB4MTAwMCAoR01BQzQpIG9yIDB4MTAwMCAoR01BQykgd2l0aGluIHRoZSBjb250cm9sbGVyJ3MgbWVtb3J5IG1hcC4gU28sIHRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyB0aGUgWEdNQUMgY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlc2UgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoIGhvdyBgc3RtbWFjYCBoYW5kbGVzIERNQS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ2NzIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTI6NDUuNjkyMzcxNTA3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY5MTA4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRE1BX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTI0OD1zdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjgxOiNkZWZpbmUgU0ZfRE1BX01PREUgMVxcdFxcdC8qIERNQSBTVE9SRS1BTkQtRk9SV0FSRCBPcGVyYXRpb24gTW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTAwPXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUwNi1cXHR2ID0gcmVhZGwoaW9hZGRyICsgRU1BQ19SWF9DVEwxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUwNzpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTA4LVxcdFxcdHYgfD0gRU1BQ19SWF9NRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9NTI0PXN0YXRpYyB2b2lkIHN1bjhpX2R3bWFjX2RtYV9vcGVyYXRpb25fbW9kZV90eChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTUzMC1cXHR2ID0gcmVhZGwoaW9hZGRyICsgRU1BQ19UWF9DVEwxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjUzMTpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtNTMyLVxcdFxcdHYgfD0gRU1BQ19UWF9NRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYz0xMjY9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2RtYV9vcGVyYXRpb25fbW9kZV9yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9kbWEuYzoxMzI6XFx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmMtMTMzLVxcdFxcdHByX2RlYnVnKFxcXCJHTUFDOiBlbmFibGUgUlggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM9MTU1PXN0YXRpYyB2b2lkIGR3bWFjMTAwMF9kbWFfb3BlcmF0aW9uX21vZGVfdHgoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfZG1hLmM6MTYxOlxcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2RtYS5jLTE2Mi1cXHRcXHRwcl9kZWJ1ZyhcXFwiR01BQzogZW5hYmxlIFRYIHN0b3JlIGFuZCBmb3J3YXJkIG1vZGVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jPTIzMz1zdGF0aWMgdm9pZCBkd21hYzRfZG1hX3J4X2NoYW5fb3BfbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYzoyNDU6XFx0aWYgKG1vZGUgPT0gU0ZfRE1BX01PREUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmMtMjQ2LVxcdFxcdHByX2RlYnVnKFxcXCJHTUFDOiBlbmFibGUgUlggc3RvcmUgYW5kIGZvcndhcmQgbW9kZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzRfZG1hLmM9MzAzPXN0YXRpYyB2b2lkIGR3bWFjNF9kbWFfdHhfY2hhbl9vcF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWM0X2RtYS5jOjMxMjpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjNF9kbWEuYy0zMTMtXFx0XFx0cHJfZGVidWcoXFxcIkdNQUM6IGVuYWJsZSBUWCBzdG9yZSBhbmQgZm9yd2FyZCBtb2RlXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIwLS8qIERNQSBSZWdpc3RlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMi5oOjMyMTojZGVmaW5lIFhHTUFDX0RNQV9NT0RFXFx0XFx0XFx0MHgwMDAwMzAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyLmgtMzIyLSNkZWZpbmUgWEdNQUNfU1dSXFx0XFx0XFx0QklUKDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0xMT1zdGF0aWMgaW50IGR3eGdtYWMyX2RtYV9yZXNldCh2b2lkIF9faW9tZW0gKmlvYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTM6XFx0dTMyIHZhbHVlID0gcmVhZGwoaW9hZGRyICsgWEdNQUNfRE1BX01PREUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE1LVxcdC8qIERNQSBTVyByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE2OlxcdHdyaXRlbCh2YWx1ZSB8IFhHTUFDX1NXUiwgaW9hZGRyICsgWEdNQUNfRE1BX01PREUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE4OlxcdHJldHVybiByZWFkbF9wb2xsX3RpbWVvdXQoaW9hZGRyICsgWEdNQUNfRE1BX01PREUsIHZhbHVlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5LVxcdFxcdFxcdFxcdCAgISh2YWx1ZSBcXHUwMDI2IFhHTUFDX1NXUiksIDAsIDEwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYz0yMj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdCh2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTM4LVxcdGlmIChkbWFfY2ZnLVxcdTAwM2VtdWx0aV9tc2lfZW4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzozOTpcXHRcXHR2YWx1ZSA9IHJlYWRsKGlvYWRkciArIFhHTUFDX0RNQV9NT0RFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy00MC1cXHRcXHR2YWx1ZSA9IHUzMl9yZXBsYWNlX2JpdHModmFsdWUsIFhHTUFDX0lOVE1fTU9ERTEsIFhHTUFDX0lOVE1fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDE6XFx0XFx0d3JpdGVsKHZhbHVlLCBpb2FkZHIgKyBYR01BQ19ETUFfTU9ERSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTE3PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9kdW1wX3JlZ3Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjEyMjpcXHRmb3IgKGkgPSAoWEdNQUNfRE1BX01PREUgLyA0KTsgaSBcXHUwMDNjIFhHTUFDX1JFR1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMjMtXFx0XFx0cmVnX3NwYWNlW2ldID0gcmVhZGwoaW9hZGRyICsgaSAqIDQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9MTI2PXN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9yeF9tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MTMzOlxcdGlmIChtb2RlID09IFNGX0RNQV9NT0RFKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTM0LVxcdFxcdHZhbHVlIHw9IFhHTUFDX1JTRjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTE4Nj1zdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfdHhfbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjE5MzpcXHRpZiAobW9kZSA9PSBTRl9ETUFfTU9ERSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTE5NC1cXHRcXHR2YWx1ZSB8PSBYR01BQ19UU0Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI1Nzg9c3RhdGljIHZvaWQgc3RtbWFjX2RtYV9vcGVyYXRpb25fbW9kZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI2MTAtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNjExOlxcdFxcdHR4bW9kZSA9IFNGX0RNQV9NT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjYxMjpcXHRcXHRyeG1vZGUgPSBTRl9ETUFfTU9ERTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTM6XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IFNGX0RNQV9NT0RFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjYxNS1cXHRcXHR0eG1vZGUgPSB0YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI2MTY6XFx0XFx0cnhtb2RlID0gU0ZfRE1BX01PREU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNjE3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjgwMT1zdGF0aWMgdm9pZCBzdG1tYWNfYnVtcF9kbWFfdGhyZXNob2xkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIGNoYW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yODAyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI4MDM6XFx0aWYgKHVubGlrZWx5KHByaXYtXFx1MDAzZXhzdGF0cy50aHJlc2hvbGQgIT0gU0ZfRE1BX01PREUpIFxcdTAwMjZcXHUwMDI2IHRjIFxcdTAwM2M9IDI1Nikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjgwNC1cXHRcXHR0YyArPSA2NDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjgwOC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyODA5OlxcdFxcdFxcdHN0bW1hY19zZXRfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYsIHRjLCBTRl9ETUFfTU9ERSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI4MTAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY2hhbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjQ1Ljk0OTI4OTIxM1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIzMjI4NzAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBgc3RtbWFjYCBhbmQgU3l6a2FsbGVyIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYFhHTUFDX0RNQV9NT0RFYCBpcyBpbmRlZWQgZGVmaW5lZCBhcyBgMHgzMDAwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciBpcyBpbnRlcmFjdGluZyB3aXRoIHRoaXMsIGVzcGVjaWFsbHkgc2luY2UgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBhYmlsaXR5IHRvIGZ1enogYHN0bW1hY2AuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgUUVNVSBlbXVsYXRpb24uXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IFFFTVUncyBleGlzdGluZyBuZXR3b3JrIGRldmljZSBpbXBsZW1lbnRhdGlvbnMuIEkgY2hlY2tlZCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AsIGFuZCBpdCBhcHBlYXJzIHRoYXQgdGhpcyBpcyBmb3IgdGhlIGdlbmVyaWMgR01BQywgbm90IHRoZSBYR01BQyB2YXJpYW50LiBUaGUgZGVmaW5pdGlvbnMgdGhlcmUgKGBNQUNfRE1BX0JVU19NT0RFYCwgYE1BQ19ETUFfVFhfUE9MTF9ERU1BTkRgKSBkb24ndCBhbGlnbiB3aXRoIHdoYXQgSSdtIGxvb2tpbmcgZm9yLiBUaGVuIEkgbW92ZWQgdG8gYGh3L25ldC94Z21hYy5jYC4gSSBmb3VuZCBgWEdNQUNfRE1BX0JVU19NT0RFYCwgYnV0IGl0J3Mgc2V0IHRvIGAweDEwMDBgLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGBkd3hnbWFjMi5oYCB1c2VzIGZvciB0aGUgRE1BIG1vZGUgKGAweDMwMDBgKS4gVGhpcyBjb25maXJtZWQgdGhhdCBRRU1VJ3MgYHhnbWFjLmNgIGRvZXNuJ3QgcHJvdmlkZSBlbXVsYXRpb24gY29tcGF0aWJsZSB3aXRoIGBkd3hnbWFjMmAuIFNvLCBgZHd4Z21hYzJfZG1hX2luaXRgIGlzbid0IHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgaW52b2x2ZWQgc3l6a2FsbGVyJ3MgZGV2aWNlIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGNvbnNpZGVyZWQgaWYgaXQgY291bGQgdXRpbGl6ZSBzb21lIHZpcnR1YWwgZGV2aWNlIGZyYW1ld29yay4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIGlmIHRoZXkncmUgdmlydHVhbGl6ZWQsIGJ1dCBgc3RtbWFjYCBYR01BQywgaW4gc3RhbmRhcmQgc2V0dXBzLCBpc24ndCBhIFBDSSBkZXZpY2UsIGFuZCBldmVuIGlmIGl0IHdlcmUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZm9yIGl0LiBJIGFsc28gY2hlY2tlZCBpZiBzeXprYWxsZXIgbWlnaHQgdXNlIGEgVVNCIGNvbm5lY3Rpb24sIHNwZWNpZmljYWxseSB2aWEgYHN5el91c2JfY29ubmVjdGAsIGJ1dCB0aGF0J3MgZm9yIFVTQiwgbm90IGBzdG1tYWNgLiBJIGFsc28gY2hlY2tlZCBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGZ1enogUENJLCBidXQgSSB3YXMgd3JvbmcgdG8gdGhpbmsgaXQgY291bGQsIHNvIHRoYXQgZG9lc24ndCB3b3JrLlxuXG5CdXQgdGhlbiwgSSBzYXcgYSBjb21taXQgcmVsYXRlZCB0byBzeXprYWxsZXIgYW5kIGBzdG1tYWNgLCBzcGVjaWZpY2FsbHkgbm90aW5nIGEgcGF0Y2ggdW5kZXIgcmV2aWV3LCB3aXRoIHRoZSBhdXRob3IgbGlzdGVkIGFzIHRoZSBzeXprYWxsZXIgY2x1c3RlciBpdHNlbGYuIFRoaXMgc3VnZ2VzdHMgc3l6a2FsbGVyIGlzIGZpbmRpbmcgYnVncyBvciB0ZXN0aW5nIHBhdGNoZXMgc3BlY2lmaWNhbGx5IGZvciBgc3RtbWFjYC4gVGhlIHF1ZXN0aW9uIGlzICpob3cqLCBnaXZlbiBteSBjb25jbHVzaW9uIHRoYXQgaXQncyBub3QgcmVhY2hhYmxlIGluIFFFTVUgaW4gdGhlIHdheSBJIHdhcyBleHBlY3Rpbmc/XG5cblRoZSBrZXkgcmVhbGl6YXRpb24gaXMgdGhhdCBzeXprYWxsZXIgKm1pZ2h0KiBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChsaWtlIEFSTSBib2FyZHMpIG9yLCBwZXJoYXBzLCBvbiBhIHNwZWNpYWwgUUVNVSBtYWNoaW5lIHRoYXQgSSBtaXNzZWQuIFRoaXMgb3BlbnMgdXAgYSBuZXcgYXZlbnVlLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaWYgdGhlcmUncyBhIFFFTVUgc2V0dXAgd2hlcmUgYHN0bW1hY2AgaXMgcmVhY2hhYmxlIHZpYSBhIFBDSSBkcml2ZXIsIGxpa2UgYGR3bWFjLWludGVsLmNgLiBJIGtub3cgdGhhdCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZHJpdmVycyBpZiB0aGV5J3JlIHByb2JlZCwgYW5kIGBkd21hYy1pbnRlbC5jYCAqaXMqIGEgUENJIGRyaXZlciwgc28gdGhpcyBpcyBwcm9taXNpbmcuXG5cblRoZSBuZXh0IHN0ZXAgaXMgdG8gZG91YmxlLWNoZWNrIGlmIGBkd21hYy1pbnRlbC5jYCB1dGlsaXplcyBgZHd4Z21hYzJgLiBNeSBwcmV2aW91cyBjaGVja3Mgc2hvd2VkIHRoYXQgYGR3bWFjLWludGVsLmNgIHVzZXMgYERXTUFDX0NPUkVfR01BQ2AgYW5kIGBEV01BQ19DT1JFX0dNQUM0YCwgYnV0IGl0J3Mgd29ydGggcmUtZXhhbWluaW5nIGlmIHRoZXJlJ3MgYW55IHVzYWdlIG9mIGBEV01BQ19DT1JFX1hHTUFDYCBpbiBpdHMgY29kZSwgYW5kIGFsc28gaWYgYSBzcGVjaWZpYyBRRU1VIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzgwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjU2LjE4MTU4MTU3NFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwNzEwOTUyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEyOjU2LjUxMjI5ODExNloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk4MTM0ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gdGhlIEltcGxpY2F0aW9uKipcblxuTm9wZSwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBpbmNvcnJlY3QuIExldCdzIGRlbHZlIGRlZXBlci4gV2hlcmUgbWlnaHQgSSBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uIG9yIGEgcG90ZW50aWFsIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbT8gQWgsIHdoYXQgYWJvdXQgdGhlIGBzdG1tYWNfcGNpLmNgIGZpbGU/IFRoYXQgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NzksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowMC4xMTA0MzUzMjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODgzNDQ1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MDAuMjEwMzI1OTA0WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTk0MDYzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5Ob3BlLiBUaGF0IGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjbGVhcmx5IGluY29ycmVjdC4gVGhlIG9yaWdpbmFsIGlkZWEgaXMgZmxhd2VkLiBCdXQsIG5vdywgd2hhdCAqaXMqIHRoZSBrZXkgZmlsZSBpbnZvbHZlZCBoZXJlPyBXaGVyZSBhcmUgd2UgbGlrZWx5IHRvIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24/IE15IG5leHQgdGhvdWdodCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZpbGU6IGBkd21hYy1nZW5lcmljLmNgLiBDb3VsZCAqdGhhdCogYmUgdGhlIGNlbnRyYWwgcGllY2Ugb2YgdGhpcyBwdXp6bGU/IElzIHRoYXQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZS1hZ25vc3RpYyBkcml2ZXIgZm9yIHRoZSBETUEgY29udHJvbGxlciByZXNpZGVzPyBUaGF0J3Mgd2hlcmUgSSdkIHN0YXJ0IGxvb2tpbmcgdG8gaW52ZXN0aWdhdGUgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA1NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjAzLjM2OTczNTA3MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyMjYzNzMzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEV01BQ19DT1JFX1hHTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MDMuNTAyMDA1MTM0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjE0MDc2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBkd3hnbWFjMl9kbWFfaW5pdGAgRnVuY3Rpb24qKlxuXG5IbW0sIG5vLiBUaGF0J3Mgbm90IHRoZSBhbnN3ZXIgSSB3YXMgZXhwZWN0aW5nLiBPa2F5LCBsZXQncyBzdGVwIGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGR3eGdtYWMyX2RtYV9pbml0YCBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGJlaW5nIGNhbGxlZCBpbiB0aGlzIHN5c3RlbS4gSSBjYW4ndCBqdXN0IGFzc3VtZSBhbnl0aGluZyBoZXJlLiBUaGUgY29kZSBiYXNlIGlzIG9mdGVuIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBpdCBsb29rcyBvbiBmaXJzdCBnbGFuY2UuIElzIHRoaXMgZnVuY3Rpb24gZXZlbiB1c2VkPyBNYXliZSBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpc24ndCBkaXJlY3RseSByZWxhdGVkIHRvIHdoYXQgSSdtIGxvb2tpbmcgYXQuIFBlcmhhcHMgdGhhdCBzdHJ1Y3R1cmUgaXMgdXRpbGl6ZWQgYnkgYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgc3lzdGVtIGVudGlyZWx5LCB1bnJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgaXNzdWUuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBtb3JlIGNhcmVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNjgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowNi43NjM0MTU4NTZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNzQxMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3eGdtYWMyMTBfZG1hX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaD00NjY9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzIGR3eGxnbWFjMl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaDo0Njc6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzIuaC00NjgtZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgZHd4Z21hYzIxMF9kZXNjX29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTU3MT1zdGF0aWMgaW50IGR3eGdtYWMyX2VuYWJsZV90YnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTU5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTQ6Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzIGR3eGdtYWMyMTBfZG1hX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OTUtXFx0LnJlc2V0ID0gZHd4Z21hYzJfZG1hX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTctXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjU4OlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNTktXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hnbWFjMjEwX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNzktXFx0XFx0LmRlc2MgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kZXNjX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjgwOlxcdFxcdC5kbWEgPSBcXHUwMDI2ZHd4Z21hYzIxMF9kbWFfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yODEtXFx0XFx0Lm1hYyA9IFxcdTAwMjZkd3hsZ21hYzJfb3BzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzowNi44NDUxNjIyMDJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMjEzOTU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERXTUFDX0NPUkVfWEdNQUMgRGVmaW5pdGlvbioqXG5cblJpZ2h0LCBzbyB0aGlzIHRoaW5nLCB0aGlzIGBEV01BQ19DT1JFX1hHTUFDYCwgaXQgc2VlbXMgdG8gYmUgZGVmaW5lZCBzb21ld2hlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYmVpbmcgKnVzZWQqLCBhbmQgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBpbml0aWFsIGxvY2F0aW9uLCBgaHdpZi5jYCwgaXMgdGhlIG9ubHkgcGxhY2UuIE5vdywgaWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB0aGF0IGZpbGUgaXMgdXNpbmcgaXQgZm9yIHRoZSBtYWNybyBgRFdNQUNfQ09SRV9YR01BQ2AuIEhtbW0sIEkgd29uZGVyIGlmIHRoZXJlIGlzIGFub3RoZXIgcGxhY2UgdG8gc2V0IHRoYXQgbWFjcm8uXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgZG8gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCBhY3Jvc3MgYWxsIHJlbGV2YW50IGZpbGVzIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlLiBJIG5lZWQgdG8gYmUgY2VydGFpbiB0aGVyZSBpc24ndCBhbm90aGVyIGxvY2F0aW9uLCBvciBhbm90aGVyIHdheSwgYERXTUFDX0NPUkVfWEdNQUNgIGlzIGdldHRpbmcgc2V0LiBMZXQncyBkbyBhIGZpbmQgYWNyb3NzIHRoZSBlbnRpcmUgY29kZWJhc2UgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNDcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxMC4zNDczMDQ3NFoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MDE1OTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRXTUFDX0NPUkVfWEdNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQ5PXN0YXRpYyBpbmxpbmUgYm9vbCBkd21hY19pc194bWFjKGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XFx0cmV0dXJuIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUM0IHx8IGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz01Njk9c3RhdGljIHZvaWQgc29jZnBnYV9hZ2lsZXg1X3NldHVwX3BsYXRfZGF0KHN0cnVjdCBzb2NmcGdhX2R3bWFjICpkd21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjU3MzpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyNjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzI3LVxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0yMT1zdGF0aWMgdm9pZCBzdG1tYWNfZ2V0X3ZlcnNpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTQ5LVxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6NTA6XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy01MS1cXHRcXHR2ZXItXFx1MDAzZWRldl9pZCA9IEZJRUxEX0dFVChEV01BQ19VU0VSVkVSLCB2ZXJzaW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfaHdpZl9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjQ3LVxcdH0sIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjQ4OlxcdFxcdC5jb3JlX3R5cGUgPSBEV01BQ19DT1JFX1hHTUFDLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yNDktXFx0XFx0Lm1pbl9pZCA9IERXWEdNQUNfQ09SRV8yXzEwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTI2OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jOjI3MDpcXHRcXHQuY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjcxLVxcdFxcdC5taW5faWQgPSBEV1hMR01BQ19DT1JFXzJfMDAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9Mjk0PXN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzA2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMDc6XFx0XFx0aWYgKGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTMwOC1cXHRcXHQgICAgZGV2X2lkICE9IGVudHJ5LVxcdTAwM2VkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MzE3PWludCBzdG1tYWNfaHdpZl9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0zMzgtXFx0XFx0cHJpdi1cXHUwMDNlbW1jYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIE1NQ19HTUFDM19YX09GRlNFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MzM5OlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQwLVxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfWEdNQUNfT0ZGU0VUO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jPTI4PXN0YXRpYyBpbnQgZXN0X2NvbmZpZ3VyZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBzdG1tYWNfZXN0ICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTUtXFx0Y3RybCA9IHJlYWRsKGVzdF9hZGRyICsgRVNUX0NPTlRST0wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYzo1NjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmMtNTctXFx0XFx0Y3RybCBcXHUwMDI2PSB+RVNUX1hHTUFDX1BUT1Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM9ODM9c3RhdGljIHZvaWQgZXN0X2lycV9zdGF0dXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2VzdC5jLTE1MC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgRVNUX0JUUkUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXN0LmM6MTUxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19lc3QuYy0xNTItXFx0XFx0XFx0YnRybCA9IEZJRUxEX0dFVChFU1RfWEdNQUNfQlRSTCwgc3RhdHVzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzAxPXN0YXRpYyB2b2lkIHN0bW1hY19ldGh0b29sX2dldGRydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzA4LVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBHTUFDX0VUSFRPT0xfTkFNRSwgc2l6ZW9mKGluZm8tXFx1MDAzZWRyaXZlcikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MzA5OlxcdGVsc2UgaWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzEwLVxcdFxcdHN0cnNjcHkoaW5mby1cXHUwMDNlZHJpdmVyLCBYR01BQ19FVEhUT09MX05BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM9MzUwPXN0YXRpYyBpbnQgc3RtbWFjX2V0aHRvb2xfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jOjM1NDpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0zNTUtXFx0XFx0cmV0dXJuIFhHTUFDX1JFR1NJWkUgKiA0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0zNjE9c3RhdGljIHZvaWQgc3RtbWFjX2V0aHRvb2xfZ3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc1LVxcdFxcdCAgICAgICBOVU1fRFdNQUM0X0RNQV9SRUdTICogNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYzozNzY6XFx0fSBlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgIT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMzc3LVxcdFxcdG1lbWNweShcXHUwMDI2cmVnX3NwYWNlW0VUSFRPT0xfRE1BX09GRlNFVF0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY1NTU9c3RhdGljIGludCBzdG1tYWNfZG1hX2NhcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NTkwLVxcdFxcdCAgIChwcml2LVxcdTAwM2VkbWFfY2FwLmhhbGZfZHVwbGV4KSA/IFxcXCJZXFxcIiA6IFxcXCJOXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NTkxOlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjU5Mi1cXHRcXHRzZXFfcHJpbnRmKHNlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYxNC1cXHRcXHQgICAocHJpdi1cXHUwMDNlZG1hX2NhcC5hdGltZV9zdGFtcCkgPyBcXFwiWVxcXCIgOiBcXFwiTlxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjYxNTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NjE2LVxcdFxcdHNlcV9wcmludGYoc2VxLCBcXFwiXFxcXHRUaW1lc3RhbXAgU3lzdGVtIFRpbWUgU291cmNlOiAlc1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyMy1cXHRpZiAocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NjI0OlxcdCAgICBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjYyNS1cXHRcXHRzZXFfcHJpbnRmKHNlcSwgXFxcIlxcXFx0SVAgQ2hlY2tzdW0gT2ZmbG9hZCBpbiBSWDogJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczNTU9c3RhdGljIHZvaWQgc3RtbWFjX3ByaW50X2FjdHBoeWlmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczNzE6XFx0Y2FzZSBEV01BQ19DT1JFX1hHTUFDOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzM3Mi1cXHRcXHRwaHlpZl90YWJsZSA9IHN0bW1hY19kd3hnbWFjX3BoeWlmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Mzk3PXN0YXRpYyBpbnQgc3RtbWFjX2h3X2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTE5LVxcdGlmICgocHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV8zXzUwIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NTIwOlxcdCAgICAgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NTIxLVxcdCAgICAhcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcml3dF9vZmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc4Nj1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3OTk0OlxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5OTUtXFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IFhHTUFDX0pVTUJPX0xFTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9NTM2PXN0YXRpYyB1MzIgc3RtbWFjX2Nsa19jc3Jfc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU0LVxcdFxcdHJhdGVzID0gc3RtbWFjX3N1bjhpX2Nzcl90b19tZGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo1NTU6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNTU2LVxcdFxcdHJhdGVzID0gc3RtbWFjX3hnbWFjX2Nzcl90b19tZGM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTU5NT1pbnQgc3RtbWFjX21kaW9fcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jOjYyMjpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTYyMy1cXHRcXHRuZXdfYnVzLVxcdTAwM2VyZWFkID0gXFx1MDAyNnN0bW1hY194Z21hYzJfbWRpb19yZWFkX2MyMjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY1LVxcdC8qIExvb2tzIGxpa2Ugd2UgbmVlZCBhIGR1bW15IHJlYWQgZm9yIFhHTUFDIG9ubHkgYW5kIEM0NSBQSFlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo2NjY6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX1hHTUFDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNjY3LVxcdFxcdHN0bW1hY194Z21hYzJfbWRpb19yZWFkX2M0NShuZXdfYnVzLCAwLCAwLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxNj1zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDctXFx0aWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCBcXFwic25wcyxkd3hnbWFjXFxcIikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo1NDg6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9YR01BQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy01NDktXFx0XFx0cGxhdC1cXHUwMDNlcG10ID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MTAuNDYyMzI1NjI0WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODY1OTQyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gcGF0aCBpcyBvbmx5IGVuYWJsZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlOiBgc25wcyxkd3hnbWFjYCwgYGR3bWFjLXNvY2ZwZ2EuY2AgKEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NispLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBUaGUga2lja2VyIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSB0YXJnZXRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gUUVNVSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy5cblxuSSB3YXMgYnJpZWZseSB0aGlua2luZyB0aGF0IHBlcmhhcHMgYHN5emthbGxlcmAgbWlnaHQgYmUgdGhlIGN1bHByaXQsIHBvc3NpYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlfaWRgIHRvIGluZGlyZWN0bHkgdHJpZ2dlciB0aGUgaW5zdGFudGlhdGlvbi4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBzeXprYWxsZXJgICpjYW4ndCogZGlyZWN0bHkgaW5zdGFudGlhdGUgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgdXNlcyBkZXZpY2UgdHJlZSBvdmVybGF5cywgYW5kIGl0J3Mgbm90IHNldCB1cCB0byBkbyB0aGF0LiBUaGF0IGF2ZW51ZSdzIGEgZGVhZCBlbmQuXG5cbldhaXQgYSBzZWNvbmTigKYgd2hhdCBhYm91dCBBQ1BJPyBJcyBpdCBwb3NzaWJsZSB0aGUgZHJpdmVyJ3MgYmVpbmcgcHJvYmVkIHRocm91Z2ggYW4gQUNQSSBwYXRoPyBMb29raW5nIGF0IGBzdG1tYWNfcGxhdGZvcm0uY2AuLi4gYWgsIHllcyEgSXQgaGFzIEFDUEkgYmluZGluZ3MuIFRoYXQncyBhIGRlZmluaXRlIHBvc3NpYmlsaXR5IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRoaXMgc3VnZ2VzdHMgYSBkaWZmZXJlbnQgYWN0aXZhdGlvbiBtZXRob2QgdGhhbiB0aGUgdHlwaWNhbCBwbGF0Zm9ybSBkZXZpY2UgaW5zdGFudGlhdGlvbiBJIHdhcyBpbml0aWFsbHkgZXhwZWN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQwMiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxNS4xNDg5MjM4MThaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDMyOTAzNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNwaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxNS4yNDkyNjI3MTJaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NTEwNjI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlBvdGVudGlhbCBBQ1BJIEJpbmRpbmdzIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGhlcmUuIEl0IGp1c3Qgb2NjdXJyZWQgdG8gbWUgdGhhdCBgc3RtbWFjX3BsYXRmb3JtLmNgIG1pZ2h0IGFjdHVhbGx5IGhhdmUgc29tZSBBQ1BJIGJpbmRpbmdzIGRlZmluZWQuIFRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBub3QgYXNzdW1lIHRoZXkncmUgYWxsIGhhbmRsZWQgZXhjbHVzaXZlbHkgdGhyb3VnaCBkZXZpY2UgdHJlZS4gQmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIGFueXRoaW5nIGVsc2UsIEkgcmVhbGx5IHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBhY3BpX21hdGNoX3RhYmxlYC4gSXQgd291bGQgYmUgYSB3YXN0ZWQgZWZmb3J0IHRvIG5vdCBydWxlIG91dCB0aGUgc2ltcGxlc3QgYW5zd2VyIGZpcnN0ISBJZiBpdCAqaXMqIHByZXNlbnQsIHRoYXQncyBwb3RlbnRpYWxseSBteSByb3V0ZSB0byB0aGUgYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg3MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjE4LjUxNDM3MTEzNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA3ODc2NTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFjcGlfbWF0Y2hfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoxOC42MDUxNjQ3NjlaIiwiU2VxIjo1NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTQxNjA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyBBQ1BJIERldmljZSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgYWNwaV9kZXZpY2VfaWRgLiBJIG5lZWQgdG8gcmUtZXhhbWluZSB0aGF0IGNvZGUuIEkga25vdyBpdCBiYWNrd2FyZHMgYW5kIGZvcndhcmRzLCBidXQgd2hlbiBkZWJ1Z2dpbmcgdGhlc2UgaW50cmljYXRlIEFDUEkgaW50ZXJhY3Rpb25zLCB5b3UgY2FuJ3QgYmUgdG9vIGNhcmVmdWwuIFRoZXJlJ3MgYWx3YXlzIGEgY2hhbmNlIEkndmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUsIG9yIHRoYXQgYSBzZWVtaW5nbHkgdW5yZWxhdGVkIGNoYW5nZSBoYXMgaW50cm9kdWNlZCBhbiB1bmV4cGVjdGVkIGludGVyYWN0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgbmV3LiBMZXQgbWUgcmV2aXNpdCB0aGUgQUNQSSBkZXZpY2UgSUQgdGFibGUuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUgbWlnaHQgYmUgc29tZSBuZXcgaGFyZHdhcmUgd2l0aCBhIHNsaWdodGx5IGRpZmZlcmVudCBzaWduYXR1cmUuIE9yIG1heWJlIGEgc3BlY2lmaWMgcGxhdGZvcm0ncyBxdWlya3MgYXJlIGludGVyZmVyaW5nIHdpdGggaG93IHRoZSBkcml2ZXIgaW50ZXJwcmV0cyB0aGUgQUNQSSBkYXRhLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxMTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyMS44NDQ1ODM3MjJaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjQ5Mzc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00NjA9c3RhdGljIHZvaWQgbG9vbmdzb25fZHdtYWNfZHRfY2xlYXIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjQ2NjpzdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2FjcGlfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDY3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTUzLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU1NDpcXHRcXHRyZXQgPSBsb29uZ3Nvbl9kd21hY19hY3BpX2NvbmZpZyhwZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU1NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyMS45NTcwODI2NjZaIiwiU2VxIjo1NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNTY5NDE1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc28gSSdtIGxvb2tpbmcgYXQgYGR3bWFjLWxvb25nc29uLmNgLiBJbnRlcmVzdGluZywgaXQgc2VlbXMgdG8gaGF2ZSBzb21lIEFDUEkgY29uZmlndXJhdGlvbiBnb2luZyBvbiwgYnV0IGlzbid0IHRoaXMgYSBQQ0kgZHJpdmVyLCBhbmQgaXQncyB1c2luZyBgRFdNQUNfQ09SRV9HTUFDYD8gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd29uZGVyIHdoeSB0aGV5J3JlIGhhbmRsaW5nIGl0IHRoaXMgd2F5LiBNYXliZSB0aGVyZSBhcmUgc29tZSBsZWdhY3kgcmVhc29ucyBvciBzcGVjaWZpYyBMb29uZ3NvbiBwbGF0Zm9ybSBxdWlya3MgaW52b2x2ZWQ/IEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQgbGF0ZXIuXG5cbk5vdywgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aG91Z2h0LCB3aGF0IGFib3V0IGBzdG1tYWNfcGxhdGZvcm0uY2A/IERvZXMgaXQgb2ZmZXIgc29tZSBpbnNpZ2h0PyBJdCBpcyBwcm9iYWJseSBhIGJldHRlci1hbGlnbmVkIHNvdXJjZSB0byBhbmFseXplLiBIb3BlZnVsbHkgaXQgaGFuZGxlcyBtb3JlIHR5cGljYWwgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuIE1heWJlIGl0IHNoZWRzIHNvbWUgbGlnaHQgb24gdGhlIGRlc2lnbiBjaG9pY2VzIGluIHRoYXQgZmlyc3QgZmlsZS4gTGV0IG1lIGludmVzdGlnYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY4OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjI1LjI3Mjc4MDgyNFoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjM4MTMyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzoyNS40MDkwMjQ5NjdaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0OTgzODY3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIGluIFFFTVU6IEEgV29ydGhsZXNzIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUgaXMgYGR3eGdtYWMyX2RtYV9pbml0YCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgaXQgaXMuIEZpcnN0IHRob3VnaHQ6IGlzIGl0IHVzZWQgaW4gYSBQQ0kgY29udGV4dD8gTm8sIHRoYXQncyBub3QgaXQuIGBzdG1tYWNfcGxhdGZvcm0uY2AgZG9lc24ndCB1c2UgQUNQSSwgYnV0IGBzdG1tYWNfcGNpLmNgIGRvZXMgdXNlIGEgYHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhYCB3aGljaCBwb2ludHMgdG8gYERXTUFDX0NPUkVfR01BQzRgLiBEZWZpbml0ZWx5IG5vdCB0aGUgcGF0aCBJJ20gaW50ZXJlc3RlZCBpbi5cblxuQ2FuIHRoaXMgZXZlciBiZSBjYWxsZWQgaW4gUUVNVT8gTm8uIE5vdCBkaXJlY3RseS4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS5cblxuYGR3eGdtYWMyX2RtYV9pbml0YCBpcyBzcGVjaWZpY2FsbHkgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBjb3JlIHR5cGUgaXMgdXNlZC4gSXQgbG9va3MgbGlrZSBpdCdzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHNucHMsZHd4Z21hY2AgKHBsYXRmb3JtKSwgYGR3bWFjLXNvY2ZwZ2EuY2AgKEFnaWxleDUpLCBhbmQgYGR3bWFjLXRlZ3JhLmNgIChUZWdyYTE4NispLiBOb25lIG9mIHRob3NlIGFyZSBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnLiBUaGlzIGxvb2tzIGxpa2UgYW4gdW5yZWFjaGFibGUgY29kZSBwYXRoIGluIG15IGVudmlyb25tZW50LlxuXG5JcyB0aGVyZSBhbnkgb3RoZXIgZHJpdmVyIHRoYXQgdXNlcyB0aGlzPyBJIGRpZCBhIHF1aWNrIGdyZXAgYWxyZWFkeSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhvc2UgYXJlIHRoZSBvbmx5IHBsYWNlcyBpdCdzIGRlZmluZWQuIEFuZCBpdCdzIGFsc28gdXNlZCBpbiBgaHdpZi5jYCBiYXNlZCBvbiBgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUNgIGFuZCBhZ2FpbiwgYHN0bW1hY19wbGF0Zm9ybS5jYCBmb3IgYHNucHMsZHd4Z21hY2AuXG5cbk9rYXksIGJ1dCB3aGF0IGFib3V0IHRoZSBicm9hZGVyIHNjb3BlIG9mIG15IHRlc3Rpbmcgc2V0dXA/IEknbSBub3QgdXNpbmcgQWdpbGV4NSwgYW5kIG5vdCBUZWdyYTE4NisuIElzIHRoZXJlIGEgYm9hcmQgaW4gUUVNVSB0aGF0IGluc3RhbnRpYXRlcyBgc25wcyxkd3hnbWFjYD8gTm8sIHRoZXJlIGlzbid0LiBTbyB0aGF0IGNvZGUgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCBJJ20gdXNpbmcuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgU3l6a2FsbGVyPyBEb2VzIGl0IGV2ZXIgcnVuIG9uIHBoeXNpY2FsIGhhcmR3YXJlPyBTdXJlLCBTeXprYWxsZXIgZG9lcyB1c2UgcGh5c2ljYWwgYm9hcmRzIHNvbWV0aW1lcywgbGlrZSBvbiBBUk0gYm9hcmRzLiBCdXQgdGhlIHByb21wdCBleHBsaWNpdGx5IGZvY3VzZXMgb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLiBJdCdzIGNsZWFybHkgc3RhdGVkIHRoYXQgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5Tbywgc2luY2UgdGhpcyBjb2RlIHBhdGggY2FuJ3QgYmUgcmVhY2hlZCBpbiBRRU1VLCBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkJ1dCwgbGV0J3MganVzdCBtYWtlIHN1cmUuIENvdWxkIGBzbnBzLGR3eGdtYWNgIHNvbWVob3cgYmUgaW5zdGFudGlhdGVkIHZpYSBhIGRldmljZSB0cmVlIG92ZXJsYXkgaW5qZWN0ZWQgYnkgU3l6a2FsbGVyPyBTeXprYWxsZXIgZG9lc24ndCBjdXJyZW50bHkgaW5qZWN0IERUIG92ZXJsYXlzLCBzbyB0aGF0J3MgYSBuby4gRXZlbiBpZiBpdCBkaWQsIHRoZSBkcml2ZXIgd291bGQgcHJvYmUuIEl0IHdvdWxkIHRoZW4gYXR0ZW1wdCB0byByZWFkIGZyb20gdGhlIE1NSU8gcmVnaXN0ZXJzIG9mIHRoZSBYR01BQy4gU2luY2UgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBlaXRoZXIgcmVhZCAweEZGRkZGRkZGIG9yIDB4MDAwMDAwMDAsIGFuZCBmYWlsLiBFdmVuIGlmIHRoZSByZWdpc3RlciByZWFkIGlzIDAsIGxldCBtZSBjaGVjayBgc3RtbWFjX2dldF92ZXJzaW9uYCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5NzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6MzUuOTA3NDE0MjczWiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE5Mjc5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2dldF92ZXJzaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM9MTY9c3RydWN0IHN0bW1hY192ZXJzaW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmM6MjE6c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMjItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfdmVyc2lvbiAqdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozMjY6XFx0c3RtbWFjX2dldF92ZXJzaW9uKHByaXYsIFxcdTAwMjZ2ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzozNi4xNDkzNDc1NloiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ5Njc3NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkZXZpY2UgZHJpdmVyczpcblxuKipBbmFseXppbmcgdGhlIENhbGwgdG8gYHN0bW1hY19nZXRfdmVyc2lvbmAqKlxuXG5BbHJpZ2h0LCB0aGUgZGlyZWN0aXZlIGlzIGNsZWFyOiBkaXZlIGludG8gdGhlIGBzdG1tYWNfZ2V0X3ZlcnNpb25gIGZ1bmN0aW9uLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBVbmRlcnN0YW5kaW5nIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGRyaXZlciBpcyBjcnVjaWFsLCBpdCdzIHRoZSBmb3VuZGF0aW9uIG9mIGFsbW9zdCBldmVyeXRoaW5nLiBJdCB1c3VhbGx5IGludm9sdmVzIHJlYWRpbmcgcmVnaXN0ZXJzLCBtYXliZSBzb21lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIGZvcm1hdHRpbmcgdGhhdCBkYXRhIGZvciB0aGUgdXNlci4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIHdoZXJlIGl0J3MgZGVmaW5lZC4gSXMgaXQgYSBkaXJlY3QgcmVnaXN0ZXIgcmVhZCwgb3IgZG9lcyBpdCBpbnZvbHZlIHNvbWUgbW9yZSBjb21wbGV4IGxvZ2ljIHRvIGRldGVybWluZSB0aGUgZHJpdmVyJ3MgcmV2aXNpb24sIGZlYXR1cmUgc2V0LCBvciBoYXJkd2FyZSBjb21wYXRpYmlsaXR5PyBIb3BlZnVsbHksIGl0IGlzIHdlbGwgZG9jdW1lbnRlZDsgb3RoZXJ3aXNlIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlZ2lzdGVyLWxldmVsIGludGVycHJldGF0aW9uIG9mIGl0LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGRlYnVnZ2luZyBhbmQgZW5zdXJpbmcgY29tcGF0aWJpbGl0eSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGtlcm5lbCB2ZXJzaW9ucy4gSSdtIGdvaW5nIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgdHlwZXMgaXQncyB3b3JraW5nIHdpdGggYW5kIGhvdyB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBzdHJ1Y3R1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTgyNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjM5Ljg5OTAyODUxNVoiLCJTZXEiOjYyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjE6XFx0c3RhdGljIHZvaWQgc3RtbWFjX2dldF92ZXJzaW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gIDIyOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3ZlcnNpb24gKnZlcilcXG4gIDIzOlxcdHtcXG4gIDI0OlxcdFxcdGVudW0gZHdtYWNfY29yZV90eXBlIGNvcmVfdHlwZSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWNvcmVfdHlwZTtcXG4gIDI1OlxcdFxcdHVuc2lnbmVkIGludCB2ZXJzaW9uX29mZnNldDtcXG4gIDI2OlxcdFxcdHUzMiB2ZXJzaW9uO1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHR2ZXItXFx1MDAzZXNucHN2ZXIgPSAwO1xcbiAgMjk6XFx0XFx0dmVyLVxcdTAwM2VkZXZfaWQgPSAwO1xcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfTUFDMTAwKVxcbiAgMzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHRpZiAoY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQylcXG4gIDM1OlxcdFxcdFxcdHZlcnNpb25fb2Zmc2V0ID0gR01BQ19WRVJTSU9OO1xcbiAgMzY6XFx0XFx0ZWxzZVxcbiAgMzc6XFx0XFx0XFx0dmVyc2lvbl9vZmZzZXQgPSBHTUFDNF9WRVJTSU9OO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHR2ZXJzaW9uID0gcmVhZGwocHJpdi1cXHUwMDNlaW9hZGRyICsgdmVyc2lvbl9vZmZzZXQpO1xcbiAgNDA6XFx0XFx0aWYgKHZlcnNpb24gPT0gMCkge1xcbiAgNDE6XFx0XFx0XFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVmVyc2lvbiBJRCBub3QgYXZhaWxhYmxlXFxcXG5cXFwiKTtcXG4gIDQyOlxcdFxcdFxcdHJldHVybjtcXG4gIDQzOlxcdFxcdH1cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2aWNlLCBcXFwiVXNlciBJRDogMHgleCwgU3lub3BzeXMgSUQ6IDB4JXhcXFxcblxcXCIsXFxuICA0NjpcXHRcXHRcXHQgRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pLFxcbiAgNDc6XFx0XFx0XFx0IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKSk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHZlci1cXHUwMDNlc25wc3ZlciA9IEZJRUxEX0dFVChEV01BQ19TTlBTVkVSLCB2ZXJzaW9uKTtcXG4gIDUwOlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcXG4gIDUxOlxcdFxcdFxcdHZlci1cXHUwMDNlZGV2X2lkID0gRklFTERfR0VUKERXTUFDX1VTRVJWRVIsIHZlcnNpb24pO1xcbiAgNTI6XFx0fVxcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfZHdtYWNfbW9kZV9xdWlyayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuICA1NTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjM5Ljg5OTEwMDkwNVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA1Njg5NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBzY2VuYXJpbywgcGhyYXNlZCBhcyBpZiB0aGVzZSB3ZXJlIG15IHRob3VnaHRzLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OlxuXG4qKkluaXRpYWwgVmVyc2lvbiBDaGVjayBhbmQgSGFyZHdhcmUgSW50ZXJmYWNlIFNlYXJjaCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNoZWNrIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIElmIHRoZSBgdmVyc2lvbmAgdmFyaWFibGUgaXMgemVybywgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IGJhaWxzIG91dC4gSXQgc2V0cyB0aGUgYHNucHN2ZXJgIGFuZCBgZGV2X2lkYCBmaWVsZHMgd2l0aGluIHRoZSBgdmVyYCBzdHJ1Y3R1cmUgdG8gemVyby4gVGhhdCdzIGEgY29tbW9uIGluaXRpYWwgc3RhdGUgb3IgZXJyb3IgY29uZGl0aW9uIHNpZ25hbGluZyBhbiB1bmluaXRpYWxpemVkIG9yIGludmFsaWQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGFuIGVhcmx5IHJldHVybiB0byBhdm9pZCBmdXJ0aGVyIHByb2Nlc3NpbmcuXG5cblRoZSBjcml0aWNhbCBzdGVwIGhlcmUsIGFmdGVyIHRoYXQgaW5pdGlhbCBjaGVjaywgaXMgdGhhdCBpdCBjYWxscyBgc3RtbWFjX2h3aWZfZmluZGAuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbC4gSXQncyB0aGUgcG9pbnQgd2hlcmUgd2UncmUgbW92aW5nIGZyb20gYSBzaW1wbGUgY29uZGl0aW9uYWwgdG8gdGhlIHJlYWwgd29yayDigJMgbG9jYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UuIENvbnNpZGVyaW5nIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLCBJIGltbWVkaWF0ZWx5IGluZmVyIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByb2JpbmcsIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlIHByZXNlbnQsIGFuZCBwb3B1bGF0aW5nIHJlbGV2YW50IHN0cnVjdHVyZXMgd2l0aCBoYXJkd2FyZSBpbnRlcmZhY2Ugc3BlY2lmaWMgZGF0YS4gVGhpcyBpcyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGNvbW11bmljYXRlIHdpdGggYW5kIGNvbnRyb2wgdGhlIHBoeXNpY2FsIGRldmljZS4gSXQgaXMgYSBrZXkgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjQ5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo0My42MDQ3OTM0MzNaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19od2lmX2VudHJ5ICpcXG4gMjk0OlxcdHN0bW1hY19od2lmX2ZpbmQoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlLCB1OCBzbnBzdmVyLCB1OCBkZXZfaWQpXFxuIDI5NTpcXHR7XFxuIDI5NjpcXHRcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbiAyOTc6XFx0XFx0aW50IGk7XFxuIDI5ODpcXHRcXG4gMjk5OlxcdFxcdGZvciAoaSA9IEFSUkFZX1NJWkUoc3RtbWFjX2h3KSAtIDE7IGkgXFx1MDAzZT0gMDsgaS0tKSB7XFxuIDMwMDpcXHRcXHRcXHRlbnRyeSA9IFxcdTAwMjZzdG1tYWNfaHdbaV07XFxuIDMwMTpcXHRcXG4gMzAyOlxcdFxcdFxcdGlmIChjb3JlX3R5cGUgIT0gZW50cnktXFx1MDAzZWNvcmVfdHlwZSlcXG4gMzAzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAzMDQ6XFx0XFx0XFx0LyogVXNlIHN5bm9wc3lzX2lkIHZhciBiZWNhdXNlIHNvbWUgc2V0dXBzIGNhbiBvdmVycmlkZSB0aGlzICovXFxuIDMwNTpcXHRcXHRcXHRpZiAoc25wc3ZlciBcXHUwMDNjIGVudHJ5LVxcdTAwM2VtaW5faWQpXFxuIDMwNjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMzA3OlxcdFxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQyBcXHUwMDI2XFx1MDAyNlxcbiAzMDg6XFx0XFx0XFx0ICAgIGRldl9pZCAhPSBlbnRyeS1cXHUwMDNlZGV2X2lkKVxcbiAzMDk6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdFxcdHJldHVybiBlbnRyeTtcXG4gMzEyOlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NDMuNjA0ODY0ODEzWiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzAyNzUzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgSW5pdGlhbGl6YXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSBgc3RtbWFjX2h3aWZfZmluZGAgYW5kIGBzdG1tYWNfaHdpZl9pbml0YC4gSSd2ZSBnb3QgdG8gdW5kZXJzdGFuZCB3aHkgaXQgbWlnaHQgYmUgZmFpbGluZy4gSXQgbG9va3MgbGlrZSB0aGVyZSdzIHRoaXMgaW5pdGlhbCBjaGVjazogaWYgdGhlIGBzbnBzdmVyYCBpcyB6ZXJvIEFORCBgZGV2X2lkYCBpcyB6ZXJvLCBpdCBwcm9jZWVkcyB0byBjb21wYXJlIGBzbnBzdmVyYCBhZ2FpbnN0IGBlbnRyeS1cdTAwM2VtaW5faWRgLiBOb3csIGZvciB0aGUgY2FzZSBvZiBgRFdNQUNfQ09SRV9YR01BQ2AsIHRoZSBgZW50cnktXHUwMDNlbWluX2lkYCBpcyBzZXQgdG8gZWl0aGVyIGBEV1hHTUFDX0NPUkVfMl8xMGAgKHdoaWNoIGlzIDB4MjEpIG9yIGBEV1hMR01BQ19DT1JFXzJfMDBgICh3aGljaCBpcyAweDIwKSBhbmQgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoaWNoIG9uZSBoZXJlLiBTaW5jZSBgc25wc3ZlcmAgaXMgKnplcm8qLCB0aGUgY29uZGl0aW9uIGBzbnBzdmVyIFx1MDAzYyBlbnRyeS1cdTAwM2VtaW5faWRgIGlzIGdvaW5nIHRvIGJlIHRydWUuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgaW4gYSB3YXkgdGhhdCB0aGUgYGNvbnRpbnVlYCB3aWxsIHByZXZlbnQgYSBtYXRjaCwgbWVhbmluZyB0aGF0IHRoZSBsb29wIHdpbGwgc2tpcCB0aGlzIGVudHJ5ISBTaW5jZSBJJ20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCAwIGFuZCB0cnlpbmcgdG8gbWF0Y2ggdG8gYSBtaW5pbXVtIElEIHRoYXQgaXMsIGZvciBzdXJlLCBncmVhdGVyIHRoYW4gemVybywgbm8gbWF0Y2ggd2lsbCBiZSBmb3VuZC4gVGhpcyBtZWFucyB0aGF0IGBzdG1tYWNfaHdpZl9maW5kYCBpcyBnb2luZyB0byByZXR1cm4gYE5VTExgIHRvIGBzdG1tYWNfaHdpZl9pbml0YCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbC4gVGhhdCdzIGEgY3JpdGljYWwgZmxhdyBpbiB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBhbmQgc29tZXRoaW5nIEkgbmVlZCB0byBhZGRyZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTMwMywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjQ4LjE3NTE0NDEwM1oiLCJTZXEiOjY2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMxNzpcXHRpbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIDMxODpcXHR7XFxuIDMxOTpcXHRcXHRlbnVtIGR3bWFjX2NvcmVfdHlwZSBjb3JlX3R5cGUgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGU7XFxuIDMyMDpcXHRcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3aWZfZW50cnkgKmVudHJ5O1xcbiAzMjE6XFx0XFx0c3RydWN0IHN0bW1hY192ZXJzaW9uIHZlcnNpb247XFxuIDMyMjpcXHRcXHRzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWM7XFxuIDMyMzpcXHRcXHRib29sIG5lZWRzX3NldHVwID0gdHJ1ZTtcXG4gMzI0OlxcdFxcdGludCByZXQ7XFxuIDMyNTpcXHRcXG4gMzI2OlxcdFxcdHN0bW1hY19nZXRfdmVyc2lvbihwcml2LCBcXHUwMDI2dmVyc2lvbik7XFxuIDMyNzpcXHRcXG4gMzI4OlxcdFxcdC8qIFNhdmUgSUQgZm9yIGxhdGVyIHVzZSAqL1xcbiAzMjk6XFx0XFx0cHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgPSB2ZXJzaW9uLnNucHN2ZXI7XFxuIDMzMDpcXHRcXG4gMzMxOlxcdFxcdC8qIExldHMgYXNzdW1lIHNvbWUgc2FmZSB2YWx1ZXMgZmlyc3QgKi9cXG4gMzMyOlxcdFxcdGlmIChjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCkge1xcbiAzMzM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcHRwYWRkciA9IHByaXYtXFx1MDAzZWlvYWRkciArIFBUUF9HTUFDNF9PRkZTRVQ7XFxuIDMzNDpcXHRcXHRcXHRwcml2LVxcdTAwM2VtbWNhZGRyID0gcHJpdi1cXHUwMDNlaW9hZGRyICsgTU1DX0dNQUM0X09GRlNFVDtcXG4gMzM1OlxcdFxcdFxcdHByaXYtXFx1MDAzZWVzdGFkZHIgPSBwcml2LVxcdTAwM2Vpb2FkZHIgKyBFU1RfR01BQzRfT0ZGU0VUO1xcbiAzMzY6XFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NDguMTc1MjU4OTYzWiIsIlNlcSI6NjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzI3NTkwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIE5VTEwgYGVudHJ5YCBWYWx1ZXMqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCB0aGlzIGNhcmVmdWxseS4gQmVmb3JlIEkgcHJvY2VlZCwgbGV0J3MganVzdCBwYXVzZSBhbmQgY29uc2lkZXIgYSBjcml0aWNhbCBlZGdlIGNhc2UuIFdoYXQgYWN0dWFsbHkgKmhhcHBlbnMqIGlmIHRoZSBgZW50cnlgIHZhcmlhYmxlLCB3aGljaCBpcyBjcnVjaWFsIHRvIHRoZSBmdW5jdGlvbidzIGxvZ2ljLCBoYXBwZW5zIHRvIGJlIE5VTEw/IElzIHRoYXQgYWNjb3VudGVkIGZvciBpbiB0aGUgb3JpZ2luYWwgZGVzaWduPyBNeSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlLiBJIG5lZWQgdG8gZXhwbGljaXRseSB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggZnJvbSB0aGlzIHBvaW50IG9ud2FyZCwgd2l0aCBgZW50cnlgIGJlaW5nIE5VTEwsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnNlcXVlbmNlcy4gVGhpcyBjaGVjayBpcyBmdW5kYW1lbnRhbCB0byByZWxpYWJsZSBwcm9ncmFtbWluZyBhbmQgbmVlZHMgZXhwbGljaXQgYXR0ZW50aW9uIGJlZm9yZSBjb250aW51aW5nLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIHRvIHJldmVhbCBhIHZ1bG5lcmFiaWxpdHksIGEgY3J1Y2lhbCBvbWlzc2lvbiBpbiB0aGUgaW5wdXQgdmFsaWRhdGlvbiwgb3Igc29tZSBvdGhlciBzZXJpb3VzIGlzc3VlIHdpdGggaGFuZGxpbmcgdGhpcyBjb25kaXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTc3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo1MS4yMDgwMjE0NDdaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0MyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM0MzpcXHRcXHRtYWMgPSBkZXZtX2t6YWxsb2MocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplb2YoKm1hYyksIEdGUF9LRVJORUwpO1xcbiAzNDQ6XFx0XFx0aWYgKCFtYWMpXFxuIDM0NTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzQ2OlxcdFxcbiAzNDc6XFx0XFx0LyogQ2hlY2sgZm9yIEhXIHNwZWNpZmljIHNldHVwIGZpcnN0ICovXFxuIDM0ODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX3NldHVwKSB7XFxuIDM0OTpcXHRcXHRcXHRyZXQgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYWNfc2V0dXAocHJpdiwgbWFjKTtcXG4gMzUwOlxcdFxcdFxcdGlmIChyZXQpXFxuIDM1MTpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAzNTI6XFx0XFxuIDM1MzpcXHRcXHRcXHRuZWVkc19zZXR1cCA9IGZhbHNlO1xcbiAzNTQ6XFx0XFx0fVxcbiAzNTU6XFx0XFxuIDM1NjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2bWFjLVxcdTAwM2VpcnFfY3RybF9sb2NrKTtcXG4gMzU3OlxcdFxcbiAzNTg6XFx0XFx0LyogRmFsbGJhY2sgdG8gZ2VuZXJpYyBIVyAqL1xcbiAzNTk6XFx0XFxuIDM2MDpcXHRcXHQvKiBVc2Ugc3lub3BzeXNfaWQgdmFyIGJlY2F1c2Ugc29tZSBzZXR1cHMgY2FuIG92ZXJyaWRlIHRoaXMgKi9cXG4gMzYxOlxcdFxcdGVudHJ5ID0gc3RtbWFjX2h3aWZfZmluZChjb3JlX3R5cGUsIHByaXYtXFx1MDAzZXN5bm9wc3lzX2lkLCB2ZXJzaW9uLmRldl9pZCk7XFxuIDM2MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjUxLjIwODA4ODM0N1oiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE0NzE0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IHVzZXIgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW1wcmVzc2lvbiBcdTAwMjYgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BaCEgUmlnaHQsIG9rYXkuIFRoYXQgaW5pdGlhbCBcIkFoIVwiIOKAkyBpdCdzIG5vdCBqdXN0IGEgY2FzdWFsIGludGVyamVjdGlvbiwgeW91IGtub3c/IEl04oCZcyBhIHJlY29nbml0aW9uLCBhIHRyaWdnZXIuIEl0IHNpZ25hbHMgdGhhdCBzb21ldGhpbmcgaGFzIGNsaWNrZWQsIGEgc3RhcnRpbmcgcG9pbnQgaXMgcmVjb2duaXplZCB0aGF0IG1heSBoYXZlIGEgcmVsYXRpb25zaGlwIHdpdGggdGhlIGN1cnJlbnQgdGFzay5cblxuTm93LCBsZXQncyBzZWUgd2hlcmUgdGhpcyBnb2VzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzExLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjU0LjQyMjgwNzU3MVoiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuIDM2MzpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldmljZSxcXG4gMzY0OlxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZmluZCBIVyBJRiAoaWQ9MHgleCwgZ21hYz0lZC8lZClcXFxcblxcXCIsXFxuIDM2NTpcXHRcXHRcXHRcXHR2ZXJzaW9uLnNucHN2ZXIsIGNvcmVfdHlwZSA9PSBEV01BQ19DT1JFX0dNQUMsXFxuIDM2NjpcXHRcXHRcXHRcXHRjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9HTUFDNCk7XFxuIDM2NzpcXHRcXG4gMzY4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNjk6XFx0XFx0fVxcbiAzNzA6XFx0XFxuIDM3MTpcXHRcXHQvKiBPbmx5IHVzZSBnZW5lcmljIEhXIGhlbHBlcnMgaWYgbmVlZGVkICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjEzOjU0LjQyMjkzNDA2MVoiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyMDQ1Njg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRmFpbHVyZSBQb2ludHMgaW4gdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gYSBzcGVjaWZpYyBTVE1NQUMgZHJpdmVyIHNjZW5hcmlvLiBUaGUgY29kZSdzIGNoZWNraW5nIGZvciBhIE5VTEwgYGVudHJ5YCBwb2ludGVyLiBSaWdodCwgaWYgYGVudHJ5YCBpcyBOVUxMLCBpdCByZXR1cm5zIGAtRUlOVkFMYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBlcnJvci4gTXkgY3VycmVudCBjb25jZXJuIGlzIHdpdGggaG93IFN5emthbGxlciwgaW4gaXRzIGZ1enppbmcgcHJvY2VzcywgaW50ZXJhY3RzIHdpdGggdmlydHVhbCBkZXZpY2VzIHRoYXQgZG9uJ3QgZW11bGF0ZSBNTUlPIHJlZ2lzdGVycy4gSWYgU3l6a2FsbGVyIGNyZWF0ZXMgYSB2aXJ0dWFsIGRldmljZSBpbiB0aGF0IHNwZWNpZmljIHdheSwgYHZlcnNpb25gIGVuZHMgdXAgYXQgMCwgYW5kIGNydWNpYWxseSwgdGhlIGBlbnRyeWAgcG9pbnRlciB3aWxsIGJlIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgc3RtbWFjX2h3aWZfaW5pdGAgZmFpbHMsIHdoaWNoIGJsb2NrcyB0aGUgc3Vic2VxdWVudCBleGVjdXRpb24uIFRoYXQgbWVhbnMgYGR3eGdtYWMyX2RtYV9pbml0YCBuZXZlciBnZXRzIGNhbGxlZCwgd2hpY2ggaXMgYSBtYWpvciByZWQgZmxhZy5cblxuQnV0IHdhaXQsIGhvbGQgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBUaGVyZSBpcyB0aGF0IGBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWFjX3NldHVwYCBmaWVsZC4gV2hhdCBpZiAqdGhhdCogY29kZSBwYXRoIGVuZHMgdXAgc2V0dGluZyBgcHJpdi1cdTAwM2VzeW5vcHN5c19pZGA/IEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSB1c2FnZSBvZiBgbWFjX3NldHVwYCBpbiB0aGUgcmVzdCBvZiB0aGUgY29kZSB0byBtYWtlIHN1cmUgbXkgbG9naWMgaXMgYWlydGlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzMDI4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTM6NTkuMTE0OTgyMTA1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2ODQ2OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTIyMD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2RtYV9pbnRlcnJ1cHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzozMDY6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19zZXR1cCh2b2lkICphcHJpdiwgc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMzA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM1LVxcdHBsYXQtXFx1MDAzZWJzcF9wcml2ID0gbGQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MzY6XFx0cGxhdC1cXHUwMDNlbWFjX3NldHVwID0gbG9vbmdzb25fZHdtYWNfc2V0dXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXFx0cGxhdC1cXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTQ4PXN0cnVjdCBsczF4X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6NTQ6c3RhdGljIGludCBsczFiX2R3bWFjX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtNTUtXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0yMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBsczF4X2RhdGEgbHMxYl9kd21hY19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjIwODpcXHQuc2V0dXAgPSBsczFiX2R3bWFjX3NldHVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIwOS1cXHQuaW5pdCA9IGxzMWJfZHdtYWNfc3lzY29uX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTEyMDE9c3RhdGljIHZvaWQgcmtfcGh5X3Bvd2VyZG93bihzdHJ1Y3QgcmtfcHJpdl9kYXRhICpic3BfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjEyMTE6c3RhdGljIHN0cnVjdCBya19wcml2X2RhdGEgKnJrX2dtYWNfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTEyMTItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE1Njg9c3RhdGljIGludCBya19nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjA1OlxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IHJrX2dtYWNfc2V0dXAocGRldiwgcGxhdF9kYXQsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYwNi1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xMDU9c3RhdGljIHZvaWQgczMyX2dtYWNfZXhpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MTEzOnN0YXRpYyB2b2lkIHMzMl9nbWFjX3NldHVwX211bHRpX2lycShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTE0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM9MTQ0PXN0YXRpYyBpbnQgczMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MjAwOlxcdHMzMl9nbWFjX3NldHVwX211bHRpX2lycShkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19vcHMgc3VuOGlfZHdtYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTA0MzpzdGF0aWMgaW50IHN1bjhpX2R3bWFjX3NldHVwKHZvaWQgKnBwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExODYtXFx0cGxhdF9kYXQtXFx1MDAzZWV4aXQgPSBzdW44aV9kd21hY19leGl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTE4NzpcXHRwbGF0X2RhdC1cXHUwMDNlbWFjX3NldHVwID0gc3VuOGlfZHdtYWNfc2V0dXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTg4LVxcdHBsYXRfZGF0LVxcdTAwM2V0eF9maWZvX3NpemUgPSA0MDk2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jPTMxNz1pbnQgc3RtbWFjX2h3aWZfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9od2lmLmMtMzQ3LVxcdC8qIENoZWNrIGZvciBIVyBzcGVjaWZpYyBzZXR1cCBmaXJzdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDg6XFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1hY19zZXR1cCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2h3aWYuYzozNDk6XFx0XFx0cmV0ID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX3NldHVwKHByaXYsIG1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvaHdpZi5jLTM1MC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04OTQ9c3RhdGljIGludCBzdG1tYWNfaW5pdF90aW1lc3RhbXBpbmcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo5Mzk6c3RhdGljIHZvaWQgc3RtbWFjX3NldHVwX3B0cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy05NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDU0OiAqICBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MgLSBHZW5lcmF0ZSBhIGRtYV9jb25mIGFuZCBhbGxvY2F0ZSBETUEgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTUtICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mj1zdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDYzOnN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNTg6XFx0c3RtbWFjX3NldHVwX3B0cChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxODc9c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE5NzpcXHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBkZXYtXFx1MDAzZW10dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk4LVxcdGlmIChJU19FUlIoZG1hX2NvbmYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTA1PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzEtXFx0XFx0LyogVHJ5IHRvIGFsbG9jYXRlIHRoZSBuZXcgRE1BIGNvbmYgd2l0aCB0aGUgbmV3IG10dSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjEzMjpcXHRcXHRkbWFfY29uZiA9IHN0bW1hY19zZXR1cF9kbWFfZGVzYyhwcml2LCBtdHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjEzMy1cXHRcXHRpZiAoSVNfRVJSKGRtYV9jb25mKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02Mzc3PXN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2Mzg3OnN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzg4LVxcdFxcdFxcdFxcdCAgICB2b2lkICpjYl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDEzPXN0YXRpYyBMSVNUX0hFQUQoc3RtbWFjX2Jsb2NrX2NiX2xpc3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0MTU6c3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQxNi1cXHRcXHRcXHQgICB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2c3RtbWFjX2Jsb2NrX2NiX2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDI4OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQyOS1cXHRcXHRcXHRcXHRcXHRcXHQgIHByaXYsIHByaXYsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MzAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXFx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTI6XFx0Lm5kb19zZXR1cF90YyA9IHN0bW1hY19zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTMtXFx0Lm5kb19zZWxlY3RfcXVldWUgPSBzdG1tYWNfc2VsZWN0X3F1ZXVlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMzoxMzo1OS4yMTU2NzIyNjlaIiwiU2VxIjo3MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwODEwNTY2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBQYXRoIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyB3ZW50IGxpa2UgdGhpczogYG1hY19zZXR1cGAgaXMgc2V0IHVwIGJ5IGBkd21hYy1sb29uZ3Nvbi5jYCBhbmQgYGR3bWFjLXN1bjhpLmNgLCBhbmQgbmVpdGhlciBzZXRzIGBwcml2LVx1MDAzZXN5bm9wc3lzX2lkYC4gVGhpcyBtZWFucyBgcHJpdi1cdTAwM2VzeW5vcHN5c19pZGAgd2lsbCBiZSB6ZXJvLiBDb25zZXF1ZW50bHksIGBzdG1tYWNfaHdpZl9maW5kYCBmYWlscywgYW5kIHRoZXJlZm9yZSBgc3RtbWFjX2h3aWZfaW5pdGAgYWxzbyBmYWlscywgdGh1cyBlbnN1cmluZyB0aGF0IGBkd3hnbWFjMl9kbWFfaW5pdGAgbmV2ZXIgZ2V0cyBjYWxsZWQuXG5cbkkgdGhlbiBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2FzIGFueSBwb3NzaWJpbGl0eSBgc3RtbWFjX2dldF92ZXJzaW9uYCBjb3VsZCBzdWNjZWVkLCBwZXJoYXBzIGlmIHN5emthbGxlciByYW4gb24gYSBRRU1VIG1hY2hpbmUgd2l0aCBgc3RtbWFjYCBtYXBwZWQgdG8gbm9uLXplcm8gbWVtb3J5LiBIb3dldmVyLCBRRU1VIHJldHVybnMgMCBmb3IgdW5tYXBwZWQgbWVtb3J5IG9yIHJhaXNlcyBhIERhdGEgQWJvcnQsIHNvIHRoYXQgd29uJ3Qgd29yay4gSSBhbHNvIGNvbnNpZGVyZWQgc2NlbmFyaW9zIGludm9sdmluZyBgc3l6X3VzYl9jb25uZWN0YCBvciBQQ0kgZGV2aWNlcyB3aXRoIGB2ZmlvYCwgYnV0IHRob3NlIHBhdGhzIGFyZSB1bnJlbGF0ZWQuIEkgdGhvdWdodCBhYm91dCB0aGUgcG9zc2liaWxpdHkgb2Ygc3l6Ym90IHJ1bm5pbmcgb24gYSBwaHlzaWNhbCBib2FyZCB3aXRoIGEgcmVhbCBYR01BQy4gSG93ZXZlciwgc3l6Ym90IHVzZXMgR0NFIFZNcyBmb3IgdXBzdHJlYW0ga2VybmVsIHRlc3RpbmcsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBzcGVjaWZpYyBBbmRyb2lkIGRldmljZXMsIGFuZCBpdCBkb2Vzbid0IHV0aWxpemUgcGh5c2ljYWwgYm9hcmRzIGZvciB1cHN0cmVhbSBrZXJuZWwgdGVzdGluZy4gQWxzbywgUENJIGRldmljZSBwcm9iaW5nIHdpdGggYHN5el9wY2lgIGRvZXNuJ3QgYXBwbHkgaGVyZS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gU2luY2UgYGR3eGdtYWMyX2RtYV9pbml0YCBpcyBzcGVjaWZpY2FsbHkgZm9yIGBEV01BQ19DT1JFX1hHTUFDYCB3aGljaCBpcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVSwgdGhhdCdzIGEga2V5IHBvaW50LiBUaGVyZSdzIG5vIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCBmb3IgYHN0bW1hY2AgdG8gY29uc2lkZXIuXG5cbkkgY2hlY2tlZCBhbGwgUENJIGRyaXZlcnMgKGBkd21hYy1pbnRlbC5jYCwgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1sb29uZ3Nvbi5jYCwgYGR3bWFjLW1vdG9yY29tbS5jYCkgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgdXNlIGBEV01BQ19DT1JFX1hHTUFDYCwgYnV0IG5vbmUgZG8uIFRoZXkgYWxsIHVzZSBgRFdNQUNfQ09SRV9HTUFDYCBvciBgRFdNQUNfQ09SRV9HTUFDNGAuIFRoaXMgbWVhbnMgdGhhdCBldmVuIGlmIHN5emthbGxlciBjb3VsZCBmdXp6IFBDSSBkZXZpY2VzLCBgRFdNQUNfQ09SRV9YR01BQ2Agd291bGRuJ3QgYmUgcmVhY2hlZC4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSSB0aGVuIGRvdWJsZS1jaGVja2VkIHRoaXMgYnkgZ3JlcHBpbmcgZm9yIGBEV01BQ19DT1JFX1hHTUFDYC4gSSBmb3VuZCBpdCB1c2VkIG9ubHkgaW4gYGR3bWFjLXNvY2ZwZ2EuY2AsIGBkd21hYy10ZWdyYS5jYCwgYGh3aWYuY2AsIGFuZCBgc3RtbWFjX3BsYXRmb3JtLmNgLiBOb25lIG9mIHRoZXNlIGFyZSBQQ0kgZHJpdmVycy4gVGhpcyBmaXJtbHkgZXN0YWJsaXNoZXMgdGhhdCBgRFdNQUNfQ09SRV9YR01BQ2AgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHdoaWNoIGNhbm5vdCBiZSBkeW5hbWljYWxseSBjcmVhdGVkIGFuZCBwcm9iZWQgaW4gUUVNVSB1bmxlc3MgUUVNVSBleHBsaWNpdGx5IGVtdWxhdGVzIHRoZSBkZXZpY2UgYW5kIHN1cHBsaWVzIHRoZSBkZXZpY2UgdHJlZSBub2RlIG9yIEFDUEkgdGFibGUuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIFRlZ3JhMTg2KyBvciBBZ2lsZXg1LCBub3IgZG9lcyBpdCBlbXVsYXRlIGBzbnBzLGR3eGdtYWNgLiBDb25zZXF1ZW50bHksIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUuXG5cbkknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5IZXJlJ3MgYSBicmVha2Rvd24gb2YgdGhlIHJlYXNvbmluZzogVGhlIHBhdGNoIGFmZmVjdHMgYGR3eGdtYWMyX2RtYV9pbml0YCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGBkd3hnbWFjMjEwX2RtYV9vcHNgIGFuZCBpcyBvbmx5IHVzZWQgd2hlbiB0aGUgY29yZSB0eXBlIGlzIGBEV01BQ19DT1JFX1hHTUFDYC4gVGhpcyBjb3JlIHR5cGUgaXMgZXhjbHVzaXZlbHkgdXNlZCBieSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIGxpa2UgYGR3bWFjLXNvY2ZwZ2EuY2AgZm9yIEFnaWxleDUsIGBkd21hYy10ZWdyYS5jYCBmb3IgVGVncmExODYrLCBhbmQgZ2VuZXJpYyBgc25wcyxkd3hnbWFjYCBEVCBiaW5kaW5ncy4gU2luY2Ugc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgWEdNQUMgY29yZSBpdHNlbGYsIGFuZCBzaW5jZSB0aGUgYHN0bW1hY2AgZHJpdmVyJ3MgUENJIHZhcmlhbnRzIGRvIG5vdCBlbXBsb3kgYERXTUFDX0NPUkVfWEdNQUNgLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyLlxuXG5JIHRoZW4gZXhwbG9yZWQgaWYgdGhlcmUncyBhbnkgbG9vcGhvbGUgaW4gdGhpcyBsb2dpYy4gV2hhdCBpZiBzeXprYWxsZXIgdXNlcyBhIGN1c3RvbSBRRU1VIHdpdGggYHNucHMsZHd4Z21hY2A/IEkgaGF2ZSB0byByZW1lbWJlciB0aGUgcHJvbXB0IHNwZWNpZmllcyBcInN0YW5kYXJkIFFFTVUuXCIgQWxzbywgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgLiBXaGF0IGFib3V0IGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzLy4uLi9iaW5kYD8gVGhpcyB3b3VsZCBzdGlsbCByZXF1aXJlIGEgZGV2aWNlIHRvIGJpbmQgdG8uIFdoYXQgaWYgc3l6a2FsbGVyIGNyZWF0ZXMgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIGFub3RoZXIgc3Vic3lzdGVtPyBFdmVuIGlmXG5cbiIsIklucHV0VG9rZW5zIjo0Njg5OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTQ6MTYuMjk2NzMyMTg2WiIsIlNlcSI6NzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUzMTY5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHd4Z21hYzJfZG1hX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jPTExPXN0YXRpYyBpbnQgZHd4Z21hYzJfZG1hX3Jlc2V0KHZvaWQgX19pb21lbSAqaW9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6MjI6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXQodm9pZCBfX2lvbWVtICppb2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtMjMtXFx0XFx0XFx0ICAgICAgc3RydWN0IHN0bW1hY19kbWFfY2ZnICpkbWFfY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NDU6c3RhdGljIHZvaWQgZHd4Z21hYzJfZG1hX2luaXRfY2hhbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNDYtXFx0XFx0XFx0XFx0ICAgdm9pZCBfX2lvbWVtICppb2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1ODpzdGF0aWMgdm9pZCBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy01OS1cXHRcXHRcXHRcXHQgICAgICB2b2lkIF9faW9tZW0gKmlvYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjc0OnN0YXRpYyB2b2lkIGR3eGdtYWMyX2RtYV9pbml0X3R4X2NoYW4oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jLTc1LVxcdFxcdFxcdFxcdCAgICAgIHZvaWQgX19pb21lbSAqaW9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM9NTk0PWNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyBkd3hnbWFjMjEwX2RtYV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmMtNTk1LVxcdC5yZXNldCA9IGR3eGdtYWMyX2RtYV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTY6XFx0LmluaXQgPSBkd3hnbWFjMl9kbWFfaW5pdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYzo1OTc6XFx0LmluaXRfY2hhbiA9IGR3eGdtYWMyX2RtYV9pbml0X2NoYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHd4Z21hYzJfZG1hLmM6NTk4OlxcdC5pbml0X3J4X2NoYW4gPSBkd3hnbWFjMl9kbWFfaW5pdF9yeF9jaGFuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3eGdtYWMyX2RtYS5jOjU5OTpcXHQuaW5pdF90eF9jaGFuID0gZHd4Z21hYzJfZG1hX2luaXRfdHhfY2hhbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd3hnbWFjMl9kbWEuYy02MDAtXFx0LmF4aSA9IGR3eGdtYWMyX2RtYV9heGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAzOjE0OjE2LjQxMjA1MzQyWiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzkwODgxNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246XG5cbioqUmVhY2hpbmcgYSBDb25jbHVzaW9uIG9uIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cblJpZ2h0LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgY2FsbCB0byBgZHd4Z21hYzIxMF9kbWFfb3BzLmluaXRgIGlzIHRoZSBzb2xlIGFzc2lnbm1lbnQsIEkgY2FuIHNlZSB0aGF0IGNsZWFybHkuIEFuZCBpZiBJJ20gbm90IG1pc3Rha2VuLCBgZHd4Z21hYzIxMF9kbWFfb3BzYCBpdHNlbGYgaXMgKm9ubHkqIGxldmVyYWdlZCB3aXRoaW4gYGh3aWYuY2AsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBjb2RlIHJlZmVyZW5jZXMgYERXTUFDX0NPUkVfWEdNQUNgLiBTZWVtcyBwcmV0dHkgd2F0ZXJ0aWdodCwgdGhlIGNvbm5lY3Rpb25zIGFyZSBhbGwgY29uc2lzdGVudCBhbmQgYXMgZXhwZWN0ZWQuIEl0IGFsbCBoYW5ncyB0b2dldGhlci5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGlzIHNwZWNpZmljIHRyYWNlIGFuZCBsYWNrIG9mIHVuZXhwZWN0ZWQgZGVwZW5kZW5jaWVzLCBJJ20gY29uZmlkZW50IGluIGRlY2xhcmluZyBpdCdzIG5vdCBhIHByb21pc2luZyBhdmVudWUgZm9yIGZ1enppbmcsIGF0IGxlYXN0IG5vdCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LiBJJ2xsIHByb2NlZWQgd2l0aCBjYWxsaW5nIGBzZXQtcmVzdWx0c2AsIGFuZCBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFRoYXQgc2hvdWxkIGJlIHRoZSBjb3JyZWN0IHBhdGggaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzNDksIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDM6MTQ6MjAuNjkxMTQ1NDY2WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGR3eGdtYWMyX2RtYV9pbml0YCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBETUEgb3BlcmF0aW9ucyBleGNsdXNpdmVseSB1c2VkIGZvciB0aGUgYERXTUFDX0NPUkVfWEdNQUNgIGNvcmUgdHlwZSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gVGhpcyBjb3JlIHR5cGUgaXMgb25seSB1dGlsaXplZCBieSBzcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIChlLmcuLCBBZ2lsZXg1LCBUZWdyYTE4NispIGFuZCBnZW5lcmljIGBzbnBzLGR3eGdtYWNgIERUIGJpbmRpbmdzLiBOb25lIG9mIHRoZXNlIHBsYXRmb3JtcyBvciB0aGUgU3lub3BzeXMgWEdNQUMgY29yZSBpdHNlbGYgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgUENJIHZhcmlhbnRzIG9mIHRoZSBzdG1tYWMgZHJpdmVyICh3aGljaCBjb3VsZCB0aGVvcmV0aWNhbGx5IGJlIHByb2JlZCB2aWEgdmlydHVhbCBQQ0kgaW5qZWN0aW9uKSBkbyBub3QgdXNlIHRoZSBYR01BQyBjb3JlIHR5cGUuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHd4Z21hYzJfZG1hX2luaXRgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIERNQSBvcGVyYXRpb25zIGV4Y2x1c2l2ZWx5IHVzZWQgZm9yIHRoZSBgRFdNQUNfQ09SRV9YR01BQ2AgY29yZSB0eXBlIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBUaGlzIGNvcmUgdHlwZSBpcyBvbmx5IHV0aWxpemVkIGJ5IHNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgKGUuZy4sIEFnaWxleDUsIFRlZ3JhMTg2KykgYW5kIGdlbmVyaWMgYHNucHMsZHd4Z21hY2AgRFQgYmluZGluZ3MuIE5vbmUgb2YgdGhlc2UgcGxhdGZvcm1zIG9yIHRoZSBTeW5vcHN5cyBYR01BQyBjb3JlIGl0c2VsZiBhcmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBQQ0kgdmFyaWFudHMgb2YgdGhlIHN0bW1hYyBkcml2ZXIgKHdoaWNoIGNvdWxkIHRoZW9yZXRpY2FsbHkgYmUgcHJvYmVkIHZpYSB2aXJ0dWFsIFBDSSBpbmplY3Rpb24pIGRvIG5vdCB1c2UgdGhlIFhHTUFDIGNvcmUgdHlwZS4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr2rn6[1] Phase: Running StartedAt: 2026-07-26 03:14:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr2rn6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-26 03:14:32 +0000 UTC FinishedAt: 2026-07-26 03:14:40 +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,}