Name: series-workflowkm4w4 Phase: Failed StartedAt: 2026-09-09 03:20:45 +0000 UTC FinishedAt: 2026-09-09 03:23:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkm4w4[0] Phase: Succeeded StartedAt: 2026-09-09 03:20:45 +0000 UTC FinishedAt: 2026-09-09 03:22:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkm4w4[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 03:20:45 +0000 UTC FinishedAt: 2026-09-09 03:22:54 +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+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE4MTg0NGQyNjcyNjRiN2Y2YjhkMzk4NWI0Y2EyMjliNGJjM2VjZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG5pbmRleCAwNzhkMzJhMThkYmZkLi4zMDAwYWFhMjQ1MzAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xuQEAgLTE2Niw2ICYjNDM7MTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHRicmVhaztcbiBcbiYjNDM7XHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcbiBcdGNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6XG4gXHRjYXNlIElQQV9NRU1fQVBfVjZfRklMVEVSOlxuIFx0XHRpZiAodmVyc2lvbiBcdTAwM2MgSVBBX1ZFUlNJT05fNV8wKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXG5pbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7XG4gXHRJUEFfTUVNX1NUQVRTX1FVT1RBX0FQLFx0XHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi9cbiBcdElQQV9NRU1fU1RBVFNfVEVUSEVSSU5HLFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wJiM0MzspICovXG4gXHRJUEFfTUVNX1NUQVRTX0RST1AsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCYjNDM7KSAqL1xuJiM0MztcdElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUCxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjUuMCYjNDM7KSAqL1xuIFx0LyogVGhlIG5leHQgNyBmaWx0ZXIgYW5kIHJvdXRlIHN0YXRpc3RpY3MgcmVnaW9ucyBhcmUgb3B0aW9uYWwgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjRfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjZfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgKFFDT01fSVBBKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2lwYSksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTbmFwZHJhZ29uIFNvQ3MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTgxODQ0ZDI2NzI2NGI3ZjZiOGQzOTg1YjRjYTIyOWI0YmMzZWNmOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMDM6MjI6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uYwppbmRleCAwNzhkMzJhMThkYmZkLi4zMDAwYWFhMjQ1MzAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMKQEAgLTE2Niw2ICYjNDM7MTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWJyZWFrOwogCiYjNDM7CWNhc2UgSVBBX01FTV9NT0RFTV9TVEFUU19EUk9QOgogCWNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6CiAJY2FzZSBJUEFfTUVNX0FQX1Y2X0ZJTFRFUjoKIAkJaWYgKHZlcnNpb24gJmx0OyBJUEFfVkVSU0lPTl81XzApCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaAppbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmgKQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7CiAJSVBBX01FTV9TVEFUU19RVU9UQV9BUCwJCS8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCYjNDM7KSAqLwogCUlQQV9NRU1fU1RBVFNfVEVUSEVSSU5HLAkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi8KIAlJUEFfTUVNX1NUQVRTX0RST1AsCQkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi8KJiM0MzsJSVBBX01FTV9NT0RFTV9TVEFUU19EUk9QLAkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjAmIzQzOykgKi8KIAkvKiBUaGUgbmV4dCA3IGZpbHRlciBhbmQgcm91dGUgc3RhdGlzdGljcyByZWdpb25zIGFyZSBvcHRpb25hbCAqLwogCUlQQV9NRU1fU1RBVFNfVjRfRklMVEVSLAkvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqLwogCUlQQV9NRU1fU1RBVFNfVjZfRklMVEVSLAkvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTc5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBRdWFsY29tbSBJUEEgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmcsIG9yIGlmIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY2AgYW5kIGBkcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oYCwgc28gY2xlYXJseSwgaXQmIzM5O3Mgc29tZXRoaW5nIHdpdGhpbiB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgZHJpdmVyLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgZHJpdmVycy9uZXQvaXBhL2AgZGlyZWN0b3J5IGlzIGFsbCBhYm91dC4gQWgsIHllcywgSVBBIOKAkyB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IuIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoaXMgY29kZSBpcyB0aWVkIHRvIFNuYXBkcmFnb24gU29Dcy4KCk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkaXJlY3Rvcnk6IGBkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IGByZWFkLWZpbGVgIHRoYXQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHdoYXQgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGRvaW5nIGFuZCBpZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDM6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFDT01fSVBBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXBhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9LY29uZmlnOjE6Y29uZmlnIFFDT01fSVBBXG5kcml2ZXJzL25ldC9pcGEvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gSVBBIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVBBIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgYGRyaXZlcnMvbmV0L2lwYS9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIElQQSAoSW50ZWdyYXRlZCBQYWNrZXQgQWNjZWxlcmF0b3IpIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaXMgc3RydWN0dXJlZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzOiB0aGUgb25lcyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIGNvcmUgZmVhdHVyZXMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IHRyaWNreSBsb2dpYyBpbiB0aGUgZGVwZW5kZW5jeSBleHByZXNzaW9ucywgdGhlIGtpbmQgdGhhdCBtaWdodCBpbnRyb2R1Y2Ugc3VidGxlIGNvbXBhdGliaWxpdHkgaXNzdWVzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBmZWF0dXJlcyByZWxhdGVkIHRvIHZhcmlvdXMgcGFja2V0IHByb2Nlc3Npbmcgc3RhZ2VzLCBvZmZsb2FkIGNhcGFiaWxpdGllcyAoVENQL0lQLCBMMiksIGFuZCBtYXliZSBzb21lIFFvUyBvciBmbG93IGNvbnRyb2wgbWVjaGFuaXNtcy4gSSBhbHNvIGV4cGVjdCB0byBjaGVjayB0aGF0IGVhY2ggb3B0aW9uIGZvbGxvd3MgdGhlIGVzdGFibGlzaGVkIGtlcm5lbCBjb2RpbmcgY29udmVudGlvbnMgZm9yIEtjb25maWcgZmlsZXMuIFRoZW4gSSBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgbWVudGFsIG1hcCBvZiB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIFFDT01fSVBBXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBJUEEgc3VwcG9ydFwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IFFDT01fU01FTVxuICAgNDpcdFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRkZXBlbmRzIG9uIElOVEVSQ09OTkVDVFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBRQ09NX1JQUk9DX0NPTU1PTiB8fCAoUUNPTV9SUFJPQ19DT01NT049biBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKVxuICAgNzpcdFx0ZGVwZW5kcyBvbiBRQ09NX0FPU1NfUU1QIHx8IFFDT01fQU9TU19RTVA9blxuICAgODpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAgOTpcdFx0c2VsZWN0IFFDT01fUEFTXG4gIDEwOlx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBDaG9vc2UgWSBvciBNIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUXVhbGNvbW1cbiAgMTM6XHRcdCAgSVAgQWNjZWxlcmF0b3IgKElQQSksIGEgaGFyZHdhcmUgYmxvY2sgcHJlc2VudCBpbiBzb21lXG4gIDE0Olx0XHQgIFF1YWxjb21tIFNvQ3MuICBUaGUgSVBBIGlzIGEgcHJvZ3JhbW1hYmxlIHByb3RvY29sIHByb2Nlc3NvclxuICAxNTpcdFx0ICB0aGF0IGlzIGNhcGFibGUgb2YgZ2VuZXJpYyBoYXJkd2FyZSBoYW5kbGluZyBvZiBJUCBwYWNrZXRzLFxuICAxNjpcdFx0ICBpbmNsdWRpbmcgcm91dGluZywgZmlsdGVyaW5nLCBhbmQgTkFULiAgQ3VycmVudGx5IHRoZSBJUEFcbiAgMTc6XHRcdCAgZHJpdmVyIHN1cHBvcnRzIG9ubHkgYmFzaWMgdHJhbnNwb3J0IG9mIG5ldHdvcmsgdHJhZmZpY1xuICAxODpcdFx0ICBiZXR3ZWVuIHRoZSBBUCBhbmQgbW9kZW0uXG4gIDE5Olx0XG4gIDIwOlx0XHQgIE5vdGUgdGhhdCBpZiBzZWxlY3RlZCwgdGhlIHNlbGVjdGlvbiB0eXBlIG11c3QgbWF0Y2ggdGhhdFxuICAyMTpcdFx0ICBvZiBRQ09NX1E2VjVfQ09NTU9OIChZIG9yIE0pLlxuICAyMjpcdFxuICAyMzpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBJUEEgZHJpdmVyIGlzIGJyb3VnaHQgdG8gbGlmZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBXaGVyZSBkb2VzIGl0IGFsbCBiZWdpbj8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcHJvYmUgc2VxdWVuY2UsIHRoZSBwbGF0Zm9ybSBidXMgaW50ZXJhY3Rpb25zLCBhbmQgb2YgY291cnNlLCB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgc3VzcGVjdHMgaW4gdGhlIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIHRoZSBkZXZpY2UgaXMgcHJvcGVybHkgZGVmaW5lZC4KClRoZW4sIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgd2l0aCB0aGUgc3lzdGVtLiBUaW1lIHRvIGdyZXAgaW4gdGhlIGBkcml2ZXJzL25ldC9pcGFgIGRpcmVjdG9yeS4gSSYjMzk7bSBsb29raW5nIGZvciB1c2FnZXMgb2YgYHBsYXRmb3JtX2RyaXZlcmAsIG9yIGFueXRoaW5nIHNpbWlsYXIgdGhhdCBoYW5kbGVzIGRldmljZSByZWdpc3RyYXRpb24gd2l0aGluIHRoYXQgZnJhbWV3b3JrLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGNvcmUgb2YgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXBhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDIyLVxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6MTAyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTAyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgSVBBIERyaXZlciBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkcml2ZXJzL25ldC9pcGFgIGNvZGUsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tJiMzOTtzIElQIEFjY2VsZXJhdG9yIChJUEEpIGhhcmR3YXJlIGJsb2NrLCBhbmQgaXQmIzM5O3MgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFF1YWxjb21tIFNvQyBlY29zeXN0ZW0sIG1lYW5pbmcgYEFSQ0hfUUNPTWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgbW9kZW0gaW50ZXJhY3Rpb24sIGludGVyY29ubmVjdCwgc2hhcmVkIG1lbW9yeSAoU01FTSksIGFuZCBRTUksIGFsbCB3aXRoaW4gYSBRdWFsY29tbS1zcGVjaWZpYyBoYXJkd2FyZSBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzOiBgQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBgUUNPTV9TTUVNYC4KClRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gdGhpcyBldmVuICpydW4qIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKT8gSSYjMzk7bSBiZXR0aW5nIG5vLCBidXQgbGV0JiMzOTtzIGNvbmZpcm0uIEkga25vdyBzdGFuZGFyZCBRRU1VIG9uIHg4Nl82NC9hbWQ2NCwgb3IgZXZlbiB0aGUgc3RhbmRhcmQgQVJNNjQgdmlydCBtYWNoaW5lLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgUXVhbGNvbW0gSVBBIGhhcmR3YXJlLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkZXBlbmRlbmN5IG9uIGBBUkNIX1FDT01gIGNvbmZpcm1zIHRoYXQgaXQgaXMgYW4gaXNzdWUuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleGFtaW5lIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFuZCAmIzM0O1VucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyYjMzQ7IHNlY3Rpb24uIFRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSB1bnJlYWNoYWJsZSBpZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQuIERyaXZlcnMgc3VjaCBhcyBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSBhcmUgcHJvdmlkZWQgYXMgZXhhbXBsZXMsIGFsbCBvZiB3aGljaCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGN1c3RvbSBlbXVsYXRpb25zIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4KClRoaXMgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gVGhlIFF1YWxjb21tIElQQSwgYGRyaXZlcnMvbmV0L2lwYWAsIGlzIFNvQy1zcGVjaWZpYy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggdGhhdCB2ZXJ5IHNwZWNpZmljIElQIEFjY2VsZXJhdG9yIGhhcmR3YXJlIG9uIFF1YWxjb21tIFNuYXBkcmFnb24gY2hpcHMuIFRoZXJlJiMzOTtzIG5vIHdheSBpdCYjMzk7cyBnb2luZyB0byBwcm9iZSBvciBldmVuIGV4ZWN1dGUgcmVsZXZhbnQgY29kZSB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgUXVhbGNvbW0gU29DIGhhcmR3YXJlIG9yIHNvbWUgc3BlY2lhbGl6ZWQsIHByb3ByaWV0YXJ5IGVtdWxhdG9ycy4gU3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBqdXN0IGFyZW4mIzM5O3QgZ29pbmcgdG8gY3V0IGl0IGluIHRoaXMgY2FzZS4KCkxldCYjMzk7cyBkbyBvbmUgbGFzdCBjaGVjay4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgKmFueSoga2luZCBvZiB2aXJ0dWFsIGJ1cyBvciBkdW1teSBpbnRlcmZhY2UgZm9yIHRoZSBJUEEgdGhhdCBtaWdodCBiZSBleHBvc2VkLCBldmVuIGFzIGEgc3R1YiwgdGhhdCBjb3VsZCBydW4gaW4gc3RhbmRhcmQgUUVNVS4gTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBgaXBhX21haW4uY2AgYW5kIHNwZWNpZmljYWxseSBpdHMgcHJvYmUgZnVuY3Rpb24sIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwYV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYz05Mj1lbnVtIGlwYV9maXJtd2FyZV9sb2FkZXIge1xuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwNy0gKiBpbnRlcnJ1cHQgaGFzIGJlZW4gc2lnbmFsZWQgYnkgdGhlIG1vZGVtLiAgT3RoZXJ3aXNlIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwODogKiBjYWxsZWQgZnJvbSBpcGFfcHJvYmUoKSBhZnRlciBHU0kgZmlybXdhcmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDktICogbG9hZGVkLCBhdXRoZW50aWNhdGVkLCBhbmQgc3RhcnRlZCBieSBUcnVzdCBab25lLlxuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTcyNj1zdGF0aWMgZW51bSBpcGFfZmlybXdhcmVfbG9hZGVyIGlwYV9maXJtd2FyZV9sb2FkZXIoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc3MC0vKipcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjc3MTogKiBpcGFfcHJvYmUoKSAtIElQQSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc3Mi0gKiBAcGRldjpcdFBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtNzkyLSAqL1xuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6NzkzOnN0YXRpYyBpbnQgaXBhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03OTQte1xuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwMTI6XHQucHJvYmVcdFx0PSBpcGFfcHJvYmUsXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDEzLVx0LnJlbW92ZVx0XHQ9IGlwYV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjgKCQkJCQkJCW91dHB1dDogMTAxCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpcGFfcHJvYmVgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGBpcGFfcHJvYmVgIGRyaXZlciwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGZydWl0ZnVsIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvaXBhYCwgaXMgYWxsIGFib3V0IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciwgYW5kIGl0JiMzOTtzIGludHJpbnNpY2FsbHkgdGllZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGVudmlyb25tZW50IG9mIFF1YWxjb21tIFNvQ3MuIE5vIGdldHRpbmcgYXJvdW5kIGl0OyBpdCBuZWVkcyBUcnVzdFpvbmUgcmVzb3VyY2VzLCBHU0kgZmlybXdhcmUsIHRoZSB3aG9sZSBzaGViYW5nLiBXZSYjMzk7cmUgdGFsa2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gcmVhY2ggaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIGVzcGVjaWFsbHkgbm90IG9uIGFtZDY0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgaXRzZWxmIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgbXkgcHVycG9zZXMuCgpUaGVyZWZvcmUsIGZ1enppbmcgaXMgYSBuby1nbyBoZXJlLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlcmUgYXJlIG5vIHNwZWNpZmljIHN5bWJvbHMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IHdhcnJhbnQgZm9jdXNlZCBhdHRlbnRpb24sIHNvIGBGb2N1c1N5bWJvbHNgIHN0YXlzIGVtcHR5LCBhbmQgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUgZWl0aGVyOyBgRW5hYmxlQ29uZmlnc2AgaXMgZW1wdHkgYXMgd2VsbC4gSSYjMzk7dmUgZG9jdW1lbnRlZCBteSByZWFzb25pbmcgc3VjY2luY3RseS4KCkFscmlnaHQsIGZpbmFsIGNoZWNrIGNvbXBsZXRlLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRob3NlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDM6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjIzLjE4MDgyNTQ3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjUyMDIzNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MjMuMTgwODI5NjY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgyNTk0OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTgxODQ0ZDI2NzI2NGI3ZjZiOGQzOTg1YjRjYTIyOWI0YmMzZWNmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXFxuaW5kZXggMDc4ZDMyYTE4ZGJmZC4uMzAwMGFhYTI0NTMwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xcbkBAIC0xNjYsNiArMTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbitcXHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcXG4gXFx0Y2FzZSBJUEFfTUVNX0FQX1Y0X0ZJTFRFUjpcXG4gXFx0Y2FzZSBJUEFfTUVNX0FQX1Y2X0ZJTFRFUjpcXG4gXFx0XFx0aWYgKHZlcnNpb24gXFx1MDAzYyBJUEFfVkVSU0lPTl81XzApXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXFxuaW5kZXggYjI1YmFiYWRlNzg3ZS4uNTY3MDNiYWRhMDdjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxcbkBAIC02OCw2ICs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7XFxuIFxcdElQQV9NRU1fU1RBVFNfUVVPVEFfQVAsXFx0XFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wKykgKi9cXG4gXFx0SVBBX01FTV9TVEFUU19URVRIRVJJTkcsXFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wKykgKi9cXG4gXFx0SVBBX01FTV9TVEFUU19EUk9QLFxcdFxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXFxuK1xcdElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUCxcXHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjArKSAqL1xcbiBcXHQvKiBUaGUgbmV4dCA3IGZpbHRlciBhbmQgcm91dGUgc3RhdGlzdGljcyByZWdpb25zIGFyZSBvcHRpb25hbCAqL1xcbiBcXHRJUEFfTUVNX1NUQVRTX1Y0X0ZJTFRFUixcXHQvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqL1xcbiBcXHRJUEFfTUVNX1NUQVRTX1Y2X0ZJTFRFUixcXHQvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjoyNC41NjQxNzE0NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIyMjY4NjY1ODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgKFFDT01fSVBBKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2lwYSksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTbmFwZHJhZ29uIFNvQ3MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE4MTg0NGQyNjcyNjRiN2Y2YjhkMzk4NWI0Y2EyMjliNGJjM2VjZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uYyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmNcbmluZGV4IDA3OGQzMmExOGRiZmQuLjMwMDBhYWEyNDUzMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG4rKysgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG5AQCAtMTY2LDYgKzE2Niw3IEBAIHN0YXRpYyBib29sIGlwYV9tZW1faWRfdmFsaWQoc3RydWN0IGlwYSAqaXBhLCBlbnVtIGlwYV9tZW1faWQgbWVtX2lkKVxuIFx0XHRcdHJldHVybiBmYWxzZTtcbiBcdFx0YnJlYWs7XG4gXG4rXHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcbiBcdGNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6XG4gXHRjYXNlIElQQV9NRU1fQVBfVjZfRklMVEVSOlxuIFx0XHRpZiAodmVyc2lvbiBcdTAwM2MgSVBBX1ZFUlNJT05fNV8wKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXG5pbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuQEAgLTY4LDYgKzY4LDcgQEAgZW51bSBpcGFfbWVtX2lkIHtcbiBcdElQQV9NRU1fU1RBVFNfUVVPVEFfQVAsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4gXHRJUEFfTUVNX1NUQVRTX1RFVEhFUklORyxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4gXHRJUEFfTUVNX1NUQVRTX0RST1AsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4rXHRJUEFfTUVNX01PREVNX1NUQVRTX0RST1AsXHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjArKSAqL1xuIFx0LyogVGhlIG5leHQgNyBmaWx0ZXIgYW5kIHJvdXRlIHN0YXRpc3RpY3MgcmVnaW9ucyBhcmUgb3B0aW9uYWwgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjRfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjZfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjI0LjU2NDE3MzEyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NDQ0MjY0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2g6IFF1YWxjb21tIElQQSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgZXZlbiAqd29ydGgqIHRoZSBlZmZvcnQgb2YgZnV6emluZywgb3IgaWYgaXQncyBkZWFsaW5nIHdpdGggY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gV2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIGluIGBkcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jYCBhbmQgYGRyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmhgLCBzbyBjbGVhcmx5LCBpdCdzIHNvbWV0aGluZyB3aXRoaW4gdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIGRyaXZlci5cblxuRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgZHJpdmVycy9uZXQvaXBhL2AgZGlyZWN0b3J5IGlzIGFsbCBhYm91dC4gQWgsIHllcywgSVBBIOKAkyB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IuIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoaXMgY29kZSBpcyB0aWVkIHRvIFNuYXBkcmFnb24gU29Dcy5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvaXBhL0tjb25maWdgLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IGByZWFkLWZpbGVgIHRoYXQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHdoYXQgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGRvaW5nIGFuZCBpZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjozMC41MDg2MDE0MjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTc1NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFFDT01fSVBBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcGEvS2NvbmZpZzoxOmNvbmZpZyBRQ09NX0lQQVxcbmRyaXZlcnMvbmV0L2lwYS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIElQQSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjozMC41NTM4Nzg5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NzY2ODIwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIElQQSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgcHVsbCB1cCBgZHJpdmVycy9uZXQvaXBhL0tjb25maWdgLiBUaW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSVBBIChJbnRlZ3JhdGVkIFBhY2tldCBBY2NlbGVyYXRvcikgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB0aGluZyBpcyBzdHJ1Y3R1cmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBjb25maWd1cmF0aW9uIHZhcmlhYmxlczogdGhlIG9uZXMgdGhhdCBlbmFibGUgb3IgZGlzYWJsZSBjb3JlIGZlYXR1cmVzLCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMsIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLiBJJ2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IHRyaWNreSBsb2dpYyBpbiB0aGUgZGVwZW5kZW5jeSBleHByZXNzaW9ucywgdGhlIGtpbmQgdGhhdCBtaWdodCBpbnRyb2R1Y2Ugc3VidGxlIGNvbXBhdGliaWxpdHkgaXNzdWVzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gdmFyaW91cyBwYWNrZXQgcHJvY2Vzc2luZyBzdGFnZXMsIG9mZmxvYWQgY2FwYWJpbGl0aWVzIChUQ1AvSVAsIEwyKSwgYW5kIG1heWJlIHNvbWUgUW9TIG9yIGZsb3cgY29udHJvbCBtZWNoYW5pc21zLiBJIGFsc28gZXhwZWN0IHRvIGNoZWNrIHRoYXQgZWFjaCBvcHRpb24gZm9sbG93cyB0aGUgZXN0YWJsaXNoZWQga2VybmVsIGNvZGluZyBjb252ZW50aW9ucyBmb3IgS2NvbmZpZyBmaWxlcy4gVGhlbiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBtZW50YWwgbWFwIG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzMuMjMwNTYzODY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2lwYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIFFDT01fSVBBXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gSVBBIHN1cHBvcnRcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBRQ09NX1NNRU1cXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJTlRFUkNPTk5FQ1RcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgKFFDT01fUlBST0NfQ09NTU9OPW4gXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX0FPU1NfUU1QIHx8IFFDT01fQU9TU19RTVA9blxcbiAgIDg6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IFFDT01fUEFTXFxuICAxMDpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBDaG9vc2UgWSBvciBNIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUXVhbGNvbW1cXG4gIDEzOlxcdFxcdCAgSVAgQWNjZWxlcmF0b3IgKElQQSksIGEgaGFyZHdhcmUgYmxvY2sgcHJlc2VudCBpbiBzb21lXFxuICAxNDpcXHRcXHQgIFF1YWxjb21tIFNvQ3MuICBUaGUgSVBBIGlzIGEgcHJvZ3JhbW1hYmxlIHByb3RvY29sIHByb2Nlc3NvclxcbiAgMTU6XFx0XFx0ICB0aGF0IGlzIGNhcGFibGUgb2YgZ2VuZXJpYyBoYXJkd2FyZSBoYW5kbGluZyBvZiBJUCBwYWNrZXRzLFxcbiAgMTY6XFx0XFx0ICBpbmNsdWRpbmcgcm91dGluZywgZmlsdGVyaW5nLCBhbmQgTkFULiAgQ3VycmVudGx5IHRoZSBJUEFcXG4gIDE3OlxcdFxcdCAgZHJpdmVyIHN1cHBvcnRzIG9ubHkgYmFzaWMgdHJhbnNwb3J0IG9mIG5ldHdvcmsgdHJhZmZpY1xcbiAgMTg6XFx0XFx0ICBiZXR3ZWVuIHRoZSBBUCBhbmQgbW9kZW0uXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgTm90ZSB0aGF0IGlmIHNlbGVjdGVkLCB0aGUgc2VsZWN0aW9uIHR5cGUgbXVzdCBtYXRjaCB0aGF0XFxuICAyMTpcXHRcXHQgIG9mIFFDT01fUTZWNV9DT01NT04gKFkgb3IgTSkuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzMuMjMwNjg2ODU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI1NTQ1MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQQSBkcml2ZXIgaXMgYnJvdWdodCB0byBsaWZlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MuIFdoZXJlIGRvZXMgaXQgYWxsIGJlZ2luPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHByb2JlIHNlcXVlbmNlLCB0aGUgcGxhdGZvcm0gYnVzIGludGVyYWN0aW9ucywgYW5kIG9mIGNvdXJzZSwgdGhlIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBzdXNwZWN0cyBpbiB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBwcm9wZXJseSBkZWZpbmVkLlxuXG5UaGVuLCBJJ2xsIHN3aXRjaCBnZWFycyBhbmQgY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIGhvdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyB3aXRoIHRoZSBzeXN0ZW0uIFRpbWUgdG8gZ3JlcCBpbiB0aGUgYGRyaXZlcnMvbmV0L2lwYWAgZGlyZWN0b3J5LiBJJ20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kcml2ZXJgLCBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgaGFuZGxlcyBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGF0IGZyYW1ld29yay4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzkuNDg2MTQxNTUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODA0NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXBhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwMjItXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6MTAyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjM5LjUzMTk0OTIwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMDg5NTQzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJUEEgRHJpdmVyIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkcml2ZXJzL25ldC9pcGFgIGNvZGUsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0ncyBJUCBBY2NlbGVyYXRvciAoSVBBKSBoYXJkd2FyZSBibG9jaywgYW5kIGl0J3MgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFF1YWxjb21tIFNvQyBlY29zeXN0ZW0sIG1lYW5pbmcgYEFSQ0hfUUNPTWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgd2UncmUgdGFsa2luZyBhYm91dCBtb2RlbSBpbnRlcmFjdGlvbiwgaW50ZXJjb25uZWN0LCBzaGFyZWQgbWVtb3J5IChTTUVNKSwgYW5kIFFNSSwgYWxsIHdpdGhpbiBhIFF1YWxjb21tLXNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQuIEkgc2VlIHRoZSBkZXBlbmRlbmNpZXM6IGBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUYCBhbG9uZyB3aXRoIGBRQ09NX1NNRU1gLlxuXG5UaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgZXZlbiAqcnVuKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSk/IEknbSBiZXR0aW5nIG5vLCBidXQgbGV0J3MgY29uZmlybS4gSSBrbm93IHN0YW5kYXJkIFFFTVUgb24geDg2XzY0L2FtZDY0LCBvciBldmVuIHRoZSBzdGFuZGFyZCBBUk02NCB2aXJ0IG1hY2hpbmUsIGRvZXNuJ3QgZW11bGF0ZSB0aGF0IHNwZWNpZmljIFF1YWxjb21tIElQQSBoYXJkd2FyZS4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGFuZCB0aGUgZGVwZW5kZW5jeSBvbiBgQVJDSF9RQ09NYCBjb25maXJtcyB0aGF0IGl0IGlzIGFuIGlzc3VlLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIgc2VjdGlvbi4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIHVucmVhY2hhYmxlIGlmIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBpc24ndCBwcmVzZW50LiBEcml2ZXJzIHN1Y2ggYXMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUgYXJlIHByb3ZpZGVkIGFzIGV4YW1wbGVzLCBhbGwgb2Ygd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBvciBjdXN0b20gZW11bGF0aW9ucyBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXG5cblRoaXMgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gVGhlIFF1YWxjb21tIElQQSwgYGRyaXZlcnMvbmV0L2lwYWAsIGlzIFNvQy1zcGVjaWZpYy4gSXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCB0aGF0IHZlcnkgc3BlY2lmaWMgSVAgQWNjZWxlcmF0b3IgaGFyZHdhcmUgb24gUXVhbGNvbW0gU25hcGRyYWdvbiBjaGlwcy4gVGhlcmUncyBubyB3YXkgaXQncyBnb2luZyB0byBwcm9iZSBvciBldmVuIGV4ZWN1dGUgcmVsZXZhbnQgY29kZSB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgUXVhbGNvbW0gU29DIGhhcmR3YXJlIG9yIHNvbWUgc3BlY2lhbGl6ZWQsIHByb3ByaWV0YXJ5IGVtdWxhdG9ycy4gU3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBqdXN0IGFyZW4ndCBnb2luZyB0byBjdXQgaXQgaW4gdGhpcyBjYXNlLlxuXG5MZXQncyBkbyBvbmUgbGFzdCBjaGVjay4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzICphbnkqIGtpbmQgb2YgdmlydHVhbCBidXMgb3IgZHVtbXkgaW50ZXJmYWNlIGZvciB0aGUgSVBBIHRoYXQgbWlnaHQgYmUgZXhwb3NlZCwgZXZlbiBhcyBhIHN0dWIsIHRoYXQgY291bGQgcnVuIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgYGlwYV9tYWluLmNgIGFuZCBzcGVjaWZpY2FsbHkgaXRzIHByb2JlIGZ1bmN0aW9uLCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQzLjY0MDkwNTQzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBhX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYz05Mj1lbnVtIGlwYV9maXJtd2FyZV9sb2FkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTA3LSAqIGludGVycnVwdCBoYXMgYmVlbiBzaWduYWxlZCBieSB0aGUgbW9kZW0uICBPdGhlcndpc2UgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwODogKiBjYWxsZWQgZnJvbSBpcGFfcHJvYmUoKSBhZnRlciBHU0kgZmlybXdhcmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTA5LSAqIGxvYWRlZCwgYXV0aGVudGljYXRlZCwgYW5kIHN0YXJ0ZWQgYnkgVHJ1c3QgWm9uZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTcyNj1zdGF0aWMgZW51bSBpcGFfZmlybXdhcmVfbG9hZGVyIGlwYV9maXJtd2FyZV9sb2FkZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtNzcwLS8qKlxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjc3MTogKiBpcGFfcHJvYmUoKSAtIElQQSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25cXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03NzItICogQHBkZXY6XFx0UGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc5Mi0gKi9cXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYzo3OTM6c3RhdGljIGludCBpcGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03OTQte1xcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM9MTAxMT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpcGFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwMTI6XFx0LnByb2JlXFx0XFx0PSBpcGFfcHJvYmUsXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTAxMy1cXHQucmVtb3ZlXFx0XFx0PSBpcGFfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjo0My42ODUyODMyNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE0NzUzMDY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaXBhX3Byb2JlYCBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBgaXBhX3Byb2JlYCBkcml2ZXIsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgZnJ1aXRmdWwgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIsIGBkcml2ZXJzL25ldC9pcGFgLCBpcyBhbGwgYWJvdXQgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yLCBhbmQgaXQncyBpbnRyaW5zaWNhbGx5IHRpZWQgdG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbnZpcm9ubWVudCBvZiBRdWFsY29tbSBTb0NzLiBObyBnZXR0aW5nIGFyb3VuZCBpdDsgaXQgbmVlZHMgVHJ1c3Rab25lIHJlc291cmNlcywgR1NJIGZpcm13YXJlLCB0aGUgd2hvbGUgc2hlYmFuZy4gV2UncmUgdGFsa2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbid0IHNvbWV0aGluZyBJIGNhbiByZWFjaCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgZXNwZWNpYWxseSBub3Qgb24gYW1kNjQgYXJjaGl0ZWN0dXJlLiBUaGUgY29kZSBpdHNlbGYgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBteSBwdXJwb3Nlcy5cblxuVGhlcmVmb3JlLCBmdXp6aW5nIGlzIGEgbm8tZ28gaGVyZS4gSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlcmUgYXJlIG5vIHNwZWNpZmljIHN5bWJvbHMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IHdhcnJhbnQgZm9jdXNlZCBhdHRlbnRpb24sIHNvIGBGb2N1c1N5bWJvbHNgIHN0YXlzIGVtcHR5LCBhbmQgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgdGhlcmUgYXJlbid0IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBlaXRoZXI7IGBFbmFibGVDb25maWdzYCBpcyBlbXB0eSBhcyB3ZWxsLiBJJ3ZlIGRvY3VtZW50ZWQgbXkgcmVhc29uaW5nIHN1Y2NpbmN0bHkuXG5cbkFscmlnaHQsIGZpbmFsIGNoZWNrIGNvbXBsZXRlLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRob3NlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NjgsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQ2LjgzMjgxNTU0OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciAoUUNPTV9JUEEpIGRyaXZlciAoZHJpdmVycy9uZXQvaXBhKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNuYXBkcmFnb24gU29Dcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciAoUUNPTV9JUEEpIGRyaXZlciAoZHJpdmVycy9uZXQvaXBhKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNuYXBkcmFnb24gU29Dcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQ2LjgzMjgzODk5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkm4w4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 03:20:45 +0000 UTC FinishedAt: 2026-09-09 03:22:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE4MTg0NGQyNjcyNjRiN2Y2YjhkMzk4NWI0Y2EyMjliNGJjM2VjZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG5pbmRleCAwNzhkMzJhMThkYmZkLi4zMDAwYWFhMjQ1MzAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xuQEAgLTE2Niw2ICYjNDM7MTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHRicmVhaztcbiBcbiYjNDM7XHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcbiBcdGNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6XG4gXHRjYXNlIElQQV9NRU1fQVBfVjZfRklMVEVSOlxuIFx0XHRpZiAodmVyc2lvbiBcdTAwM2MgSVBBX1ZFUlNJT05fNV8wKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXG5pbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7XG4gXHRJUEFfTUVNX1NUQVRTX1FVT1RBX0FQLFx0XHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi9cbiBcdElQQV9NRU1fU1RBVFNfVEVUSEVSSU5HLFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wJiM0MzspICovXG4gXHRJUEFfTUVNX1NUQVRTX0RST1AsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCYjNDM7KSAqL1xuJiM0MztcdElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUCxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjUuMCYjNDM7KSAqL1xuIFx0LyogVGhlIG5leHQgNyBmaWx0ZXIgYW5kIHJvdXRlIHN0YXRpc3RpY3MgcmVnaW9ucyBhcmUgb3B0aW9uYWwgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjRfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjZfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgKFFDT01fSVBBKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2lwYSksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTbmFwZHJhZ29uIFNvQ3MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTgxODQ0ZDI2NzI2NGI3ZjZiOGQzOTg1YjRjYTIyOWI0YmMzZWNmOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMDM6MjI6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uYwppbmRleCAwNzhkMzJhMThkYmZkLi4zMDAwYWFhMjQ1MzAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMKQEAgLTE2Niw2ICYjNDM7MTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWJyZWFrOwogCiYjNDM7CWNhc2UgSVBBX01FTV9NT0RFTV9TVEFUU19EUk9QOgogCWNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6CiAJY2FzZSBJUEFfTUVNX0FQX1Y2X0ZJTFRFUjoKIAkJaWYgKHZlcnNpb24gJmx0OyBJUEFfVkVSU0lPTl81XzApCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaAppbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmgKQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7CiAJSVBBX01FTV9TVEFUU19RVU9UQV9BUCwJCS8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCYjNDM7KSAqLwogCUlQQV9NRU1fU1RBVFNfVEVUSEVSSU5HLAkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi8KIAlJUEFfTUVNX1NUQVRTX0RST1AsCQkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY0LjAmIzQzOykgKi8KJiM0MzsJSVBBX01FTV9NT0RFTV9TVEFUU19EUk9QLAkvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjAmIzQzOykgKi8KIAkvKiBUaGUgbmV4dCA3IGZpbHRlciBhbmQgcm91dGUgc3RhdGlzdGljcyByZWdpb25zIGFyZSBvcHRpb25hbCAqLwogCUlQQV9NRU1fU1RBVFNfVjRfRklMVEVSLAkvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqLwogCUlQQV9NRU1fU1RBVFNfVjZfRklMVEVSLAkvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTc5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBRdWFsY29tbSBJUEEgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGV2ZW4gKndvcnRoKiB0aGUgZWZmb3J0IG9mIGZ1enppbmcsIG9yIGlmIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY2AgYW5kIGBkcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oYCwgc28gY2xlYXJseSwgaXQmIzM5O3Mgc29tZXRoaW5nIHdpdGhpbiB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgZHJpdmVyLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgZHJpdmVycy9uZXQvaXBhL2AgZGlyZWN0b3J5IGlzIGFsbCBhYm91dC4gQWgsIHllcywgSVBBIOKAkyB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IuIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoaXMgY29kZSBpcyB0aWVkIHRvIFNuYXBkcmFnb24gU29Dcy4KCk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkaXJlY3Rvcnk6IGBkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ2AuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IGByZWFkLWZpbGVgIHRoYXQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHdoYXQgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGRvaW5nIGFuZCBpZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDM6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFFDT01fSVBBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXBhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9LY29uZmlnOjE6Y29uZmlnIFFDT01fSVBBXG5kcml2ZXJzL25ldC9pcGEvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gSVBBIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSVBBIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgYGRyaXZlcnMvbmV0L2lwYS9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIElQQSAoSW50ZWdyYXRlZCBQYWNrZXQgQWNjZWxlcmF0b3IpIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaXMgc3RydWN0dXJlZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzOiB0aGUgb25lcyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIGNvcmUgZmVhdHVyZXMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgYW5kIGFueSBkZXBlbmRlbmNpZXMgb24gcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IHRyaWNreSBsb2dpYyBpbiB0aGUgZGVwZW5kZW5jeSBleHByZXNzaW9ucywgdGhlIGtpbmQgdGhhdCBtaWdodCBpbnRyb2R1Y2Ugc3VidGxlIGNvbXBhdGliaWxpdHkgaXNzdWVzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBmZWF0dXJlcyByZWxhdGVkIHRvIHZhcmlvdXMgcGFja2V0IHByb2Nlc3Npbmcgc3RhZ2VzLCBvZmZsb2FkIGNhcGFiaWxpdGllcyAoVENQL0lQLCBMMiksIGFuZCBtYXliZSBzb21lIFFvUyBvciBmbG93IGNvbnRyb2wgbWVjaGFuaXNtcy4gSSBhbHNvIGV4cGVjdCB0byBjaGVjayB0aGF0IGVhY2ggb3B0aW9uIGZvbGxvd3MgdGhlIGVzdGFibGlzaGVkIGtlcm5lbCBjb2RpbmcgY29udmVudGlvbnMgZm9yIEtjb25maWcgZmlsZXMuIFRoZW4gSSBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgbWVudGFsIG1hcCBvZiB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIFFDT01fSVBBXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBJUEEgc3VwcG9ydFwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IFFDT01fU01FTVxuICAgNDpcdFx0ZGVwZW5kcyBvbiBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRkZXBlbmRzIG9uIElOVEVSQ09OTkVDVFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBRQ09NX1JQUk9DX0NPTU1PTiB8fCAoUUNPTV9SUFJPQ19DT01NT049biBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKVxuICAgNzpcdFx0ZGVwZW5kcyBvbiBRQ09NX0FPU1NfUU1QIHx8IFFDT01fQU9TU19RTVA9blxuICAgODpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAgOTpcdFx0c2VsZWN0IFFDT01fUEFTXG4gIDEwOlx0XHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuICAxMTpcdFx0aGVscFxuICAxMjpcdFx0ICBDaG9vc2UgWSBvciBNIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUXVhbGNvbW1cbiAgMTM6XHRcdCAgSVAgQWNjZWxlcmF0b3IgKElQQSksIGEgaGFyZHdhcmUgYmxvY2sgcHJlc2VudCBpbiBzb21lXG4gIDE0Olx0XHQgIFF1YWxjb21tIFNvQ3MuICBUaGUgSVBBIGlzIGEgcHJvZ3JhbW1hYmxlIHByb3RvY29sIHByb2Nlc3NvclxuICAxNTpcdFx0ICB0aGF0IGlzIGNhcGFibGUgb2YgZ2VuZXJpYyBoYXJkd2FyZSBoYW5kbGluZyBvZiBJUCBwYWNrZXRzLFxuICAxNjpcdFx0ICBpbmNsdWRpbmcgcm91dGluZywgZmlsdGVyaW5nLCBhbmQgTkFULiAgQ3VycmVudGx5IHRoZSBJUEFcbiAgMTc6XHRcdCAgZHJpdmVyIHN1cHBvcnRzIG9ubHkgYmFzaWMgdHJhbnNwb3J0IG9mIG5ldHdvcmsgdHJhZmZpY1xuICAxODpcdFx0ICBiZXR3ZWVuIHRoZSBBUCBhbmQgbW9kZW0uXG4gIDE5Olx0XG4gIDIwOlx0XHQgIE5vdGUgdGhhdCBpZiBzZWxlY3RlZCwgdGhlIHNlbGVjdGlvbiB0eXBlIG11c3QgbWF0Y2ggdGhhdFxuICAyMTpcdFx0ICBvZiBRQ09NX1E2VjVfQ09NTU9OIChZIG9yIE0pLlxuICAyMjpcdFxuICAyMzpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBJUEEgZHJpdmVyIGlzIGJyb3VnaHQgdG8gbGlmZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzLiBXaGVyZSBkb2VzIGl0IGFsbCBiZWdpbj8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcHJvYmUgc2VxdWVuY2UsIHRoZSBwbGF0Zm9ybSBidXMgaW50ZXJhY3Rpb25zLCBhbmQgb2YgY291cnNlLCB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgc3VzcGVjdHMgaW4gdGhlIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24gdG8gZW5zdXJlIHRoZSBkZXZpY2UgaXMgcHJvcGVybHkgZGVmaW5lZC4KClRoZW4sIEkmIzM5O2xsIHN3aXRjaCBnZWFycyBhbmQgY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgd2l0aCB0aGUgc3lzdGVtLiBUaW1lIHRvIGdyZXAgaW4gdGhlIGBkcml2ZXJzL25ldC9pcGFgIGRpcmVjdG9yeS4gSSYjMzk7bSBsb29raW5nIGZvciB1c2FnZXMgb2YgYHBsYXRmb3JtX2RyaXZlcmAsIG9yIGFueXRoaW5nIHNpbWlsYXIgdGhhdCBoYW5kbGVzIGRldmljZSByZWdpc3RyYXRpb24gd2l0aGluIHRoYXQgZnJhbWV3b3JrLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGNvcmUgb2YgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXBhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDIyLVxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6MTAyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTAyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAwMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgSVBBIERyaXZlciBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkcml2ZXJzL25ldC9pcGFgIGNvZGUsIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tJiMzOTtzIElQIEFjY2VsZXJhdG9yIChJUEEpIGhhcmR3YXJlIGJsb2NrLCBhbmQgaXQmIzM5O3MgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFF1YWxjb21tIFNvQyBlY29zeXN0ZW0sIG1lYW5pbmcgYEFSQ0hfUUNPTWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgbW9kZW0gaW50ZXJhY3Rpb24sIGludGVyY29ubmVjdCwgc2hhcmVkIG1lbW9yeSAoU01FTSksIGFuZCBRTUksIGFsbCB3aXRoaW4gYSBRdWFsY29tbS1zcGVjaWZpYyBoYXJkd2FyZSBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzOiBgQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBgUUNPTV9TTUVNYC4KClRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gdGhpcyBldmVuICpydW4qIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKT8gSSYjMzk7bSBiZXR0aW5nIG5vLCBidXQgbGV0JiMzOTtzIGNvbmZpcm0uIEkga25vdyBzdGFuZGFyZCBRRU1VIG9uIHg4Nl82NC9hbWQ2NCwgb3IgZXZlbiB0aGUgc3RhbmRhcmQgQVJNNjQgdmlydCBtYWNoaW5lLCBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoYXQgc3BlY2lmaWMgUXVhbGNvbW0gSVBBIGhhcmR3YXJlLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgYW5kIHRoZSBkZXBlbmRlbmN5IG9uIGBBUkNIX1FDT01gIGNvbmZpcm1zIHRoYXQgaXQgaXMgYW4gaXNzdWUuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIGFuZCBleGFtaW5lIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFuZCAmIzM0O1VucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyYjMzQ7IHNlY3Rpb24uIFRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBzdGF0ZSB0aGF0IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSB1bnJlYWNoYWJsZSBpZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQuIERyaXZlcnMgc3VjaCBhcyBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSBhcmUgcHJvdmlkZWQgYXMgZXhhbXBsZXMsIGFsbCBvZiB3aGljaCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGN1c3RvbSBlbXVsYXRpb25zIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cy4KClRoaXMgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gVGhlIFF1YWxjb21tIElQQSwgYGRyaXZlcnMvbmV0L2lwYWAsIGlzIFNvQy1zcGVjaWZpYy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggdGhhdCB2ZXJ5IHNwZWNpZmljIElQIEFjY2VsZXJhdG9yIGhhcmR3YXJlIG9uIFF1YWxjb21tIFNuYXBkcmFnb24gY2hpcHMuIFRoZXJlJiMzOTtzIG5vIHdheSBpdCYjMzk7cyBnb2luZyB0byBwcm9iZSBvciBldmVuIGV4ZWN1dGUgcmVsZXZhbnQgY29kZSB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgUXVhbGNvbW0gU29DIGhhcmR3YXJlIG9yIHNvbWUgc3BlY2lhbGl6ZWQsIHByb3ByaWV0YXJ5IGVtdWxhdG9ycy4gU3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBqdXN0IGFyZW4mIzM5O3QgZ29pbmcgdG8gY3V0IGl0IGluIHRoaXMgY2FzZS4KCkxldCYjMzk7cyBkbyBvbmUgbGFzdCBjaGVjay4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgKmFueSoga2luZCBvZiB2aXJ0dWFsIGJ1cyBvciBkdW1teSBpbnRlcmZhY2UgZm9yIHRoZSBJUEEgdGhhdCBtaWdodCBiZSBleHBvc2VkLCBldmVuIGFzIGEgc3R1YiwgdGhhdCBjb3VsZCBydW4gaW4gc3RhbmRhcmQgUUVNVS4gTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBgaXBhX21haW4uY2AgYW5kIHNwZWNpZmljYWxseSBpdHMgcHJvYmUgZnVuY3Rpb24sIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwYV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYz05Mj1lbnVtIGlwYV9maXJtd2FyZV9sb2FkZXIge1xuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwNy0gKiBpbnRlcnJ1cHQgaGFzIGJlZW4gc2lnbmFsZWQgYnkgdGhlIG1vZGVtLiAgT3RoZXJ3aXNlIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwODogKiBjYWxsZWQgZnJvbSBpcGFfcHJvYmUoKSBhZnRlciBHU0kgZmlybXdhcmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDktICogbG9hZGVkLCBhdXRoZW50aWNhdGVkLCBhbmQgc3RhcnRlZCBieSBUcnVzdCBab25lLlxuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTcyNj1zdGF0aWMgZW51bSBpcGFfZmlybXdhcmVfbG9hZGVyIGlwYV9maXJtd2FyZV9sb2FkZXIoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc3MC0vKipcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjc3MTogKiBpcGFfcHJvYmUoKSAtIElQQSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc3Mi0gKiBAcGRldjpcdFBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtNzkyLSAqL1xuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6NzkzOnN0YXRpYyBpbnQgaXBhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03OTQte1xuLS1cbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwMTI6XHQucHJvYmVcdFx0PSBpcGFfcHJvYmUsXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy0xMDEzLVx0LnJlbW92ZVx0XHQ9IGlwYV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjgKCQkJCQkJCW91dHB1dDogMTAxCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpcGFfcHJvYmVgIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGBpcGFfcHJvYmVgIGRyaXZlciwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGZydWl0ZnVsIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvaXBhYCwgaXMgYWxsIGFib3V0IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciwgYW5kIGl0JiMzOTtzIGludHJpbnNpY2FsbHkgdGllZCB0byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGVudmlyb25tZW50IG9mIFF1YWxjb21tIFNvQ3MuIE5vIGdldHRpbmcgYXJvdW5kIGl0OyBpdCBuZWVkcyBUcnVzdFpvbmUgcmVzb3VyY2VzLCBHU0kgZmlybXdhcmUsIHRoZSB3aG9sZSBzaGViYW5nLiBXZSYjMzk7cmUgdGFsa2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gcmVhY2ggaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIGVzcGVjaWFsbHkgbm90IG9uIGFtZDY0IGFyY2hpdGVjdHVyZS4gVGhlIGNvZGUgaXRzZWxmIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgbXkgcHVycG9zZXMuCgpUaGVyZWZvcmUsIGZ1enppbmcgaXMgYSBuby1nbyBoZXJlLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlcmUgYXJlIG5vIHNwZWNpZmljIHN5bWJvbHMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IHdhcnJhbnQgZm9jdXNlZCBhdHRlbnRpb24sIHNvIGBGb2N1c1N5bWJvbHNgIHN0YXlzIGVtcHR5LCBhbmQgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUgZWl0aGVyOyBgRW5hYmxlQ29uZmlnc2AgaXMgZW1wdHkgYXMgd2VsbC4gSSYjMzk7dmUgZG9jdW1lbnRlZCBteSByZWFzb25pbmcgc3VjY2luY3RseS4KCkFscmlnaHQsIGZpbmFsIGNoZWNrIGNvbXBsZXRlLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRob3NlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDAzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMDM6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjIzLjE4MDgyNTQ3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjUyMDIzNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIChRQ09NX0lQQSkgZHJpdmVyIChkcml2ZXJzL25ldC9pcGEpLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU25hcGRyYWdvbiBTb0NzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MjMuMTgwODI5NjY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgyNTk0OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTgxODQ0ZDI2NzI2NGI3ZjZiOGQzOTg1YjRjYTIyOWI0YmMzZWNmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmMgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXFxuaW5kZXggMDc4ZDMyYTE4ZGJmZC4uMzAwMGFhYTI0NTMwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uY1xcbkBAIC0xNjYsNiArMTY2LDcgQEAgc3RhdGljIGJvb2wgaXBhX21lbV9pZF92YWxpZChzdHJ1Y3QgaXBhICppcGEsIGVudW0gaXBhX21lbV9pZCBtZW1faWQpXFxuIFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbitcXHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcXG4gXFx0Y2FzZSBJUEFfTUVNX0FQX1Y0X0ZJTFRFUjpcXG4gXFx0Y2FzZSBJUEFfTUVNX0FQX1Y2X0ZJTFRFUjpcXG4gXFx0XFx0aWYgKHZlcnNpb24gXFx1MDAzYyBJUEFfVkVSU0lPTl81XzApXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXFxuaW5kZXggYjI1YmFiYWRlNzg3ZS4uNTY3MDNiYWRhMDdjZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxcbkBAIC02OCw2ICs2OCw3IEBAIGVudW0gaXBhX21lbV9pZCB7XFxuIFxcdElQQV9NRU1fU1RBVFNfUVVPVEFfQVAsXFx0XFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wKykgKi9cXG4gXFx0SVBBX01FTV9TVEFUU19URVRIRVJJTkcsXFx0LyogMCBjYW5hcmllcywgb3B0aW9uYWwgKElQQSB2NC4wKykgKi9cXG4gXFx0SVBBX01FTV9TVEFUU19EUk9QLFxcdFxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXFxuK1xcdElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUCxcXHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjArKSAqL1xcbiBcXHQvKiBUaGUgbmV4dCA3IGZpbHRlciBhbmQgcm91dGUgc3RhdGlzdGljcyByZWdpb25zIGFyZSBvcHRpb25hbCAqL1xcbiBcXHRJUEFfTUVNX1NUQVRTX1Y0X0ZJTFRFUixcXHQvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqL1xcbiBcXHRJUEFfTUVNX1NUQVRTX1Y2X0ZJTFRFUixcXHQvKiAwIGNhbmFyaWVzIChJUEEgdjQuMC12NC4yKSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjoyNC41NjQxNzE0NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIyMjY4NjY1ODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBjaGFuZ2VzIG1vZGlmeSB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IgKFFDT01fSVBBKSBkcml2ZXIgKGRyaXZlcnMvbmV0L2lwYSksIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTbmFwZHJhZ29uIFNvQ3MuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE4MTg0NGQyNjcyNjRiN2Y2YjhkMzk4NWI0Y2EyMjliNGJjM2VjZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDAzOjIyOjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uYyBiL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmNcbmluZGV4IDA3OGQzMmExOGRiZmQuLjMwMDBhYWEyNDUzMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG4rKysgYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jXG5AQCAtMTY2LDYgKzE2Niw3IEBAIHN0YXRpYyBib29sIGlwYV9tZW1faWRfdmFsaWQoc3RydWN0IGlwYSAqaXBhLCBlbnVtIGlwYV9tZW1faWQgbWVtX2lkKVxuIFx0XHRcdHJldHVybiBmYWxzZTtcbiBcdFx0YnJlYWs7XG4gXG4rXHRjYXNlIElQQV9NRU1fTU9ERU1fU1RBVFNfRFJPUDpcbiBcdGNhc2UgSVBBX01FTV9BUF9WNF9GSUxURVI6XG4gXHRjYXNlIElQQV9NRU1fQVBfVjZfRklMVEVSOlxuIFx0XHRpZiAodmVyc2lvbiBcdTAwM2MgSVBBX1ZFUlNJT05fNV8wKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmggYi9kcml2ZXJzL25ldC9pcGEvaXBhX21lbS5oXG5pbmRleCBiMjViYWJhZGU3ODdlLi41NjcwM2JhZGEwN2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuKysrIGIvZHJpdmVycy9uZXQvaXBhL2lwYV9tZW0uaFxuQEAgLTY4LDYgKzY4LDcgQEAgZW51bSBpcGFfbWVtX2lkIHtcbiBcdElQQV9NRU1fU1RBVFNfUVVPVEFfQVAsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4gXHRJUEFfTUVNX1NUQVRTX1RFVEhFUklORyxcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4gXHRJUEFfTUVNX1NUQVRTX0RST1AsXHRcdC8qIDAgY2FuYXJpZXMsIG9wdGlvbmFsIChJUEEgdjQuMCspICovXG4rXHRJUEFfTUVNX01PREVNX1NUQVRTX0RST1AsXHQvKiAwIGNhbmFyaWVzLCBvcHRpb25hbCAoSVBBIHY1LjArKSAqL1xuIFx0LyogVGhlIG5leHQgNyBmaWx0ZXIgYW5kIHJvdXRlIHN0YXRpc3RpY3MgcmVnaW9ucyBhcmUgb3B0aW9uYWwgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjRfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiBcdElQQV9NRU1fU1RBVFNfVjZfRklMVEVSLFx0LyogMCBjYW5hcmllcyAoSVBBIHY0LjAtdjQuMikgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjI0LjU2NDE3MzEyNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NDQ0MjY0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2g6IFF1YWxjb21tIElQQSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgZXZlbiAqd29ydGgqIHRoZSBlZmZvcnQgb2YgZnV6emluZywgb3IgaWYgaXQncyBkZWFsaW5nIHdpdGggY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gV2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIGluIGBkcml2ZXJzL25ldC9pcGEvaXBhX21lbS5jYCBhbmQgYGRyaXZlcnMvbmV0L2lwYS9pcGFfbWVtLmhgLCBzbyBjbGVhcmx5LCBpdCdzIHNvbWV0aGluZyB3aXRoaW4gdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yIGRyaXZlci5cblxuRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgZHJpdmVycy9uZXQvaXBhL2AgZGlyZWN0b3J5IGlzIGFsbCBhYm91dC4gQWgsIHllcywgSVBBIOKAkyB0aGUgUXVhbGNvbW0gSVAgQWNjZWxlcmF0b3IuIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoaXMgY29kZSBpcyB0aWVkIHRvIFNuYXBkcmFnb24gU29Dcy5cblxuTm93LCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbnRleHQgb2YgdGhpcyBwYXRjaCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvaXBhL0tjb25maWdgLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCBxdWlja2x5IGByZWFkLWZpbGVgIHRoYXQgS2NvbmZpZyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgYW55IGRlcGVuZGVuY2llcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBwaWN0dXJlIG9mIHdoYXQgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGRvaW5nIGFuZCBpZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjozMC41MDg2MDE0MjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTc1NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFFDT01fSVBBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcGEvS2NvbmZpZzoxOmNvbmZpZyBRQ09NX0lQQVxcbmRyaXZlcnMvbmV0L2lwYS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIElQQSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjozMC41NTM4Nzg5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NzY2ODIwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIElQQSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgcHVsbCB1cCBgZHJpdmVycy9uZXQvaXBhL0tjb25maWdgLiBUaW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSVBBIChJbnRlZ3JhdGVkIFBhY2tldCBBY2NlbGVyYXRvcikgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB0aGluZyBpcyBzdHJ1Y3R1cmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGtleSBjb25maWd1cmF0aW9uIHZhcmlhYmxlczogdGhlIG9uZXMgdGhhdCBlbmFibGUgb3IgZGlzYWJsZSBjb3JlIGZlYXR1cmVzLCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMsIGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBsYXRmb3JtLXNwZWNpZmljIHNldHRpbmdzLiBJJ2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IHRyaWNreSBsb2dpYyBpbiB0aGUgZGVwZW5kZW5jeSBleHByZXNzaW9ucywgdGhlIGtpbmQgdGhhdCBtaWdodCBpbnRyb2R1Y2Ugc3VidGxlIGNvbXBhdGliaWxpdHkgaXNzdWVzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGZlYXR1cmVzIHJlbGF0ZWQgdG8gdmFyaW91cyBwYWNrZXQgcHJvY2Vzc2luZyBzdGFnZXMsIG9mZmxvYWQgY2FwYWJpbGl0aWVzIChUQ1AvSVAsIEwyKSwgYW5kIG1heWJlIHNvbWUgUW9TIG9yIGZsb3cgY29udHJvbCBtZWNoYW5pc21zLiBJIGFsc28gZXhwZWN0IHRvIGNoZWNrIHRoYXQgZWFjaCBvcHRpb24gZm9sbG93cyB0aGUgZXN0YWJsaXNoZWQga2VybmVsIGNvZGluZyBjb252ZW50aW9ucyBmb3IgS2NvbmZpZyBmaWxlcy4gVGhlbiBJIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBtZW50YWwgbWFwIG9mIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzMuMjMwNTYzODY5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2lwYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIFFDT01fSVBBXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gSVBBIHN1cHBvcnRcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBRQ09NX1NNRU1cXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJTlRFUkNPTk5FQ1RcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgKFFDT01fUlBST0NfQ09NTU9OPW4gXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKVxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX0FPU1NfUU1QIHx8IFFDT01fQU9TU19RTVA9blxcbiAgIDg6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgIDk6XFx0XFx0c2VsZWN0IFFDT01fUEFTXFxuICAxMDpcXHRcXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBDaG9vc2UgWSBvciBNIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUXVhbGNvbW1cXG4gIDEzOlxcdFxcdCAgSVAgQWNjZWxlcmF0b3IgKElQQSksIGEgaGFyZHdhcmUgYmxvY2sgcHJlc2VudCBpbiBzb21lXFxuICAxNDpcXHRcXHQgIFF1YWxjb21tIFNvQ3MuICBUaGUgSVBBIGlzIGEgcHJvZ3JhbW1hYmxlIHByb3RvY29sIHByb2Nlc3NvclxcbiAgMTU6XFx0XFx0ICB0aGF0IGlzIGNhcGFibGUgb2YgZ2VuZXJpYyBoYXJkd2FyZSBoYW5kbGluZyBvZiBJUCBwYWNrZXRzLFxcbiAgMTY6XFx0XFx0ICBpbmNsdWRpbmcgcm91dGluZywgZmlsdGVyaW5nLCBhbmQgTkFULiAgQ3VycmVudGx5IHRoZSBJUEFcXG4gIDE3OlxcdFxcdCAgZHJpdmVyIHN1cHBvcnRzIG9ubHkgYmFzaWMgdHJhbnNwb3J0IG9mIG5ldHdvcmsgdHJhZmZpY1xcbiAgMTg6XFx0XFx0ICBiZXR3ZWVuIHRoZSBBUCBhbmQgbW9kZW0uXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgTm90ZSB0aGF0IGlmIHNlbGVjdGVkLCB0aGUgc2VsZWN0aW9uIHR5cGUgbXVzdCBtYXRjaCB0aGF0XFxuICAyMTpcXHRcXHQgIG9mIFFDT01fUTZWNV9DT01NT04gKFkgb3IgTSkuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzMuMjMwNjg2ODU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI1NTQ1MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIElQQSBkcml2ZXIgaXMgYnJvdWdodCB0byBsaWZlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MuIFdoZXJlIGRvZXMgaXQgYWxsIGJlZ2luPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHByb2JlIHNlcXVlbmNlLCB0aGUgcGxhdGZvcm0gYnVzIGludGVyYWN0aW9ucywgYW5kIG9mIGNvdXJzZSwgdGhlIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBzdXNwZWN0cyBpbiB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBwcm9wZXJseSBkZWZpbmVkLlxuXG5UaGVuLCBJJ2xsIHN3aXRjaCBnZWFycyBhbmQgY3JhY2sgb3BlbiB0aGUgc291cmNlIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIGhvdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyB3aXRoIHRoZSBzeXN0ZW0uIFRpbWUgdG8gZ3JlcCBpbiB0aGUgYGRyaXZlcnMvbmV0L2lwYWAgZGlyZWN0b3J5LiBJJ20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kcml2ZXJgLCBvciBhbnl0aGluZyBzaW1pbGFyIHRoYXQgaGFuZGxlcyBkZXZpY2UgcmVnaXN0cmF0aW9uIHdpdGhpbiB0aGF0IGZyYW1ld29yay4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMDM6MjI6MzkuNDg2MTQxNTUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODA0NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXBhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTEwMTE9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaXBhX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwMjItXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM6MTAyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGlwYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTEwMjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjM5LjUzMTk0OTIwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxMDg5NTQzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJUEEgRHJpdmVyIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkcml2ZXJzL25ldC9pcGFgIGNvZGUsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgUXVhbGNvbW0ncyBJUCBBY2NlbGVyYXRvciAoSVBBKSBoYXJkd2FyZSBibG9jaywgYW5kIGl0J3MgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIFF1YWxjb21tIFNvQyBlY29zeXN0ZW0sIG1lYW5pbmcgYEFSQ0hfUUNPTWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgd2UncmUgdGFsa2luZyBhYm91dCBtb2RlbSBpbnRlcmFjdGlvbiwgaW50ZXJjb25uZWN0LCBzaGFyZWQgbWVtb3J5IChTTUVNKSwgYW5kIFFNSSwgYWxsIHdpdGhpbiBhIFF1YWxjb21tLXNwZWNpZmljIGhhcmR3YXJlIGNvbnRleHQuIEkgc2VlIHRoZSBkZXBlbmRlbmNpZXM6IGBBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUYCBhbG9uZyB3aXRoIGBRQ09NX1NNRU1gLlxuXG5UaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHRoaXMgZXZlbiAqcnVuKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSk/IEknbSBiZXR0aW5nIG5vLCBidXQgbGV0J3MgY29uZmlybS4gSSBrbm93IHN0YW5kYXJkIFFFTVUgb24geDg2XzY0L2FtZDY0LCBvciBldmVuIHRoZSBzdGFuZGFyZCBBUk02NCB2aXJ0IG1hY2hpbmUsIGRvZXNuJ3QgZW11bGF0ZSB0aGF0IHNwZWNpZmljIFF1YWxjb21tIElQQSBoYXJkd2FyZS4gVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGFuZCB0aGUgZGVwZW5kZW5jeSBvbiBgQVJDSF9RQ09NYCBjb25maXJtcyB0aGF0IGl0IGlzIGFuIGlzc3VlLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIgc2VjdGlvbi4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIHVucmVhY2hhYmxlIGlmIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBpc24ndCBwcmVzZW50LiBEcml2ZXJzIHN1Y2ggYXMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUgYXJlIHByb3ZpZGVkIGFzIGV4YW1wbGVzLCBhbGwgb2Ygd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBvciBjdXN0b20gZW11bGF0aW9ucyBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMuXG5cblRoaXMgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gVGhlIFF1YWxjb21tIElQQSwgYGRyaXZlcnMvbmV0L2lwYWAsIGlzIFNvQy1zcGVjaWZpYy4gSXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCB0aGF0IHZlcnkgc3BlY2lmaWMgSVAgQWNjZWxlcmF0b3IgaGFyZHdhcmUgb24gUXVhbGNvbW0gU25hcGRyYWdvbiBjaGlwcy4gVGhlcmUncyBubyB3YXkgaXQncyBnb2luZyB0byBwcm9iZSBvciBldmVuIGV4ZWN1dGUgcmVsZXZhbnQgY29kZSB3aXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgUXVhbGNvbW0gU29DIGhhcmR3YXJlIG9yIHNvbWUgc3BlY2lhbGl6ZWQsIHByb3ByaWV0YXJ5IGVtdWxhdG9ycy4gU3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSBqdXN0IGFyZW4ndCBnb2luZyB0byBjdXQgaXQgaW4gdGhpcyBjYXNlLlxuXG5MZXQncyBkbyBvbmUgbGFzdCBjaGVjay4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzICphbnkqIGtpbmQgb2YgdmlydHVhbCBidXMgb3IgZHVtbXkgaW50ZXJmYWNlIGZvciB0aGUgSVBBIHRoYXQgbWlnaHQgYmUgZXhwb3NlZCwgZXZlbiBhcyBhIHN0dWIsIHRoYXQgY291bGQgcnVuIGluIHN0YW5kYXJkIFFFTVUuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgYGlwYV9tYWluLmNgIGFuZCBzcGVjaWZpY2FsbHkgaXRzIHByb2JlIGZ1bmN0aW9uLCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQzLjY0MDkwNTQzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBhX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYz05Mj1lbnVtIGlwYV9maXJtd2FyZV9sb2FkZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTA3LSAqIGludGVycnVwdCBoYXMgYmVlbiBzaWduYWxlZCBieSB0aGUgbW9kZW0uICBPdGhlcndpc2UgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwODogKiBjYWxsZWQgZnJvbSBpcGFfcHJvYmUoKSBhZnRlciBHU0kgZmlybXdhcmUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTA5LSAqIGxvYWRlZCwgYXV0aGVudGljYXRlZCwgYW5kIHN0YXJ0ZWQgYnkgVHJ1c3QgWm9uZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jPTcyNj1zdGF0aWMgZW51bSBpcGFfZmlybXdhcmVfbG9hZGVyIGlwYV9maXJtd2FyZV9sb2FkZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtNzcwLS8qKlxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjc3MTogKiBpcGFfcHJvYmUoKSAtIElQQSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb25cXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03NzItICogQHBkZXY6XFx0UGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jLTc5Mi0gKi9cXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYzo3OTM6c3RhdGljIGludCBpcGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9pcGEvaXBhX21haW4uYy03OTQte1xcbi0tXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmM9MTAxMT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpcGFfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2lwYS9pcGFfbWFpbi5jOjEwMTI6XFx0LnByb2JlXFx0XFx0PSBpcGFfcHJvYmUsXFxuZHJpdmVycy9uZXQvaXBhL2lwYV9tYWluLmMtMTAxMy1cXHQucmVtb3ZlXFx0XFx0PSBpcGFfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQwMzoyMjo0My42ODUyODMyNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE0NzUzMDY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaXBhX3Byb2JlYCBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBgaXBhX3Byb2JlYCBkcml2ZXIsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgZnJ1aXRmdWwgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIsIGBkcml2ZXJzL25ldC9pcGFgLCBpcyBhbGwgYWJvdXQgdGhlIFF1YWxjb21tIElQIEFjY2VsZXJhdG9yLCBhbmQgaXQncyBpbnRyaW5zaWNhbGx5IHRpZWQgdG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbnZpcm9ubWVudCBvZiBRdWFsY29tbSBTb0NzLiBObyBnZXR0aW5nIGFyb3VuZCBpdDsgaXQgbmVlZHMgVHJ1c3Rab25lIHJlc291cmNlcywgR1NJIGZpcm13YXJlLCB0aGUgd2hvbGUgc2hlYmFuZy4gV2UncmUgdGFsa2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbid0IHNvbWV0aGluZyBJIGNhbiByZWFjaCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgZXNwZWNpYWxseSBub3Qgb24gYW1kNjQgYXJjaGl0ZWN0dXJlLiBUaGUgY29kZSBpdHNlbGYgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBteSBwdXJwb3Nlcy5cblxuVGhlcmVmb3JlLCBmdXp6aW5nIGlzIGEgbm8tZ28gaGVyZS4gSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlcmUgYXJlIG5vIHNwZWNpZmljIHN5bWJvbHMgd2l0aGluIHRoaXMgYXJlYSB0aGF0IHdhcnJhbnQgZm9jdXNlZCBhdHRlbnRpb24sIHNvIGBGb2N1c1N5bWJvbHNgIHN0YXlzIGVtcHR5LCBhbmQgZ2l2ZW4gdGhlIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgdGhlcmUgYXJlbid0IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBlaXRoZXI7IGBFbmFibGVDb25maWdzYCBpcyBlbXB0eSBhcyB3ZWxsLiBJJ3ZlIGRvY3VtZW50ZWQgbXkgcmVhc29uaW5nIHN1Y2NpbmN0bHkuXG5cbkFscmlnaHQsIGZpbmFsIGNoZWNrIGNvbXBsZXRlLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRob3NlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NjgsIk91dHB1dFRva2VucyI6MTAxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQ2LjgzMjgxNTU0OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciAoUUNPTV9JUEEpIGRyaXZlciAoZHJpdmVycy9uZXQvaXBhKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNuYXBkcmFnb24gU29Dcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBRdWFsY29tbSBJUCBBY2NlbGVyYXRvciAoUUNPTV9JUEEpIGRyaXZlciAoZHJpdmVycy9uZXQvaXBhKSwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNuYXBkcmFnb24gU29Dcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDAzOjIyOjQ2LjgzMjgzODk5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowkm4w4[1] Phase: Running StartedAt: 2026-09-09 03:22:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkm4w4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 03:22:54 +0000 UTC FinishedAt: 2026-09-09 03:22:59 +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,}