Name: series-workflowsr699 Phase: Failed StartedAt: 2026-08-28 14:09:10 +0000 UTC FinishedAt: 2026-08-28 16:42:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr699[0] Phase: Succeeded StartedAt: 2026-08-28 14:09:10 +0000 UTC FinishedAt: 2026-08-28 16:42:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr699[0].run-triage Phase: Succeeded StartedAt: 2026-08-28 14:09:10 +0000 UTC FinishedAt: 2026-08-28 16:42:45 +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+CgkJCTx0ZD4yMDI2LzA4LzI4IDE1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZjODY2ODZiZDJiMjRjNWMzZGI0M2FhM2I4MGQ3OTdiMDc1ZjA2MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxNTo1MzoyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xuaW5kZXggYTc2MGRlMTkxZmNlNy4uYTk0MjVlOWE5NGY0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbkBAIC0zMDY4LDcgJiM0MzszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRcdFx0ZnJlZV9pcnEoY2FyZC1cdTAwM2Vtc2l4X2VudHJpZXNbal0udmVjdG9yLFxuLVx0XHRcdFx0XHRcdCBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2ldKTtcbiYjNDM7XHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuIFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtNU0l4IGVuYWJsZWQhXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNTo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDI4IDE1OjUzOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMKaW5kZXggYTc2MGRlMTkxZmNlNy4uYTk0MjVlOWE5NGY0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jCkBAIC0zMDY4LDcgJiM0MzszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcikKIAkJCQkJICAgIHJldCk7CiAJCQkJZm9yIChqID0gMDsgaiAmbHQ7IGk7IGomIzQzOyYjNDM7KQogCQkJCQlmcmVlX2lycShjYXJkLSZndDttc2l4X2VudHJpZXNbal0udmVjdG9yLAotCQkJCQkJICZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbaV0pOwomIzQzOwkJCQkJCSAmYW1wO2NhcmQtJmd0O21zaXhfY3R4W2pdKTsKIAkJCQlwY2lfZGlzYWJsZV9tc2l4KHBkZXYpOwogCQkJfSBlbHNlIHsKIAkJCQltd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csICYjMzQ7TVNJeCBlbmFibGVkISYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjQxbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCBsb29rcyBsaWtlIGEgZml4IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rLiBJIHNlZSB0aGUgZGlmZiBpbnZvbHZlcyBhbiBpbmRleCBjaGFuZ2UsIGJ1dCB0aGUgY29yZSBvZiBpdCBpcyB0aGUgbG9vcCBpbiBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCB3aGVyZSBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgY29ycmVjdGlvbiB0byB0aGUgYGZyZWVfaXJxYCBjYWxsLiBJbnN0ZWFkIG9mIHBhc3NpbmcgYCZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbaV1gLCBpdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBoYXZlIGJlZW4gYCZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbal1gLiBNaW5vciwgYnV0IGRlZmluaXRlbHkgd29ydGggdW5kZXJzdGFuZGluZy4KClJpZ2h0LCB0aGlzIGlzIE1hcnZlbGwgbXdpZmlleCBQQ0llIGhhcmR3YXJlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXM/IElzIHRoZXJlIGFuIGVhc3kgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gQmVmb3JlIEkgZ28gZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgZ3VpZGVsaW5lcyB0byBzZWUgaWYgdGhpcyBpcyBldmVuIGZ1enphYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgZmFsbCBpbnRvIGEgY2F0ZWdvcnkgb2YgY2hhbmdlcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGV4Y2x1ZGVkLiBMZXQgbWUgc2VlLi4uIGRvZXMgdGhpcyBpbnZvbHZlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBjb3NtZXRpYyBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmNhbiYjMzk7dCogYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBoYXZlIHRvIGxvb2sgaW50byB0aGlzIGNsb3NlciwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCYjMzk7cyBhIG5vLWdvIGZvciBXb3J0aEZ1enppbmcuIEl0JiMzOTtzIGEgUENJIGRyaXZlciBzbyB0aGF0IG1ha2VzIGl0IGEgbGl0dGxlIGxlc3Mgc3RyYWlnaHRmb3J3YXJkLiBPa2F5LCBsZXQmIzM5O3Mgem9vbSBpbiBvbiBgbXdpZmlleF9wY2llLmNgIGFyb3VuZCBsaW5lIDMwNjguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyIGJldHRlciB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZnV6emFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDUwOlx0XHRcdFx0Y2FyZC1cdTAwM2Vtc2l4X2VudHJpZXNbaV0uZW50cnkgPSBpO1xuMzA1MTpcdFx0XHRyZXQgPSBwY2lfZW5hYmxlX21zaXhfZXhhY3QocGRldiwgY2FyZC1cdTAwM2Vtc2l4X2VudHJpZXMsXG4zMDUyOlx0XHRcdFx0XHRcdCAgICBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlMpO1xuMzA1MzpcdFx0XHRpZiAoIXJldCkge1xuMzA1NDpcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfTlVNX01TSVhfVkVDVE9SUzsgaSYjNDM7JiM0MzspIHtcbjMwNTU6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9jdHhbaV0uZGV2ID0gcGRldjtcbjMwNTY6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9jdHhbaV0ubXNnX2lkID0gaTtcbjMwNTc6XHRcbjMwNTg6XHRcdFx0XHRcdHJldCA9IHJlcXVlc3RfaXJxKGNhcmQtXHUwMDNlbXNpeF9lbnRyaWVzW2ldLnZlY3RvcixcbjMwNTk6XHRcdFx0XHRcdFx0XHQgIG13aWZpZXhfcGNpZV9pbnRlcnJ1cHQsIDAsXG4zMDYwOlx0XHRcdFx0XHRcdFx0ICBcJiMzNDtNV0lGSUVYX1BDSUVfTVNJWFwmIzM0OyxcbjMwNjE6XHRcdFx0XHRcdFx0XHQgIFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbaV0pO1xuMzA2MjpcdFx0XHRcdFx0aWYgKHJldClcbjMwNjM6XHRcdFx0XHRcdFx0YnJlYWs7XG4zMDY0Olx0XHRcdFx0fVxuMzA2NTpcdFxuMzA2NjpcdFx0XHRcdGlmIChyZXQpIHtcbjMwNjc6XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFwmIzM0O3JlcXVlc3RfaXJxIGZhaWw6ICVkXFxuXCYjMzQ7LFxuMzA2ODpcdFx0XHRcdFx0XHQgICAgcmV0KTtcbjMwNjk6XHRcdFx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGk7IGomIzQzOyYjNDM7KVxuMzA3MDpcdFx0XHRcdFx0XHRmcmVlX2lycShjYXJkLVx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXG4zMDcxOlx0XHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuMzA3MjpcdFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbjMwNzM6XHRcdFx0XHR9IGVsc2Uge1xuMzA3NDpcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtNU0l4IGVuYWJsZWQhXCYjMzQ7KTtcbjMwNzU6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9lbmFibGUgPSAxO1xuMzA3NjpcdFx0XHRcdFx0cmV0dXJuIDA7XG4zMDc3Olx0XHRcdFx0fVxuMzA3ODpcdFx0XHR9XG4zMDc5Olx0XHR9XG4zMDgwOlx0XG4zMDgxOlx0XHRpZiAocGNpX2VuYWJsZV9tc2kocGRldikgIT0gMClcbjMwODI6XHRcdFx0cGNpX2Rpc2FibGVfbXNpKHBkZXYpO1xuMzA4MzpcdFx0ZWxzZVxuMzA4NDpcdFx0XHRjYXJkLVx1MDAzZW1zaV9lbmFibGUgPSAxO1xuMzA4NTpcdFxuMzA4NjpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTywgXCYjMzQ7bXNpX2VuYWJsZSA9ICVkXFxuXCYjMzQ7LCBjYXJkLVx1MDAzZW1zaV9lbmFibGUpO1xuMzA4NzpcdFxuMzA4ODpcdFx0Y2FyZC1cdTAwM2VzaGFyZV9pcnFfY3R4LmRldiA9IHBkZXY7XG4zMDg5Olx0XHRjYXJkLVx1MDAzZXNoYXJlX2lycV9jdHgubXNnX2lkID0gLTE7XG4zMDkwOlx0XHRyZXQgPSByZXF1ZXN0X2lycShwZGV2LVx1MDAzZWlycSwgbXdpZmlleF9wY2llX2ludGVycnVwdCwgSVJRRl9TSEFSRUQsXG4zMDkxOlx0XHRcdFx0ICBcJiMzNDtNUlZMX1BDSUVcJiMzNDssIFx1MDAyNmNhcmQtXHUwMDNlc2hhcmVfaXJxX2N0eCk7XG4zMDkyOlx0XHRpZiAocmV0KSB7XG4zMDkzOlx0XHRcdHByX2VycihcJiMzNDtyZXF1ZXN0X2lycSBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OywgcmV0KTtcbjMwOTQ6XHRcdFx0cmV0dXJuIC0xO1xuMzA5NTpcdFx0fVxuMzA5NjpcdFxuMzA5NzpcdFx0cmV0dXJuIDA7XG4zMDk4Olx0fVxuMzA5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCBDYWxsZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhlIGRyaXZlci4gIEl0JiMzOTtzIGNyaXRpY2FsIHRvIHNlZSBob3cgdGhlIGludGVycnVwdCByZXF1ZXN0IHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyKHMpIHdpbGwgdGVsbCBtZSBhYm91dCB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIElSUSBzZXR1cCwgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdCBtYW5hZ2VtZW50IG92ZXJhbGwuIEtub3dpbmcgdGhpcyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZGlhZ25vc2luZyB0aGUgaXNzdWUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byBhbiBpbnRlcnJ1cHQgcmVxdWVzdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB2YWx1YWJsZSBpbnNpZ2h0cyBvbiBwb3RlbnRpYWwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wY2llX3JlcXVlc3RfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMDA0PXN0YXRpYyB2b2lkIG13aWZpZXhfY2xlYW51cF9wY2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMDQyOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMwNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzE1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMTYzOlx0aWYgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycShhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE2NC1cdFx0cmV0dXJuIC0xO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBtd2lmaWV4IFBDSWUgRHJpdmVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRpbWF0ZSBkYW5jZSBiZXR3ZWVuIGBtd2lmaWV4X3JlZ2lzdGVyX2RldmAgYW5kIHRoZSBQQ0llIHByb2JlIHNlcXVlbmNlIG9mIHRoZSBtd2lmaWV4IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gdGhlIFBDSWUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdzsgSSYjMzk7bSBhc3N1bWluZyB0aGF0IHNpbmNlIHRoaXMgaXMgYSBwcm9iZSBzaXR1YXRpb24sIGBtd2lmaWV4X3JlZ2lzdGVyX2RldmAgaXMgbGlrZWx5IGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGRldmljZSBzZXR1cCwgYWZ0ZXIgdGhlIHBsYXRmb3JtIHJlc291cmNlcyBhbmQgdGhlIHBjaSBkZXZpY2UgYXJlIGFsbCBpbml0aWFsaXplZCBhbmQgbWFwcGVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgaG93IHRoZSBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBob29rZWQgdXAgd2l0aGluIHRoZSBQQ0llIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JlZ2lzdGVyX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTUzMD1td2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4Mi1cdCAqIHJlbGV2YW50IGluZm9ybWF0aW9uIGZyb20gdGhlIGNhcmQuIFNvbWUgY29kZSBleHRyYWN0ZWQgZnJvbVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTgzOlx0ICogbXdpZmlleF9yZWdpc3Rlcl9kZXYoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNTg0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMTA1PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9nZXRfZndfbmFtZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MzE1NjpzdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMxNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzI0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHBjaWVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI0OC1cdC5wcm9nX2Z3ID1cdFx0XHRtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjMyNDk6XHQucmVnaXN0ZXJfZGV2ID1cdFx0XHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI1MC1cdC51bnJlZ2lzdGVyX2RldiA9XHRcdG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNDY2PW13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI0ODItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI0ODM6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yNDg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMxNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBzZGlvX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTMxNzUtXHQucHJvZ19mdyA9IG13aWZpZXhfcHJvZ19md193X2hlbHBlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MzE3NjpcdC5yZWdpc3Rlcl9kZXYgPSBtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3Ny1cdC51bnJlZ2lzdGVyX2RldiA9IG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyNjQ9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTgtLyogVGhpcyBmdW5jdGlvbiByZWdpc3RlciB1c2IgZGV2aWNlIGFuZCBpbml0aWFsaXplIHBhcmFtZXRlci4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjk5OnN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU4NTpcdC5yZWdpc3Rlcl9kZXYgPVx0XHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTg2LVx0LnVucmVnaXN0ZXJfZGV2ID1cdG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIG13aWZpZXhfcGNpZSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3BjaWVgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSBwcmVjaXNlbHkgKmhvdyogaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgdGhpcyBkcml2ZXIgYmVoYXZpbmcgbGlrZSBhIHN0YW5kYXJkLCBnZW5lcmljIFBDSSBkcml2ZXIsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSB2ZW5kb3Itc3BlY2lmaWMgaW1wbGVtZW50YXRpb24/IFRoYXQmIzM5O3Mga2V5LCBiZWNhdXNlIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBvZnRlbiByZWxpZXMgb24gcGFydGljdWxhciBoYXJkd2FyZSBmZWF0dXJlcyB0aGF0IG1pZ2h0IG5vdCBiZSBmdWxseSBlbXVsYXRlZCwgb3IgZXZlbiBwcmVzZW50LCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIG91ciBRRU1VIHRlc3RpbmcgY291bGQgYmUgZmxhd2VkLCBvciBpbXBvc3NpYmxlLgoKVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IGlmIHRoZSBkZXZpY2UgSURzIHRoYXQgdGhlIGRyaXZlciByZWNvZ25pemVzIGFyZSBzdGFuZGFyZCBvbmVzLCBvciB2ZW5kb3Igc3BlY2lmaWMuIFNvLCBJIHdpbGwgY2hlY2sgdGhlIFBDSSBkZXZpY2UgSURzIGFzc29jaWF0ZWQgd2l0aCBgbXdpZmlleF9wY2llYCB0byBwcm92aWRlIGZ1cnRoZXIgY2x1ZXMuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCBpcyBwb3NzaWJsZSB0byB0ZXN0IHVzaW5nIFFFTVUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcGNpZV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG13aWZpZXhfcGNpZV9vZl9tYXRjaF90YWJsZVtdIF9fbWF5YmVfdW51c2VkID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzoxODE6c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmVfb2Yoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzQxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjM3NjpzdGF0aWMgaW50IG13aWZpZXhfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzc3LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDA2LVx0aWYgKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NDA3Olx0XHRyZXQgPSBtd2lmaWV4X3BjaWVfcHJvYmVfb2YoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy00MDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz01ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG13aWZpZXhfcGNpZSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4NS1cdC5pZF90YWJsZSA9IG13aWZpZXhfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1ODY6XHQucHJvYmUgICAgPSBtd2lmaWV4X3BjaWVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4Ny1cdC5yZW1vdmUgICA9IG13aWZpZXhfcGNpZV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjAKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA1NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGZ1enphYmxlLCBzbyBJJiMzOTttIHJldmlzaXRpbmcgdGhlIGNyaXRlcmlhLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgTWFydmVsbCBXaUZpIFBDSWUgY2hpcHMuIFRoZXNlIGFyZW4mIzM5O3Qgc3RhbmRhcmQsIGFuZCB0aGVyZWZvcmUgdGhlIHNwZWNpZmljIFBDSWUgY2FyZHMgdGhhdCB0aGUgZHJpdmVyIG5lZWRzIGFyZSBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClNwZWNpZmljYWxseSwgdGhlIGNvZGUgbW9kaWZpZWQgaXMgd2l0aGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBlcnJvciBpbiB0aGUgY2xlYW51cCBwYXRoIHdoZW4gYHJlcXVlc3RfaXJxYCBmYWlscy4gRXNzZW50aWFsbHksIHRoZSBjb2RlIHRyaWVzIHRvIGZyZWUgdGhlIGludGVycnVwdCByZXF1ZXN0IGJ1dCBkb2VzIGl0IGluY29ycmVjdGx5LgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRldGFpbHMuIFRoZSBmaWxlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jYCBjb25maXJtcyBpdCYjMzk7cyB0aGUgcmlnaHQgZHJpdmVyIChgQ09ORklHX01XSUZJRVhfUENJRWApLiBRRU1VJiMzOTtzIHN0YW5kYXJkIG5ldHdvcmsgZW11bGF0aW9ucyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQpIGRvbiYjMzk7dCBpbmNsdWRlIE1hcnZlbGwgV2lGaSBQQ0llIGhhcmR3YXJlLiBUaGlzIG1lYW5zLCB3aXRob3V0IHBoeXNpY2FsIE1hcnZlbGwgaGFyZHdhcmUsIHRoZSBjb3JyZWN0ZWQgZXJyb3IgcGF0aCwgYW5kIHRoZSB3aG9sZSBmdW5jdGlvbiwgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpGdXJ0aGVybW9yZSwgdGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoKWAsIHdoZXJlIHRoZXJlJiMzOTtzIGFuIGluZGV4IGVycm9yLCBgJmFtcDtjYXJkLSZndDttc2l4X2N0eFtpXWAgaW5zdGVhZCBvZiBgJmFtcDtjYXJkLSZndDttc2l4X2N0eFtqXWAuIFRoYXQgaXMgYSByZWQgaGVycmluZy4gSXQgY29uZmlybXMgdGhlIGlzc3VlLCBidXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBmYWN0IGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyLiBCZWNhdXNlIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGlzIHVucmVhY2hhYmxlIHVuZGVyIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgUUVNVSBvciBHQ0UuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLgoKVGhlcmVmb3JlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIExldCYjMzk7cyBwcmVwYXJlIHRoYXQgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTU6NTM6MjcuNDI1NjY2OTI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0NjE4ODcxNzE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTU6NTM6MjcuNDI1NjcxMTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2MDA5Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxNTo1MzoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xcbmluZGV4IGE3NjBkZTE5MWZjZTcuLmE5NDI1ZTlhOTRmNDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcXG5AQCAtMzA2OCw3ICszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuIFxcdFxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpOyBqKyspXFxuIFxcdFxcdFxcdFxcdFxcdGZyZWVfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2Y2FyZC1cXHUwMDNlbXNpeF9jdHhbaV0pO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhcmQtXFx1MDAzZW1zaXhfY3R4W2pdKTtcXG4gXFx0XFx0XFx0XFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiTVNJeCBlbmFibGVkIVxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNTo1MzoyOC45NDIzNjc3NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI5NDQ2NzE5OTcwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDE1OjUzOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbmluZGV4IGE3NjBkZTE5MWZjZTcuLmE5NDI1ZTlhOTRmNDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jXG5AQCAtMzA2OCw3ICszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqKyspXG4gXHRcdFx0XHRcdGZyZWVfaXJxKGNhcmQtXHUwMDNlbXNpeF9lbnRyaWVzW2pdLnZlY3Rvcixcbi1cdFx0XHRcdFx0XHQgXHUwMDI2Y2FyZC1cdTAwM2Vtc2l4X2N0eFtpXSk7XG4rXHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuIFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcIk1TSXggZW5hYmxlZCFcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNTo1MzoyOC45NDIzNjg4OTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDY5NjY1MDg1OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gg4oCTIGl0IGxvb2tzIGxpa2UgYSBmaXggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNgLiBMZXQncyB0YWtlIGEgbG9vay4gSSBzZWUgdGhlIGRpZmYgaW52b2x2ZXMgYW4gaW5kZXggY2hhbmdlLCBidXQgdGhlIGNvcmUgb2YgaXQgaXMgdGhlIGxvb3AgaW4gYG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycWAgd2hlcmUgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgY29ycmVjdGlvbiB0byB0aGUgYGZyZWVfaXJxYCBjYWxsLiBJbnN0ZWFkIG9mIHBhc3NpbmcgYFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbaV1gLCBpdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBoYXZlIGJlZW4gYFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal1gLiBNaW5vciwgYnV0IGRlZmluaXRlbHkgd29ydGggdW5kZXJzdGFuZGluZy5cblxuUmlnaHQsIHRoaXMgaXMgTWFydmVsbCBtd2lmaWV4IFBDSWUgaGFyZHdhcmUuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqdGVzdCogdGhpcz8gSXMgdGhlcmUgYW4gZWFzeSB3YXkgdG8gZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBCZWZvcmUgSSBnbyBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBndWlkZWxpbmVzIHRvIHNlZSBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGZhbGwgaW50byBhIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBleGNsdWRlZC4gTGV0IG1lIHNlZS4uLiBkb2VzIHRoaXMgaW52b2x2ZSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgY29zbWV0aWMgbG9nZ2luZyBjaGFuZ2VzPyBObywgaXQncyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmNhbid0KiBiZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBJIGhhdmUgdG8gbG9vayBpbnRvIHRoaXMgY2xvc2VyLCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0J3MgYSBuby1nbyBmb3IgV29ydGhGdXp6aW5nLiBJdCdzIGEgUENJIGRyaXZlciBzbyB0aGF0IG1ha2VzIGl0IGEgbGl0dGxlIGxlc3Mgc3RyYWlnaHRmb3J3YXJkLiBPa2F5LCBsZXQncyB6b29tIGluIG9uIGBtd2lmaWV4X3BjaWUuY2AgYXJvdW5kIGxpbmUgMzA2OC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgYmV0dGVyIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6MzQ6MzguNjA3NDU3MTQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzA1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzA1MDpcXHRcXHRcXHRcXHRjYXJkLVxcdTAwM2Vtc2l4X2VudHJpZXNbaV0uZW50cnkgPSBpO1xcbjMwNTE6XFx0XFx0XFx0cmV0ID0gcGNpX2VuYWJsZV9tc2l4X2V4YWN0KHBkZXYsIGNhcmQtXFx1MDAzZW1zaXhfZW50cmllcyxcXG4zMDUyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlMpO1xcbjMwNTM6XFx0XFx0XFx0aWYgKCFyZXQpIHtcXG4zMDU0OlxcdFxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlM7IGkrKykge1xcbjMwNTU6XFx0XFx0XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpeF9jdHhbaV0uZGV2ID0gcGRldjtcXG4zMDU2OlxcdFxcdFxcdFxcdFxcdGNhcmQtXFx1MDAzZW1zaXhfY3R4W2ldLm1zZ19pZCA9IGk7XFxuMzA1NzpcXHRcXG4zMDU4OlxcdFxcdFxcdFxcdFxcdHJldCA9IHJlcXVlc3RfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tpXS52ZWN0b3IsXFxuMzA1OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIG13aWZpZXhfcGNpZV9pbnRlcnJ1cHQsIDAsXFxuMzA2MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJNV0lGSUVYX1BDSUVfTVNJWFxcXCIsXFxuMzA2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjYXJkLVxcdTAwM2Vtc2l4X2N0eFtpXSk7XFxuMzA2MjpcXHRcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjMwNjM6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzA2NDpcXHRcXHRcXHRcXHR9XFxuMzA2NTpcXHRcXG4zMDY2OlxcdFxcdFxcdFxcdGlmIChyZXQpIHtcXG4zMDY3OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJyZXF1ZXN0X2lycSBmYWlsOiAlZFxcXFxuXFxcIixcXG4zMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbjMwNjk6XFx0XFx0XFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGk7IGorKylcXG4zMDcwOlxcdFxcdFxcdFxcdFxcdFxcdGZyZWVfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXFxuMzA3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhcmQtXFx1MDAzZW1zaXhfY3R4W2pdKTtcXG4zMDcyOlxcdFxcdFxcdFxcdFxcdHBjaV9kaXNhYmxlX21zaXgocGRldik7XFxuMzA3MzpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbjMwNzQ6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiTVNJeCBlbmFibGVkIVxcXCIpO1xcbjMwNzU6XFx0XFx0XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpeF9lbmFibGUgPSAxO1xcbjMwNzY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMzA3NzpcXHRcXHRcXHRcXHR9XFxuMzA3ODpcXHRcXHRcXHR9XFxuMzA3OTpcXHRcXHR9XFxuMzA4MDpcXHRcXG4zMDgxOlxcdFxcdGlmIChwY2lfZW5hYmxlX21zaShwZGV2KSAhPSAwKVxcbjMwODI6XFx0XFx0XFx0cGNpX2Rpc2FibGVfbXNpKHBkZXYpO1xcbjMwODM6XFx0XFx0ZWxzZVxcbjMwODQ6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpX2VuYWJsZSA9IDE7XFxuMzA4NTpcXHRcXG4zMDg2OlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJtc2lfZW5hYmxlID0gJWRcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1zaV9lbmFibGUpO1xcbjMwODc6XFx0XFxuMzA4ODpcXHRcXHRjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4LmRldiA9IHBkZXY7XFxuMzA4OTpcXHRcXHRjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4Lm1zZ19pZCA9IC0xO1xcbjMwOTA6XFx0XFx0cmV0ID0gcmVxdWVzdF9pcnEocGRldi1cXHUwMDNlaXJxLCBtd2lmaWV4X3BjaWVfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCxcXG4zMDkxOlxcdFxcdFxcdFxcdCAgXFxcIk1SVkxfUENJRVxcXCIsIFxcdTAwMjZjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4KTtcXG4zMDkyOlxcdFxcdGlmIChyZXQpIHtcXG4zMDkzOlxcdFxcdFxcdHByX2VycihcXFwicmVxdWVzdF9pcnEgZmFpbGVkOiByZXQ9JWRcXFxcblxcXCIsIHJldCk7XFxuMzA5NDpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuMzA5NTpcXHRcXHR9XFxuMzA5NjpcXHRcXG4zMDk3OlxcdFxcdHJldHVybiAwO1xcbjMwOTg6XFx0fVxcbjMwOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjM0OjM4LjYwNzU5NDEwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk1NDU5MjE0MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCBDYWxsZXJzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiAgSXQncyBjcml0aWNhbCB0byBzZWUgaG93IHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBwcm9jZXNzIGlzIGluaXRpYXRlZCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcihzKSB3aWxsIHRlbGwgbWUgYWJvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBJUlEgc2V0dXAsIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBpbnRlcnJ1cHQgbWFuYWdlbWVudCBvdmVyYWxsLiBLbm93aW5nIHRoaXMgY29udGV4dCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGRpYWdub3NpbmcgdGhlIGlzc3VlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byBhbiBpbnRlcnJ1cHQgcmVxdWVzdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB2YWx1YWJsZSBpbnNpZ2h0cyBvbiBwb3RlbnRpYWwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjM2OjE0LjA2NjgxMTcwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTcxNjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMDA0PXN0YXRpYyB2b2lkIG13aWZpZXhfY2xlYW51cF9wY2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMwNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMDQyOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzE1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMTYzOlxcdGlmIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoYWRhcHRlcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMTY0LVxcdFxcdHJldHVybiAtMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6MzY6MTQuMTM2NTM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NTQ2NzI2MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtd2lmaWV4IFBDSWUgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50aW1hdGUgZGFuY2UgYmV0d2VlbiBgbXdpZmlleF9yZWdpc3Rlcl9kZXZgIGFuZCB0aGUgUENJZSBwcm9iZSBzZXF1ZW5jZSBvZiB0aGUgbXdpZmlleCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRyYWNlIGhvdyB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIHRoZSBQQ0llIGNvbnRleHQuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdzsgSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgdGhpcyBpcyBhIHByb2JlIHNpdHVhdGlvbiwgYG13aWZpZXhfcmVnaXN0ZXJfZGV2YCBpcyBsaWtlbHkgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwLCBhZnRlciB0aGUgcGxhdGZvcm0gcmVzb3VyY2VzIGFuZCB0aGUgcGNpIGRldmljZSBhcmUgYWxsIGluaXRpYWxpemVkIGFuZCBtYXBwZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCBob3cgdGhlIGRldmljZSBkYXRhIHN0cnVjdHVyZXMgYXJlIGhvb2tlZCB1cCB3aXRoaW4gdGhlIFBDSWUgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6Mzc6MjMuNjgzMjY1NTUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjU2NjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlZ2lzdGVyX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MzA9bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4Mi1cXHQgKiByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjYXJkLiBTb21lIGNvZGUgZXh0cmFjdGVkIGZyb21cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1ODM6XFx0ICogbXdpZmlleF9yZWdpc3Rlcl9kZXYoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4NC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzEwNT1zdGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfZ2V0X2Z3X25hbWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjMxNTY6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTMyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBwY2llX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI0OC1cXHQucHJvZ19mdyA9XFx0XFx0XFx0bXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MzI0OTpcXHQucmVnaXN0ZXJfZGV2ID1cXHRcXHRcXHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMyNTAtXFx0LnVucmVnaXN0ZXJfZGV2ID1cXHRcXHRtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNDY2PW13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjQ4Mi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI0ODM6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjQ4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMxNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3NS1cXHQucHJvZ19mdyA9IG13aWZpZXhfcHJvZ19md193X2hlbHBlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjMxNzY6XFx0LnJlZ2lzdGVyX2RldiA9IG13aWZpZXhfcmVnaXN0ZXJfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3Ny1cXHQudW5yZWdpc3Rlcl9kZXYgPSBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyNjQ9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI5OC0vKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVyIHVzYiBkZXZpY2UgYW5kIGluaXRpYWxpemUgcGFyYW1ldGVyLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjk5OnN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1ODU6XFx0LnJlZ2lzdGVyX2RldiA9XFx0XFx0bXdpZmlleF9yZWdpc3Rlcl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1ODYtXFx0LnVucmVnaXN0ZXJfZGV2ID1cXHRtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjozNzoyMy45MzU4Mzg3NDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjkzOTE1Mjc1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleF9wY2llIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3BjaWVgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSBwcmVjaXNlbHkgKmhvdyogaXQncyBiZWluZyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyB0aGlzIGRyaXZlciBiZWhhdmluZyBsaWtlIGEgc3RhbmRhcmQsIGdlbmVyaWMgUENJIGRyaXZlciwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIHZlbmRvci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbj8gVGhhdCdzIGtleSwgYmVjYXVzZSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgb2Z0ZW4gcmVsaWVzIG9uIHBhcnRpY3VsYXIgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBtaWdodCBub3QgYmUgZnVsbHkgZW11bGF0ZWQsIG9yIGV2ZW4gcHJlc2VudCwgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBJZiB0aGF0J3MgdGhlIGNhc2UsIG91ciBRRU1VIHRlc3RpbmcgY291bGQgYmUgZmxhd2VkLCBvciBpbXBvc3NpYmxlLlxuXG5UaGVyZWZvcmUsIHRoZSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgaWYgdGhlIGRldmljZSBJRHMgdGhhdCB0aGUgZHJpdmVyIHJlY29nbml6ZXMgYXJlIHN0YW5kYXJkIG9uZXMsIG9yIHZlbmRvciBzcGVjaWZpYy4gU28sIEkgd2lsbCBjaGVjayB0aGUgUENJIGRldmljZSBJRHMgYXNzb2NpYXRlZCB3aXRoIGBtd2lmaWV4X3BjaWVgIHRvIHByb3ZpZGUgZnVydGhlciBjbHVlcy4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0IGlzIHBvc3NpYmxlIHRvIHRlc3QgdXNpbmcgUUVNVS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjQxOjUzLjMyNzM2ODc5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzU4MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcGNpZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTE3NT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtd2lmaWV4X3BjaWVfb2ZfbWF0Y2hfdGFibGVbXSBfX21heWJlX3VudXNlZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTgxOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2JlX29mKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTM0MT1zdGF0aWMgaW50IG13aWZpZXhfcGNpZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozNzY6c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzctXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDA2LVxcdGlmIChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NDA3OlxcdFxcdHJldCA9IG13aWZpZXhfcGNpZV9wcm9iZV9vZihcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTQwOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz01ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG13aWZpZXhfcGNpZSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTg1LVxcdC5pZF90YWJsZSA9IG13aWZpZXhfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NTg2OlxcdC5wcm9iZSAgICA9IG13aWZpZXhfcGNpZV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4Ny1cXHQucmVtb3ZlICAgPSBtd2lmaWV4X3BjaWVfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjo0MTo1My40MzI3MzU0MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDAxODE2MDE0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBmdXp6YWJsZSwgc28gSSdtIHJldmlzaXRpbmcgdGhlIGNyaXRlcmlhLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgTWFydmVsbCBXaUZpIFBDSWUgY2hpcHMuIFRoZXNlIGFyZW4ndCBzdGFuZGFyZCwgYW5kIHRoZXJlZm9yZSB0aGUgc3BlY2lmaWMgUENJZSBjYXJkcyB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBjb2RlIG1vZGlmaWVkIGlzIHdpdGhpbiBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gZXJyb3IgaW4gdGhlIGNsZWFudXAgcGF0aCB3aGVuIGByZXF1ZXN0X2lycWAgZmFpbHMuIEVzc2VudGlhbGx5LCB0aGUgY29kZSB0cmllcyB0byBmcmVlIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBidXQgZG9lcyBpdCBpbmNvcnJlY3RseS5cblxuTGV0J3MgY29uZmlybSB0aGUgZGV0YWlscy4gVGhlIGZpbGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNgIGNvbmZpcm1zIGl0J3MgdGhlIHJpZ2h0IGRyaXZlciAoYENPTkZJR19NV0lGSUVYX1BDSUVgKS4gUUVNVSdzIHN0YW5kYXJkIG5ldHdvcmsgZW11bGF0aW9ucyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQpIGRvbid0IGluY2x1ZGUgTWFydmVsbCBXaUZpIFBDSWUgaGFyZHdhcmUuIFRoaXMgbWVhbnMsIHdpdGhvdXQgcGh5c2ljYWwgTWFydmVsbCBoYXJkd2FyZSwgdGhlIGNvcnJlY3RlZCBlcnJvciBwYXRoLCBhbmQgdGhlIHdob2xlIGZ1bmN0aW9uLCBjYW4ndCBiZSByZWFjaGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5GdXJ0aGVybW9yZSwgdGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoKWAsIHdoZXJlIHRoZXJlJ3MgYW4gaW5kZXggZXJyb3IsIGBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2ldYCBpbnN0ZWFkIG9mIGBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2pdYC4gVGhhdCBpcyBhIHJlZCBoZXJyaW5nLiBJdCBjb25maXJtcyB0aGUgaXNzdWUsIGJ1dCBkb2Vzbid0IGNoYW5nZSB0aGUgZmFjdCBpdCdzIHVucmVhY2hhYmxlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXMgY2xlYXIuIEJlY2F1c2UgdGhlIGBtd2lmaWV4X3BjaWVgIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgdW5kZXIgdGhlIHN0YW5kYXJkIGZ1enppbmcgY29uZmlndXJhdGlvbiB1c2luZyBRRU1VIG9yIEdDRS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1ZSB0byBoYXJkd2FyZSByZXF1aXJlbWVudHMuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoYXQgdG9vbCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjIwLCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjQyOjMzLjYxNDMzOTkwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjo0MjozMy42MTQzNjY1ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsr699[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-28 14:09:10 +0000 UTC FinishedAt: 2026-08-28 16:42:34 +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+CgkJCTx0ZD4yMDI2LzA4LzI4IDE1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZjODY2ODZiZDJiMjRjNWMzZGI0M2FhM2I4MGQ3OTdiMDc1ZjA2MjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxNTo1MzoyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xuaW5kZXggYTc2MGRlMTkxZmNlNy4uYTk0MjVlOWE5NGY0NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbkBAIC0zMDY4LDcgJiM0MzszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRcdFx0ZnJlZV9pcnEoY2FyZC1cdTAwM2Vtc2l4X2VudHJpZXNbal0udmVjdG9yLFxuLVx0XHRcdFx0XHRcdCBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2ldKTtcbiYjNDM7XHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuIFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtNU0l4IGVuYWJsZWQhXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNTo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDI4IDE1OjUzOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMKaW5kZXggYTc2MGRlMTkxZmNlNy4uYTk0MjVlOWE5NGY0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jCkBAIC0zMDY4LDcgJiM0MzszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcikKIAkJCQkJICAgIHJldCk7CiAJCQkJZm9yIChqID0gMDsgaiAmbHQ7IGk7IGomIzQzOyYjNDM7KQogCQkJCQlmcmVlX2lycShjYXJkLSZndDttc2l4X2VudHJpZXNbal0udmVjdG9yLAotCQkJCQkJICZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbaV0pOwomIzQzOwkJCQkJCSAmYW1wO2NhcmQtJmd0O21zaXhfY3R4W2pdKTsKIAkJCQlwY2lfZGlzYWJsZV9tc2l4KHBkZXYpOwogCQkJfSBlbHNlIHsKIAkJCQltd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csICYjMzQ7TVNJeCBlbmFibGVkISYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjQxbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCBsb29rcyBsaWtlIGEgZml4IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rLiBJIHNlZSB0aGUgZGlmZiBpbnZvbHZlcyBhbiBpbmRleCBjaGFuZ2UsIGJ1dCB0aGUgY29yZSBvZiBpdCBpcyB0aGUgbG9vcCBpbiBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCB3aGVyZSBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgY29ycmVjdGlvbiB0byB0aGUgYGZyZWVfaXJxYCBjYWxsLiBJbnN0ZWFkIG9mIHBhc3NpbmcgYCZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbaV1gLCBpdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBoYXZlIGJlZW4gYCZhbXA7Y2FyZC0mZ3Q7bXNpeF9jdHhbal1gLiBNaW5vciwgYnV0IGRlZmluaXRlbHkgd29ydGggdW5kZXJzdGFuZGluZy4KClJpZ2h0LCB0aGlzIGlzIE1hcnZlbGwgbXdpZmlleCBQQ0llIGhhcmR3YXJlLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXM/IElzIHRoZXJlIGFuIGVhc3kgd2F5IHRvIGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gQmVmb3JlIEkgZ28gZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgZ3VpZGVsaW5lcyB0byBzZWUgaWYgdGhpcyBpcyBldmVuIGZ1enphYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgZmFsbCBpbnRvIGEgY2F0ZWdvcnkgb2YgY2hhbmdlcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGV4Y2x1ZGVkLiBMZXQgbWUgc2VlLi4uIGRvZXMgdGhpcyBpbnZvbHZlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBjb3NtZXRpYyBsb2dnaW5nIGNoYW5nZXM/IE5vLCBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmNhbiYjMzk7dCogYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gSSBoYXZlIHRvIGxvb2sgaW50byB0aGlzIGNsb3NlciwgYmVjYXVzZSBpZiBpdCBkb2VzLCBpdCYjMzk7cyBhIG5vLWdvIGZvciBXb3J0aEZ1enppbmcuIEl0JiMzOTtzIGEgUENJIGRyaXZlciBzbyB0aGF0IG1ha2VzIGl0IGEgbGl0dGxlIGxlc3Mgc3RyYWlnaHRmb3J3YXJkLiBPa2F5LCBsZXQmIzM5O3Mgem9vbSBpbiBvbiBgbXdpZmlleF9wY2llLmNgIGFyb3VuZCBsaW5lIDMwNjguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyIGJldHRlciB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZnV6emFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDUwOlx0XHRcdFx0Y2FyZC1cdTAwM2Vtc2l4X2VudHJpZXNbaV0uZW50cnkgPSBpO1xuMzA1MTpcdFx0XHRyZXQgPSBwY2lfZW5hYmxlX21zaXhfZXhhY3QocGRldiwgY2FyZC1cdTAwM2Vtc2l4X2VudHJpZXMsXG4zMDUyOlx0XHRcdFx0XHRcdCAgICBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlMpO1xuMzA1MzpcdFx0XHRpZiAoIXJldCkge1xuMzA1NDpcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfTlVNX01TSVhfVkVDVE9SUzsgaSYjNDM7JiM0MzspIHtcbjMwNTU6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9jdHhbaV0uZGV2ID0gcGRldjtcbjMwNTY6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9jdHhbaV0ubXNnX2lkID0gaTtcbjMwNTc6XHRcbjMwNTg6XHRcdFx0XHRcdHJldCA9IHJlcXVlc3RfaXJxKGNhcmQtXHUwMDNlbXNpeF9lbnRyaWVzW2ldLnZlY3RvcixcbjMwNTk6XHRcdFx0XHRcdFx0XHQgIG13aWZpZXhfcGNpZV9pbnRlcnJ1cHQsIDAsXG4zMDYwOlx0XHRcdFx0XHRcdFx0ICBcJiMzNDtNV0lGSUVYX1BDSUVfTVNJWFwmIzM0OyxcbjMwNjE6XHRcdFx0XHRcdFx0XHQgIFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbaV0pO1xuMzA2MjpcdFx0XHRcdFx0aWYgKHJldClcbjMwNjM6XHRcdFx0XHRcdFx0YnJlYWs7XG4zMDY0Olx0XHRcdFx0fVxuMzA2NTpcdFxuMzA2NjpcdFx0XHRcdGlmIChyZXQpIHtcbjMwNjc6XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFwmIzM0O3JlcXVlc3RfaXJxIGZhaWw6ICVkXFxuXCYjMzQ7LFxuMzA2ODpcdFx0XHRcdFx0XHQgICAgcmV0KTtcbjMwNjk6XHRcdFx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGk7IGomIzQzOyYjNDM7KVxuMzA3MDpcdFx0XHRcdFx0XHRmcmVlX2lycShjYXJkLVx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXG4zMDcxOlx0XHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuMzA3MjpcdFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbjMwNzM6XHRcdFx0XHR9IGVsc2Uge1xuMzA3NDpcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcJiMzNDtNU0l4IGVuYWJsZWQhXCYjMzQ7KTtcbjMwNzU6XHRcdFx0XHRcdGNhcmQtXHUwMDNlbXNpeF9lbmFibGUgPSAxO1xuMzA3NjpcdFx0XHRcdFx0cmV0dXJuIDA7XG4zMDc3Olx0XHRcdFx0fVxuMzA3ODpcdFx0XHR9XG4zMDc5Olx0XHR9XG4zMDgwOlx0XG4zMDgxOlx0XHRpZiAocGNpX2VuYWJsZV9tc2kocGRldikgIT0gMClcbjMwODI6XHRcdFx0cGNpX2Rpc2FibGVfbXNpKHBkZXYpO1xuMzA4MzpcdFx0ZWxzZVxuMzA4NDpcdFx0XHRjYXJkLVx1MDAzZW1zaV9lbmFibGUgPSAxO1xuMzA4NTpcdFxuMzA4NjpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgSU5GTywgXCYjMzQ7bXNpX2VuYWJsZSA9ICVkXFxuXCYjMzQ7LCBjYXJkLVx1MDAzZW1zaV9lbmFibGUpO1xuMzA4NzpcdFxuMzA4ODpcdFx0Y2FyZC1cdTAwM2VzaGFyZV9pcnFfY3R4LmRldiA9IHBkZXY7XG4zMDg5Olx0XHRjYXJkLVx1MDAzZXNoYXJlX2lycV9jdHgubXNnX2lkID0gLTE7XG4zMDkwOlx0XHRyZXQgPSByZXF1ZXN0X2lycShwZGV2LVx1MDAzZWlycSwgbXdpZmlleF9wY2llX2ludGVycnVwdCwgSVJRRl9TSEFSRUQsXG4zMDkxOlx0XHRcdFx0ICBcJiMzNDtNUlZMX1BDSUVcJiMzNDssIFx1MDAyNmNhcmQtXHUwMDNlc2hhcmVfaXJxX2N0eCk7XG4zMDkyOlx0XHRpZiAocmV0KSB7XG4zMDkzOlx0XHRcdHByX2VycihcJiMzNDtyZXF1ZXN0X2lycSBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OywgcmV0KTtcbjMwOTQ6XHRcdFx0cmV0dXJuIC0xO1xuMzA5NTpcdFx0fVxuMzA5NjpcdFxuMzA5NzpcdFx0cmV0dXJuIDA7XG4zMDk4Olx0fVxuMzA5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCBDYWxsZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhlIGRyaXZlci4gIEl0JiMzOTtzIGNyaXRpY2FsIHRvIHNlZSBob3cgdGhlIGludGVycnVwdCByZXF1ZXN0IHByb2Nlc3MgaXMgaW5pdGlhdGVkIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyKHMpIHdpbGwgdGVsbCBtZSBhYm91dCB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgdGhlIElSUSBzZXR1cCwgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdCBtYW5hZ2VtZW50IG92ZXJhbGwuIEtub3dpbmcgdGhpcyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gZGlhZ25vc2luZyB0aGUgaXNzdWUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byBhbiBpbnRlcnJ1cHQgcmVxdWVzdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB2YWx1YWJsZSBpbnNpZ2h0cyBvbiBwb3RlbnRpYWwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9wY2llX3JlcXVlc3RfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMDA0PXN0YXRpYyB2b2lkIG13aWZpZXhfY2xlYW51cF9wY2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMDQyOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMwNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzE1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMTYzOlx0aWYgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycShhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE2NC1cdFx0cmV0dXJuIC0xO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MjUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBtd2lmaWV4IFBDSWUgRHJpdmVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRpbWF0ZSBkYW5jZSBiZXR3ZWVuIGBtd2lmaWV4X3JlZ2lzdGVyX2RldmAgYW5kIHRoZSBQQ0llIHByb2JlIHNlcXVlbmNlIG9mIHRoZSBtd2lmaWV4IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgaG93IHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIGhhcHBlbnMgaW4gdGhlIFBDSWUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdzsgSSYjMzk7bSBhc3N1bWluZyB0aGF0IHNpbmNlIHRoaXMgaXMgYSBwcm9iZSBzaXR1YXRpb24sIGBtd2lmaWV4X3JlZ2lzdGVyX2RldmAgaXMgbGlrZWx5IGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGRldmljZSBzZXR1cCwgYWZ0ZXIgdGhlIHBsYXRmb3JtIHJlc291cmNlcyBhbmQgdGhlIHBjaSBkZXZpY2UgYXJlIGFsbCBpbml0aWFsaXplZCBhbmQgbWFwcGVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgaG93IHRoZSBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBob29rZWQgdXAgd2l0aGluIHRoZSBQQ0llIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3JlZ2lzdGVyX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM9MTUzMD1td2lmaWV4X3JlaW5pdF9zdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4Mi1cdCAqIHJlbGV2YW50IGluZm9ybWF0aW9uIGZyb20gdGhlIGNhcmQuIFNvbWUgY29kZSBleHRyYWN0ZWQgZnJvbVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzoxNTgzOlx0ICogbXdpZmlleF9yZWdpc3Rlcl9kZXYoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0xNTg0LVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMTA1PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9nZXRfZndfbmFtZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MzE1NjpzdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMxNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzI0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHBjaWVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI0OC1cdC5wcm9nX2Z3ID1cdFx0XHRtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjMyNDk6XHQucmVnaXN0ZXJfZGV2ID1cdFx0XHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI1MC1cdC51bnJlZ2lzdGVyX2RldiA9XHRcdG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNDY2PW13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI0ODItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI0ODM6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yNDg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMxNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBzZGlvX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTMxNzUtXHQucHJvZ19mdyA9IG13aWZpZXhfcHJvZ19md193X2hlbHBlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MzE3NjpcdC5yZWdpc3Rlcl9kZXYgPSBtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3Ny1cdC51bnJlZ2lzdGVyX2RldiA9IG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyNjQ9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTgtLyogVGhpcyBmdW5jdGlvbiByZWdpc3RlciB1c2IgZGV2aWNlIGFuZCBpbml0aWFsaXplIHBhcmFtZXRlci4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjk5OnN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU4NTpcdC5yZWdpc3Rlcl9kZXYgPVx0XHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTg2LVx0LnVucmVnaXN0ZXJfZGV2ID1cdG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIG13aWZpZXhfcGNpZSBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3BjaWVgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSBwcmVjaXNlbHkgKmhvdyogaXQmIzM5O3MgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgdGhpcyBkcml2ZXIgYmVoYXZpbmcgbGlrZSBhIHN0YW5kYXJkLCBnZW5lcmljIFBDSSBkcml2ZXIsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggYSB2ZW5kb3Itc3BlY2lmaWMgaW1wbGVtZW50YXRpb24/IFRoYXQmIzM5O3Mga2V5LCBiZWNhdXNlIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBvZnRlbiByZWxpZXMgb24gcGFydGljdWxhciBoYXJkd2FyZSBmZWF0dXJlcyB0aGF0IG1pZ2h0IG5vdCBiZSBmdWxseSBlbXVsYXRlZCwgb3IgZXZlbiBwcmVzZW50LCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIG91ciBRRU1VIHRlc3RpbmcgY291bGQgYmUgZmxhd2VkLCBvciBpbXBvc3NpYmxlLgoKVGhlcmVmb3JlLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IGlmIHRoZSBkZXZpY2UgSURzIHRoYXQgdGhlIGRyaXZlciByZWNvZ25pemVzIGFyZSBzdGFuZGFyZCBvbmVzLCBvciB2ZW5kb3Igc3BlY2lmaWMuIFNvLCBJIHdpbGwgY2hlY2sgdGhlIFBDSSBkZXZpY2UgSURzIGFzc29jaWF0ZWQgd2l0aCBgbXdpZmlleF9wY2llYCB0byBwcm92aWRlIGZ1cnRoZXIgY2x1ZXMuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiBpdCBpcyBwb3NzaWJsZSB0byB0ZXN0IHVzaW5nIFFFTVUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcGNpZV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG13aWZpZXhfcGNpZV9vZl9tYXRjaF90YWJsZVtdIF9fbWF5YmVfdW51c2VkID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzoxODE6c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmVfb2Yoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0xODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzQxPXN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjM3NjpzdGF0aWMgaW50IG13aWZpZXhfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzc3LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDA2LVx0aWYgKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NDA3Olx0XHRyZXQgPSBtd2lmaWV4X3BjaWVfcHJvYmVfb2YoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy00MDgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz01ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG13aWZpZXhfcGNpZSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4NS1cdC5pZF90YWJsZSA9IG13aWZpZXhfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzo1ODY6XHQucHJvYmUgICAgPSBtd2lmaWV4X3BjaWVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4Ny1cdC5yZW1vdmUgICA9IG13aWZpZXhfcGNpZV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDE2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjAKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiA1NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzIGZ1enphYmxlLCBzbyBJJiMzOTttIHJldmlzaXRpbmcgdGhlIGNyaXRlcmlhLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgTWFydmVsbCBXaUZpIFBDSWUgY2hpcHMuIFRoZXNlIGFyZW4mIzM5O3Qgc3RhbmRhcmQsIGFuZCB0aGVyZWZvcmUgdGhlIHNwZWNpZmljIFBDSWUgY2FyZHMgdGhhdCB0aGUgZHJpdmVyIG5lZWRzIGFyZSBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4KClNwZWNpZmljYWxseSwgdGhlIGNvZGUgbW9kaWZpZWQgaXMgd2l0aGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBlcnJvciBpbiB0aGUgY2xlYW51cCBwYXRoIHdoZW4gYHJlcXVlc3RfaXJxYCBmYWlscy4gRXNzZW50aWFsbHksIHRoZSBjb2RlIHRyaWVzIHRvIGZyZWUgdGhlIGludGVycnVwdCByZXF1ZXN0IGJ1dCBkb2VzIGl0IGluY29ycmVjdGx5LgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGRldGFpbHMuIFRoZSBmaWxlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jYCBjb25maXJtcyBpdCYjMzk7cyB0aGUgcmlnaHQgZHJpdmVyIChgQ09ORklHX01XSUZJRVhfUENJRWApLiBRRU1VJiMzOTtzIHN0YW5kYXJkIG5ldHdvcmsgZW11bGF0aW9ucyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQpIGRvbiYjMzk7dCBpbmNsdWRlIE1hcnZlbGwgV2lGaSBQQ0llIGhhcmR3YXJlLiBUaGlzIG1lYW5zLCB3aXRob3V0IHBoeXNpY2FsIE1hcnZlbGwgaGFyZHdhcmUsIHRoZSBjb3JyZWN0ZWQgZXJyb3IgcGF0aCwgYW5kIHRoZSB3aG9sZSBmdW5jdGlvbiwgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgpGdXJ0aGVybW9yZSwgdGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoKWAsIHdoZXJlIHRoZXJlJiMzOTtzIGFuIGluZGV4IGVycm9yLCBgJmFtcDtjYXJkLSZndDttc2l4X2N0eFtpXWAgaW5zdGVhZCBvZiBgJmFtcDtjYXJkLSZndDttc2l4X2N0eFtqXWAuIFRoYXQgaXMgYSByZWQgaGVycmluZy4gSXQgY29uZmlybXMgdGhlIGlzc3VlLCBidXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBmYWN0IGl0JiMzOTtzIHVucmVhY2hhYmxlLgoKU28sIHRoZSBjb25jbHVzaW9uIGlzIGNsZWFyLiBCZWNhdXNlIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGlzIHVucmVhY2hhYmxlIHVuZGVyIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gdXNpbmcgUUVNVSBvciBHQ0UuIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLgoKVGhlcmVmb3JlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIExldCYjMzk7cyBwcmVwYXJlIHRoYXQgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAxNjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTU6NTM6MjcuNDI1NjY2OTI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0NjE4ODcxNzE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTU6NTM6MjcuNDI1NjcxMTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE2MDA5Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyOCAxNTo1MzoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xcbmluZGV4IGE3NjBkZTE5MWZjZTcuLmE5NDI1ZTlhOTRmNDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcXG5AQCAtMzA2OCw3ICszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuIFxcdFxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpOyBqKyspXFxuIFxcdFxcdFxcdFxcdFxcdGZyZWVfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2Y2FyZC1cXHUwMDNlbXNpeF9jdHhbaV0pO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhcmQtXFx1MDAzZW1zaXhfY3R4W2pdKTtcXG4gXFx0XFx0XFx0XFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiTVNJeCBlbmFibGVkIVxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNTo1MzoyOC45NDIzNjc3NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI5NDQ2NzE5OTcwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmM4NjY4NmJkMmIyNGM1YzNkYjQzYWEzYjgwZDc5N2IwNzVmMDYyOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDE1OjUzOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcbmluZGV4IGE3NjBkZTE5MWZjZTcuLmE5NDI1ZTlhOTRmNDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jXG5AQCAtMzA2OCw3ICszMDY4LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqKyspXG4gXHRcdFx0XHRcdGZyZWVfaXJxKGNhcmQtXHUwMDNlbXNpeF9lbnRyaWVzW2pdLnZlY3Rvcixcbi1cdFx0XHRcdFx0XHQgXHUwMDI2Y2FyZC1cdTAwM2Vtc2l4X2N0eFtpXSk7XG4rXHRcdFx0XHRcdFx0IFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal0pO1xuIFx0XHRcdFx0cGNpX2Rpc2FibGVfbXNpeChwZGV2KTtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcIk1TSXggZW5hYmxlZCFcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNTo1MzoyOC45NDIzNjg4OTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDY5NjY1MDg1OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gg4oCTIGl0IGxvb2tzIGxpa2UgYSBmaXggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNgLiBMZXQncyB0YWtlIGEgbG9vay4gSSBzZWUgdGhlIGRpZmYgaW52b2x2ZXMgYW4gaW5kZXggY2hhbmdlLCBidXQgdGhlIGNvcmUgb2YgaXQgaXMgdGhlIGxvb3AgaW4gYG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycWAgd2hlcmUgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGEgY29ycmVjdGlvbiB0byB0aGUgYGZyZWVfaXJxYCBjYWxsLiBJbnN0ZWFkIG9mIHBhc3NpbmcgYFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbaV1gLCBpdCBzZWVtcyBsaWtlIGl0IHNob3VsZCBoYXZlIGJlZW4gYFx1MDAyNmNhcmQtXHUwMDNlbXNpeF9jdHhbal1gLiBNaW5vciwgYnV0IGRlZmluaXRlbHkgd29ydGggdW5kZXJzdGFuZGluZy5cblxuUmlnaHQsIHRoaXMgaXMgTWFydmVsbCBtd2lmaWV4IFBDSWUgaGFyZHdhcmUuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqdGVzdCogdGhpcz8gSXMgdGhlcmUgYW4gZWFzeSB3YXkgdG8gZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBCZWZvcmUgSSBnbyBkb3duIHRoYXQgcmFiYml0IGhvbGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBndWlkZWxpbmVzIHRvIHNlZSBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGZhbGwgaW50byBhIGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBleGNsdWRlZC4gTGV0IG1lIHNlZS4uLiBkb2VzIHRoaXMgaW52b2x2ZSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgY29zbWV0aWMgbG9nZ2luZyBjaGFuZ2VzPyBObywgaXQncyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmNhbid0KiBiZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBJIGhhdmUgdG8gbG9vayBpbnRvIHRoaXMgY2xvc2VyLCBiZWNhdXNlIGlmIGl0IGRvZXMsIGl0J3MgYSBuby1nbyBmb3IgV29ydGhGdXp6aW5nLiBJdCdzIGEgUENJIGRyaXZlciBzbyB0aGF0IG1ha2VzIGl0IGEgbGl0dGxlIGxlc3Mgc3RyYWlnaHRmb3J3YXJkLiBPa2F5LCBsZXQncyB6b29tIGluIG9uIGBtd2lmaWV4X3BjaWUuY2AgYXJvdW5kIGxpbmUgMzA2OC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXJ0IG9mIHRoZSBkcml2ZXIgYmV0dGVyIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6MzQ6MzguNjA3NDU3MTQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzA1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzA1MDpcXHRcXHRcXHRcXHRjYXJkLVxcdTAwM2Vtc2l4X2VudHJpZXNbaV0uZW50cnkgPSBpO1xcbjMwNTE6XFx0XFx0XFx0cmV0ID0gcGNpX2VuYWJsZV9tc2l4X2V4YWN0KHBkZXYsIGNhcmQtXFx1MDAzZW1zaXhfZW50cmllcyxcXG4zMDUyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlMpO1xcbjMwNTM6XFx0XFx0XFx0aWYgKCFyZXQpIHtcXG4zMDU0OlxcdFxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNV0lGSUVYX05VTV9NU0lYX1ZFQ1RPUlM7IGkrKykge1xcbjMwNTU6XFx0XFx0XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpeF9jdHhbaV0uZGV2ID0gcGRldjtcXG4zMDU2OlxcdFxcdFxcdFxcdFxcdGNhcmQtXFx1MDAzZW1zaXhfY3R4W2ldLm1zZ19pZCA9IGk7XFxuMzA1NzpcXHRcXG4zMDU4OlxcdFxcdFxcdFxcdFxcdHJldCA9IHJlcXVlc3RfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tpXS52ZWN0b3IsXFxuMzA1OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIG13aWZpZXhfcGNpZV9pbnRlcnJ1cHQsIDAsXFxuMzA2MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJNV0lGSUVYX1BDSUVfTVNJWFxcXCIsXFxuMzA2MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjYXJkLVxcdTAwM2Vtc2l4X2N0eFtpXSk7XFxuMzA2MjpcXHRcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjMwNjM6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzA2NDpcXHRcXHRcXHRcXHR9XFxuMzA2NTpcXHRcXG4zMDY2OlxcdFxcdFxcdFxcdGlmIChyZXQpIHtcXG4zMDY3OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJyZXF1ZXN0X2lycSBmYWlsOiAlZFxcXFxuXFxcIixcXG4zMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbjMwNjk6XFx0XFx0XFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGk7IGorKylcXG4zMDcwOlxcdFxcdFxcdFxcdFxcdFxcdGZyZWVfaXJxKGNhcmQtXFx1MDAzZW1zaXhfZW50cmllc1tqXS52ZWN0b3IsXFxuMzA3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgXFx1MDAyNmNhcmQtXFx1MDAzZW1zaXhfY3R4W2pdKTtcXG4zMDcyOlxcdFxcdFxcdFxcdFxcdHBjaV9kaXNhYmxlX21zaXgocGRldik7XFxuMzA3MzpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbjMwNzQ6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiTVNJeCBlbmFibGVkIVxcXCIpO1xcbjMwNzU6XFx0XFx0XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpeF9lbmFibGUgPSAxO1xcbjMwNzY6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuMzA3NzpcXHRcXHRcXHRcXHR9XFxuMzA3ODpcXHRcXHRcXHR9XFxuMzA3OTpcXHRcXHR9XFxuMzA4MDpcXHRcXG4zMDgxOlxcdFxcdGlmIChwY2lfZW5hYmxlX21zaShwZGV2KSAhPSAwKVxcbjMwODI6XFx0XFx0XFx0cGNpX2Rpc2FibGVfbXNpKHBkZXYpO1xcbjMwODM6XFx0XFx0ZWxzZVxcbjMwODQ6XFx0XFx0XFx0Y2FyZC1cXHUwMDNlbXNpX2VuYWJsZSA9IDE7XFxuMzA4NTpcXHRcXG4zMDg2OlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJtc2lfZW5hYmxlID0gJWRcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1zaV9lbmFibGUpO1xcbjMwODc6XFx0XFxuMzA4ODpcXHRcXHRjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4LmRldiA9IHBkZXY7XFxuMzA4OTpcXHRcXHRjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4Lm1zZ19pZCA9IC0xO1xcbjMwOTA6XFx0XFx0cmV0ID0gcmVxdWVzdF9pcnEocGRldi1cXHUwMDNlaXJxLCBtd2lmaWV4X3BjaWVfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCxcXG4zMDkxOlxcdFxcdFxcdFxcdCAgXFxcIk1SVkxfUENJRVxcXCIsIFxcdTAwMjZjYXJkLVxcdTAwM2VzaGFyZV9pcnFfY3R4KTtcXG4zMDkyOlxcdFxcdGlmIChyZXQpIHtcXG4zMDkzOlxcdFxcdFxcdHByX2VycihcXFwicmVxdWVzdF9pcnEgZmFpbGVkOiByZXQ9JWRcXFxcblxcXCIsIHJldCk7XFxuMzA5NDpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuMzA5NTpcXHRcXHR9XFxuMzA5NjpcXHRcXG4zMDk3OlxcdFxcdHJldHVybiAwO1xcbjMwOTg6XFx0fVxcbjMwOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjM0OjM4LjYwNzU5NDEwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk1NDU5MjE0MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCBDYWxsZXJzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBhcm91bmQgYG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycWAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiAgSXQncyBjcml0aWNhbCB0byBzZWUgaG93IHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBwcm9jZXNzIGlzIGluaXRpYXRlZCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcihzKSB3aWxsIHRlbGwgbWUgYWJvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBJUlEgc2V0dXAsIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBhbmQgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBpbnRlcnJ1cHQgbWFuYWdlbWVudCBvdmVyYWxsLiBLbm93aW5nIHRoaXMgY29udGV4dCB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGRpYWdub3NpbmcgdGhlIGlzc3VlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gY2FsbCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byBhbiBpbnRlcnJ1cHQgcmVxdWVzdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB2YWx1YWJsZSBpbnNpZ2h0cyBvbiBwb3RlbnRpYWwgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjM2OjE0LjA2NjgxMTcwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTcxNjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0zMDA0PXN0YXRpYyB2b2lkIG13aWZpZXhfY2xlYW51cF9wY2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMwNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMDQyOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzE1Nj1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMxNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozMTYzOlxcdGlmIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoYWRhcHRlcikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zMTY0LVxcdFxcdHJldHVybiAtMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6MzY6MTQuMTM2NTM1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NTQ2NzI2MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtd2lmaWV4IFBDSWUgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50aW1hdGUgZGFuY2UgYmV0d2VlbiBgbXdpZmlleF9yZWdpc3Rlcl9kZXZgIGFuZCB0aGUgUENJZSBwcm9iZSBzZXF1ZW5jZSBvZiB0aGUgbXdpZmlleCBkcml2ZXIuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRyYWNlIGhvdyB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGluIHRoZSBQQ0llIGNvbnRleHQuIEknbSBnb2luZyB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdzsgSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgdGhpcyBpcyBhIHByb2JlIHNpdHVhdGlvbiwgYG13aWZpZXhfcmVnaXN0ZXJfZGV2YCBpcyBsaWtlbHkgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwLCBhZnRlciB0aGUgcGxhdGZvcm0gcmVzb3VyY2VzIGFuZCB0aGUgcGNpIGRldmljZSBhcmUgYWxsIGluaXRpYWxpemVkIGFuZCBtYXBwZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCBob3cgdGhlIGRldmljZSBkYXRhIHN0cnVjdHVyZXMgYXJlIGhvb2tlZCB1cCB3aXRoaW4gdGhlIFBDSWUgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMTY6Mzc6MjMuNjgzMjY1NTUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjU2NjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JlZ2lzdGVyX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTE1MzA9bXdpZmlleF9yZWluaXRfc3coc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4Mi1cXHQgKiByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjYXJkLiBTb21lIGNvZGUgZXh0cmFjdGVkIGZyb21cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjE1ODM6XFx0ICogbXdpZmlleF9yZWdpc3Rlcl9kZXYoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMTU4NC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MzEwNT1zdGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfZ2V0X2Z3X25hbWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjMxNTY6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzE1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTMyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBwY2llX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMzI0OC1cXHQucHJvZ19mdyA9XFx0XFx0XFx0bXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MzI0OTpcXHQucmVnaXN0ZXJfZGV2ID1cXHRcXHRcXHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTMyNTAtXFx0LnVucmVnaXN0ZXJfZGV2ID1cXHRcXHRtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNDY2PW13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjQ4Mi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI0ODM6c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjQ4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMxNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3NS1cXHQucHJvZ19mdyA9IG13aWZpZXhfcHJvZ19md193X2hlbHBlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjMxNzY6XFx0LnJlZ2lzdGVyX2RldiA9IG13aWZpZXhfcmVnaXN0ZXJfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzE3Ny1cXHQudW5yZWdpc3Rlcl9kZXYgPSBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyNjQ9c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI5OC0vKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVyIHVzYiBkZXZpY2UgYW5kIGluaXRpYWxpemUgcGFyYW1ldGVyLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjk5OnN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1ODU6XFx0LnJlZ2lzdGVyX2RldiA9XFx0XFx0bXdpZmlleF9yZWdpc3Rlcl9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1ODYtXFx0LnVucmVnaXN0ZXJfZGV2ID1cXHRtd2lmaWV4X3VucmVnaXN0ZXJfZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjozNzoyMy45MzU4Mzg3NDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjkzOTE1Mjc1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgbXdpZmlleF9wY2llIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3BjaWVgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSBwcmVjaXNlbHkgKmhvdyogaXQncyBiZWluZyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyB0aGlzIGRyaXZlciBiZWhhdmluZyBsaWtlIGEgc3RhbmRhcmQsIGdlbmVyaWMgUENJIGRyaXZlciwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBhIHZlbmRvci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbj8gVGhhdCdzIGtleSwgYmVjYXVzZSBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgb2Z0ZW4gcmVsaWVzIG9uIHBhcnRpY3VsYXIgaGFyZHdhcmUgZmVhdHVyZXMgdGhhdCBtaWdodCBub3QgYmUgZnVsbHkgZW11bGF0ZWQsIG9yIGV2ZW4gcHJlc2VudCwgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBJZiB0aGF0J3MgdGhlIGNhc2UsIG91ciBRRU1VIHRlc3RpbmcgY291bGQgYmUgZmxhd2VkLCBvciBpbXBvc3NpYmxlLlxuXG5UaGVyZWZvcmUsIHRoZSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgaWYgdGhlIGRldmljZSBJRHMgdGhhdCB0aGUgZHJpdmVyIHJlY29nbml6ZXMgYXJlIHN0YW5kYXJkIG9uZXMsIG9yIHZlbmRvciBzcGVjaWZpYy4gU28sIEkgd2lsbCBjaGVjayB0aGUgUENJIGRldmljZSBJRHMgYXNzb2NpYXRlZCB3aXRoIGBtd2lmaWV4X3BjaWVgIHRvIHByb3ZpZGUgZnVydGhlciBjbHVlcy4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIGl0IGlzIHBvc3NpYmxlIHRvIHRlc3QgdXNpbmcgUUVNVS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjQxOjUzLjMyNzM2ODc5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzU4MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfcGNpZV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTE3NT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtd2lmaWV4X3BjaWVfb2ZfbWF0Y2hfdGFibGVbXSBfX21heWJlX3VudXNlZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6MTgxOnN0YXRpYyBpbnQgbXdpZmlleF9wY2llX3Byb2JlX29mKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTE4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTM0MT1zdGF0aWMgaW50IG13aWZpZXhfcGNpZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzozNzY6c3RhdGljIGludCBtd2lmaWV4X3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0zNzctXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNDA2LVxcdGlmIChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NDA3OlxcdFxcdHJldCA9IG13aWZpZXhfcGNpZV9wcm9iZV9vZihcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTQwOC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz01ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG13aWZpZXhfcGNpZSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtNTg1LVxcdC5pZF90YWJsZSA9IG13aWZpZXhfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM6NTg2OlxcdC5wcm9iZSAgICA9IG13aWZpZXhfcGNpZV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTU4Ny1cXHQucmVtb3ZlICAgPSBtd2lmaWV4X3BjaWVfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjo0MTo1My40MzI3MzU0MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDAxODE2MDE0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyBmdXp6YWJsZSwgc28gSSdtIHJldmlzaXRpbmcgdGhlIGNyaXRlcmlhLiBUaGUgY29yZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzIHRoZSBgbXdpZmlleF9wY2llYCBkcml2ZXIsIHdoaWNoIGhhbmRsZXMgTWFydmVsbCBXaUZpIFBDSWUgY2hpcHMuIFRoZXNlIGFyZW4ndCBzdGFuZGFyZCwgYW5kIHRoZXJlZm9yZSB0aGUgc3BlY2lmaWMgUENJZSBjYXJkcyB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgYXJlIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBjb2RlIG1vZGlmaWVkIGlzIHdpdGhpbiBgbXdpZmlleF9wY2llX3JlcXVlc3RfaXJxYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gZXJyb3IgaW4gdGhlIGNsZWFudXAgcGF0aCB3aGVuIGByZXF1ZXN0X2lycWAgZmFpbHMuIEVzc2VudGlhbGx5LCB0aGUgY29kZSB0cmllcyB0byBmcmVlIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBidXQgZG9lcyBpdCBpbmNvcnJlY3RseS5cblxuTGV0J3MgY29uZmlybSB0aGUgZGV0YWlscy4gVGhlIGZpbGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmNgIGNvbmZpcm1zIGl0J3MgdGhlIHJpZ2h0IGRyaXZlciAoYENPTkZJR19NV0lGSUVYX1BDSUVgKS4gUUVNVSdzIHN0YW5kYXJkIG5ldHdvcmsgZW11bGF0aW9ucyAoZTEwMDAsIHJ0bDgxMzksIHZpcnRpby1uZXQpIGRvbid0IGluY2x1ZGUgTWFydmVsbCBXaUZpIFBDSWUgaGFyZHdhcmUuIFRoaXMgbWVhbnMsIHdpdGhvdXQgcGh5c2ljYWwgTWFydmVsbCBoYXJkd2FyZSwgdGhlIGNvcnJlY3RlZCBlcnJvciBwYXRoLCBhbmQgdGhlIHdob2xlIGZ1bmN0aW9uLCBjYW4ndCBiZSByZWFjaGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5GdXJ0aGVybW9yZSwgdGhlIHBhdGNoIGZpeGVzIGFuIGVycm9yIGluIGBtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEoKWAsIHdoZXJlIHRoZXJlJ3MgYW4gaW5kZXggZXJyb3IsIGBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2ldYCBpbnN0ZWFkIG9mIGBcdTAwMjZjYXJkLVx1MDAzZW1zaXhfY3R4W2pdYC4gVGhhdCBpcyBhIHJlZCBoZXJyaW5nLiBJdCBjb25maXJtcyB0aGUgaXNzdWUsIGJ1dCBkb2Vzbid0IGNoYW5nZSB0aGUgZmFjdCBpdCdzIHVucmVhY2hhYmxlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gaXMgY2xlYXIuIEJlY2F1c2UgdGhlIGBtd2lmaWV4X3BjaWVgIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgdW5kZXIgdGhlIHN0YW5kYXJkIGZ1enppbmcgY29uZmlndXJhdGlvbiB1c2luZyBRRU1VIG9yIEdDRS4gVGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1ZSB0byBoYXJkd2FyZSByZXF1aXJlbWVudHMuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoYXQgdG9vbCBjYWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjIwLCJPdXRwdXRUb2tlbnMiOjkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDE2OjQyOjMzLjYxNDMzOTkwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGUgTWFydmVsbCBtd2lmaWV4IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtd2lmaWV4X3BjaWVfcmVxdWVzdF9pcnEpLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBQQ0llIHdpcmVsZXNzIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBzdGFuZGFyZCBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBNYXJ2ZWxsIG13aWZpZXggUENJZSB3aXJlbGVzcyBkcml2ZXIgKG13aWZpZXhfcGNpZV9yZXF1ZXN0X2lycSkuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIFBDSWUgd2lyZWxlc3MgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQxNjo0MjozMy42MTQzNjY1ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowsr699[1] Phase: Running StartedAt: 2026-08-28 16:42:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr699[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-28 16:42:45 +0000 UTC FinishedAt: 2026-08-28 16:42:51 +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,}