Name: series-workflow82dpx Phase: Failed StartedAt: 2026-07-14 13:11:25 +0000 UTC FinishedAt: 2026-07-14 13:35:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82dpx[0] Phase: Succeeded StartedAt: 2026-07-14 13:11:25 +0000 UTC FinishedAt: 2026-07-14 13:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82dpx[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 13:11:25 +0000 UTC FinishedAt: 2026-07-14 13:35:14 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3aWxjMTAwMCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTy9TUEkgd2lyZWxlc3MgZHJpdmVyIGZvciBBdG1lbCBXSUxDMTAwMCBjaGlwcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWVhbmluZyB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDdiMzg1OTJiYzc4ZmU2MGJhOGFjNWEwNmI2MTE1ZDRmYmZmY2FlY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjM0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xuaW5kZXggMDA5YzQ3NzBhNmY5NWIuLjYwZmU1ZjA4OTY0ZjM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNcbkBAIC02MDAsNiAmIzQzOzYwMCwxMSBAQCBzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxuIFx0dTE2IGllc19sZW47XG4gXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcbiBcbiYjNDM7XHRpZiAoYnVmZmVyX2xlbiBcdTAwM2Mgc2l6ZW9mKCpyZXMpKSB7XG4mIzQzO1x0XHRyZXRfY29ubl9pbmZvLVx1MDAzZXN0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0X2Nvbm5faW5mby1cdTAwM2VzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXMtXHUwMDNlc3RhdHVzX2NvZGUpO1xuIFx0aWYgKHJldF9jb25uX2luZm8tXHUwMDNlc3RhdHVzID09IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiBcdFx0aWVzID0gXHUwMDI2YnVmZmVyW3NpemVvZigqcmVzKV07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB0aGUgbmV0ZGV2IHdpbGwgbm90IGJlIGNyZWF0ZWQuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3YjM4NTkyYmM3OGZlNjBiYThhYzVhMDZiNjExNWQ0ZmJmZmNhZWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAxMzozNDoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYwppbmRleCAwMDljNDc3MGE2Zjk1Yi4uNjBmZTVmMDg5NjRmMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMKQEAgLTYwMCw2ICYjNDM7NjAwLDExIEBAIHN0YXRpYyBzMzIgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8odTggKmJ1ZmZlciwgdTMyIGJ1ZmZlcl9sZW4sCiAJdTE2IGllc19sZW47CiAJc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqcmVzID0gKHN0cnVjdCB3aWxjX2Fzc29jX3Jlc3AgKilidWZmZXI7CiAKJiM0MzsJaWYgKGJ1ZmZlcl9sZW4gJmx0OyBzaXplb2YoKnJlcykpIHsKJiM0MzsJCXJldF9jb25uX2luZm8tJmd0O3N0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCXJldF9jb25uX2luZm8tJmd0O3N0YXR1cyA9IGxlMTZfdG9fY3B1KHJlcy0mZ3Q7c3RhdHVzX2NvZGUpOwogCWlmIChyZXRfY29ubl9pbmZvLSZndDtzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykgewogCQlpZXMgPSAmYW1wO2J1ZmZlcltzaXplb2YoKnJlcyldOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM5CgkJCQkJCQlvdXRwdXQ6IDkxCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSB3aWxjMTAwMCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNgLiBJdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3ZlIGFkZGVkIGEgbGVuZ3RoIGNoZWNrIHdpdGhpbiBgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIHZlcmlmeWluZyB0aGF0IHRoZSByZWNlaXZlZCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGB3aWxjX2Fzc29jX3Jlc3BgIHN0cnVjdCBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXJlZmVyZW5jZSBpdC4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLiBQcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcywgbGVhZGluZyB0byBhIG1vcmUgcm9idXN0IGRyaXZlci4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gZ2F1Z2UgdGhlIGltcGFjdC4gVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHRoZSBzY29wZSBhbmQgaG93IGl0IGNhbiBiZSByZXByb2R1Y2VkLiBDYW4gSSBldmVuIHRlc3QgdGhpcyBpbiBteSBzZXR1cD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZXhlcmNpc2VkLiBUaGUgYHdpbGMxMDAwYCBkcml2ZXIgLSBpdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIG1pY3JvY2hpcCwgc28gaXMgdGhpcyBhIHN0YW5kYXJkIG1hYzgwMjExIGRyaXZlciwgb3IgZG9lcyBpdCBkZXBlbmQgb24gdmVyeSBzcGVjaWZpYyBoYXJkd2FyZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGhhdmUgc29tZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIHBlZWsgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEl0IHNob3VsZCBnaXZlIG1lIGNsdWVzIG9uIGhvdyB0byByZXByb2R1Y2UgdGhlIGlzc3VlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTU5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXHRcdFx0XHQgICAgICBzdHJ1Y3Qgd2lsY19jb25uX2luZm8gKnJldF9jb25uX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlx0XHRcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXHUwMDNlYXNzb2NfcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXHRcdFx0XHRcdFx0XHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVx0XHRcdFx0bmV0ZGV2X2Vycih2aWYtXHUwMDNlbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XHRcdFx0XHRcdCAgIFwmIzM0O3dpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVx0XHRcdFx0XHQgICBlcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBXSUxDMTAwMFxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgQWRkIHN1cHBvcnQgZm9yIHRoZSBBdG1lbCBXSUxDMTAwMCA4MDIuMTEgYi9nL24gU29DLlxuICAgNjpcdFx0ICBUaGlzIHByb3ZpZGVzIFdpLUZJIG92ZXIgYW4gU0RJTyBvciBTUEkgaW50ZXJmYWNlLCBhbmRcbiAgIDc6XHRcdCAgaXMgdXN1YWxseSBmb3VuZCBpbiBJb1QgZGV2aWNlcy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0IElFRUUgODAyLjExbiBXaUZpLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBXSUxDMTAwMF9TRElPXG4gIDEyOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdG1lbCBXSUxDMTAwMCBTRElPIChXaUZpIG9ubHkpXCYjMzQ7XG4gIDEzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTQ6XHRcdHNlbGVjdCBXSUxDMTAwMFxuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTRElPIGludGVyZmFjZSBvZiBhZGFwdGVycyB1c2luZ1xuICAxNzpcdFx0ICBXSUxDMTAwMCBjaGlwc2V0LiBUaGUgQXRtZWwgV0lMQzEwMDAgU0RJTyBpcyBhIGZ1bGwgc3BlZWQgaW50ZXJmYWNlLlxuICAxODpcdFx0ICBJdCBtZWV0cyBTRElPIGNhcmQgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDIuMC4gVGhlIGludGVyZmFjZSBzdXBwb3J0c1xuICAxOTpcdFx0ICB0aGUgMS1iaXQvNC1iaXQgU0QgdHJhbnNmZXIgbW9kZSBhdCB0aGUgY2xvY2sgcmFuZ2Ugb2YgMC01MCBNSHouXG4gIDIwOlx0XHQgIFRoZSBob3N0IGNhbiB1c2UgdGhpcyBpbnRlcmZhY2UgdG8gcmVhZCBhbmQgd3JpdGUgZnJvbSBhbnkgcmVnaXN0ZXJcbiAgMjE6XHRcdCAgd2l0aGluIHRoZSBjaGlwIGFzIHdlbGwgYXMgY29uZmlndXJlIHRoZSBXSUxDMTAwMCBmb3IgZGF0YSBETUEuXG4gIDIyOlx0XHQgIFRvIHVzZSB0aGlzIGludGVyZmFjZSwgcGluOSAoU0RJT19TUElfQ0ZHKSBtdXN0IGJlIGdyb3VuZGVkLiBTZWxlY3RcbiAgMjM6XHRcdCAgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBTRElPIGJ1cy5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgV0lMQzEwMDBfU1BJXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdG1lbCBXSUxDMTAwMCBTUEkgKFdpRmkgb25seSlcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTEgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFNQSVxuICAyODpcdFx0c2VsZWN0IFdJTEMxMDAwXG4gIDI5Olx0XHRzZWxlY3QgQ1JDN1xuICAzMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTUEkgaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXG4gIDMzOlx0XHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBoYXMgYSBTZXJpYWwgUGVyaXBoZXJhbFxuICAzNDpcdFx0ICBJbnRlcmZhY2UgKFNQSSkgdGhhdCBvcGVyYXRlcyBhcyBhIFNQSSBzbGF2ZS4gVGhpcyBTUEkgaW50ZXJmYWNlIGNhblxuICAzNTpcdFx0ICBiZSB1c2VkIGZvciBjb250cm9sIGFuZCBmb3Igc2VyaWFsIEkvTyBvZiA4MDIuMTEgZGF0YS4gVGhlIFNQSSBpcyBhXG4gIDM2Olx0XHQgIGZ1bGwtZHVwbGV4IHNsYXZlIHN5bmNocm9ub3VzIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBpcyBhdmFpbGFibGVcbiAgMzc6XHRcdCAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHJlc2V0IHdoZW4gcGluIDkgKFNESU9fU1BJX0NGRykgaXMgdGllZCB0b1xuICAzODpcdFx0ICBWRERJTy4gU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgU1BJIGJ1cy5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgV0lMQzEwMDBfSFdfT09CX0lOVFJcbiAgNDE6XHRcdGJvb2wgXCYjMzQ7V0lMQzEwMDAgb3V0IG9mIGJhbmQgaW50ZXJydXB0XCYjMzQ7XG4gIDQyOlx0XHRkZXBlbmRzIG9uIFdJTEMxMDAwX1NESU9cbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQgc3VwcG9ydCBmb3IgdGhlIFdJTEMxMDAwXG4gIDQ1Olx0XHQgIGNoaXBzZXQuIFRoaXMgT09CIGludGVycnVwdCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgZmFzdGVyIGludGVycnVwdFxuICA0NjpcdFx0ICBtZWNoYW5pc20gZm9yIFNESU8gaG9zdCBjb250cm9sbGVycyB0aGF0IGRvbiYjMzk7dCBzdXBwb3J0IFNESU8gaW50ZXJydXB0LlxuICA0NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gSWYgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGluIHlvdXIgcGxhdGZvcm1cbiAgNDg6XHRcdCAgZG9lc24mIzM5O3Qgc3VwcG9ydCBTRElPIHRpbWUgZGl2aXNpb24gaW50ZXJydXB0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDAKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQXRtZWwgV0lMQzEwMDAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciDigJMgaXQmIzM5O3MgZm9yIHRoZSBBdG1lbCBXSUxDMTAwMCwgYW5kIGl0IHVzZXMgZWl0aGVyIFNESU8gb3IgU1BJLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiBJIGVmZmVjdGl2ZWx5IGZ1enogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRElPIGFuZCBTUEkgZHJpdmVycyBhcmUgbm90b3Jpb3VzbHkgdHJpY2t5IHRvIGZ1enouIFRoZXkgdXN1YWxseSByZXF1aXJlIHNwZWNpZmljIGVtdWxhdGlvbiBvciBiZWluZyBob29rZWQgdXAgdG8gYSB2aXJ0dWFsIGJ1cywgd2hpY2ggaXMgcmFyZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gU3l6a2FsbGVyIGhhcyBzb21lIGV4aXN0aW5nIHN1cHBvcnQgZm9yIGZ1enppbmcgVVNCLCBQQ0ksIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGRpcmVjdCBTRElPIG9yIFNQSSBzdXBwb3J0IHVubGVzcyB0aGVyZSYjMzk7cyBhIGN1c3RvbSBtb2NrIGltcGxlbWVudGF0aW9uLgoKV2FpdCBhIHNlY29uZCwgdGhvdWdo4oCmIFN5emthbGxlciBkb2VzIGhhdmUgdmhjaSAoVVNCKSBhbmQgbWFjODAyMTFfaHdzaW0gKFdpRmkpIHN1cHBvcnQuIEJ1dCB0aGlzIFdJTEMxMDAwIGRyaXZlciBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBjb21tdW5pY2F0aW5nIHZpYSBTRElPIG9yIFNQSS4gU28sIGRvZXMgU3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBTRElPIG9yIFNQSSBkaXJlY3RseT8gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIG5vLCBub3QgaW4gdGhlIGdlbmVyYWwgc2Vuc2UuCgpIbW0sIGJ1dCB3aGF0IGlmIEkgY2FuIHJlYWNoIGl0IHRocm91Z2ggdGhlIG1hYzgwMjExIC8gY2ZnODAyMTEgd2lyZWxlc3Mgc3RhY2s/IFRoZSBkcml2ZXIgKmRvZXMqIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEsIHdoaWNoIGdpdmVzIG1lIHNvbWUgaG9wZS4KCk5vdywgaWYgdGhlIGRyaXZlciBpcyBsb2FkZWQsIGNhbiBJIGdldCBpdCBpbnN0YW50aWF0ZWQ/IFNESU8vU1BJIGRldmljZXMgdHlwaWNhbGx5IHJlcXVpcmUgdGhlIGtlcm5lbCB0byBwcm9iZSB0aGVtIOKAkyB2aWEgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgYm9hcmQgZmlsZXMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHVzZXItc3BhY2UgbWV0aG9kIHRvIGluc3RhbnRpYXRlIGFuIFNESU8vU1BJIGRldmljZSwgSSB3b24mIzM5O3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgYW5kIHRoZXJlZm9yZSwgdGhlIG5ldGRldiB3b24mIzM5O3QgYmUgY3JlYXRlZC4KClNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9zZGlvX2RyaXZlcnxtb2R1bGVfc3BpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDYzPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2lsY19zZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNzItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA3Mzptb2R1bGVfc2Rpb19kcml2ZXIod2lsY19zZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwNj1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgd2lsY19zcGlfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMTQtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzozMTU6bW9kdWxlX3NwaV9kcml2ZXIod2lsY19zcGlfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMTYtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0F0bWVsIFdJTEMxMDAwIFNQSSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBTRElPIGFuZCBTUEkuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgaW4gc3l6a2FsbGVyLiBUaGVyZSYjMzk7cyBubyBidWlsdC1pbiB2aXJ0dWFsIFNESU8gb3IgU1BJIGJ1cyB0aGVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgY29tcGxpY2F0ZXMgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIEkgcG9rZSBzb21ldGhpbmcgdmlhIHN5c2ZzIHRvIGdldCB0aGlzIHRoaW5nIHRvIHJlY29nbml6ZSBhbiBTUEkgZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3QgaG93IGl0IHR5cGljYWxseSB3b3JrczsgaXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aHJvdWdoIERldmljZSBUcmVlIG9yIEFDUEkuCgpXYWl0LCBpc24mIzM5O3QgdGhlcmUgc29tZSBzb3J0IG9mIGBzcGktbW9ja2Agb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBTUEkgZGV2aWNlcz8gTm8sIHRoYXQmIzM5O3Mgbm90IGFwcGxpY2FibGUgaGVyZS4gSSBrbm93IGBtYWM4MDIxMV9od3NpbWAgZXhpc3RzIGZvciBXaUZpLCBidXQgdGhhdCYjMzk7cyBhICpzcGVjaWZpYyogZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KClRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhlIGZ1bmN0aW9uIGB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mb2AgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIGZ1enppbmcgcGF0aCB0byB0aGF0IGNvZGUuIExldCYjMzk7cyB0cmFjZSB0aHJvdWdoIHRoZSBjYWxscyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFuZCBob3cgdG8gdHJpZ2dlciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTU5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXHRcdFx0XHQgICAgICBzdHJ1Y3Qgd2lsY19jb25uX2luZm8gKnJldF9jb25uX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlx0XHRcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXHUwMDNlYXNzb2NfcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXHRcdFx0XHRcdFx0XHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVx0XHRcdFx0bmV0ZGV2X2Vycih2aWYtXHUwMDNlbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XHRcdFx0XHRcdCAgIFwmIzM0O3dpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVx0XHRcdFx0XHQgICBlcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGhvc3RfaW50X3BhcnNlX2Fzc29jX3Jlc3BfaW5mb2AsIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVpbmcgdHJpZ2dlcmVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBzb21ld2hlcmUsIGJ1dCB0aGUgcmVhbCBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIHRoZSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIFNESU8vU1BJIGRldmljZS4gU3BlY2lmaWNhbGx5LCB0aGUgV0lMQzEwMDAuIEFuZCB0aGVyZWluIGxpZXMgdGhlIHByb2JsZW06IFN5emthbGxlciwgbXkgdXN1YWwgdG9vbCwgY2FuJiMzOTt0IGluc3RhbnRpYXRlIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyBhICpwaHlzaWNhbCogU0RJTyBvciBTUEkgYnVzLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIFdJTEMxMDAwIGluIGVpdGhlciBRRU1VIG9yIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4KCk5vdywgaG9sZCBvbi4uLiBpcyB0aGVyZSAqYW55KiB3YXkgdG8gaW5qZWN0IHBhY2tldHMgb3IgdHJpZ2dlciB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBkZXZpY2U/IEkmIzM5O20gZG91YnRmdWwuIEJlY2F1c2UgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGlzbiYjMzk7dCBldmVuIGNhbGxlZCwgdGhlIGRldmljZSYjMzk7cyBgbmV0ZGV2YCB3b24mIzM5O3QgYmUgY3JlYXRlZC4gQW5kIGlmIHRoZSBuZXR3b3JrIGRldmljZSBpc24mIzM5O3QgdGhlcmUsIGBjZmc4MDIxMWAgd29uJiMzOTt0IGtub3cgYWJvdXQgaXQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhpcyBjb2RlIGluIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZXhlY3V0ZS4gVGhhdOKAmXMgdGhlIGNydXggb2YgaXQuCgpTbywgcmVhbGlzdGljYWxseSwgdGhpcyBjb2RlIGlzICpjb21wbGV0ZWx5KiB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBtZWFuaW5nIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB0ZXN0IGl0IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHJldGhpbmsgdGhlIGFwcHJvYWNoIGVudGlyZWx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSYjMzk7cyB0cnVseSBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBXSUxDMTAwMC4uLiBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpbGMxMDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NSUNST0NISVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnOjE0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NSUNST0NISVBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApXHRcdCYjNDM7PSB3aWxjMTAwMC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApICYjNDM7PSB3aWxjMTAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo0OndpbGMxMDAwLW9ianMgOj0gY2ZnODAyMTEubyBuZXRkZXYubyBtb24ubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTUtXHRcdFx0aGlmLm8gd2xhbl9jZmcubyB3bGFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX1dJTEMxMDAwX1NESU8pICYjNDM7PSB3aWxjMTAwMC1zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo4OndpbGMxMDAwLXNkaW8tb2JqcyAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfV0lMQzEwMDBfU1BJKSAmIzQzOz0gd2lsYzEwMDAtc3BpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZToxMTp3aWxjMTAwMC1zcGktb2JqcyAmIzQzOz0gc3BpLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYz0xODQ5PWludCB3aWxjX2NmZzgwMjExX3JlZ2lzdGVyKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jLTE4NTEtXHQvKiBXUEEzL1NBRSBzdXBwb3J0ZWQgb25seSBvbiBXSUxDMTAwMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmM6MTg1MjpcdGlmIChpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYy0xODUzLVx0XHR3aWxjLVx1MDAzZXdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjIyOiNkZWZpbmUgV0lMQzEwMDBfRldfUFJFRklYXHRcdFwmIzM0O2F0bWVsL3dpbGMxMDAwX3dpZmlfZmlybXdhcmUtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtMjMtI2RlZmluZSBfX1dJTEMxMDAwX0ZXKGFwaSlcdFx0V0lMQzEwMDBfRldfUFJFRklYICNhcGkgXCYjMzQ7LmJpblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYz0yMDA9c3RhdGljIGludCB3aWxjX3dsYW5fZ2V0X2Zpcm13YXJlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYzoyMDg6XHRpZiAoaXNfd2lsYzEwMDAod2lsYy1cdTAwM2VjaGlwaWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwOS1cdFx0ZmlybXdhcmUgPSBXSUxDMTAwMF9GVyhXSUxDMTAwMF9BUElfVkVSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtMjE1LVx0bmV0ZGV2X2luZm8oZGV2LCBcJiMzNDtXSUxDJWQgbG9hZGluZyBmaXJtd2FyZSBbJXNdXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjIxNjpcdFx0ICAgIGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/IDEwMDAgOiAzMDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxNy1cdFx0ICAgIGZpcm13YXJlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9NDU2PXN0YXRpYyB2b2lkIHdpbGNfd2xhbl9kZWluaXRpYWxpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY2LVx0aWYgKHdsLVx1MDAzZWluaXRpYWxpemVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDY3Olx0XHRuZXRkZXZfaW5mbyhkZXYsIFwmIzM0O0RlaW5pdGlhbGl6aW5nIHdpbGMxMDAwLi4uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy00NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYzo0ODU6XHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDt3aWxjMTAwMCBkZWluaXRpYWxpemF0aW9uIERvbmVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDg3Olx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7d2lsYzEwMDAgaXMgbm90IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy00ODgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTUwOD1zdGF0aWMgaW50IHdpbGNfd2xhbl9pbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB3aWxjX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy01ODMtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjU4NDpcdFx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O3dpbGMxMDAwIGFscmVhZHkgaW5pdGlhbGl6ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTU4NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9Nzg3PXN0YXRpYyBpbnQgd2lsY19tYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwNi1cdGlmICh3bC1cdTAwM2VvcGVuX2lmY3MgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjgwNzpcdFx0bmV0ZGV2X2RiZyhuZGV2LCBcJiMzNDtEZWluaXRpYWxpemluZyB3aWxjMTAwMFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtODA4LVx0XHR3bC1cdTAwM2VjbG9zZSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTc6I2RlZmluZSBTRElPX01PREFMSUFTIFwmIzM0O3dpbGMxMDAwX3NkaW9cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04MDA9c3RhdGljIGludCB3aWxjX3NkaW9fcmVhZF9pbnQoc3RydWN0IHdpbGMgKndpbGMsIHUzMiAqaW50X3N0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxNy1cdFx0Y21kLmZ1bmN0aW9uID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODE4Olx0XHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxOS1cdFx0XHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9GTEFHX1JFRyA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04MjgtXHRpZiAoc2Rpb19wcml2LVx1MDAzZWlycV9ncGlvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzo4Mjk6XHRcdGlycV9mbGFncyBcdTAwMjY9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/IDB4MWYgOiAweDBmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04NDI9c3RhdGljIGludCB3aWxjX3NkaW9fY2xlYXJfaW50X2V4dChzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODUyOlx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04NTMtXHRcdC8qIHNlbGVjdCBWTU0gdGFibGUgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODk4LVx0XHRjbWQucmF3ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODk5Olx0XHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTkwMC1cdFx0XHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9DTEVBUl9GTEFHX1JFRyA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdpbGNfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA1MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsd2lsYzEwMDBcJiMzNDssIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNTQtXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6MTY6I2RlZmluZSBTUElfTU9EQUxJQVNcdFx0XCYjMzQ7d2lsYzEwMDBfc3BpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTI5ND1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3aWxjX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6Mjk1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCx3aWxjMTAwMFwmIzM0OywgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0yOTYtXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MzAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCB3aWxjX3NwaV9pZFtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjMwMTpcdHsgXCYjMzQ7d2lsYzEwMDBcJiMzNDssIDAgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMDItXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MTIyNz1zdGF0aWMgaW50IHdpbGNfdmFsaWRhdGVfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0xMjQwLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjEyNDE6XHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkgXHUwMDI2XHUwMDI2ICFpc193aWxjMzAwMChjaGlwaWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTI0Mi1cdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtVbmtub3duIGNoaXAgaWQgMHgleFxcblwmIzM0OywgY2hpcGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTUzMD1zdGF0aWMgc3RydWN0IHJ4cV9lbnRyeV90ICp3aWxjX3dsYW5fcnhxX3JlbW92ZShzdHJ1Y3Qgd2lsYyAqd2lsYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NTQ0OnN0YXRpYyBpbnQgY2hpcF9hbGxvd19zbGVlcF93aWxjMTAwMChzdHJ1Y3Qgd2lsYyAqd2lsYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNTQ1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTYzMD1zdGF0aWMgaW50IGNoaXBfYWxsb3dfc2xlZXAoc3RydWN0IHdpbGMgKndpbGMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjYzMjpcdGlmIChpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjYzMzpcdFx0cmV0dXJuIGNoaXBfYWxsb3dfc2xlZXBfd2lsYzEwMDAod2lsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzNC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjM4OnN0YXRpYyBpbnQgY2hpcF93YWtldXBfd2lsYzEwMDAoc3RydWN0IHdpbGMgKndpbGMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz03NjA9c3RhdGljIGludCBjaGlwX3dha2V1cChzdHJ1Y3Qgd2lsYyAqd2lsYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NzYyOlx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NzYzOlx0XHRyZXR1cm4gY2hpcF93YWtldXBfd2lsYzEwMDAod2lsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc2NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTc5Mz1pbnQgaG9zdF93YWtldXBfbm90aWZ5KHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo4MDA6XHR3aWxjLVx1MDAzZWhpZl9mdW5jLVx1MDAzZWhpZl93cml0ZV9yZWcod2lsYywgaXNfd2lsYzEwMDAod2lsYy1cdTAwM2VjaGlwaWQpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODAxLVx0XHRcdFx0XHQgICAgV0lMQzEwMDBfQ09SVFVTX0lOVEVSUlVQVF8yIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTgwNz1pbnQgaG9zdF9zbGVlcF9ub3RpZnkoc3RydWN0IHdpbGMgKndpbGMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy04MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjgxNDpcdHdpbGMtXHUwMDNlaGlmX2Z1bmMtXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy04MTUtXHRcdFx0XHRcdCAgICBXSUxDMTAwMF9DT1JUVVNfSU5URVJSVVBUXzEgOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9ODIxPWludCB3aWxjX3dsYW5faGFuZGxlX3R4cShzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyICp0eHFfY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjk1MTpcdFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTItXHRcdFx0cmV0ID0gZnVuYy1cdTAwM2VoaWZfd3JpdGVfcmVnKHdpbGMsIFdJTENfSE9TVF9WTU1fQ1RMLCAweDIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTU5MT1pbnQgd2lsY19nZXRfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6MTYwMzpcdFx0XHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTYwNC1cdFx0XHRcdHdpbGMtXHUwMDNlY2hpcGlkID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTE3Mzc9aW50IHdpbGNfd2xhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzoxNzYxOlx0XHRpZiAoIWlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSBcdTAwMjZcdTAwMjYgIWlzX3dpbGMzMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYyLVx0XHRcdG5ldGRldl9lcnIoZGV2LCBcJiMzNDtVbnN1cHBvcnRlZCBjaGlwaWQ6ICV4XFxuXCYjMzQ7LCB3aWxjLVx1MDAzZWNoaXBpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaD00MzM9c3RydWN0IHdpbGNfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaC00MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oOjQzNTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfd2lsYzEwMDAodTMyIGlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaC00MzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMgoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgd2Ugc3RhbmQuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIGEgcGh5c2ljYWwgZGV2aWNlLCBhbmQgbm90aGluZyBlbHNlLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIGRldmljZSB3aXRoaW4gdGhlIGtlcm5lbCwgbm9yIGlzIHRoZXJlIGFueSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCYjMzk7cyBhIHByZXR0eSBiaWcgcm9hZGJsb2NrIGZvciBmdXp6aW5nLCByaWdodCBvZmYgdGhlIGJhdC4KCkdpdmVuIHRoaXMsIHRoZSBjb2RlIHdpdGhpbiB0aGlzIGRyaXZlciBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXZSBjYW4mIzM5O3QgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaXQmIzM5O3MgbWVhbnQgdG8gY29udHJvbC4gVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIGF0dGVtcHRpbmcgdG8gZnV6eiB0aGlzIGRyaXZlciBpbiBvdXIgY3VycmVudCBzZXR1cCBpcyBqdXN0IG5vdCBmZWFzaWJsZS4gSSYjMzk7bGwgbmVlZCB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIHB1cnN1aW5nLCBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSBkcml2ZXIgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgd2l0aGluIHRoZSBjb250ZXh0IHdlJiMzOTtyZSB3b3JraW5nIGluLiBXZSBuZWVkIHRvIGZvY3VzIG91ciBlZmZvcnRzIHdoZXJlIHdlIGNhbiBhY3R1YWxseSBnZXQgc29tZSBtZWFuaW5nZnVsIGNvdmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3aWxjMTAwMCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTy9TUEkgd2lyZWxlc3MgZHJpdmVyIGZvciBBdG1lbCBXSUxDMTAwMCBjaGlwcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWVhbmluZyB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2lsYzEwMDAgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8vU1BJIHdpcmVsZXNzIGRyaXZlciBmb3IgQXRtZWwgV0lMQzEwMDAgY2hpcHMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1lYW5pbmcgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjIwLjUzMTM0Mjc3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjI4NjU3MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2lsYzEwMDAgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8vU1BJIHdpcmVsZXNzIGRyaXZlciBmb3IgQXRtZWwgV0lMQzEwMDAgY2hpcHMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1lYW5pbmcgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDoyMC41MzEzNDc2NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjA3MTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3YjM4NTkyYmM3OGZlNjBiYThhYzVhMDZiNjExNWQ0ZmJmZmNhZWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTM6MzQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXFxuaW5kZXggMDA5YzQ3NzBhNmY5NWIuLjYwZmU1ZjA4OTY0ZjM5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xcbkBAIC02MDAsNiArNjAwLDExIEBAIHN0YXRpYyBzMzIgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8odTggKmJ1ZmZlciwgdTMyIGJ1ZmZlcl9sZW4sXFxuIFxcdHUxNiBpZXNfbGVuO1xcbiBcXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcXG4gXFxuK1xcdGlmIChidWZmZXJfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpyZXMpKSB7XFxuK1xcdFxcdHJldF9jb25uX2luZm8tXFx1MDAzZXN0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRyZXRfY29ubl9pbmZvLVxcdTAwM2VzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXMtXFx1MDAzZXN0YXR1c19jb2RlKTtcXG4gXFx0aWYgKHJldF9jb25uX2luZm8tXFx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XFxuIFxcdFxcdGllcyA9IFxcdTAwMjZidWZmZXJbc2l6ZW9mKCpyZXMpXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjAuOTA0MDQ4Mzg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI1NTk0NjUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwN2IzODU5MmJjNzhmZTYwYmE4YWM1YTA2YjYxMTVkNGZiZmZjYWVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTM6MzQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNcbmluZGV4IDAwOWM0NzcwYTZmOTViLi42MGZlNWYwODk2NGYzOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXG5AQCAtNjAwLDYgKzYwMCwxMSBAQCBzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxuIFx0dTE2IGllc19sZW47XG4gXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcbiBcbitcdGlmIChidWZmZXJfbGVuIFx1MDAzYyBzaXplb2YoKnJlcykpIHtcbitcdFx0cmV0X2Nvbm5faW5mby1cdTAwM2VzdGF0dXMgPSBXTEFOX1NUQVRVU19VTlNQRUNJRklFRF9GQUlMVVJFO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHJldF9jb25uX2luZm8tXHUwMDNlc3RhdHVzID0gbGUxNl90b19jcHUocmVzLVx1MDAzZXN0YXR1c19jb2RlKTtcbiBcdGlmIChyZXRfY29ubl9pbmZvLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4gXHRcdGllcyA9IFx1MDAyNmJ1ZmZlcltzaXplb2YoKnJlcyldO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjAuOTA0MDQ5OTI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3NTY2Nzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgd2lsYzEwMDAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY2AuIEl0J3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3ZlIGFkZGVkIGEgbGVuZ3RoIGNoZWNrIHdpdGhpbiBgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgdmVyaWZ5aW5nIHRoYXQgdGhlIHJlY2VpdmVkIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgYHdpbGNfYXNzb2NfcmVzcGAgc3RydWN0IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGl0LiBNYWtlcyBzZW5zZTsgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzLCBsZWFkaW5nIHRvIGEgbW9yZSByb2J1c3QgZHJpdmVyLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gZ2F1Z2UgdGhlIGltcGFjdC4gVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHRoZSBzY29wZSBhbmQgaG93IGl0IGNhbiBiZSByZXByb2R1Y2VkLiBDYW4gSSBldmVuIHRlc3QgdGhpcyBpbiBteSBzZXR1cD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZXhlcmNpc2VkLiBUaGUgYHdpbGMxMDAwYCBkcml2ZXIgLSBpdCByaW5ncyBhIGJlbGwuIEl0J3MgbWljcm9jaGlwLCBzbyBpcyB0aGlzIGEgc3RhbmRhcmQgbWFjODAyMTEgZHJpdmVyLCBvciBkb2VzIGl0IGRlcGVuZCBvbiB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlPyBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBnb2luZyB0byBoYXZlIHNvbWUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUbyBjb25maXJtLCBJIHNob3VsZCBwZWVrIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBJdCBzaG91bGQgZ2l2ZSBtZSBjbHVlcyBvbiBob3cgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzksIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDoyNi4xNzk3MTk5MzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MzQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM9NTczPXN0YXRpYyB2b2lkIGhvc3RfaW50X2dldF9hc3NvY19yZXNfaW5mbyhzdHJ1Y3Qgd2lsY192aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjU5NjpzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHdpbGNfY29ubl9pbmZvICpyZXRfY29ubl9pbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlxcdFxcdFxcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXFx1MDAzZWFzc29jX3Jlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDUtXFx0XFx0XFx0XFx0bmV0ZGV2X2Vycih2aWYtXFx1MDAzZW5kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjY0NjpcXHRcXHRcXHRcXHRcXHQgICBcXFwid2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8oKSByZXR1cm5lZCBlcnJvciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVxcdFxcdFxcdFxcdFxcdCAgIGVycik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjI2LjIzNzY1ODJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0Y29uZmlnIFdJTEMxMDAwXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0aGVscFxcbiAgIDU6XFx0XFx0ICBBZGQgc3VwcG9ydCBmb3IgdGhlIEF0bWVsIFdJTEMxMDAwIDgwMi4xMSBiL2cvbiBTb0MuXFxuICAgNjpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgV2ktRkkgb3ZlciBhbiBTRElPIG9yIFNQSSBpbnRlcmZhY2UsIGFuZFxcbiAgIDc6XFx0XFx0ICBpcyB1c3VhbGx5IGZvdW5kIGluIElvVCBkZXZpY2VzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIFRoaXMgbW9kdWxlIG9ubHkgc3VwcG9ydCBJRUVFIDgwMi4xMW4gV2lGaS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIFdJTEMxMDAwX1NESU9cXG4gIDEyOlxcdFxcdHRyaXN0YXRlIFxcXCJBdG1lbCBXSUxDMTAwMCBTRElPIChXaUZpIG9ubHkpXFxcIlxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMTQ6XFx0XFx0c2VsZWN0IFdJTEMxMDAwXFxuICAxNTpcXHRcXHRoZWxwXFxuICAxNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXFxuICAxNzpcXHRcXHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBTRElPIGlzIGEgZnVsbCBzcGVlZCBpbnRlcmZhY2UuXFxuICAxODpcXHRcXHQgIEl0IG1lZXRzIFNESU8gY2FyZCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMi4wLiBUaGUgaW50ZXJmYWNlIHN1cHBvcnRzXFxuICAxOTpcXHRcXHQgIHRoZSAxLWJpdC80LWJpdCBTRCB0cmFuc2ZlciBtb2RlIGF0IHRoZSBjbG9jayByYW5nZSBvZiAwLTUwIE1Iei5cXG4gIDIwOlxcdFxcdCAgVGhlIGhvc3QgY2FuIHVzZSB0aGlzIGludGVyZmFjZSB0byByZWFkIGFuZCB3cml0ZSBmcm9tIGFueSByZWdpc3RlclxcbiAgMjE6XFx0XFx0ICB3aXRoaW4gdGhlIGNoaXAgYXMgd2VsbCBhcyBjb25maWd1cmUgdGhlIFdJTEMxMDAwIGZvciBkYXRhIERNQS5cXG4gIDIyOlxcdFxcdCAgVG8gdXNlIHRoaXMgaW50ZXJmYWNlLCBwaW45IChTRElPX1NQSV9DRkcpIG11c3QgYmUgZ3JvdW5kZWQuIFNlbGVjdFxcbiAgMjM6XFx0XFx0ICB0aGlzIGlmIHlvdXIgcGxhdGZvcm0gaXMgdXNpbmcgdGhlIFNESU8gYnVzLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgV0lMQzEwMDBfU1BJXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRtZWwgV0lMQzEwMDAgU1BJIChXaUZpIG9ubHkpXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMjg6XFx0XFx0c2VsZWN0IFdJTEMxMDAwXFxuICAyOTpcXHRcXHRzZWxlY3QgQ1JDN1xcbiAgMzA6XFx0XFx0c2VsZWN0IENSQ19JVFVfVFxcbiAgMzE6XFx0XFx0aGVscFxcbiAgMzI6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTUEkgaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXFxuICAzMzpcXHRcXHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBoYXMgYSBTZXJpYWwgUGVyaXBoZXJhbFxcbiAgMzQ6XFx0XFx0ICBJbnRlcmZhY2UgKFNQSSkgdGhhdCBvcGVyYXRlcyBhcyBhIFNQSSBzbGF2ZS4gVGhpcyBTUEkgaW50ZXJmYWNlIGNhblxcbiAgMzU6XFx0XFx0ICBiZSB1c2VkIGZvciBjb250cm9sIGFuZCBmb3Igc2VyaWFsIEkvTyBvZiA4MDIuMTEgZGF0YS4gVGhlIFNQSSBpcyBhXFxuICAzNjpcXHRcXHQgIGZ1bGwtZHVwbGV4IHNsYXZlIHN5bmNocm9ub3VzIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBpcyBhdmFpbGFibGVcXG4gIDM3OlxcdFxcdCAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHJlc2V0IHdoZW4gcGluIDkgKFNESU9fU1BJX0NGRykgaXMgdGllZCB0b1xcbiAgMzg6XFx0XFx0ICBWRERJTy4gU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgU1BJIGJ1cy5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIFdJTEMxMDAwX0hXX09PQl9JTlRSXFxuICA0MTpcXHRcXHRib29sIFxcXCJXSUxDMTAwMCBvdXQgb2YgYmFuZCBpbnRlcnJ1cHRcXFwiXFxuICA0MjpcXHRcXHRkZXBlbmRzIG9uIFdJTEMxMDAwX1NESU9cXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQgc3VwcG9ydCBmb3IgdGhlIFdJTEMxMDAwXFxuICA0NTpcXHRcXHQgIGNoaXBzZXQuIFRoaXMgT09CIGludGVycnVwdCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgZmFzdGVyIGludGVycnVwdFxcbiAgNDY6XFx0XFx0ICBtZWNoYW5pc20gZm9yIFNESU8gaG9zdCBjb250cm9sbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgU0RJTyBpbnRlcnJ1cHQuXFxuICA0NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBJZiB0aGUgU0RJTyBob3N0IGNvbnRyb2xsZXIgaW4geW91ciBwbGF0Zm9ybVxcbiAgNDg6XFx0XFx0ICBkb2Vzbid0IHN1cHBvcnQgU0RJTyB0aW1lIGRpdmlzaW9uIGludGVycnVwdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjYuMjM3NzY0ODdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzMwOTU5NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEF0bWVsIFdJTEMxMDAwIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIOKAkyBpdCdzIGZvciB0aGUgQXRtZWwgV0lMQzEwMDAsIGFuZCBpdCB1c2VzIGVpdGhlciBTRElPIG9yIFNQSS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gU0RJTyBhbmQgU1BJIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IHRyaWNreSB0byBmdXp6LiBUaGV5IHVzdWFsbHkgcmVxdWlyZSBzcGVjaWZpYyBlbXVsYXRpb24gb3IgYmVpbmcgaG9va2VkIHVwIHRvIGEgdmlydHVhbCBidXMsIHdoaWNoIGlzIHJhcmVseSBzdHJhaWdodGZvcndhcmQuIFN5emthbGxlciBoYXMgc29tZSBleGlzdGluZyBzdXBwb3J0IGZvciBmdXp6aW5nIFVTQiwgUENJLCBhbmQgYSBmZXcgb3RoZXJzLCBidXQgSSBkb24ndCByZWNhbGwgc2VlaW5nIGRpcmVjdCBTRElPIG9yIFNQSSBzdXBwb3J0IHVubGVzcyB0aGVyZSdzIGEgY3VzdG9tIG1vY2sgaW1wbGVtZW50YXRpb24uXG5cbldhaXQgYSBzZWNvbmQsIHRob3VnaOKApiBTeXprYWxsZXIgZG9lcyBoYXZlIHZoY2kgKFVTQikgYW5kIG1hYzgwMjExX2h3c2ltIChXaUZpKSBzdXBwb3J0LiBCdXQgdGhpcyBXSUxDMTAwMCBkcml2ZXIgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgY29tbXVuaWNhdGluZyB2aWEgU0RJTyBvciBTUEkuIFNvLCBkb2VzIFN5emthbGxlciBhY3R1YWxseSAqZnV6eiogU0RJTyBvciBTUEkgZGlyZWN0bHk/IE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyBubywgbm90IGluIHRoZSBnZW5lcmFsIHNlbnNlLlxuXG5IbW0sIGJ1dCB3aGF0IGlmIEkgY2FuIHJlYWNoIGl0IHRocm91Z2ggdGhlIG1hYzgwMjExIC8gY2ZnODAyMTEgd2lyZWxlc3Mgc3RhY2s/IFRoZSBkcml2ZXIgKmRvZXMqIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEsIHdoaWNoIGdpdmVzIG1lIHNvbWUgaG9wZS5cblxuTm93LCBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgY2FuIEkgZ2V0IGl0IGluc3RhbnRpYXRlZD8gU0RJTy9TUEkgZGV2aWNlcyB0eXBpY2FsbHkgcmVxdWlyZSB0aGUga2VybmVsIHRvIHByb2JlIHRoZW0g4oCTIHZpYSBhIGRldmljZSB0cmVlLCBBQ1BJLCBvciBib2FyZCBmaWxlcy4gVW5sZXNzIHRoZXJlJ3MgYSB1c2VyLXNwYWNlIG1ldGhvZCB0byBpbnN0YW50aWF0ZSBhbiBTRElPL1NQSSBkZXZpY2UsIEkgd29uJ3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBhbmQgdGhlcmVmb3JlLCB0aGUgbmV0ZGV2IHdvbid0IGJlIGNyZWF0ZWQuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjM0Ljk2ODcyNjY5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTczOTg5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3NkaW9fZHJpdmVyfG1vZHVsZV9zcGlfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDYzPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2lsY19zZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtMTA3Mi19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA3Mzptb2R1bGVfc2Rpb19kcml2ZXIod2lsY19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xMDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwNj1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgd2lsY19zcGlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jLTMxNC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzozMTU6bW9kdWxlX3NwaV9kcml2ZXIod2lsY19zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMzE2LU1PRFVMRV9ERVNDUklQVElPTihcXFwiQXRtZWwgV0lMQzEwMDAgU1BJIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDozNS4wODYxMzAzODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzEwMjc4ODAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBkZWFsaW5nIHdpdGggU0RJTyBhbmQgU1BJLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHBvdGVudGlhbCBmb3IgaXNzdWVzIGluIHN5emthbGxlci4gVGhlcmUncyBubyBidWlsdC1pbiB2aXJ0dWFsIFNESU8gb3IgU1BJIGJ1cyB0aGVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgY29tcGxpY2F0ZXMgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIEkgcG9rZSBzb21ldGhpbmcgdmlhIHN5c2ZzIHRvIGdldCB0aGlzIHRoaW5nIHRvIHJlY29nbml6ZSBhbiBTUEkgZGV2aWNlPyBObywgdGhhdCdzIG5vdCBob3cgaXQgdHlwaWNhbGx5IHdvcmtzOyBpdCdzIGFsbW9zdCBhbHdheXMgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLlxuXG5XYWl0LCBpc24ndCB0aGVyZSBzb21lIHNvcnQgb2YgYHNwaS1tb2NrYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHVwIFNQSSBkZXZpY2VzPyBObywgdGhhdCdzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cyBmb3IgV2lGaSwgYnV0IHRoYXQncyBhICpzcGVjaWZpYyogZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGUgZnVuY3Rpb24gYHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvYCBpcyByZWFjaGFibGUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhIHByYWN0aWNhbCBmdXp6aW5nIHBhdGggdG8gdGhhdCBjb2RlLiBMZXQncyB0cmFjZSB0aHJvdWdoIHRoZSBjYWxscyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFuZCBob3cgdG8gdHJpZ2dlciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDo0OC4xODg5MjA5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMTk4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNTk3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB3aWxjX2Nvbm5faW5mbyAqcmV0X2Nvbm5faW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYz02MjM9c3RhdGljIGlubGluZSB2b2lkIGhvc3RfaW50X3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyhzdHJ1Y3Qgd2lsY192aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjY0MTpcXHRcXHRcXHRlcnIgPSB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyhoaWZfZHJ2LVxcdTAwM2Vhc3NvY19yZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGFzc29jX3Jlc3BfaW5mb19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVxcdFxcdFxcdFxcdG5ldGRldl9lcnIodmlmLVxcdTAwM2VuZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XFx0XFx0XFx0XFx0XFx0ICAgXFxcIndpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0Ny1cXHRcXHRcXHRcXHRcXHQgICBlcnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDo0OC40MjIxMjM4MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MzQ4NDgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uLCBgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvYCwgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaW5nIHRyaWdnZXJlZC4gSXQncyBjYWxsZWQgZnJvbSBzb21ld2hlcmUsIGJ1dCB0aGUgcmVhbCBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIHRoZSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIFNESU8vU1BJIGRldmljZS4gU3BlY2lmaWNhbGx5LCB0aGUgV0lMQzEwMDAuIEFuZCB0aGVyZWluIGxpZXMgdGhlIHByb2JsZW06IFN5emthbGxlciwgbXkgdXN1YWwgdG9vbCwgY2FuJ3QgaW5zdGFudGlhdGUgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIGEgKnBoeXNpY2FsKiBTRElPIG9yIFNQSSBidXMuIFRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBXSUxDMTAwMCBpbiBlaXRoZXIgUUVNVSBvciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cbk5vdywgaG9sZCBvbi4uLiBpcyB0aGVyZSAqYW55KiB3YXkgdG8gaW5qZWN0IHBhY2tldHMgb3IgdHJpZ2dlciB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBkZXZpY2U/IEknbSBkb3VidGZ1bC4gQmVjYXVzZSBpZiB0aGUgcHJvYmUgZnVuY3Rpb24gaXNuJ3QgZXZlbiBjYWxsZWQsIHRoZSBkZXZpY2UncyBgbmV0ZGV2YCB3b24ndCBiZSBjcmVhdGVkLiBBbmQgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIGlzbid0IHRoZXJlLCBgY2ZnODAyMTFgIHdvbid0IGtub3cgYWJvdXQgaXQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhpcyBjb2RlIGluIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZXhlY3V0ZS4gVGhhdOKAmXMgdGhlIGNydXggb2YgaXQuXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGNvZGUgaXMgKmNvbXBsZXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG1lYW5pbmcgSSdtIGdvaW5nIHRvIGhhdmUgdG8gdGVzdCBpdCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBvciByZXRoaW5rIHRoZSBhcHByb2FjaCBlbnRpcmVseS4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUncyB0cnVseSBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBXSUxDMTAwMC4uLiBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6NTQuNjY1NjExMTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE3OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3aWxjMTAwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01JQ1JPQ0hJUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NSUNST0NISVBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApXFx0XFx0Kz0gd2lsYzEwMDAvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dJTEMxMDAwKSArPSB3aWxjMTAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjQ6d2lsYzEwMDAtb2JqcyA6PSBjZmc4MDIxMS5vIG5ldGRldi5vIG1vbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtNS1cXHRcXHRcXHRoaWYubyB3bGFuX2NmZy5vIHdsYW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19XSUxDMTAwMF9TRElPKSArPSB3aWxjMTAwMC1zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGU6ODp3aWxjMTAwMC1zZGlvLW9ianMgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19XSUxDMTAwMF9TUEkpICs9IHdpbGMxMDAwLXNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjExOndpbGMxMDAwLXNwaS1vYmpzICs9IHNwaS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYz0xODQ5PWludCB3aWxjX2NmZzgwMjExX3JlZ2lzdGVyKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMtMTg1MS1cXHQvKiBXUEEzL1NBRSBzdXBwb3J0ZWQgb25seSBvbiBXSUxDMTAwMCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jOjE4NTI6XFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMtMTg1My1cXHRcXHR3aWxjLVxcdTAwM2V3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NBRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjI6I2RlZmluZSBXSUxDMTAwMF9GV19QUkVGSVhcXHRcXHRcXFwiYXRtZWwvd2lsYzEwMDBfd2lmaV9maXJtd2FyZS1cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIzLSNkZWZpbmUgX19XSUxDMTAwMF9GVyhhcGkpXFx0XFx0V0lMQzEwMDBfRldfUFJFRklYICNhcGkgXFxcIi5iaW5cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9MjAwPXN0YXRpYyBpbnQgd2lsY193bGFuX2dldF9maXJtd2FyZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjA4OlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMDktXFx0XFx0ZmlybXdhcmUgPSBXSUxDMTAwMF9GVyhXSUxDMTAwMF9BUElfVkVSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMTUtXFx0bmV0ZGV2X2luZm8oZGV2LCBcXFwiV0lMQyVkIGxvYWRpbmcgZmlybXdhcmUgWyVzXVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjE2OlxcdFxcdCAgICBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID8gMTAwMCA6IDMwMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxNy1cXHRcXHQgICAgZmlybXdhcmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTQ1Nj1zdGF0aWMgdm9pZCB3aWxjX3dsYW5fZGVpbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY2LVxcdGlmICh3bC1cXHUwMDNlaW5pdGlhbGl6ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDY3OlxcdFxcdG5ldGRldl9pbmZvKGRldiwgXFxcIkRlaW5pdGlhbGl6aW5nIHdpbGMxMDAwLi4uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDg1OlxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwid2lsYzEwMDAgZGVpbml0aWFsaXphdGlvbiBEb25lXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjQ4NzpcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIndpbGMxMDAwIGlzIG5vdCBpbml0aWFsaXplZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9NTA4PXN0YXRpYyBpbnQgd2lsY193bGFuX2luaXRpYWxpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHdpbGNfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNTgzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjU4NDpcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIndpbGMxMDAwIGFscmVhZHkgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy01ODUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTc4Nz1zdGF0aWMgaW50IHdpbGNfbWFjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwNi1cXHRpZiAod2wtXFx1MDAzZW9wZW5faWZjcyA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjgwNzpcXHRcXHRuZXRkZXZfZGJnKG5kZXYsIFxcXCJEZWluaXRpYWxpemluZyB3aWxjMTAwMFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwOC1cXHRcXHR3bC1cXHUwMDNlY2xvc2UgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjE3OiNkZWZpbmUgU0RJT19NT0RBTElBUyBcXFwid2lsYzEwMDBfc2Rpb1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04MDA9c3RhdGljIGludCB3aWxjX3NkaW9fcmVhZF9pbnQoc3RydWN0IHdpbGMgKndpbGMsIHUzMiAqaW50X3N0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODE3LVxcdFxcdGNtZC5mdW5jdGlvbiA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzo4MTg6XFx0XFx0Y21kLmFkZHJlc3MgPSBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxOS1cXHRcXHRcXHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9GTEFHX1JFRyA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgyOC1cXHRpZiAoc2Rpb19wcml2LVxcdTAwM2VpcnFfZ3BpbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjgyOTpcXHRcXHRpcnFfZmxhZ3MgXFx1MDAyNj0gaXNfd2lsYzEwMDAod2lsYy1cXHUwMDNlY2hpcGlkKSA/IDB4MWYgOiAweDBmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04NDI9c3RhdGljIGludCB3aWxjX3NkaW9fY2xlYXJfaW50X2V4dChzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODUyOlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04NTMtXFx0XFx0Lyogc2VsZWN0IFZNTSB0YWJsZSAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTg5OC1cXHRcXHRjbWQucmF3ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjg5OTpcXHRcXHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtOTAwLVxcdFxcdFxcdCAgICAgIFdJTEMxMDAwX1NESU9fSVJRX0NMRUFSX0ZMQUdfUkVHIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM9MTA1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3aWxjX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzoxMDUzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLHdpbGMxMDAwXFxcIiwgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNTQtXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjE2OiNkZWZpbmUgU1BJX01PREFMSUFTXFx0XFx0XFxcIndpbGMxMDAwX3NwaVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9Mjk0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdpbGNfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6Mjk1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLHdpbGMxMDAwXFxcIiwgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMjk2LVxcdHsgLyogc2VudGluZWwgKi8gfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgd2lsY19zcGlfaWRbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6MzAxOlxcdHsgXFxcIndpbGMxMDAwXFxcIiwgMCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMDItXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MTIyNz1zdGF0aWMgaW50IHdpbGNfdmFsaWRhdGVfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jLTEyNDAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzoxMjQxOlxcdGlmICghaXNfd2lsYzEwMDAoY2hpcGlkKSBcXHUwMDI2XFx1MDAyNiAhaXNfd2lsYzMwMDAoY2hpcGlkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0xMjQyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiVW5rbm93biBjaGlwIGlkIDB4JXhcXFxcblxcXCIsIGNoaXBpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTUzMD1zdGF0aWMgc3RydWN0IHJ4cV9lbnRyeV90ICp3aWxjX3dsYW5fcnhxX3JlbW92ZShzdHJ1Y3Qgd2lsYyAqd2lsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NTQ0OnN0YXRpYyBpbnQgY2hpcF9hbGxvd19zbGVlcF93aWxjMTAwMChzdHJ1Y3Qgd2lsYyAqd2lsYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTU0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTYzMD1zdGF0aWMgaW50IGNoaXBfYWxsb3dfc2xlZXAoc3RydWN0IHdpbGMgKndpbGMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy02MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjMyOlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjMzOlxcdFxcdHJldHVybiBjaGlwX2FsbG93X3NsZWVwX3dpbGMxMDAwKHdpbGMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNjM0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjM4OnN0YXRpYyBpbnQgY2hpcF93YWtldXBfd2lsYzEwMDAoc3RydWN0IHdpbGMgKndpbGMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz03NjA9c3RhdGljIGludCBjaGlwX3dha2V1cChzdHJ1Y3Qgd2lsYyAqd2lsYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo3NjI6XFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo3NjM6XFx0XFx0cmV0dXJuIGNoaXBfd2FrZXVwX3dpbGMxMDAwKHdpbGMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzY0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9NzkzPWludCBob3N0X3dha2V1cF9ub3RpZnkoc3RydWN0IHdpbGMgKndpbGMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjgwMDpcXHR3aWxjLVxcdTAwM2VoaWZfZnVuYy1cXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTgwMS1cXHRcXHRcXHRcXHRcXHQgICAgV0lMQzEwMDBfQ09SVFVTX0lOVEVSUlVQVF8yIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9ODA3PWludCBob3N0X3NsZWVwX25vdGlmeShzdHJ1Y3Qgd2lsYyAqd2lsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6ODE0OlxcdHdpbGMtXFx1MDAzZWhpZl9mdW5jLVxcdTAwM2VoaWZfd3JpdGVfcmVnKHdpbGMsIGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODE1LVxcdFxcdFxcdFxcdFxcdCAgICBXSUxDMTAwMF9DT1JUVVNfSU5URVJSVVBUXzEgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz04MjE9aW50IHdpbGNfd2xhbl9oYW5kbGVfdHhxKHN0cnVjdCB3aWxjICp3aWxjLCB1MzIgKnR4cV9jb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtOTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6OTUxOlxcdFxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTItXFx0XFx0XFx0cmV0ID0gZnVuYy1cXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBXSUxDX0hPU1RfVk1NX0NUTCwgMHgyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTU5MT1pbnQgd2lsY19nZXRfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6MTYwMzpcXHRcXHRcXHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTE2MDQtXFx0XFx0XFx0XFx0d2lsYy1cXHUwMDNlY2hpcGlkID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTczNz1pbnQgd2lsY193bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTc2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjE3NjE6XFx0XFx0aWYgKCFpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpIFxcdTAwMjZcXHUwMDI2ICFpc193aWxjMzAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYyLVxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiVW5zdXBwb3J0ZWQgY2hpcGlkOiAleFxcXFxuXFxcIiwgd2lsYy1cXHUwMDNlY2hpcGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmg9NDMzPXN0cnVjdCB3aWxjX3ZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oLTQzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oOjQzNTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfd2lsYzEwMDAodTMyIGlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmgtNDM2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6NTQuNzI5Nzk2MjUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MzAxNzI4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIGRyaXZlciwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoZXJlIHdlIHN0YW5kLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBhIHBoeXNpY2FsIGRldmljZSwgYW5kIG5vdGhpbmcgZWxzZS4gVGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIGRldmljZSB3aXRoaW4gdGhlIGtlcm5lbCwgbm9yIGlzIHRoZXJlIGFueSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCdzIGEgcHJldHR5IGJpZyByb2FkYmxvY2sgZm9yIGZ1enppbmcsIHJpZ2h0IG9mZiB0aGUgYmF0LlxuXG5HaXZlbiB0aGlzLCB0aGUgY29kZSB3aXRoaW4gdGhpcyBkcml2ZXIgaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UgY2FuJ3QgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaXQncyBtZWFudCB0byBjb250cm9sLiBUaGVyZWZvcmUsIGZyb20gYSBwcmFjdGljYWwgc3RhbmRwb2ludCwgYXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgZHJpdmVyIGluIG91ciBjdXJyZW50IHNldHVwIGlzIGp1c3Qgbm90IGZlYXNpYmxlLiBJJ2xsIG5lZWQgdG8gbWFyayB0aGlzIGFzIG5vdCB3b3J0aCBwdXJzdWluZywgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSBkcml2ZXIgdGhhdCdzIGluYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNvbnRleHQgd2UncmUgd29ya2luZyBpbi4gV2UgbmVlZCB0byBmb2N1cyBvdXIgZWZmb3J0cyB3aGVyZSB3ZSBjYW4gYWN0dWFsbHkgZ2V0IHNvbWUgbWVhbmluZ2Z1bCBjb3ZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDIsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzU6MDMuMTU5OTcxNTQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow82dpx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 13:11:25 +0000 UTC FinishedAt: 2026-07-14 13:35:04 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3aWxjMTAwMCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTy9TUEkgd2lyZWxlc3MgZHJpdmVyIGZvciBBdG1lbCBXSUxDMTAwMCBjaGlwcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWVhbmluZyB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDdiMzg1OTJiYzc4ZmU2MGJhOGFjNWEwNmI2MTE1ZDRmYmZmY2FlY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEzOjM0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xuaW5kZXggMDA5YzQ3NzBhNmY5NWIuLjYwZmU1ZjA4OTY0ZjM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNcbkBAIC02MDAsNiAmIzQzOzYwMCwxMSBAQCBzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxuIFx0dTE2IGllc19sZW47XG4gXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcbiBcbiYjNDM7XHRpZiAoYnVmZmVyX2xlbiBcdTAwM2Mgc2l6ZW9mKCpyZXMpKSB7XG4mIzQzO1x0XHRyZXRfY29ubl9pbmZvLVx1MDAzZXN0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0X2Nvbm5faW5mby1cdTAwM2VzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXMtXHUwMDNlc3RhdHVzX2NvZGUpO1xuIFx0aWYgKHJldF9jb25uX2luZm8tXHUwMDNlc3RhdHVzID09IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiBcdFx0aWVzID0gXHUwMDI2YnVmZmVyW3NpemVvZigqcmVzKV07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTM6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gd2lsbCBub3QgYmUgY2FsbGVkIGFuZCB0aGUgbmV0ZGV2IHdpbGwgbm90IGJlIGNyZWF0ZWQuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA3YjM4NTkyYmM3OGZlNjBiYThhYzVhMDZiNjExNWQ0ZmJmZmNhZWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAxMzozNDoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYwppbmRleCAwMDljNDc3MGE2Zjk1Yi4uNjBmZTVmMDg5NjRmMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMKQEAgLTYwMCw2ICYjNDM7NjAwLDExIEBAIHN0YXRpYyBzMzIgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8odTggKmJ1ZmZlciwgdTMyIGJ1ZmZlcl9sZW4sCiAJdTE2IGllc19sZW47CiAJc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqcmVzID0gKHN0cnVjdCB3aWxjX2Fzc29jX3Jlc3AgKilidWZmZXI7CiAKJiM0MzsJaWYgKGJ1ZmZlcl9sZW4gJmx0OyBzaXplb2YoKnJlcykpIHsKJiM0MzsJCXJldF9jb25uX2luZm8tJmd0O3N0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwogCXJldF9jb25uX2luZm8tJmd0O3N0YXR1cyA9IGxlMTZfdG9fY3B1KHJlcy0mZ3Q7c3RhdHVzX2NvZGUpOwogCWlmIChyZXRfY29ubl9pbmZvLSZndDtzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykgewogCQlpZXMgPSAmYW1wO2J1ZmZlcltzaXplb2YoKnJlcyldOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM5CgkJCQkJCQlvdXRwdXQ6IDkxCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSB3aWxjMTAwMCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNgLiBJdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ6IHRoZXkmIzM5O3ZlIGFkZGVkIGEgbGVuZ3RoIGNoZWNrIHdpdGhpbiBgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIHZlcmlmeWluZyB0aGF0IHRoZSByZWNlaXZlZCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGB3aWxjX2Fzc29jX3Jlc3BgIHN0cnVjdCBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXJlZmVyZW5jZSBpdC4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nLiBQcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcywgbGVhZGluZyB0byBhIG1vcmUgcm9idXN0IGRyaXZlci4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gZ2F1Z2UgdGhlIGltcGFjdC4gVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHRoZSBzY29wZSBhbmQgaG93IGl0IGNhbiBiZSByZXByb2R1Y2VkLiBDYW4gSSBldmVuIHRlc3QgdGhpcyBpbiBteSBzZXR1cD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZXhlcmNpc2VkLiBUaGUgYHdpbGMxMDAwYCBkcml2ZXIgLSBpdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIG1pY3JvY2hpcCwgc28gaXMgdGhpcyBhIHN0YW5kYXJkIG1hYzgwMjExIGRyaXZlciwgb3IgZG9lcyBpdCBkZXBlbmQgb24gdmVyeSBzcGVjaWZpYyBoYXJkd2FyZT8gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGhhdmUgc29tZSBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIFRvIGNvbmZpcm0sIEkgc2hvdWxkIHBlZWsgYXQgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9LY29uZmlnYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEl0IHNob3VsZCBnaXZlIG1lIGNsdWVzIG9uIGhvdyB0byByZXByb2R1Y2UgdGhlIGlzc3VlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTU5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXHRcdFx0XHQgICAgICBzdHJ1Y3Qgd2lsY19jb25uX2luZm8gKnJldF9jb25uX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlx0XHRcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXHUwMDNlYXNzb2NfcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXHRcdFx0XHRcdFx0XHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVx0XHRcdFx0bmV0ZGV2X2Vycih2aWYtXHUwMDNlbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XHRcdFx0XHRcdCAgIFwmIzM0O3dpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVx0XHRcdFx0XHQgICBlcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBXSUxDMTAwMFxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdGhlbHBcbiAgIDU6XHRcdCAgQWRkIHN1cHBvcnQgZm9yIHRoZSBBdG1lbCBXSUxDMTAwMCA4MDIuMTEgYi9nL24gU29DLlxuICAgNjpcdFx0ICBUaGlzIHByb3ZpZGVzIFdpLUZJIG92ZXIgYW4gU0RJTyBvciBTUEkgaW50ZXJmYWNlLCBhbmRcbiAgIDc6XHRcdCAgaXMgdXN1YWxseSBmb3VuZCBpbiBJb1QgZGV2aWNlcy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgVGhpcyBtb2R1bGUgb25seSBzdXBwb3J0IElFRUUgODAyLjExbiBXaUZpLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBXSUxDMTAwMF9TRElPXG4gIDEyOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdG1lbCBXSUxDMTAwMCBTRElPIChXaUZpIG9ubHkpXCYjMzQ7XG4gIDEzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTQ6XHRcdHNlbGVjdCBXSUxDMTAwMFxuICAxNTpcdFx0aGVscFxuICAxNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTRElPIGludGVyZmFjZSBvZiBhZGFwdGVycyB1c2luZ1xuICAxNzpcdFx0ICBXSUxDMTAwMCBjaGlwc2V0LiBUaGUgQXRtZWwgV0lMQzEwMDAgU0RJTyBpcyBhIGZ1bGwgc3BlZWQgaW50ZXJmYWNlLlxuICAxODpcdFx0ICBJdCBtZWV0cyBTRElPIGNhcmQgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDIuMC4gVGhlIGludGVyZmFjZSBzdXBwb3J0c1xuICAxOTpcdFx0ICB0aGUgMS1iaXQvNC1iaXQgU0QgdHJhbnNmZXIgbW9kZSBhdCB0aGUgY2xvY2sgcmFuZ2Ugb2YgMC01MCBNSHouXG4gIDIwOlx0XHQgIFRoZSBob3N0IGNhbiB1c2UgdGhpcyBpbnRlcmZhY2UgdG8gcmVhZCBhbmQgd3JpdGUgZnJvbSBhbnkgcmVnaXN0ZXJcbiAgMjE6XHRcdCAgd2l0aGluIHRoZSBjaGlwIGFzIHdlbGwgYXMgY29uZmlndXJlIHRoZSBXSUxDMTAwMCBmb3IgZGF0YSBETUEuXG4gIDIyOlx0XHQgIFRvIHVzZSB0aGlzIGludGVyZmFjZSwgcGluOSAoU0RJT19TUElfQ0ZHKSBtdXN0IGJlIGdyb3VuZGVkLiBTZWxlY3RcbiAgMjM6XHRcdCAgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBTRElPIGJ1cy5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgV0lMQzEwMDBfU1BJXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdG1lbCBXSUxDMTAwMCBTUEkgKFdpRmkgb25seSlcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTEgXHUwMDI2XHUwMDI2IElORVQgXHUwMDI2XHUwMDI2IFNQSVxuICAyODpcdFx0c2VsZWN0IFdJTEMxMDAwXG4gIDI5Olx0XHRzZWxlY3QgQ1JDN1xuICAzMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTUEkgaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXG4gIDMzOlx0XHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBoYXMgYSBTZXJpYWwgUGVyaXBoZXJhbFxuICAzNDpcdFx0ICBJbnRlcmZhY2UgKFNQSSkgdGhhdCBvcGVyYXRlcyBhcyBhIFNQSSBzbGF2ZS4gVGhpcyBTUEkgaW50ZXJmYWNlIGNhblxuICAzNTpcdFx0ICBiZSB1c2VkIGZvciBjb250cm9sIGFuZCBmb3Igc2VyaWFsIEkvTyBvZiA4MDIuMTEgZGF0YS4gVGhlIFNQSSBpcyBhXG4gIDM2Olx0XHQgIGZ1bGwtZHVwbGV4IHNsYXZlIHN5bmNocm9ub3VzIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBpcyBhdmFpbGFibGVcbiAgMzc6XHRcdCAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHJlc2V0IHdoZW4gcGluIDkgKFNESU9fU1BJX0NGRykgaXMgdGllZCB0b1xuICAzODpcdFx0ICBWRERJTy4gU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgU1BJIGJ1cy5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgV0lMQzEwMDBfSFdfT09CX0lOVFJcbiAgNDE6XHRcdGJvb2wgXCYjMzQ7V0lMQzEwMDAgb3V0IG9mIGJhbmQgaW50ZXJydXB0XCYjMzQ7XG4gIDQyOlx0XHRkZXBlbmRzIG9uIFdJTEMxMDAwX1NESU9cbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQgc3VwcG9ydCBmb3IgdGhlIFdJTEMxMDAwXG4gIDQ1Olx0XHQgIGNoaXBzZXQuIFRoaXMgT09CIGludGVycnVwdCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgZmFzdGVyIGludGVycnVwdFxuICA0NjpcdFx0ICBtZWNoYW5pc20gZm9yIFNESU8gaG9zdCBjb250cm9sbGVycyB0aGF0IGRvbiYjMzk7dCBzdXBwb3J0IFNESU8gaW50ZXJydXB0LlxuICA0NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gSWYgdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGluIHlvdXIgcGxhdGZvcm1cbiAgNDg6XHRcdCAgZG9lc24mIzM5O3Qgc3VwcG9ydCBTRElPIHRpbWUgZGl2aXNpb24gaW50ZXJydXB0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDAKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQXRtZWwgV0lMQzEwMDAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciDigJMgaXQmIzM5O3MgZm9yIHRoZSBBdG1lbCBXSUxDMTAwMCwgYW5kIGl0IHVzZXMgZWl0aGVyIFNESU8gb3IgU1BJLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiBJIGVmZmVjdGl2ZWx5IGZ1enogdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRElPIGFuZCBTUEkgZHJpdmVycyBhcmUgbm90b3Jpb3VzbHkgdHJpY2t5IHRvIGZ1enouIFRoZXkgdXN1YWxseSByZXF1aXJlIHNwZWNpZmljIGVtdWxhdGlvbiBvciBiZWluZyBob29rZWQgdXAgdG8gYSB2aXJ0dWFsIGJ1cywgd2hpY2ggaXMgcmFyZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gU3l6a2FsbGVyIGhhcyBzb21lIGV4aXN0aW5nIHN1cHBvcnQgZm9yIGZ1enppbmcgVVNCLCBQQ0ksIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGRpcmVjdCBTRElPIG9yIFNQSSBzdXBwb3J0IHVubGVzcyB0aGVyZSYjMzk7cyBhIGN1c3RvbSBtb2NrIGltcGxlbWVudGF0aW9uLgoKV2FpdCBhIHNlY29uZCwgdGhvdWdo4oCmIFN5emthbGxlciBkb2VzIGhhdmUgdmhjaSAoVVNCKSBhbmQgbWFjODAyMTFfaHdzaW0gKFdpRmkpIHN1cHBvcnQuIEJ1dCB0aGlzIFdJTEMxMDAwIGRyaXZlciBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBjb21tdW5pY2F0aW5nIHZpYSBTRElPIG9yIFNQSS4gU28sIGRvZXMgU3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6KiBTRElPIG9yIFNQSSBkaXJlY3RseT8gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIG5vLCBub3QgaW4gdGhlIGdlbmVyYWwgc2Vuc2UuCgpIbW0sIGJ1dCB3aGF0IGlmIEkgY2FuIHJlYWNoIGl0IHRocm91Z2ggdGhlIG1hYzgwMjExIC8gY2ZnODAyMTEgd2lyZWxlc3Mgc3RhY2s/IFRoZSBkcml2ZXIgKmRvZXMqIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEsIHdoaWNoIGdpdmVzIG1lIHNvbWUgaG9wZS4KCk5vdywgaWYgdGhlIGRyaXZlciBpcyBsb2FkZWQsIGNhbiBJIGdldCBpdCBpbnN0YW50aWF0ZWQ/IFNESU8vU1BJIGRldmljZXMgdHlwaWNhbGx5IHJlcXVpcmUgdGhlIGtlcm5lbCB0byBwcm9iZSB0aGVtIOKAkyB2aWEgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgYm9hcmQgZmlsZXMuIFVubGVzcyB0aGVyZSYjMzk7cyBhIHVzZXItc3BhY2UgbWV0aG9kIHRvIGluc3RhbnRpYXRlIGFuIFNESU8vU1BJIGRldmljZSwgSSB3b24mIzM5O3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBkcml2ZXImIzM5O3MgYHByb2JlYCBmdW5jdGlvbiwgYW5kIHRoZXJlZm9yZSwgdGhlIG5ldGRldiB3b24mIzM5O3QgYmUgY3JlYXRlZC4KClNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9zZGlvX2RyaXZlcnxtb2R1bGVfc3BpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDYzPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2lsY19zZGlvX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNzItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA3Mzptb2R1bGVfc2Rpb19kcml2ZXIod2lsY19zZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwNj1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgd2lsY19zcGlfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMTQtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzozMTU6bW9kdWxlX3NwaV9kcml2ZXIod2lsY19zcGlfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMTYtTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0F0bWVsIFdJTEMxMDAwIFNQSSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYW5kIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBTRElPIGFuZCBTUEkuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgaW4gc3l6a2FsbGVyLiBUaGVyZSYjMzk7cyBubyBidWlsdC1pbiB2aXJ0dWFsIFNESU8gb3IgU1BJIGJ1cyB0aGVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgY29tcGxpY2F0ZXMgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIEkgcG9rZSBzb21ldGhpbmcgdmlhIHN5c2ZzIHRvIGdldCB0aGlzIHRoaW5nIHRvIHJlY29nbml6ZSBhbiBTUEkgZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3QgaG93IGl0IHR5cGljYWxseSB3b3JrczsgaXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aHJvdWdoIERldmljZSBUcmVlIG9yIEFDUEkuCgpXYWl0LCBpc24mIzM5O3QgdGhlcmUgc29tZSBzb3J0IG9mIGBzcGktbW9ja2Agb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBTUEkgZGV2aWNlcz8gTm8sIHRoYXQmIzM5O3Mgbm90IGFwcGxpY2FibGUgaGVyZS4gSSBrbm93IGBtYWM4MDIxMV9od3NpbWAgZXhpc3RzIGZvciBXaUZpLCBidXQgdGhhdCYjMzk7cyBhICpzcGVjaWZpYyogZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KClRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgdGhlIGZ1bmN0aW9uIGB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mb2AgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIGZ1enppbmcgcGF0aCB0byB0aGF0IGNvZGUuIExldCYjMzk7cyB0cmFjZSB0aHJvdWdoIHRoZSBjYWxscyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFuZCBob3cgdG8gdHJpZ2dlciBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTU5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXHRcdFx0XHQgICAgICBzdHJ1Y3Qgd2lsY19jb25uX2luZm8gKnJldF9jb25uX2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlx0XHRcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXHUwMDNlYXNzb2NfcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXHRcdFx0XHRcdFx0XHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVx0XHRcdFx0bmV0ZGV2X2Vycih2aWYtXHUwMDNlbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XHRcdFx0XHRcdCAgIFwmIzM0O3dpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVx0XHRcdFx0XHQgICBlcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYGhvc3RfaW50X3BhcnNlX2Fzc29jX3Jlc3BfaW5mb2AsIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVpbmcgdHJpZ2dlcmVkLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBzb21ld2hlcmUsIGJ1dCB0aGUgcmVhbCBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIHRoZSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIFNESU8vU1BJIGRldmljZS4gU3BlY2lmaWNhbGx5LCB0aGUgV0lMQzEwMDAuIEFuZCB0aGVyZWluIGxpZXMgdGhlIHByb2JsZW06IFN5emthbGxlciwgbXkgdXN1YWwgdG9vbCwgY2FuJiMzOTt0IGluc3RhbnRpYXRlIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyBhICpwaHlzaWNhbCogU0RJTyBvciBTUEkgYnVzLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIFdJTEMxMDAwIGluIGVpdGhlciBRRU1VIG9yIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZi4KCk5vdywgaG9sZCBvbi4uLiBpcyB0aGVyZSAqYW55KiB3YXkgdG8gaW5qZWN0IHBhY2tldHMgb3IgdHJpZ2dlciB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBkZXZpY2U/IEkmIzM5O20gZG91YnRmdWwuIEJlY2F1c2UgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGlzbiYjMzk7dCBldmVuIGNhbGxlZCwgdGhlIGRldmljZSYjMzk7cyBgbmV0ZGV2YCB3b24mIzM5O3QgYmUgY3JlYXRlZC4gQW5kIGlmIHRoZSBuZXR3b3JrIGRldmljZSBpc24mIzM5O3QgdGhlcmUsIGBjZmc4MDIxMWAgd29uJiMzOTt0IGtub3cgYWJvdXQgaXQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhpcyBjb2RlIGluIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZXhlY3V0ZS4gVGhhdOKAmXMgdGhlIGNydXggb2YgaXQuCgpTbywgcmVhbGlzdGljYWxseSwgdGhpcyBjb2RlIGlzICpjb21wbGV0ZWx5KiB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLCBtZWFuaW5nIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB0ZXN0IGl0IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHJldGhpbmsgdGhlIGFwcHJvYWNoIGVudGlyZWx5LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSYjMzk7cyB0cnVseSBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBXSUxDMTAwMC4uLiBqdXN0IHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEzOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpbGMxMDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NSUNST0NISVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnOjE0OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NSUNST0NISVBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApXHRcdCYjNDM7PSB3aWxjMTAwMC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApICYjNDM7PSB3aWxjMTAwMC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo0OndpbGMxMDAwLW9ianMgOj0gY2ZnODAyMTEubyBuZXRkZXYubyBtb24ubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTUtXHRcdFx0aGlmLm8gd2xhbl9jZmcubyB3bGFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX1dJTEMxMDAwX1NESU8pICYjNDM7PSB3aWxjMTAwMC1zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo4OndpbGMxMDAwLXNkaW8tb2JqcyAmIzQzOz0gc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfV0lMQzEwMDBfU1BJKSAmIzQzOz0gd2lsYzEwMDAtc3BpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZToxMTp3aWxjMTAwMC1zcGktb2JqcyAmIzQzOz0gc3BpLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYz0xODQ5PWludCB3aWxjX2NmZzgwMjExX3JlZ2lzdGVyKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jLTE4NTEtXHQvKiBXUEEzL1NBRSBzdXBwb3J0ZWQgb25seSBvbiBXSUxDMTAwMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmM6MTg1MjpcdGlmIChpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYy0xODUzLVx0XHR3aWxjLVx1MDAzZXdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjIyOiNkZWZpbmUgV0lMQzEwMDBfRldfUFJFRklYXHRcdFwmIzM0O2F0bWVsL3dpbGMxMDAwX3dpZmlfZmlybXdhcmUtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtMjMtI2RlZmluZSBfX1dJTEMxMDAwX0ZXKGFwaSlcdFx0V0lMQzEwMDBfRldfUFJFRklYICNhcGkgXCYjMzQ7LmJpblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYz0yMDA9c3RhdGljIGludCB3aWxjX3dsYW5fZ2V0X2Zpcm13YXJlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYzoyMDg6XHRpZiAoaXNfd2lsYzEwMDAod2lsYy1cdTAwM2VjaGlwaWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwOS1cdFx0ZmlybXdhcmUgPSBXSUxDMTAwMF9GVyhXSUxDMTAwMF9BUElfVkVSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtMjE1LVx0bmV0ZGV2X2luZm8oZGV2LCBcJiMzNDtXSUxDJWQgbG9hZGluZyBmaXJtd2FyZSBbJXNdXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjIxNjpcdFx0ICAgIGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/IDEwMDAgOiAzMDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxNy1cdFx0ICAgIGZpcm13YXJlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9NDU2PXN0YXRpYyB2b2lkIHdpbGNfd2xhbl9kZWluaXRpYWxpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY2LVx0aWYgKHdsLVx1MDAzZWluaXRpYWxpemVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDY3Olx0XHRuZXRkZXZfaW5mbyhkZXYsIFwmIzM0O0RlaW5pdGlhbGl6aW5nIHdpbGMxMDAwLi4uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy00NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYzo0ODU6XHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDt3aWxjMTAwMCBkZWluaXRpYWxpemF0aW9uIERvbmVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4Ni1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDg3Olx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7d2lsYzEwMDAgaXMgbm90IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy00ODgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTUwOD1zdGF0aWMgaW50IHdpbGNfd2xhbl9pbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB3aWxjX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy01ODMtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjU4NDpcdFx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O3dpbGMxMDAwIGFscmVhZHkgaW5pdGlhbGl6ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTU4NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9Nzg3PXN0YXRpYyBpbnQgd2lsY19tYWNfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwNi1cdGlmICh3bC1cdTAwM2VvcGVuX2lmY3MgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjgwNzpcdFx0bmV0ZGV2X2RiZyhuZGV2LCBcJiMzNDtEZWluaXRpYWxpemluZyB3aWxjMTAwMFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtODA4LVx0XHR3bC1cdTAwM2VjbG9zZSA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTc6I2RlZmluZSBTRElPX01PREFMSUFTIFwmIzM0O3dpbGMxMDAwX3NkaW9cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtMTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04MDA9c3RhdGljIGludCB3aWxjX3NkaW9fcmVhZF9pbnQoc3RydWN0IHdpbGMgKndpbGMsIHUzMiAqaW50X3N0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxNy1cdFx0Y21kLmZ1bmN0aW9uID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODE4Olx0XHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxOS1cdFx0XHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9GTEFHX1JFRyA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04MjgtXHRpZiAoc2Rpb19wcml2LVx1MDAzZWlycV9ncGlvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzo4Mjk6XHRcdGlycV9mbGFncyBcdTAwMjY9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/IDB4MWYgOiAweDBmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04MzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04NDI9c3RhdGljIGludCB3aWxjX3NkaW9fY2xlYXJfaW50X2V4dChzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODUyOlx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04NTMtXHRcdC8qIHNlbGVjdCBWTU0gdGFibGUgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODk4LVx0XHRjbWQucmF3ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODk5Olx0XHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSA/XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTkwMC1cdFx0XHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9DTEVBUl9GTEFHX1JFRyA6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdpbGNfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA1MzpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsd2lsYzEwMDBcJiMzNDssIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNTQtXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6MTY6I2RlZmluZSBTUElfTU9EQUxJQVNcdFx0XCYjMzQ7d2lsYzEwMDBfc3BpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTI5ND1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3aWxjX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6Mjk1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21pY3JvY2hpcCx3aWxjMTAwMFwmIzM0OywgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0yOTYtXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MzAwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCB3aWxjX3NwaV9pZFtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjMwMTpcdHsgXCYjMzQ7d2lsYzEwMDBcJiMzNDssIDAgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMDItXHR7IC8qIHNlbnRpbmVsICovIH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MTIyNz1zdGF0aWMgaW50IHdpbGNfdmFsaWRhdGVfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0xMjQwLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjEyNDE6XHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkgXHUwMDI2XHUwMDI2ICFpc193aWxjMzAwMChjaGlwaWQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTI0Mi1cdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtVbmtub3duIGNoaXAgaWQgMHgleFxcblwmIzM0OywgY2hpcGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTUzMD1zdGF0aWMgc3RydWN0IHJ4cV9lbnRyeV90ICp3aWxjX3dsYW5fcnhxX3JlbW92ZShzdHJ1Y3Qgd2lsYyAqd2lsYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NTQ0OnN0YXRpYyBpbnQgY2hpcF9hbGxvd19zbGVlcF93aWxjMTAwMChzdHJ1Y3Qgd2lsYyAqd2lsYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNTQ1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTYzMD1zdGF0aWMgaW50IGNoaXBfYWxsb3dfc2xlZXAoc3RydWN0IHdpbGMgKndpbGMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjYzMjpcdGlmIChpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjYzMzpcdFx0cmV0dXJuIGNoaXBfYWxsb3dfc2xlZXBfd2lsYzEwMDAod2lsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzNC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjM4OnN0YXRpYyBpbnQgY2hpcF93YWtldXBfd2lsYzEwMDAoc3RydWN0IHdpbGMgKndpbGMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTYzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz03NjA9c3RhdGljIGludCBjaGlwX3dha2V1cChzdHJ1Y3Qgd2lsYyAqd2lsYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NzYyOlx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NzYzOlx0XHRyZXR1cm4gY2hpcF93YWtldXBfd2lsYzEwMDAod2lsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc2NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTc5Mz1pbnQgaG9zdF93YWtldXBfbm90aWZ5KHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo4MDA6XHR3aWxjLVx1MDAzZWhpZl9mdW5jLVx1MDAzZWhpZl93cml0ZV9yZWcod2lsYywgaXNfd2lsYzEwMDAod2lsYy1cdTAwM2VjaGlwaWQpID9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODAxLVx0XHRcdFx0XHQgICAgV0lMQzEwMDBfQ09SVFVTX0lOVEVSUlVQVF8yIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTgwNz1pbnQgaG9zdF9zbGVlcF9ub3RpZnkoc3RydWN0IHdpbGMgKndpbGMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy04MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjgxNDpcdHdpbGMtXHUwMDNlaGlmX2Z1bmMtXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBpc193aWxjMTAwMCh3aWxjLVx1MDAzZWNoaXBpZCkgP1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy04MTUtXHRcdFx0XHRcdCAgICBXSUxDMTAwMF9DT1JUVVNfSU5URVJSVVBUXzEgOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9ODIxPWludCB3aWxjX3dsYW5faGFuZGxlX3R4cShzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyICp0eHFfY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjk1MTpcdFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTItXHRcdFx0cmV0ID0gZnVuYy1cdTAwM2VoaWZfd3JpdGVfcmVnKHdpbGMsIFdJTENfSE9TVF9WTU1fQ1RMLCAweDIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTU5MT1pbnQgd2lsY19nZXRfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTYwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6MTYwMzpcdFx0XHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTYwNC1cdFx0XHRcdHdpbGMtXHUwMDNlY2hpcGlkID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTE3Mzc9aW50IHdpbGNfd2xhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzoxNzYxOlx0XHRpZiAoIWlzX3dpbGMxMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSBcdTAwMjZcdTAwMjYgIWlzX3dpbGMzMDAwKHdpbGMtXHUwMDNlY2hpcGlkKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYyLVx0XHRcdG5ldGRldl9lcnIoZGV2LCBcJiMzNDtVbnN1cHBvcnRlZCBjaGlwaWQ6ICV4XFxuXCYjMzQ7LCB3aWxjLVx1MDAzZWNoaXBpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaD00MzM9c3RydWN0IHdpbGNfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaC00MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oOjQzNTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfd2lsYzEwMDAodTMyIGlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uaC00MzYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIwMgoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGludG8gdGhpcyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgd2Ugc3RhbmQuIFRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIGEgcGh5c2ljYWwgZGV2aWNlLCBhbmQgbm90aGluZyBlbHNlLiBUaGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIGRldmljZSB3aXRoaW4gdGhlIGtlcm5lbCwgbm9yIGlzIHRoZXJlIGFueSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCYjMzk7cyBhIHByZXR0eSBiaWcgcm9hZGJsb2NrIGZvciBmdXp6aW5nLCByaWdodCBvZmYgdGhlIGJhdC4KCkdpdmVuIHRoaXMsIHRoZSBjb2RlIHdpdGhpbiB0aGlzIGRyaXZlciBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXZSBjYW4mIzM5O3QgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaXQmIzM5O3MgbWVhbnQgdG8gY29udHJvbC4gVGhlcmVmb3JlLCBmcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIGF0dGVtcHRpbmcgdG8gZnV6eiB0aGlzIGRyaXZlciBpbiBvdXIgY3VycmVudCBzZXR1cCBpcyBqdXN0IG5vdCBmZWFzaWJsZS4gSSYjMzk7bGwgbmVlZCB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIHB1cnN1aW5nLCBhbmQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSBkcml2ZXIgdGhhdCYjMzk7cyBpbmFjY2Vzc2libGUgd2l0aGluIHRoZSBjb250ZXh0IHdlJiMzOTtyZSB3b3JraW5nIGluLiBXZSBuZWVkIHRvIGZvY3VzIG91ciBlZmZvcnRzIHdoZXJlIHdlIGNhbiBhY3R1YWxseSBnZXQgc29tZSBtZWFuaW5nZnVsIGNvdmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB3aWxjMTAwMCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTy9TUEkgd2lyZWxlc3MgZHJpdmVyIGZvciBBdG1lbCBXSUxDMTAwMCBjaGlwcy4gVGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgbWVhbmluZyB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2lsYzEwMDAgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8vU1BJIHdpcmVsZXNzIGRyaXZlciBmb3IgQXRtZWwgV0lMQzEwMDAgY2hpcHMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1lYW5pbmcgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjIwLjUzMTM0Mjc3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjI4NjU3MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgd2lsYzEwMDAgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8vU1BJIHdpcmVsZXNzIGRyaXZlciBmb3IgQXRtZWwgV0lMQzEwMDAgY2hpcHMuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIG1lYW5pbmcgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGNhbGxlZCBhbmQgdGhlIG5ldGRldiB3aWxsIG5vdCBiZSBjcmVhdGVkLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDoyMC41MzEzNDc2NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjA3MTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA3YjM4NTkyYmM3OGZlNjBiYThhYzVhMDZiNjExNWQ0ZmJmZmNhZWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTM6MzQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXFxuaW5kZXggMDA5YzQ3NzBhNmY5NWIuLjYwZmU1ZjA4OTY0ZjM5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xcbkBAIC02MDAsNiArNjAwLDExIEBAIHN0YXRpYyBzMzIgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8odTggKmJ1ZmZlciwgdTMyIGJ1ZmZlcl9sZW4sXFxuIFxcdHUxNiBpZXNfbGVuO1xcbiBcXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcXG4gXFxuK1xcdGlmIChidWZmZXJfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpyZXMpKSB7XFxuK1xcdFxcdHJldF9jb25uX2luZm8tXFx1MDAzZXN0YXR1cyA9IFdMQU5fU1RBVFVTX1VOU1BFQ0lGSUVEX0ZBSUxVUkU7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRyZXRfY29ubl9pbmZvLVxcdTAwM2VzdGF0dXMgPSBsZTE2X3RvX2NwdShyZXMtXFx1MDAzZXN0YXR1c19jb2RlKTtcXG4gXFx0aWYgKHJldF9jb25uX2luZm8tXFx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XFxuIFxcdFxcdGllcyA9IFxcdTAwMjZidWZmZXJbc2l6ZW9mKCpyZXMpXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjAuOTA0MDQ4Mzg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI1NTk0NjUwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwN2IzODU5MmJjNzhmZTYwYmE4YWM1YTA2YjYxMTVkNGZiZmZjYWVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTM6MzQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmNcbmluZGV4IDAwOWM0NzcwYTZmOTViLi42MGZlNWYwODk2NGYzOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jXG5AQCAtNjAwLDYgKzYwMCwxMSBAQCBzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxuIFx0dTE2IGllc19sZW47XG4gXHRzdHJ1Y3Qgd2lsY19hc3NvY19yZXNwICpyZXMgPSAoc3RydWN0IHdpbGNfYXNzb2NfcmVzcCAqKWJ1ZmZlcjtcbiBcbitcdGlmIChidWZmZXJfbGVuIFx1MDAzYyBzaXplb2YoKnJlcykpIHtcbitcdFx0cmV0X2Nvbm5faW5mby1cdTAwM2VzdGF0dXMgPSBXTEFOX1NUQVRVU19VTlNQRUNJRklFRF9GQUlMVVJFO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHJldF9jb25uX2luZm8tXHUwMDNlc3RhdHVzID0gbGUxNl90b19jcHUocmVzLVx1MDAzZXN0YXR1c19jb2RlKTtcbiBcdGlmIChyZXRfY29ubl9pbmZvLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4gXHRcdGllcyA9IFx1MDAyNmJ1ZmZlcltzaXplb2YoKnJlcyldO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjAuOTA0MDQ5OTI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3NTY2Nzc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgd2lsYzEwMDAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuY2AuIEl0J3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3ZlIGFkZGVkIGEgbGVuZ3RoIGNoZWNrIHdpdGhpbiBgd2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgdmVyaWZ5aW5nIHRoYXQgdGhlIHJlY2VpdmVkIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgYHdpbGNfYXNzb2NfcmVzcGAgc3RydWN0IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlIGl0LiBNYWtlcyBzZW5zZTsgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzLCBsZWFkaW5nIHRvIGEgbW9yZSByb2J1c3QgZHJpdmVyLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gZ2F1Z2UgdGhlIGltcGFjdC4gVGhlIHJlYWwgcXVlc3Rpb24gSSBuZWVkIHRvIGNvbnNpZGVyIGlzIHRoZSBzY29wZSBhbmQgaG93IGl0IGNhbiBiZSByZXByb2R1Y2VkLiBDYW4gSSBldmVuIHRlc3QgdGhpcyBpbiBteSBzZXR1cD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZXhlcmNpc2VkLiBUaGUgYHdpbGMxMDAwYCBkcml2ZXIgLSBpdCByaW5ncyBhIGJlbGwuIEl0J3MgbWljcm9jaGlwLCBzbyBpcyB0aGlzIGEgc3RhbmRhcmQgbWFjODAyMTEgZHJpdmVyLCBvciBkb2VzIGl0IGRlcGVuZCBvbiB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlPyBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBnb2luZyB0byBoYXZlIHNvbWUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUbyBjb25maXJtLCBJIHNob3VsZCBwZWVrIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvS2NvbmZpZ2AuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgZGVwZW5kZW5jaWVzLiBJdCBzaG91bGQgZ2l2ZSBtZSBjbHVlcyBvbiBob3cgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzksIk91dHB1dFRva2VucyI6OTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDoyNi4xNzk3MTk5MzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MzQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM9NTczPXN0YXRpYyB2b2lkIGhvc3RfaW50X2dldF9hc3NvY19yZXNfaW5mbyhzdHJ1Y3Qgd2lsY192aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjU5NjpzdGF0aWMgczMyIHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHU4ICpidWZmZXIsIHUzMiBidWZmZXJfbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy01OTctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHdpbGNfY29ubl9pbmZvICpyZXRfY29ubl9pbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTYyMz1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmM6NjQxOlxcdFxcdFxcdGVyciA9IHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKGhpZl9kcnYtXFx1MDAzZWFzc29jX3Jlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgYXNzb2NfcmVzcF9pbmZvX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDUtXFx0XFx0XFx0XFx0bmV0ZGV2X2Vycih2aWYtXFx1MDAzZW5kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjY0NjpcXHRcXHRcXHRcXHRcXHQgICBcXFwid2lsY19wYXJzZV9hc3NvY19yZXNwX2luZm8oKSByZXR1cm5lZCBlcnJvciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ3LVxcdFxcdFxcdFxcdFxcdCAgIGVycik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjI2LjIzNzY1ODJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0Y29uZmlnIFdJTEMxMDAwXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0aGVscFxcbiAgIDU6XFx0XFx0ICBBZGQgc3VwcG9ydCBmb3IgdGhlIEF0bWVsIFdJTEMxMDAwIDgwMi4xMSBiL2cvbiBTb0MuXFxuICAgNjpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgV2ktRkkgb3ZlciBhbiBTRElPIG9yIFNQSSBpbnRlcmZhY2UsIGFuZFxcbiAgIDc6XFx0XFx0ICBpcyB1c3VhbGx5IGZvdW5kIGluIElvVCBkZXZpY2VzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIFRoaXMgbW9kdWxlIG9ubHkgc3VwcG9ydCBJRUVFIDgwMi4xMW4gV2lGaS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIFdJTEMxMDAwX1NESU9cXG4gIDEyOlxcdFxcdHRyaXN0YXRlIFxcXCJBdG1lbCBXSUxDMTAwMCBTRElPIChXaUZpIG9ubHkpXFxcIlxcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMTQ6XFx0XFx0c2VsZWN0IFdJTEMxMDAwXFxuICAxNTpcXHRcXHRoZWxwXFxuICAxNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNESU8gaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXFxuICAxNzpcXHRcXHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBTRElPIGlzIGEgZnVsbCBzcGVlZCBpbnRlcmZhY2UuXFxuICAxODpcXHRcXHQgIEl0IG1lZXRzIFNESU8gY2FyZCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gMi4wLiBUaGUgaW50ZXJmYWNlIHN1cHBvcnRzXFxuICAxOTpcXHRcXHQgIHRoZSAxLWJpdC80LWJpdCBTRCB0cmFuc2ZlciBtb2RlIGF0IHRoZSBjbG9jayByYW5nZSBvZiAwLTUwIE1Iei5cXG4gIDIwOlxcdFxcdCAgVGhlIGhvc3QgY2FuIHVzZSB0aGlzIGludGVyZmFjZSB0byByZWFkIGFuZCB3cml0ZSBmcm9tIGFueSByZWdpc3RlclxcbiAgMjE6XFx0XFx0ICB3aXRoaW4gdGhlIGNoaXAgYXMgd2VsbCBhcyBjb25maWd1cmUgdGhlIFdJTEMxMDAwIGZvciBkYXRhIERNQS5cXG4gIDIyOlxcdFxcdCAgVG8gdXNlIHRoaXMgaW50ZXJmYWNlLCBwaW45IChTRElPX1NQSV9DRkcpIG11c3QgYmUgZ3JvdW5kZWQuIFNlbGVjdFxcbiAgMjM6XFx0XFx0ICB0aGlzIGlmIHlvdXIgcGxhdGZvcm0gaXMgdXNpbmcgdGhlIFNESU8gYnVzLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgV0lMQzEwMDBfU1BJXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRtZWwgV0lMQzEwMDAgU1BJIChXaUZpIG9ubHkpXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMjg6XFx0XFx0c2VsZWN0IFdJTEMxMDAwXFxuICAyOTpcXHRcXHRzZWxlY3QgQ1JDN1xcbiAgMzA6XFx0XFx0c2VsZWN0IENSQ19JVFVfVFxcbiAgMzE6XFx0XFx0aGVscFxcbiAgMzI6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTUEkgaW50ZXJmYWNlIG9mIGFkYXB0ZXJzIHVzaW5nXFxuICAzMzpcXHRcXHQgIFdJTEMxMDAwIGNoaXBzZXQuIFRoZSBBdG1lbCBXSUxDMTAwMCBoYXMgYSBTZXJpYWwgUGVyaXBoZXJhbFxcbiAgMzQ6XFx0XFx0ICBJbnRlcmZhY2UgKFNQSSkgdGhhdCBvcGVyYXRlcyBhcyBhIFNQSSBzbGF2ZS4gVGhpcyBTUEkgaW50ZXJmYWNlIGNhblxcbiAgMzU6XFx0XFx0ICBiZSB1c2VkIGZvciBjb250cm9sIGFuZCBmb3Igc2VyaWFsIEkvTyBvZiA4MDIuMTEgZGF0YS4gVGhlIFNQSSBpcyBhXFxuICAzNjpcXHRcXHQgIGZ1bGwtZHVwbGV4IHNsYXZlIHN5bmNocm9ub3VzIHNlcmlhbCBpbnRlcmZhY2UgdGhhdCBpcyBhdmFpbGFibGVcXG4gIDM3OlxcdFxcdCAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHJlc2V0IHdoZW4gcGluIDkgKFNESU9fU1BJX0NGRykgaXMgdGllZCB0b1xcbiAgMzg6XFx0XFx0ICBWRERJTy4gU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgU1BJIGJ1cy5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIFdJTEMxMDAwX0hXX09PQl9JTlRSXFxuICA0MTpcXHRcXHRib29sIFxcXCJXSUxDMTAwMCBvdXQgb2YgYmFuZCBpbnRlcnJ1cHRcXFwiXFxuICA0MjpcXHRcXHRkZXBlbmRzIG9uIFdJTEMxMDAwX1NESU9cXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQgc3VwcG9ydCBmb3IgdGhlIFdJTEMxMDAwXFxuICA0NTpcXHRcXHQgIGNoaXBzZXQuIFRoaXMgT09CIGludGVycnVwdCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgZmFzdGVyIGludGVycnVwdFxcbiAgNDY6XFx0XFx0ICBtZWNoYW5pc20gZm9yIFNESU8gaG9zdCBjb250cm9sbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgU0RJTyBpbnRlcnJ1cHQuXFxuICA0NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBJZiB0aGUgU0RJTyBob3N0IGNvbnRyb2xsZXIgaW4geW91ciBwbGF0Zm9ybVxcbiAgNDg6XFx0XFx0ICBkb2Vzbid0IHN1cHBvcnQgU0RJTyB0aW1lIGRpdmlzaW9uIGludGVycnVwdC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6MjYuMjM3NzY0ODdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzMwOTU5NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEF0bWVsIFdJTEMxMDAwIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIOKAkyBpdCdzIGZvciB0aGUgQXRtZWwgV0lMQzEwMDAsIGFuZCBpdCB1c2VzIGVpdGhlciBTRElPIG9yIFNQSS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gU0RJTyBhbmQgU1BJIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IHRyaWNreSB0byBmdXp6LiBUaGV5IHVzdWFsbHkgcmVxdWlyZSBzcGVjaWZpYyBlbXVsYXRpb24gb3IgYmVpbmcgaG9va2VkIHVwIHRvIGEgdmlydHVhbCBidXMsIHdoaWNoIGlzIHJhcmVseSBzdHJhaWdodGZvcndhcmQuIFN5emthbGxlciBoYXMgc29tZSBleGlzdGluZyBzdXBwb3J0IGZvciBmdXp6aW5nIFVTQiwgUENJLCBhbmQgYSBmZXcgb3RoZXJzLCBidXQgSSBkb24ndCByZWNhbGwgc2VlaW5nIGRpcmVjdCBTRElPIG9yIFNQSSBzdXBwb3J0IHVubGVzcyB0aGVyZSdzIGEgY3VzdG9tIG1vY2sgaW1wbGVtZW50YXRpb24uXG5cbldhaXQgYSBzZWNvbmQsIHRob3VnaOKApiBTeXprYWxsZXIgZG9lcyBoYXZlIHZoY2kgKFVTQikgYW5kIG1hYzgwMjExX2h3c2ltIChXaUZpKSBzdXBwb3J0LiBCdXQgdGhpcyBXSUxDMTAwMCBkcml2ZXIgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgY29tbXVuaWNhdGluZyB2aWEgU0RJTyBvciBTUEkuIFNvLCBkb2VzIFN5emthbGxlciBhY3R1YWxseSAqZnV6eiogU0RJTyBvciBTUEkgZGlyZWN0bHk/IE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyBubywgbm90IGluIHRoZSBnZW5lcmFsIHNlbnNlLlxuXG5IbW0sIGJ1dCB3aGF0IGlmIEkgY2FuIHJlYWNoIGl0IHRocm91Z2ggdGhlIG1hYzgwMjExIC8gY2ZnODAyMTEgd2lyZWxlc3Mgc3RhY2s/IFRoZSBkcml2ZXIgKmRvZXMqIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEsIHdoaWNoIGdpdmVzIG1lIHNvbWUgaG9wZS5cblxuTm93LCBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgY2FuIEkgZ2V0IGl0IGluc3RhbnRpYXRlZD8gU0RJTy9TUEkgZGV2aWNlcyB0eXBpY2FsbHkgcmVxdWlyZSB0aGUga2VybmVsIHRvIHByb2JlIHRoZW0g4oCTIHZpYSBhIGRldmljZSB0cmVlLCBBQ1BJLCBvciBib2FyZCBmaWxlcy4gVW5sZXNzIHRoZXJlJ3MgYSB1c2VyLXNwYWNlIG1ldGhvZCB0byBpbnN0YW50aWF0ZSBhbiBTRElPL1NQSSBkZXZpY2UsIEkgd29uJ3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCBhbmQgdGhlcmVmb3JlLCB0aGUgbmV0ZGV2IHdvbid0IGJlIGNyZWF0ZWQuXG5cblNvLCB0aGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdD8gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTAwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEzOjM0OjM0Ljk2ODcyNjY5MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTczOTg5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3NkaW9fZHJpdmVyfG1vZHVsZV9zcGlfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz0xMDYzPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgd2lsY19zZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtMTA3Mi19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6MTA3Mzptb2R1bGVfc2Rpb19kcml2ZXIod2lsY19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xMDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwNj1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgd2lsY19zcGlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jLTMxNC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzozMTU6bW9kdWxlX3NwaV9kcml2ZXIod2lsY19zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMzE2LU1PRFVMRV9ERVNDUklQVElPTihcXFwiQXRtZWwgV0lMQzEwMDAgU1BJIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDozNS4wODYxMzAzODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzEwMjc4ODAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlcidzIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBkZWFsaW5nIHdpdGggU0RJTyBhbmQgU1BJLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHBvdGVudGlhbCBmb3IgaXNzdWVzIGluIHN5emthbGxlci4gVGhlcmUncyBubyBidWlsdC1pbiB2aXJ0dWFsIFNESU8gb3IgU1BJIGJ1cyB0aGVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgY29tcGxpY2F0ZXMgZnV6emluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIEkgcG9rZSBzb21ldGhpbmcgdmlhIHN5c2ZzIHRvIGdldCB0aGlzIHRoaW5nIHRvIHJlY29nbml6ZSBhbiBTUEkgZGV2aWNlPyBObywgdGhhdCdzIG5vdCBob3cgaXQgdHlwaWNhbGx5IHdvcmtzOyBpdCdzIGFsbW9zdCBhbHdheXMgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLlxuXG5XYWl0LCBpc24ndCB0aGVyZSBzb21lIHNvcnQgb2YgYHNwaS1tb2NrYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHVwIFNQSSBkZXZpY2VzPyBObywgdGhhdCdzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cyBmb3IgV2lGaSwgYnV0IHRoYXQncyBhICpzcGVjaWZpYyogZHJpdmVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGUgZnVuY3Rpb24gYHdpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvYCBpcyByZWFjaGFibGUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhIHByYWN0aWNhbCBmdXp6aW5nIHBhdGggdG8gdGhhdCBjb2RlLiBMZXQncyB0cmFjZSB0aHJvdWdoIHRoZSBjYWxscyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFuZCBob3cgdG8gdHJpZ2dlciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDo0OC4xODg5MjA5NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMTk4NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jPTU3Mz1zdGF0aWMgdm9pZCBob3N0X2ludF9nZXRfYXNzb2NfcmVzX2luZm8oc3RydWN0IHdpbGNfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo1OTY6c3RhdGljIHMzMiB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyh1OCAqYnVmZmVyLCB1MzIgYnVmZmVyX2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNTk3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB3aWxjX2Nvbm5faW5mbyAqcmV0X2Nvbm5faW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYz02MjM9c3RhdGljIGlubGluZSB2b2lkIGhvc3RfaW50X3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyhzdHJ1Y3Qgd2lsY192aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jOjY0MTpcXHRcXHRcXHRlcnIgPSB3aWxjX3BhcnNlX2Fzc29jX3Jlc3BfaW5mbyhoaWZfZHJ2LVxcdTAwM2Vhc3NvY19yZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYy02NDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGFzc29jX3Jlc3BfaW5mb19sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvaGlmLmMtNjQ1LVxcdFxcdFxcdFxcdG5ldGRldl9lcnIodmlmLVxcdTAwM2VuZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9oaWYuYzo2NDY6XFx0XFx0XFx0XFx0XFx0ICAgXFxcIndpbGNfcGFyc2VfYXNzb2NfcmVzcF9pbmZvKCkgcmV0dXJuZWQgZXJyb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2hpZi5jLTY0Ny1cXHRcXHRcXHRcXHRcXHQgICBlcnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMzozNDo0OC40MjIxMjM4MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MzQ4NDgzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uLCBgaG9zdF9pbnRfcGFyc2VfYXNzb2NfcmVzcF9pbmZvYCwgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaW5nIHRyaWdnZXJlZC4gSXQncyBjYWxsZWQgZnJvbSBzb21ld2hlcmUsIGJ1dCB0aGUgcmVhbCBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIHRoZSBoYXJkd2FyZSBkcml2ZXIgZm9yIGFuIFNESU8vU1BJIGRldmljZS4gU3BlY2lmaWNhbGx5LCB0aGUgV0lMQzEwMDAuIEFuZCB0aGVyZWluIGxpZXMgdGhlIHByb2JsZW06IFN5emthbGxlciwgbXkgdXN1YWwgdG9vbCwgY2FuJ3QgaW5zdGFudGlhdGUgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIGEgKnBoeXNpY2FsKiBTRElPIG9yIFNQSSBidXMuIFRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBXSUxDMTAwMCBpbiBlaXRoZXIgUUVNVSBvciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYuXG5cbk5vdywgaG9sZCBvbi4uLiBpcyB0aGVyZSAqYW55KiB3YXkgdG8gaW5qZWN0IHBhY2tldHMgb3IgdHJpZ2dlciB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBkZXZpY2U/IEknbSBkb3VidGZ1bC4gQmVjYXVzZSBpZiB0aGUgcHJvYmUgZnVuY3Rpb24gaXNuJ3QgZXZlbiBjYWxsZWQsIHRoZSBkZXZpY2UncyBgbmV0ZGV2YCB3b24ndCBiZSBjcmVhdGVkLiBBbmQgaWYgdGhlIG5ldHdvcmsgZGV2aWNlIGlzbid0IHRoZXJlLCBgY2ZnODAyMTFgIHdvbid0IGtub3cgYWJvdXQgaXQsIHdoaWNoIG1lYW5zIG5vbmUgb2YgdGhpcyBjb2RlIGluIHRoZSBkcml2ZXIgaXMgZ29pbmcgdG8gZXhlY3V0ZS4gVGhhdOKAmXMgdGhlIGNydXggb2YgaXQuXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGNvZGUgaXMgKmNvbXBsZXRlbHkqIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIG1lYW5pbmcgSSdtIGdvaW5nIHRvIGhhdmUgdG8gdGVzdCBpdCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBvciByZXRoaW5rIHRoZSBhcHByb2FjaCBlbnRpcmVseS4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUncyB0cnVseSBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBXSUxDMTAwMC4uLiBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6NTQuNjY1NjExMTU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE3OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3aWxjMTAwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01JQ1JPQ0hJUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NSUNST0NISVBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0lMQzEwMDApXFx0XFx0Kz0gd2lsYzEwMDAvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dJTEMxMDAwKSArPSB3aWxjMTAwMC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjQ6d2lsYzEwMDAtb2JqcyA6PSBjZmc4MDIxMS5vIG5ldGRldi5vIG1vbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGUtNS1cXHRcXHRcXHRoaWYubyB3bGFuX2NmZy5vIHdsYW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19XSUxDMTAwMF9TRElPKSArPSB3aWxjMTAwMC1zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvTWFrZWZpbGU6ODp3aWxjMTAwMC1zZGlvLW9ianMgKz0gc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19XSUxDMTAwMF9TUEkpICs9IHdpbGMxMDAwLXNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL01ha2VmaWxlOjExOndpbGMxMDAwLXNwaS1vYmpzICs9IHNwaS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYz0xODQ5PWludCB3aWxjX2NmZzgwMjExX3JlZ2lzdGVyKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMtMTg1MS1cXHQvKiBXUEEzL1NBRSBzdXBwb3J0ZWQgb25seSBvbiBXSUxDMTAwMCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jOjE4NTI6XFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMtMTg1My1cXHRcXHR3aWxjLVxcdTAwM2V3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NBRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjI6I2RlZmluZSBXSUxDMTAwMF9GV19QUkVGSVhcXHRcXHRcXFwiYXRtZWwvd2lsYzEwMDBfd2lmaV9maXJtd2FyZS1cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIzLSNkZWZpbmUgX19XSUxDMTAwMF9GVyhhcGkpXFx0XFx0V0lMQzEwMDBfRldfUFJFRklYICNhcGkgXFxcIi5iaW5cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9MjAwPXN0YXRpYyBpbnQgd2lsY193bGFuX2dldF9maXJtd2FyZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjA4OlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMDktXFx0XFx0ZmlybXdhcmUgPSBXSUxDMTAwMF9GVyhXSUxDMTAwMF9BUElfVkVSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy0yMTUtXFx0bmV0ZGV2X2luZm8oZGV2LCBcXFwiV0lMQyVkIGxvYWRpbmcgZmlybXdhcmUgWyVzXVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6MjE2OlxcdFxcdCAgICBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID8gMTAwMCA6IDMwMDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTIxNy1cXHRcXHQgICAgZmlybXdhcmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTQ1Nj1zdGF0aWMgdm9pZCB3aWxjX3dsYW5fZGVpbml0aWFsaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY2LVxcdGlmICh3bC1cXHUwMDNlaW5pdGlhbGl6ZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDY3OlxcdFxcdG5ldGRldl9pbmZvKGRldiwgXFxcIkRlaW5pdGlhbGl6aW5nIHdpbGMxMDAwLi4uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM6NDg1OlxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwid2lsYzEwMDAgZGVpbml0aWFsaXphdGlvbiBEb25lXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNDg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjQ4NzpcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIndpbGMxMDAwIGlzIG5vdCBpbml0aWFsaXplZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTQ4OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmM9NTA4PXN0YXRpYyBpbnQgd2lsY193bGFuX2luaXRpYWxpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHdpbGNfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvbmV0ZGV2LmMtNTgzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjU4NDpcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIndpbGMxMDAwIGFscmVhZHkgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9uZXRkZXYuYy01ODUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jPTc4Nz1zdGF0aWMgaW50IHdpbGNfbWFjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwNi1cXHRpZiAod2wtXFx1MDAzZW9wZW5faWZjcyA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jOjgwNzpcXHRcXHRuZXRkZXZfZGJnKG5kZXYsIFxcXCJEZWluaXRpYWxpemluZyB3aWxjMTAwMFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL25ldGRldi5jLTgwOC1cXHRcXHR3bC1cXHUwMDNlY2xvc2UgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjE3OiNkZWZpbmUgU0RJT19NT0RBTElBUyBcXFwid2lsYzEwMDBfc2Rpb1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04MDA9c3RhdGljIGludCB3aWxjX3NkaW9fcmVhZF9pbnQoc3RydWN0IHdpbGMgKndpbGMsIHUzMiAqaW50X3N0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODE3LVxcdFxcdGNtZC5mdW5jdGlvbiA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzo4MTg6XFx0XFx0Y21kLmFkZHJlc3MgPSBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgxOS1cXHRcXHRcXHQgICAgICBXSUxDMTAwMF9TRElPX0lSUV9GTEFHX1JFRyA6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTgyOC1cXHRpZiAoc2Rpb19wcml2LVxcdTAwM2VpcnFfZ3BpbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjgyOTpcXHRcXHRpcnFfZmxhZ3MgXFx1MDAyNj0gaXNfd2lsYzEwMDAod2lsYy1cXHUwMDNlY2hpcGlkKSA/IDB4MWYgOiAweDBmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYz04NDI9c3RhdGljIGludCB3aWxjX3NkaW9fY2xlYXJfaW50X2V4dChzdHJ1Y3Qgd2lsYyAqd2lsYywgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtODUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM6ODUyOlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYy04NTMtXFx0XFx0Lyogc2VsZWN0IFZNTSB0YWJsZSAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTg5OC1cXHRcXHRjbWQucmF3ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jOjg5OTpcXHRcXHRjbWQuYWRkcmVzcyA9IGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmMtOTAwLVxcdFxcdFxcdCAgICAgIFdJTEMxMDAwX1NESU9fSVJRX0NMRUFSX0ZMQUdfUkVHIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zZGlvLmM9MTA1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3aWxjX29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NkaW8uYzoxMDUzOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLHdpbGMxMDAwXFxcIiwgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc2Rpby5jLTEwNTQtXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jOjE2OiNkZWZpbmUgU1BJX01PREFMSUFTXFx0XFx0XFxcIndpbGMxMDAwX3NwaVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9Mjk0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdpbGNfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6Mjk1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwibWljcm9jaGlwLHdpbGMxMDAwXFxcIiwgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmMtMjk2LVxcdHsgLyogc2VudGluZWwgKi8gfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jPTMwMD1zdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgd2lsY19zcGlfaWRbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM6MzAxOlxcdHsgXFxcIndpbGMxMDAwXFxcIiwgMCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0zMDItXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvc3BpLmM9MTIyNz1zdGF0aWMgaW50IHdpbGNfdmFsaWRhdGVfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3NwaS5jLTEyNDAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYzoxMjQxOlxcdGlmICghaXNfd2lsYzEwMDAoY2hpcGlkKSBcXHUwMDI2XFx1MDAyNiAhaXNfd2lsYzMwMDAoY2hpcGlkKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9zcGkuYy0xMjQyLVxcdFxcdGRldl9lcnIoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBcXFwiVW5rbm93biBjaGlwIGlkIDB4JXhcXFxcblxcXCIsIGNoaXBpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTUzMD1zdGF0aWMgc3RydWN0IHJ4cV9lbnRyeV90ICp3aWxjX3dsYW5fcnhxX3JlbW92ZShzdHJ1Y3Qgd2lsYyAqd2lsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NTQ0OnN0YXRpYyBpbnQgY2hpcF9hbGxvd19zbGVlcF93aWxjMTAwMChzdHJ1Y3Qgd2lsYyAqd2lsYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTU0NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jPTYzMD1zdGF0aWMgaW50IGNoaXBfYWxsb3dfc2xlZXAoc3RydWN0IHdpbGMgKndpbGMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy02MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjMyOlxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjMzOlxcdFxcdHJldHVybiBjaGlwX2FsbG93X3NsZWVwX3dpbGMxMDAwKHdpbGMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNjM0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNjM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6NjM4OnN0YXRpYyBpbnQgY2hpcF93YWtldXBfd2lsYzEwMDAoc3RydWN0IHdpbGMgKndpbGMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz03NjA9c3RhdGljIGludCBjaGlwX3dha2V1cChzdHJ1Y3Qgd2lsYyAqd2lsYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo3NjI6XFx0aWYgKGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYzo3NjM6XFx0XFx0cmV0dXJuIGNoaXBfd2FrZXVwX3dpbGMxMDAwKHdpbGMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtNzY0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9NzkzPWludCBob3N0X3dha2V1cF9ub3RpZnkoc3RydWN0IHdpbGMgKndpbGMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjgwMDpcXHR3aWxjLVxcdTAwM2VoaWZfZnVuYy1cXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpID9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTgwMS1cXHRcXHRcXHRcXHRcXHQgICAgV0lMQzEwMDBfQ09SVFVTX0lOVEVSUlVQVF8yIDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9ODA3PWludCBob3N0X3NsZWVwX25vdGlmeShzdHJ1Y3Qgd2lsYyAqd2lsYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6ODE0OlxcdHdpbGMtXFx1MDAzZWhpZl9mdW5jLVxcdTAwM2VoaWZfd3JpdGVfcmVnKHdpbGMsIGlzX3dpbGMxMDAwKHdpbGMtXFx1MDAzZWNoaXBpZCkgP1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtODE1LVxcdFxcdFxcdFxcdFxcdCAgICBXSUxDMTAwMF9DT1JUVVNfSU5URVJSVVBUXzEgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYz04MjE9aW50IHdpbGNfd2xhbl9oYW5kbGVfdHhxKHN0cnVjdCB3aWxjICp3aWxjLCB1MzIgKnR4cV9jb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtOTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6OTUxOlxcdFxcdGlmIChpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy05NTItXFx0XFx0XFx0cmV0ID0gZnVuYy1cXHUwMDNlaGlmX3dyaXRlX3JlZyh3aWxjLCBXSUxDX0hPU1RfVk1NX0NUTCwgMHgyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTU5MT1pbnQgd2lsY19nZXRfY2hpcGlkKHN0cnVjdCB3aWxjICp3aWxjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNjAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM6MTYwMzpcXHRcXHRcXHRpZiAoIWlzX3dpbGMxMDAwKGNoaXBpZCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jLTE2MDQtXFx0XFx0XFx0XFx0d2lsYy1cXHUwMDNlY2hpcGlkID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmM9MTczNz1pbnQgd2lsY193bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmMtMTc2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5jOjE3NjE6XFx0XFx0aWYgKCFpc193aWxjMTAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpIFxcdTAwMjZcXHUwMDI2ICFpc193aWxjMzAwMCh3aWxjLVxcdTAwM2VjaGlwaWQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL3dsYW4uYy0xNzYyLVxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiVW5zdXBwb3J0ZWQgY2hpcGlkOiAleFxcXFxuXFxcIiwgd2lsYy1cXHUwMDNlY2hpcGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmg9NDMzPXN0cnVjdCB3aWxjX3ZpZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oLTQzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvd2xhbi5oOjQzNTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfd2lsYzEwMDAodTMyIGlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC93bGFuLmgtNDM2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzQ6NTQuNzI5Nzk2MjUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MzAxNzI4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIGRyaXZlciwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoZXJlIHdlIHN0YW5kLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBhIHBoeXNpY2FsIGRldmljZSwgYW5kIG5vdGhpbmcgZWxzZS4gVGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgdGhlIGRldmljZSB3aXRoaW4gdGhlIGtlcm5lbCwgbm9yIGlzIHRoZXJlIGFueSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgZW11bGF0ZWQgYnkgUUVNVS4gVGhhdCdzIGEgcHJldHR5IGJpZyByb2FkYmxvY2sgZm9yIGZ1enppbmcsIHJpZ2h0IG9mZiB0aGUgYmF0LlxuXG5HaXZlbiB0aGlzLCB0aGUgY29kZSB3aXRoaW4gdGhpcyBkcml2ZXIgaXMgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2UgY2FuJ3QgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgaXQncyBtZWFudCB0byBjb250cm9sLiBUaGVyZWZvcmUsIGZyb20gYSBwcmFjdGljYWwgc3RhbmRwb2ludCwgYXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgZHJpdmVyIGluIG91ciBjdXJyZW50IHNldHVwIGlzIGp1c3Qgbm90IGZlYXNpYmxlLiBJJ2xsIG5lZWQgdG8gbWFyayB0aGlzIGFzIG5vdCB3b3J0aCBwdXJzdWluZywgYW5kIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSBkcml2ZXIgdGhhdCdzIGluYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNvbnRleHQgd2UncmUgd29ya2luZyBpbi4gV2UgbmVlZCB0byBmb2N1cyBvdXIgZWZmb3J0cyB3aGVyZSB3ZSBjYW4gYWN0dWFsbHkgZ2V0IHNvbWUgbWVhbmluZ2Z1bCBjb3ZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDIsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTM6MzU6MDMuMTU5OTcxNTQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHdpbGMxMDAwIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTRElPL1NQSSB3aXJlbGVzcyBkcml2ZXIgZm9yIEF0bWVsIFdJTEMxMDAwIGNoaXBzLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCBtZWFuaW5nIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHRoZSBuZXRkZXYgd2lsbCBub3QgYmUgY3JlYXRlZC4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow82dpx[1] Phase: Running StartedAt: 2026-07-14 13:35:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow82dpx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-14 13:35:14 +0000 UTC FinishedAt: 2026-07-14 13:35:18 +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,}