Name: series-workflowl6ssh Phase: Failed StartedAt: 2026-09-03 16:12:35 +0000 UTC FinishedAt: 2026-09-03 16:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6ssh[0] Phase: Succeeded StartedAt: 2026-09-03 16:12:35 +0000 UTC FinishedAt: 2026-09-03 16:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6ssh[0].run-triage Phase: Succeeded StartedAt: 2026-09-03 16:12:35 +0000 UTC FinishedAt: 2026-09-03 16:16:36 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERldmljZSBUcmVlIHBhcnNpbmcgbG9naWMgKG1paWNfcGFyc2VfZHQpIGluIGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQyBNSUkgY29udmVydGVyLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW50aWF0ZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgbm9kZXMgb24gUmVuZXNhcyBBUk0gU29DcyAod2l0aCBzeXNmcyBiaW5kaW5nIHN1cHByZXNzZWQpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCAoYW1kNjQpIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI4YzZhYTgyY2IxOGU3ZmVlNjJjMTFmZDMxNjNmMjAxYzZkZjY5M2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE2OjE1OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5pbmRleCAyYjcyZmE5OGRkZjEzLi4zZWU0MGViOWQ1NDUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuQEAgLTY4Myw3ICYjNDM7NjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0aWYgKCFkdF92YWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcbiYjNDM7XHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiBcbiBcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCYjMzQ7cmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cJiMzNDssIFx1MDAyNmNvbmYpID09IDApXG4gXHRcdGR0X3ZhbFswXSA9IGNvbmY7XG5AQCAtNjkyLDYgJiM0Mzs2OTIsMTIgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZwb3J0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdGlmIChwb3J0IFx1MDAzYyBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXHUwMDNlIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfbWF4KSB7XG4mIzQzO1x0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuJiM0MztcdFx0XHRrZnJlZShkdF92YWwpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtaW5wdXRcJiMzNDssIFx1MDAyNmNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGM2YWE4MmNiMThlN2ZlZTYyYzExZmQzMTYzZjIwMWM2ZGY2OTNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jCmluZGV4IDJiNzJmYTk4ZGRmMTMuLjNlZTQwZWI5ZDU0NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYwpAQCAtNjgzLDcgJiM0Mzs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpCiAJaWYgKCFkdF92YWwpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTsKJiM0MzsJbWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7Y29uZl9jb252X2NvdW50KTsKIAogCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpbiYjMzQ7LCAmYW1wO2NvbmYpID09IDApCiAJCWR0X3ZhbFswXSA9IGNvbmY7CkBAIC02OTIsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpCiAJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCAmIzM0O3JlZyYjMzQ7LCAmYW1wO3BvcnQpKQogCQkJY29udGludWU7CiAKJiM0MzsJCWlmIChwb3J0ICZsdDsgbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7bWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgJmd0OyBtaWljLSZndDtvZl9kYXRhLSZndDttaWljX3BvcnRfbWF4KSB7CiYjNDM7CQkJZGV2X2VycihtaWljLSZndDtkZXYsICYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxuJiMzNDssIHBvcnQpOwomIzQzOwkJCWtmcmVlKGR0X3ZhbCk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiAJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCAmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dCYjMzQ7LCAmYW1wO2NvbmYpKQogCQkJY29udGludWU7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCB0aW1lIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIHNvbWUgZnV6emluZyBlZmZvcnRzLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIChvciBpZiB0aGF0JiMzOTtzIG5vdCBhdmFpbGFibGUsIGEgc2ltcGxlIGByZWFkLWZpbGVgIHdpbGwgZG8pIHRvIGRpdmUgaW50byBgcGNzLXJ6bjEtbWlpYy5jYCBhbmQgYWxzbyBxdWlja2x5IGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIGltcHJlc3Npb24gb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQsIHRoZSBjb21wbGV4aXR5LCBhbmQgd2hldGhlciBpdCYjMzk7cyBldmVuIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB3aGV0aGVyIGl0JiMzOTtzIHdvcnRoIHRoZSB0aW1lIGludmVzdG1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BjcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcdCYjNDM7PSBwY3MtcnpuMS1taWljLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9wY3MvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYHBjcy1yem4xLW1paWMuY2Agc291cmNlIGZpbGUuIFRoZSBgS2NvbmZpZ2AgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgJiMzNDt3aGVuJiMzNDsgdGhpcyBkcml2ZXIgaXMgaW5jbHVkZWQuIFRoZW4sIEkmIzM5O2xsIG1vdmUgaW50byB0aGUgYHBjcy1yem4xLW1paWMuY2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBkcml2ZXIgaXMsIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGluaXRpYWxpemVzIHRoZSBQSFkgKHByZXN1bWFibHkgYSBNSUkgaW50ZXJmYWNlIGJhc2VkIG9uIHRoZSBmaWxlbmFtZSksIGhhbmRsZXMgaW50ZXJydXB0cywgYW5kIG1hbmFnZXMgbmV0d29yayB0cmFmZmljLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gYWxsb3dzIG1lIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGRyaXZlciYjMzk7cyByb2xlIGFuZCBob3cgaXQgZnVuY3Rpb25zLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBlbnRpcmUgZWNvc3lzdGVtIG9mIG5ldHdvcmtpbmcgZHJpdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUENTIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQQ1MgZGV2aWNlIGRyaXZlcnNcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgUENTX1hQQ1NcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1wmIzM0O1xuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXG4gIDEzOlx0XHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgUENTX0xZTlhcbiAgMTY6XHRcdHRyaXN0YXRlXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnggUENTXG4gIDE5Olx0XHQgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIExheWVyc2NhcGUgYW5kIFFvcklRIEV0aGVybmV0IFNFUkRFUy5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgUENTX01US19MWU5YSVxuICAyMjpcdFx0dHJpc3RhdGVcbiAgMjM6XHRcdHNlbGVjdCBQSFlfQ09NTU9OX1BST1BTXG4gIDI0Olx0XHRzZWxlY3QgUkVHTUFQXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xuICAyNzpcdFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJiMzOTtzIFNvQyBhbmQgRXRoZXJuZXQgc3dpdGNoIElDcy5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUENTX1JaTjFfTUlJQ1xuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9OMSwgUlovTjJILCBSWi9UMkggTUlJIGNvbnZlcnRlclwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1JFTkVTQVMgfHwgQ09NUElMRV9URVNUXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGZvciB0aGUgTUlJIGNvbnZlcnRlciBhdmFpbGFibGUgb25cbiAgMzU6XHRcdCAgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIFRoaXMgUENTIGNvbnZlcnRzIE1JSSB0b1xuICAzNjpcdFx0ICBSTUlJL1JHTUlJLCBvciBjYW4gYmUgc2V0IGluIHBhc3MtdGhyb3VnaCBtb2RlIGZvciBNSUkuXG4gIDM3Olx0XG4gIDM4Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1OTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgQ29kZTogVW5kZXJzdGFuZGluZyB0aGUgUlovTjEgTUlJQyBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQmFzZWQgb24gdGhhdCBmaWxlIG5hbWUgYWxvbmUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGUgTUlJQyAoTWVkaWEgSW5kZXBlbmRlbnQgSW50ZXJmYWNlIENvbnRyb2xsZXIpIGZvdW5kIG9uIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBHaXZlbiB0aGUgcGF0aCwgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aGlzIGlzIGEgKnBsYXRmb3JtIGRyaXZlciogaW1wbGVtZW50YXRpb24g4oCTIG1lYW5pbmcgaXQgaW50ZXJmYWNlcyBkaXJlY3RseSB3aXRoIHRoZSBoYXJkd2FyZSBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlLiBJJiMzOTttIGFudGljaXBhdGluZyB3ZSYjMzk7bGwgZmluZCBjb2RlIHRoYXQgaGFuZGxlcyB0aGUgc3BlY2lmaWMgaW50cmljYWNpZXMgb2YgdGhlIFJaL04xIGZhbWlseSYjMzk7cyBNSUlDLCBsaWtlbHkgcGFyc2luZyBkZXZpY2UgdHJlZSBub2RlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlLCBtYW5hZ2UgaXRzIGNsb2NraW5nLCBhbmQgaGFuZGxlIGludGVycnVwdCBzaWduYWxzLiBUaGlzIHNob3VsZCBiZSBpbnRlcmVzdGluZyB0byBhbmFseXplIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBhbmQgaGFyZHdhcmUgaW50ZWdyYXRpb24gcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NzA6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgXHUwMDI2PSB+bWFzaztcbiA2NzE6XHR9XG4gNjcyOlx0XG4gNjczOlx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIDY3NDpcdHtcbiA2NzU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBtaWljLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlO1xuIDY3NjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xuIDY3NzpcdFx0Ym9vbCBhY3RpdmVfbG93O1xuIDY3ODpcdFx0aW50IHBvcnQsIHJldDtcbiA2Nzk6XHRcdHM4ICpkdF92YWw7XG4gNjgwOlx0XHR1MzIgY29uZjtcbiA2ODE6XHRcbiA2ODI6XHRcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiA2ODM6XHRcdGlmICghZHRfdmFsKVxuIDY4NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2ODU6XHRcbiA2ODY6XHRcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiA2ODk6XHRcdFx0ZHRfdmFsWzBdID0gY29uZjtcbiA2OTA6XHRcbiA2OTE6XHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XG4gNjkyOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIDY5MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5NDpcdFxuIDY5NTpcdFx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuIDY5NjpcdFx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuIDY5NzpcdFx0XHRcdGtmcmVlKGR0X3ZhbCk7XG4gNjk4Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjk5Olx0XHRcdH1cbiA3MDA6XHRcbiA3MDE6XHRcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dFwmIzM0OywgXHUwMDI2Y29uZikpXG4gNzAyOlx0XHRcdFx0Y29udGludWU7XG4gNzAzOlx0XG4gNzA0Olx0XHRcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xuIDcwNTpcdFx0XHRkdF92YWxbcG9ydCAmIzQzOyAhbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xuIDcwNjpcdFxuIDcwNzpcdFx0XHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1waHktbGluay1hY3RpdmUtbG93XCYjMzQ7KTtcbiA3MDg6XHRcbiA3MDk6XHRcdFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XG4gNzEwOlx0XHR9XG4gNzExOlx0XG4gNzEyOlx0XHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XG4gNzEzOlx0XHRrZnJlZShkdF92YWwpO1xuIDcxNDpcdFxuIDcxNTpcdFx0cmV0dXJuIHJldDtcbiA3MTY6XHR9XG4gNzE3Olx0XG4gNzE4Olx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXG4gNzE5Olx0e1xuIDcyMDpcdFx0c3RydWN0IG1paWMgKm1paWMgPSBkYXRhO1xuIDcyMTpcdFx0aW50IHJldDtcbiA3MjI6XHRcbiA3MjM6XHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQobWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVx1MDAzZXJzdHMpO1xuIDcyNDpcdFx0aWYgKHJldClcbiA3MjU6XHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFzc2VydCByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4gNzI2Olx0fVxuIDcyNzpcdFxuIDcyODpcdHN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXG4gNzI5Olx0e1xuIDczMDpcdFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbiA3MzE6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXHUwMDNlZGV2O1xuIDczMjpcdFx0aW50IHJldDtcbiA3MzM6XHRcdHU4IGk7XG4gNzM0Olx0XG4gNzM1Olx0XHRpZiAoIW9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQpXG4gNzM2Olx0XHRcdHJldHVybiAwO1xuIDczNzpcdFxuIDczODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudDsgaSYjNDM7JiM0MzspXG4gNzM5Olx0XHRcdG1paWMtXHUwMDNlcnN0c1tpXS5pZCA9IG9mX2RhdGEtXHUwMDNlcmVzZXRfaWRzW2ldO1xuIDc0MDpcdFxuIDc0MTpcdFx0cmV0ID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShkZXYsIG9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQsXG4gNzQyOlx0XHRcdFx0XHRcdFx0ICAgIG1paWMtXHUwMDNlcnN0cyk7XG4gNzQzOlx0XHRpZiAocmV0KVxuIDc0NDpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcbiA3NDU6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIGdldCBidWxrIHJlc2V0IGxpbmVzXFxuXCYjMzQ7KTtcbiA3NDY6XHRcbiA3NDc6XHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19kZWFzc2VydChvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVx1MDAzZXJzdHMpO1xuIDc0ODpcdFx0aWYgKHJldClcbiA3NDk6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKlByb2JpbmcgYW5kIE1hdGNoaW5nIGBwY3MtcnpuMS1taWljYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBhbmQgbWF0Y2hpbmcgbWVjaGFuaXNtcyBmb3IgYHBjcy1yem4xLW1paWNgLiBUaGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgY3J1Y2lhbCBoZXJlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIG15IGZpZWxkIG9mIHN0dWR5LgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkYXRhIGlzIHBhc3NlZCB0byBpdCBhcyBpbnB1dCwgYW5kIGlmIHRoZXJlIGFyZSBjb25zdHJhaW50cyBvbiB3aGF0IGl0IGFjY2VwdHMuIElmIGl0IHVzZXMgYSBzdGF0ZSB0YWJsZSwgaG93IGFyZSB0aGUgc3RhdGVzIHRyYW5zaXRpb25lZCwgYXJlIHRoZXkgZGV0ZXJtaW5pc3RpYyBvciBzdGF0aXN0aWNhbD8KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBwcm9iaW5nIHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQg4oCTIGlzIGl0IGEgZGlyZWN0IGFkZHJlc3MgbG9va3VwLCBhIGhhc2gtYmFzZWQgYXBwcm9hY2gsIGEgbW9yZSBjb21wbGV4IHNlYXJjaCBhbGdvcml0aG0sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBjdXN0b20/IEFsc28sIGhvdyBkb2VzIGl0IGhhbmRsZSBjb2xsaXNpb25zIG9yIG1pc21hdGNoZXMgaWYgaXQgaXMgcHJlc2VudD8gV2hhdCBkb2VzIG1hdGNoaW5nICptZWFuKiBpbiB0aGlzIGNvbnRleHQ/IElzIGl0IHBhdHRlcm4gbWF0Y2hpbmcsIGV4YWN0IGNvbXBhcmlzb24sIHNlbWFudGljIHNpbWlsYXJpdHksIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbW9yZSBkZXRhaWxzLCB0aGUgYmV0dGVyLgoKSSYjMzk7bSBhc3N1bWluZyB0aGlzIGNvbXBvbmVudCBpcyBhIGtleSBlbGVtZW50IG9mIHRoZSBzeXN0ZW0gSSYjMzk7bSB3b3JraW5nIHdpdGgsIHNvIGhvdyBpdCBiZWhhdmVzIGRpcmVjdGx5IGltcGFjdHMgdGhlIHN5c3RlbSYjMzk7cyBwZXJmb3JtYW5jZSBhbmQgYmVoYXZpb3IuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtmYWlsZWQgdG8gZGVhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDc1MTpcdFxuIDc1MjpcdFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxuIDc1MzpcdFx0XHRcdFx0ICAgICAgIG1paWMpO1xuIDc1NDpcdFx0aWYgKHJldClcbiA3NTU6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byBhZGQgcmVzZXQgYWN0aW9uXFxuXCYjMzQ7KTtcbiA3NTY6XHRcbiA3NTc6XHRcdHJldHVybiAwO1xuIDc1ODpcdH1cbiA3NTk6XHRcbiA3NjA6XHRzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA3NjE6XHR7XG4gNzYyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiA3NjM6XHRcdHN0cnVjdCBtaWljICptaWljO1xuIDc2NDpcdFx0dTMyIG1vZGVfY2ZnO1xuIDc2NTpcdFx0aW50IHJldDtcbiA3NjY6XHRcbiA3Njc6XHRcdG1paWMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1paWMpLCBHRlBfS0VSTkVMKTtcbiA3Njg6XHRcdGlmICghbWlpYylcbiA3Njk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzcwOlx0XG4gNzcxOlx0XHRtaWljLVx1MDAzZW9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiA3NzI6XHRcdG1paWMtXHUwMDNlZGV2ID0gZGV2O1xuIDc3MzpcdFxuIDc3NDpcdFx0cmV0ID0gbWlpY19wYXJzZV9kdChtaWljLCBcdTAwMjZtb2RlX2NmZyk7XG4gNzc1Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3NjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc3NzpcdFxuIDc3ODpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlpYy1cdTAwM2Vsb2NrKTtcbiA3Nzk6XHRcdG1paWMtXHUwMDNlYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3ODA6XHRcdGlmIChJU19FUlIobWlpYy1cdTAwM2ViYXNlKSlcbiA3ODE6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cdTAwM2ViYXNlKTtcbiA3ODI6XHRcbiA3ODM6XHRcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xuIDc4NDpcdFx0aWYgKHJldClcbiA3ODU6XHRcdFx0cmV0dXJuIHJldDtcbiA3ODY6XHRcbiA3ODc6XHRcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA3ODg6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNzg5Olx0XHRcdHJldHVybiByZXQ7XG4gNzkwOlx0XG4gNzkxOlx0XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4gNzkyOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc5MzpcdFx0XHRyZXR1cm4gcmV0O1xuIDc5NDpcdFxuIDc5NTpcdFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbiA3OTY6XHRcdGlmIChyZXQpXG4gNzk3Olx0XHRcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xuIDc5ODpcdFxuIDc5OTpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuIDgwMDpcdFxuIDgwMTpcdFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXG4gODAyOlx0XHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuIDgwMzpcdFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXG4gODA0Olx0XHQgKiBwcm9wZXJseS5cbiA4MDU6XHRcdCAqL1xuIDgwNjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XG4gODA3Olx0XG4gODA4Olx0XHRyZXR1cm4gMDtcbiA4MDk6XHRcbiA4MTA6XHRkaXNhYmxlX3J1bnRpbWVfcG06XG4gODExOlx0XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuIDgxMjpcdFxuIDgxMzpcdFx0cmV0dXJuIHJldDtcbiA4MTQ6XHR9XG4gODE1Olx0XG4gODE2Olx0c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA4MTc6XHR7XG4gODE4Olx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gODE5Olx0fVxuIDgyMDpcdFxuIDgyMTpcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xuIDgyMjpcdFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcbiA4MjM6XHRcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUobW9kY3RybF9tYXRjaF90YWJsZSksXG4gODI0Olx0XHQuY29uZl9jb252X2NvdW50ID0gTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVgsXG4gODI1Olx0XHQuY29uZl90b19zdHJpbmcgPSBjb25mX3RvX3N0cmluZyxcbiA4MjY6XHRcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoY29uZl90b19zdHJpbmcpLFxuIDgyNzpcdFx0LmluZGV4X3RvX3N0cmluZyA9IGluZGV4X3RvX3N0cmluZyxcbiA4Mjg6XHRcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXG4gODI5Olx0XHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlIHdlIGdvLi4uCgoqKkRpdmluZyBpbnRvIHRoZSBQQ1MtUlpOMS1NSUlDIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AuIEkgYWxyZWFkeSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIFBDUyBhcmNoaXRlY3R1cmUsIGFuZCBJIHVuZGVyc3RhbmQgdGhlIFJaTjEgcGxhdGZvcm0mIzM5O3MgbmV0d29yayBpbnRlcmZhY2UuIE5vdyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBmaXRzIGludG8gdGhhdCBsYXJnZXIgcGljdHVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSBDb250cm9sbGVyIChNSUlDKSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCB0aGUgUENTIChQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIpIHdpdGhpbiB0aGUgUlpOMSBzeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBjcnVjaWFsIGJpdHM6IGhvdyBpdCBpbml0aWFsaXplcyB0aGUgTUlJQywgbWFuYWdlcyByZWdpc3RlciBhY2Nlc3MsIGhhbmRsZXMgaW50ZXJydXB0IHJvdXRpbmVzLCBhbmQgaWYgaXQgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIHJlbGF0ZWQgZHJpdmVycyBvciBjb21wb25lbnRzLiBJIHdpbGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHVuY29udmVudGlvbmFsIGltcGxlbWVudGF0aW9uIHRoYXQgY2FuIGJlIGltcHJvdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgzMDpcdFx0Lm1paWNfcG9ydF9tYXggPSA1LFxuIDgzMTpcdFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXG4gODMyOlx0XHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcbiA4MzM6XHRcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxuIDgzNDpcdFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcbiA4MzU6XHR9O1xuIDgzNjpcdFxuIDgzNzpcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcbiA4Mzg6XHRcdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXG4gODM5Olx0XHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUpLFxuIDg0MDpcdFx0LmNvbmZfY29udl9jb3VudCA9IDUsXG4gODQxOlx0XHQuY29uZl90b19zdHJpbmcgPSByenQyaF9jb25mX3RvX3N0cmluZyxcbiA4NDI6XHRcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfY29uZl90b19zdHJpbmcpLFxuIDg0MzpcdFx0LmluZGV4X3RvX3N0cmluZyA9IHJ6dDJoX2luZGV4X3RvX3N0cmluZyxcbiA4NDQ6XHRcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXG4gODQ1Olx0XHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcbiA4NDY6XHRcdC5taWljX3BvcnRfbWF4ID0gNCxcbiA4NDc6XHRcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxuIDg0ODpcdFx0LnJlc2V0X2lkcyA9IHJ6dDJoX3Jlc2V0X2lkcyxcbiA4NDk6XHRcdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcbiA4NTA6XHRcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcbiA4NTE6XHRcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxuIDg1MjpcdH07XG4gODUzOlx0XG4gODU0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcbiA4NTU6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxuIDg1NjpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscnpuMS1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXG4gODU3Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbiA4NTg6XHR9O1xuIDg1OTpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1paWNfb2ZfbXRhYmxlKTtcbiA4NjA6XHRcbiA4NjE6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcbiA4NjI6XHRcdC5kcml2ZXIgPSB7XG4gODYzOlx0XHRcdC5uYW1lXHQgPSBcJiMzNDtyem4xX21paWNcJiMzNDssXG4gODY0Olx0XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiA4NjU6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXG4gODY2Olx0XHR9LFxuIDg2NzpcdFx0LnByb2JlID0gbWlpY19wcm9iZSxcbiA4Njg6XHRcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcbiA4Njk6XHR9O1xuIDg3MDpcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWlpY19kcml2ZXIpO1xuIDg3MTpcdFxuIDg3MjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gODczOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JlbmVzYXMgTUlJIGNvbnZlcnRlciBQQ1MgZHJpdmVyXCYjMzQ7KTtcbiA4NzQ6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0Nsw6ltZW50IEzDqWdlciBcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXHUwMDNlXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkwMQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRyaXZlciBpdHNlbGY6IEl0JiMzOTtzIHRhcmdldGluZyBgYW1kNjRgLCBidXQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBhIFJlbmVzYXMgTUlJIGNvbnZlcnRlciBvbiB0aGVpciBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGUgZHJpdmVyJiMzOTtzIGBvZl9tYXRjaF90YWJsZWAgbG9va3MgZm9yICYjMzQ7cmVuZXNhcyxyOWEwOWcwNzctbWlpYyYjMzQ7IGFuZCAmIzM0O3JlbmVzYXMscnpuMS1taWljJiMzNDsuIFNlZW1zIHByZXR0eSBjbGVhciBpdCYjMzk7cyBtZWFudCBmb3IgdGhvc2Ugc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZXMuCgpUaGVuIHRoZXJlJiMzOTtzIGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBsb2NrZWQgZG93bjsgdXNlcnNwYWNlIGNhbiYjMzk7dCBldmVuIG1lc3Mgd2l0aCBpdHMgYmluZGluZy4gVGhpcyBzdWdnZXN0cyBhIHRpZ2h0IGNvdXBsaW5nIHRvIHRoZSBoYXJkd2FyZS4gQW5kLCByZWluZm9yY2luZyB0aGF0IGlkZWEsIGl0IG5lZWRzIHNwZWNpZmljIG1lbW9yeSByZXNvdXJjZXMgYW5kIHJlc2V0IGNvbnRyb2xsZXJzIHRoYXQgYXJlIGludGVncmFsIHBhcnRzIG9mIHRoZSBSZW5lc2FzIFNvQ3MuCgpOb3csIHRoZSBiaWcgcXVlc3Rpb246IGNhbiB0aGlzIGhhcmR3YXJlIGJlIHNpbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHM/IFRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBUaGlzIGlzIGFuIGVtYmVkZGVkIGV0aGVybmV0IFBDUy9NSUkgY29udmVydGVyIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgQVJNIFNvQ3MuCgpTbywgYWNjb3JkaW5nIHRvIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYW5kICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzJiMzNDsgY2F0ZWdvcmllcy4gU3BlY2lmaWNhbGx5OgoqICAgSXQmIzM5O3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycywgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuCiogICBUaGUgY29kZSBwYXRocyBoZXJlIGFyZSBleGNsdXNpdmUgdG8gQVJNIGFuZCBhcmUgYmFzZWQgb24gZW1iZWRkZWQgU29Dcy4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBsaW5rYWdlcyBvciBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBzZWUgaWYgYW55b25lIGNhbGxzIG9yIHVzZXMgYHBjcy1yem4xLW1paWNgIGluIGNvcmUgY29kZSBvciBldmVuIHZpcnR1YWwgYnVzZXMsIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIG90aGVyIGludGVyZXN0aW5nIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpY3xtaWljXyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTE3PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC02NC0gICAgZGVzY3JpcHRpb246IE1JSSBTd2l0Y2ggUE9SVElOIGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgc2hvdWxkIHVzZSBvbmUgb2ZcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6NjU6ICAgICAgdGhlIHZhbHVlcyBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmggZm9yIFJaL04xIFNvQyBhbmRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjYtICAgICAgaW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaCBmb3IgUlovTjJILCBSWi9UMkggU29Dcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTczPXBhdHRlcm5Qcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtODQtICAgICAgICBkZXNjcmlwdGlvbjogQ29udmVydGVyIGlucHV0IHBvcnQgY29uZmlndXJhdGlvbi4gVGhpcyB2YWx1ZSBzaG91bGQgdXNlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sOjg1OiAgICAgICAgICBvbmUgb2YgdGhlIHZhbHVlcyBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmggZm9yIFJaL04xIFNvQ1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC04Ni0gICAgICAgICAgYW5kIGluY2x1ZGUvZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmggZm9yIFJaL04ySCwgUlovVDJIIFNvQ3MuXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbD0yMTc9ZXhhbXBsZXM6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIxOC0gIC0gfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbDoyMTk6ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtMjIwLSAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yOWEwNmcwMzItc3lzY3RybC5oXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MjMyNzQ9RjpcdGRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3KlxuTUFJTlRBSU5FUlM6MjMyNzU6RjpcdGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbk1BSU5UQUlORVJTOjIzMjc2OkY6XHRpbmNsdWRlL2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcbk1BSU5UQUlORVJTOjIzMjc3OkY6XHRpbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaFxuTUFJTlRBSU5FUlMtMjMyNzgtRjpcdG5ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDZnMDMyLXJ6bjFkNDAwLWRiLmR0cy0xMy0jaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oXHUwMDNlXG5hcmNoL2FybS9ib290L2R0cy9yZW5lc2FzL3I5YTA2ZzAzMi1yem4xZDQwMC1kYi5kdHM6MTQ6I2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuYXJjaC9hcm0vYm9vdC9kdHMvcmVuZXNhcy9yOWEwNmcwMzItcnpuMWQ0MDAtZGIuZHRzLTE1LSNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3BpbmN0cmwvcnpuMS1waW5jdHJsLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpPTQ4PVx0ZXRoZXJuZXRAZTIwMDAge1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2ktNTMtXHRcdHB0cC10aW1lciA9IFx1MDAzY1x1MDAyNnB0cF90aW1lcjFcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpOjU0Olx0XHRwY3NwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGNzcGh5OVx1MDAzZSwgXHUwMDNjXHUwMDI2cXNnbWlpY19wY3MxXHUwMDNlO1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaS01NS1cdFx0cGNzLWhhbmRsZS1uYW1lcyA9IFwmIzM0O3NnbWlpXCYjMzQ7LCBcJiMzNDtxc2dtaWlcJiMzNDs7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaT01OD1cdG1kaW9AZTEwMDAge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaTo1OTpcdFx0cXNnbWlpY19wY3MxOiBldGhlcm5ldC1wY3NAMSB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTYwLVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wsbHlueC1wY3NcJiMzNDs7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaT00OD1cdGV0aGVybmV0QGU0MDAwIHtcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpLTUzLVx0XHRwdHAtdGltZXIgPSBcdTAwM2NcdTAwMjZwdHBfdGltZXIxXHUwMDNlO1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaTo1NDpcdFx0cGNzcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBjc3BoeTEwXHUwMDNlLCBcdTAwM2NcdTAwMjZxc2dtaWljX3BjczJcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpLTU1LVx0XHRwY3MtaGFuZGxlLW5hbWVzID0gXCYjMzQ7c2dtaWlcJiMzNDssIFwmIzM0O3FzZ21paVwmIzM0Oztcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpPTU4PVx0bWRpb0BlMTAwMCB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpOjU5Olx0XHRxc2dtaWljX3BjczI6IGV0aGVybmV0LXBjc0AyIHtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2ktNjAtXHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxseW54LXBjc1wmIzM0Oztcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpPTQ4PVx0ZXRoZXJuZXRAZTYwMDAge1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTMtXHRcdHB0cC10aW1lciA9IFx1MDAzY1x1MDAyNnB0cF90aW1lcjFcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU0Olx0XHRwY3NwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGNzcGh5MTFcdTAwM2UsIFx1MDAzY1x1MDAyNnFzZ21paWNfcGNzM1x1MDAzZTtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTUtXHRcdHBjcy1oYW5kbGUtbmFtZXMgPSBcJiMzNDtzZ21paVwmIzM0OywgXCYjMzQ7cXNnbWlpXCYjMzQ7O1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2k9NTg9XHRtZGlvQGUxMDAwIHtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2k6NTk6XHRcdHFzZ21paWNfcGNzMzogZXRoZXJuZXQtcGNzQDMge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTMuZHRzaS02MC1cdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLGx5bngtcGNzXCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTE0Nz1zdGF0aWMgdm9pZCBhNXBzd19wY3NfZnJlZShzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cdFx0aWYgKGE1cHN3LVx1MDAzZXBjc1tpXSlcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE1MzpcdFx0XHRtaWljX2Rlc3Ryb3koYTVwc3ctXHUwMDNlcGNzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlx0XHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cdTAwM2VkZXYsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE4NC1cdFx0aWYgKElTX0VSUihwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMDojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz02Mz1zdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcwLVx0aWYgKHBjc19ub2RlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6NzE6XHRcdHBjcyA9IG1paWNfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzItXHRcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9ODI9c3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODQtXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo4NTpcdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9MTY9c3RhdGljIGludCByem4xX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjQtXHRpZiAocGNzX25vZGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzoyNTpcdFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNi1cdFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0zNj1zdGF0aWMgdm9pZCByem4xX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMzgtXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzozOTpcdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTQwLX1cbi0tXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcdCYjNDM7PSBwY3MtcnpuMS1taWljLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTE3Nz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJ6dDJoX3Jlc2V0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgyLS8qKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODM6ICogc3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIC0gTUlJQyBQSFlfTElOSyBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4NC0gKiBAbWFzazogTWFzayBvZiBwaHlfbGluayBiaXRzXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODYtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE4NzpzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODgtXHR1MzIgbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTIwMT1zdHJ1Y3QgbWlpYyB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDUtXHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgcnN0c1tNSUlDX01BWF9OVU1fUlNUU107XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNjpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNzpcdHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyBsaW5rX2NmZztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjEwOmVudW0gbWlpY190eXBlIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjExLVx0TUlJQ19UWVBFX1JaTjEsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTUtLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxNjogKiBzdHJ1Y3QgbWlpY19vZl9kYXRhIC0gT0YgZGF0YSBmb3IgTUlJIGNvbnZlcnRlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTctICogQG1hdGNoX3RhYmxlOiBNYXRjaGluZyB0YWJsZSBmb3IgY29udmN0cmwgY29uZmlndXJhdGlvblxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjIzLSAqIEBpbmRleF90b19zdHJpbmdfY291bnQ6IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBpbmRleF90b19zdHJpbmcgYXJyYXlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI0OiAqIEBtaWljX3BvcnRfc3RhcnQ6IE1JSUMgcG9ydCBzdGFydCBudW1iZXJcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI1OiAqIEBtaWljX3BvcnRfbWF4OiBNYXhpbXVtIE1JSUMgc3VwcG9ydGVkXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyNi0gKiBAc3dfbW9kZV9tYXNrOiBTd2l0Y2ggbW9kZSBtYXNrXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzAtICogIGJlZm9yZSBhY2Nlc3MuXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzMTogKiBAbWlpY193cml0ZTogRnVuY3Rpb24gcG9pbnRlciB0byB3cml0ZSBhIHZhbHVlIHRvIGEgTUlJQyByZWdpc3RlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzItICogQHR5cGU6IFR5cGUgb2YgTUlJQ1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzMtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzNDpzdHJ1Y3QgbWlpY19vZl9kYXRhIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjM1LVx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKm1hdGNoX3RhYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQxLVx0dTggaW5kZXhfdG9fc3RyaW5nX2NvdW50O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDI6XHR1OCBtaWljX3BvcnRfc3RhcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MzpcdHU4IG1paWNfcG9ydF9tYXg7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0NC1cdHU4IHN3X21vZGVfbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0Ny1cdGJvb2wgaW5pdF91bmxvY2tfbG9ja19yZWdzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDg6XHR2b2lkICgqbWlpY193cml0ZSkoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0OTpcdGVudW0gbWlpY190eXBlIHR5cGU7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1MC19O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUyLS8qKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTM6ICogc3RydWN0IG1paWNfcG9ydCAtIFBlciBwb3J0IE1JSSBjb252ZXJ0ZXIgc3RydWN0XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1NC0gKiBAbWlpYzogYmFja2lsaW5nIHRvIE1JSSBjb252ZXJ0ZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTgtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI1OTpzdHJ1Y3QgbWlpY19wb3J0IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjYwLVx0c3RydWN0IG1paWMgKm1paWM7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2NjpzdGF0aWMgc3RydWN0IG1paWNfcG9ydCAqcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjcte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjg6XHRyZXR1cm4gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1paWNfcG9ydCwgcGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjY5LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNzE6c3RhdGljIHZvaWQgbWlpY191bmxvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcyLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjgwOnN0YXRpYyB2b2lkIG1paWNfbG9ja19yZWdzKHN0cnVjdCBtaWljICptaWljKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjg1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODY6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MTpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfbG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Mi17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MzpcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5NC1cdHdyaXRlbCh2YWx1ZSwgbWlpYy1cdTAwM2ViYXNlICYjNDM7IG9mZnNldCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5NTpcdG1paWNfbG9ja19yZWdzKG1paWMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTYtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5ODpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk5LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAwOlx0bWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfd3JpdGUobWlpYywgb2Zmc2V0LCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMS19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAzOnN0YXRpYyB1MzIgbWlpY19yZWdfcmVhZGwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwNC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwODpzdGF0aWMgdm9pZCBtaWljX3JlZ19ybXcoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzEzLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTQ6XHRyZWcgPSBtaWljX3JlZ19yZWFkbChtaWljLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTUtXHRyZWcgXHUwMDI2PSB+bWFzaztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE2LVx0cmVnIHw9IHZhbDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzE3Olx0bWlpY19yZWdfd3JpdGVsKG1paWMsIG9mZnNldCwgcmVnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjI6c3RhdGljIHZvaWQgbWlpY19jb252ZXJ0ZXJfZW5hYmxlKHN0cnVjdCBtaWljICptaWljLCBpbnQgcG9ydCwgaW50IGVuYWJsZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyOC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzI5Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVlJTVCwgTUlJQ19DT05WUlNUX1BIWUlGX1JTVChwb3J0KSwgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMwLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzI6c3RhdGljIGludCBtaWljX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzMtXHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM1LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM2Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNzpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzOC1cdHUzMiBzcGVlZCwgY29udl9tb2RlLCB2YWwsIG1hc2s7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzOTpcdGludCBwb3J0ID0gbWlpY19wb3J0LVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3MC1cdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzE6XHRpZiAoaW50ZXJmYWNlICE9IG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcyLVx0XHR2YWwgfD0gRklFTERfUFJFUChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQsIHNwZWVkKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzczLVx0XHRtYXNrIHw9IE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc0Olx0XHRtaWljX3BvcnQtXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzUtXHR9XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Ni1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc3Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwocG9ydCksIG1hc2ssIHZhbCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3ODpcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXHUwMDNlcG9ydCwgMSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3OS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzgzOnN0YXRpYyB2b2lkIG1paWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODQtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCwgaW50IGR1cGxleClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg1LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg2Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NzpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4OC1cdHUzMiBjb252X3NwZWVkID0gMCwgdmFsID0gMDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg5Olx0aW50IHBvcnQgPSBtaWljX3BvcnQtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzkwLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDEyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTM6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE0LVx0XHQgICAgIChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQgfCBNSUlDX0NPTlZDVFJMX0ZVTExEKSwgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE3OnN0YXRpYyBpbnQgbWlpY19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE4LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE5Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQyMDpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyMS1cdHUzMiB2YWwsIG1hc2s7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjktXHRcdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzA6XHRcdG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDMxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzY6XHRcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKG1paWNfcG9ydC1cdTAwM2Vwb3J0KSwgbWFzaywgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM3LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0Mzg6XHRcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXHUwMDNlcG9ydCwgMSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1paWNfcGh5bGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NTpcdC5wY3NfY29uZmlnID0gbWlpY19jb25maWcsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NjpcdC5wY3NfbGlua191cCA9IG1paWNfbGlua191cCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ3Olx0LnBjc19wcmVfaW5pdCA9IG1paWNfcHJlX2luaXQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OC19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MDpzdHJ1Y3QgcGh5bGlua19wY3MgKm1paWNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUxLXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUyOlx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUzLVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDU0Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTUtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4NC1cdG9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ4NTpcdGlmIChwb3J0IFx1MDAzZSBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXggfHwgcG9ydCBcdTAwM2Mgb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg2LVx0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkwOlx0bWlpY19wb3J0ID0ga3phbGxvY19vYmooKm1paWNfcG9ydCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ5MTpcdGlmICghbWlpY19wb3J0KSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5Mi1cdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ5OTpcdG1paWNfcG9ydC1cdTAwM2VtaWljID0gbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAwOlx0bWlpY19wb3J0LVx1MDAzZXBvcnQgPSBwb3J0IC0gb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMTpcdG1paWNfcG9ydC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2bWlpY19waHlsaW5rX29wcztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTAyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDM6XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShtaWljX3BvcnQtXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA0Olx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBtaWljX3BvcnQtXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA1Olx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNzpcdHJldHVybiBcdTAwMjZtaWljX3BvcnQtXHUwMDNlcGNzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDgtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDk6RVhQT1JUX1NZTUJPTChtaWljX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTExOnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTIte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTM6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTU6XHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpY19wb3J0LVx1MDAzZW1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE2Olx0a2ZyZWUobWlpY19wb3J0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE3LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE4OkVYUE9SVF9TWU1CT0wobWlpY19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MjA6c3RhdGljIGludCBtaWljX2luaXRfaHcoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjZmdfbW9kZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyOS1cdGlmIChtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlaW5pdF91bmxvY2tfbG9ja19yZWdzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzA6XHRcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNC1cdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzU6XHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19NT0RDVFJMLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzYtXHRcdFx0KChjZmdfbW9kZSBcdTAwM2NcdTAwM2MgX19mZnMoc3dfbW9kZV9tYXNrKSkgXHUwMDI2IHN3X21vZGVfbWFzaykpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzODpcdGZvciAocG9ydCA9IDA7IHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfbWF4OyBwb3J0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Mzk6XHRcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBwb3J0LCAwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQwLVx0XHQvKiBEaXNhYmxlIHNwZWVkL2R1cGxleCBjb250cm9sIGZyb20gdGhlc2UgcmVnaXN0ZXJzLCBkYXRhc2hlZXRcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0My1cdFx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NDpcdFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dDVFJMLCAweDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDU6XHRcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX1NXRFVQQywgMHgwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQ2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTUwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NTE6c3RhdGljIGJvb2wgbWlpY19tb2RjdHJsX21hdGNoKHM4ICp0YWJsZV92YWwsIHM4ICpkdF92YWwsIHU4IGNvdW50KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTIte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NjY6c3RhdGljIHZvaWQgbWlpY19kdW1wX2NvbmYoc3RydWN0IG1paWMgKm1paWMsIHM4ICpjb25mKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01Njcte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Njg6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cdTAwM2VvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjktXHRjb25zdCBjaGFyICpjb25mX25hbWU7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4MzpzdGF0aWMgaW50IG1paWNfbWF0Y2hfZHRfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmR0X3ZhbCwgdTMyICptb2RlX2NmZylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTg1Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg2LVx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKnRhYmxlX2VudHJ5O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTkxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1OTI6XHRcdGlmIChtaWljX21vZGN0cmxfbWF0Y2godGFibGVfZW50cnktXHUwMDNlY29udiwgZHRfdmFsLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTMtXHRcdFx0XHQgICAgICAgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZWNvbmZfY29udl9jb3VudCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5OS1cdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBhcHBseSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjYwMDpcdG1paWNfZHVtcF9jb25mKG1paWMsIGR0X3ZhbCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwNC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjA1OnN0YXRpYyB2b2lkIG1paWNfY29uZmlndXJlX3BoeV9saW5rKHN0cnVjdCBtaWljICptaWljLCB1MzIgY29uZixcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA2LVx0XHRcdFx0ICAgIHUzMiBwb3J0LCBib29sIGFjdGl2ZV9sb3cpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02NzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY3MzpzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3NC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY5NTpcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk2LVx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA0LVx0XHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA1Olx0XHRkdF92YWxbcG9ydCAmIzQzOyAhbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDYtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcwOTpcdFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMC1cdH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzExLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MTI6XHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMy1cdGtmcmVlKGR0X3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxODpzdGF0aWMgdm9pZCBtaWljX3Jlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQodm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE5LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI4OnN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyOS17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjczMDpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTczMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTI6XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBtaWljX3Jlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1My1cdFx0XHRcdCAgICAgICBtaWljKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzYwOnN0YXRpYyBpbnQgbWlpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NjEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzczLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NzQ6XHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFx1MDAyNm1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzc1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzgzOlx0cmV0ID0gbWlpY19yZXNldF9jb250cm9sX2luaXQobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5NTpcdHJldCA9IG1paWNfaW5pdF9odyhtaWljLCBtb2RlX2NmZyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5OTpcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX1BIWV9MSU5LLCBtaWljLVx1MDAzZWxpbmtfY2ZnLm1hc2ssIG1paWMtXHUwMDNlbGlua19jZmcudmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODAwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MDE6XHQvKiBtaWljX2NyZWF0ZSgpIHJlbGllcyBvbiB0aGF0IGZhY3QgdGhhdCBkYXRhIGFyZSBhdHRhY2hlZCB0byB0aGVcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODAyLVx0ICogcGxhdGZvcm0gZGV2aWNlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIGlzIHJlYWR5IHNvIHRoaXMgbmVlZHMgdG9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODE2OnN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNy17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyMTpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODIyLVx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgyOC1cdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcdC5taWljX3BvcnRfc3RhcnQgPSAxLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzA6XHQubWlpY19wb3J0X21heCA9IDUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzMS1cdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzItXHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODMzOlx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNC1cdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgzNzpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzOC1cdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDQtXHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9pbmRleF90b19zdHJpbmcpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODQ2Olx0Lm1paWNfcG9ydF9tYXggPSA0LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDctXHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSygyLCAwKSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0OS1cdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODUwOlx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTEtXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVuZXNhcyxyem4xLW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODU3LVx0eyAvKiBzZW50aW5lbCAqLyB9XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OC19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODYyLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2NC1cdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjU6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG1paWNfb2ZfbXRhYmxlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjYtXHR9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njc6XHQucHJvYmUgPSBtaWljX3Byb2JlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njg6XHQucmVtb3ZlID0gbWlpY19yZW1vdmUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2OS19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg3MS1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaD0xMj1zdHJ1Y3QgZGV2aWNlX25vZGU7XG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaC0xMy1cbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oOjE0OnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oLTE1LVxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmg6MTY6dm9pZCBtaWljX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmgtMTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ0CgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDgxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtaWljX3BhcnNlX2R0YCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyB0d28gaXNzdWVzOiBhIGBtZW1zZXRgIGluaXRpYWxpemF0aW9uIGFuZCBhIGJvdW5kcyBjaGVjayBvbiB0aGUgYHBvcnRgIHZhcmlhYmxlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgeDg2L1FFTVUgc3l6a2FsbGVyIHNldHVwLgoKTG9va2luZyBhdCB0aGUgZGV0YWlscywgdGhpcyBgQ09ORklHX1BDU19SWk4xX01JSUNgIGRyaXZlciBpcyBwbGF0Zm9ybS1zcGVjaWZpYywgZGVzaWduZWQgZm9yIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLCB3aGljaCBhcmUgYWxsIEFSTS1iYXNlZC4gIFRoZSBkcml2ZXIgcmVsaWVzIG9uIERldmljZSBUcmVlIChEVCkgZm9yIHByb2JpbmcsIHVzaW5nIHNwZWNpZmljICYjMzQ7cmVuZXNhcyxyem4xLW1paWMmIzM0OyBvciAmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWMmIzM0OyBjb21wYXRpYmxlIHN0cmluZ3MuICBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBoYXMgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAsIG1lYW5pbmcgd2UgY2FuJiMzOTt0IG1hbnVhbGx5IGJpbmQgaXQgdGhyb3VnaCBzeXNmcy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBmb3IgcmVhY2hhYmlsaXR5LgoKVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgLyB4ODZfNjQgVk1zIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgUmVuZXNhcyBoYXJkd2FyZSBvciB0aGUgRGV2aWNlIFRyZWUgcGFyc2luZyBuZWNlc3NhcnkgdG8gdHJpZ2dlciB0aGlzIGRyaXZlci4gIFN5emthbGxlciBvbiBhbWQ2NCBzaW1wbHkgKmNhbm5vdCogaW5zdGFudGlhdGUgb3IgaW50ZXJhY3Qgd2l0aCB0aGlzIHBsYXRmb3JtIGRldmljZSwgbm90IGR1cmluZyBib290IG9yIGF0IHJ1bnRpbWUuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2hlZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIHg4Ni9RRU1VIHN5emthbGxlci4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBhZ2FpbnN0IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCiogICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSoqOiBDb25maXJtZWQuIFRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gc3BlY2lmaWMgUmVuZXNhcyBoYXJkd2FyZSBhbmQgbm90IGVtdWxhdGVkLgoqICAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMqKjogVGhpcyBmYWxscyBpbnRvIHRoaXMgY2F0ZWdvcnkgYnkgbm90IGJlaW5nIHJlYWNoYWJsZSBpbiB0aGUgZmlyc3QgcGxhY2UgYmVjYXVzZSBvZiB0aGUgaGFyZHdhcmUvYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3ksIGNvdXBsZWQgd2l0aCBEVCBiaW5kaW5nLgoKR2l2ZW4gYWxsIHRoaXMsIHRoZSBwYXRjaCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLgoKU28sIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLCBJJiMzOTtsbCBzZXQ6CgoqICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbWlpY19wYXJzZV9kdGAgaW4gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIE1JSSBjb252ZXJ0ZXIgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChQQ1MpIG9uIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBBUk0gU29Dcy4gVGhlIGRyaXZlciBpcyBwcm9iZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgb24gc3BlY2lmaWMgUmVuZXNhcyBoYXJkd2FyZSwgaGFzIHN5c2ZzIGJpbmQgYXR0cmlidXRlcyBzdXBwcmVzc2VkIChgc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWVgKSwgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDsKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZm9jdXMgb24pCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGFsc28gZW1wdHksIGFzIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBlbmFibGluZyB0aGlzIGRyaXZlciBvbiB4ODYpLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNToyMy41NjAwMTgzNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDQ0Mjg2MDMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjIzLjU2MDAyMzQwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MjE3MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4YzZhYTgyY2IxOGU3ZmVlNjJjMTFmZDMxNjNmMjAxYzZkZjY5M2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbmluZGV4IDJiNzJmYTk4ZGRmMTMuLjNlZTQwZWI5ZDU0NTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcXG5AQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcXG4gXFx0aWYgKCFkdF92YWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcXG4rXFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlY29uZl9jb252X2NvdW50KTtcXG4gXFxuIFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInJlbmVzYXMsbWlpYy1zd2l0Y2gtcG9ydGluXFxcIiwgXFx1MDAyNmNvbmYpID09IDApXFxuIFxcdFxcdGR0X3ZhbFswXSA9IGNvbmY7XFxuQEAgLTY5Miw2ICs2OTIsMTIgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiBcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlZ1xcXCIsIFxcdTAwMjZwb3J0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbitcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXFxcblxcXCIsIHBvcnQpO1xcbitcXHRcXHRcXHRrZnJlZShkdF92YWwpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtaW5wdXRcXFwiLCBcXHUwMDI2Y29uZikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MjQuOTAyODA1MjI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTEwMDA2MjAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERldmljZSBUcmVlIHBhcnNpbmcgbG9naWMgKG1paWNfcGFyc2VfZHQpIGluIGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQyBNSUkgY29udmVydGVyLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW50aWF0ZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgbm9kZXMgb24gUmVuZXNhcyBBUk0gU29DcyAod2l0aCBzeXNmcyBiaW5kaW5nIHN1cHByZXNzZWQpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCAoYW1kNjQpIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOGM2YWE4MmNiMThlN2ZlZTYyYzExZmQzMTYzZjIwMWM2ZGY2OTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5pbmRleCAyYjcyZmE5OGRkZjEzLi4zZWU0MGViOWQ1NDUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRpZiAoIWR0X3ZhbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xuK1x0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZWNvbmZfY29udl9jb3VudCk7XG4gXG4gXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cIiwgXHUwMDI2Y29uZikgPT0gMClcbiBcdFx0ZHRfdmFsWzBdID0gY29uZjtcbkBAIC02OTIsNiArNjkyLDEyIEBAIHN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwicmVnXCIsIFx1MDAyNnBvcnQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuK1x0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwiLCBwb3J0KTtcbitcdFx0XHRrZnJlZShkdF92YWwpO1xuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4rXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcInJlbmVzYXMsbWlpYy1pbnB1dFwiLCBcdTAwMjZjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjI0LjkwMjgwNjc2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMzE4OTc5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIHNvbWUgZnV6emluZyBlZmZvcnRzLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEknbGwgbmVlZCB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGl0c2VsZi4gSSdsbCB1c2UgYGdyZXBwZXJgIChvciBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZSwgYSBzaW1wbGUgYHJlYWQtZmlsZWAgd2lsbCBkbykgdG8gZGl2ZSBpbnRvIGBwY3MtcnpuMS1taWljLmNgIGFuZCBhbHNvIHF1aWNrbHkgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgaW1wcmVzc2lvbiBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLCB0aGUgY29tcGxleGl0eSwgYW5kIHdoZXRoZXIgaXQncyBldmVuIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIHRpbWUgaW52ZXN0bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MzYuMjIxNzg4MzI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDY0MzIxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtcnpuMS1taWljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcXHQrPSBwY3MtbXRrLWx5bnhpLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXFx0Kz0gcGNzLXJ6bjEtbWlpYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHlsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMzojaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0LSNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MzYuNjg2NDM3OTM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MTU0OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9wY3MvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYHBjcy1yem4xLW1paWMuY2Agc291cmNlIGZpbGUuIFRoZSBgS2NvbmZpZ2AgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJdCdsbCBnaXZlIG1lIHRoZSBcIndoeVwiIGFuZCBcIndoZW5cIiB0aGlzIGRyaXZlciBpcyBpbmNsdWRlZC4gVGhlbiwgSSdsbCBtb3ZlIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgZHJpdmVyIGlzLCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGluaXRpYWxpemVzIHRoZSBQSFkgKHByZXN1bWFibHkgYSBNSUkgaW50ZXJmYWNlIGJhc2VkIG9uIHRoZSBmaWxlbmFtZSksIGhhbmRsZXMgaW50ZXJydXB0cywgYW5kIG1hbmFnZXMgbmV0d29yayB0cmFmZmljLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gYWxsb3dzIG1lIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGRyaXZlcidzIHJvbGUgYW5kIGhvdyBpdCBmdW5jdGlvbnMuIEl0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIGVjb3N5c3RlbSBvZiBuZXR3b3JraW5nIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTozOC45Mjc5ODk5ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQQ1MgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51IFxcXCJQQ1MgZGV2aWNlIGRyaXZlcnNcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1xcXCJcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xcbiAgMTM6XFx0XFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBQQ1NfTFlOWFxcbiAgMTY6XFx0XFx0dHJpc3RhdGVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgaGVscGVycyB0byBwaHlsaW5rIGZvciBtYW5hZ2luZyB0aGUgTHlueCBQQ1NcXG4gIDE5OlxcdFxcdCAgd2hpY2ggaXMgcGFydCBvZiB0aGUgTGF5ZXJzY2FwZSBhbmQgUW9ySVEgRXRoZXJuZXQgU0VSREVTLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgUENTX01US19MWU5YSVxcbiAgMjI6XFx0XFx0dHJpc3RhdGVcXG4gIDIzOlxcdFxcdHNlbGVjdCBQSFlfQ09NTU9OX1BST1BTXFxuICAyNDpcXHRcXHRzZWxlY3QgUkVHTUFQXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xcbiAgMjc6XFx0XFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJ3MgU29DIGFuZCBFdGhlcm5ldCBzd2l0Y2ggSUNzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUENTX1JaTjFfTUlJQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNSUkgY29udmVydGVyIGF2YWlsYWJsZSBvblxcbiAgMzU6XFx0XFx0ICBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBQQ1MgY29udmVydHMgTUlJIHRvXFxuICAzNjpcXHRcXHQgIFJNSUkvUkdNSUksIG9yIGNhbiBiZSBzZXQgaW4gcGFzcy10aHJvdWdoIG1vZGUgZm9yIE1JSS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTozOC45MjgwNTE3MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDYxMTkwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBDb2RlOiBVbmRlcnN0YW5kaW5nIHRoZSBSWi9OMSBNSUlDIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQmFzZWQgb24gdGhhdCBmaWxlIG5hbWUgYWxvbmUsIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBNSUlDIChNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UgQ29udHJvbGxlcikgZm91bmQgb24gUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIEdpdmVuIHRoZSBwYXRoLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhpcyBpcyBhICpwbGF0Zm9ybSBkcml2ZXIqIGltcGxlbWVudGF0aW9uIOKAkyBtZWFuaW5nIGl0IGludGVyZmFjZXMgZGlyZWN0bHkgd2l0aCB0aGUgaGFyZHdhcmUgZGVzY3JpYmVkIGluIHRoZSBkZXZpY2UgdHJlZS4gSSdtIGFudGljaXBhdGluZyB3ZSdsbCBmaW5kIGNvZGUgdGhhdCBoYW5kbGVzIHRoZSBzcGVjaWZpYyBpbnRyaWNhY2llcyBvZiB0aGUgUlovTjEgZmFtaWx5J3MgTUlJQywgbGlrZWx5IHBhcnNpbmcgZGV2aWNlIHRyZWUgbm9kZXMgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgbWFuYWdlIGl0cyBjbG9ja2luZywgYW5kIGhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscy4gVGhpcyBzaG91bGQgYmUgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgYW5kIGhhcmR3YXJlIGludGVncmF0aW9uIHBlcnNwZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTo0NC4zODkyNDM1OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NzA6XFx0XFx0XFx0bWlpYy1cXHUwMDNlbGlua19jZmcudmFsIFxcdTAwMjY9IH5tYXNrO1xcbiA2NzE6XFx0fVxcbiA2NzI6XFx0XFxuIDY3MzpcXHRzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXFxuIDY3NDpcXHR7XFxuIDY3NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gbWlpYy1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlO1xcbiA2NzY6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xcbiA2Nzc6XFx0XFx0Ym9vbCBhY3RpdmVfbG93O1xcbiA2Nzg6XFx0XFx0aW50IHBvcnQsIHJldDtcXG4gNjc5OlxcdFxcdHM4ICpkdF92YWw7XFxuIDY4MDpcXHRcXHR1MzIgY29uZjtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0ZHRfdmFsID0ga21hbGxvY19vYmpzKCpkdF92YWwsIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZWNvbmZfY29udl9jb3VudCk7XFxuIDY4MzpcXHRcXHRpZiAoIWR0X3ZhbClcXG4gNjg0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA2ODU6XFx0XFxuIDY4NjpcXHRcXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiA2ODc6XFx0XFxuIDY4ODpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblxcXCIsIFxcdTAwMjZjb25mKSA9PSAwKVxcbiA2ODk6XFx0XFx0XFx0ZHRfdmFsWzBdID0gY29uZjtcXG4gNjkwOlxcdFxcbiA2OTE6XFx0XFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNvbnYpIHtcXG4gNjkyOlxcdFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbiA2OTM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDY5NDpcXHRcXG4gNjk1OlxcdFxcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuIDY5NjpcXHRcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXFxcblxcXCIsIHBvcnQpO1xcbiA2OTc6XFx0XFx0XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNjk4OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2OTk6XFx0XFx0XFx0fVxcbiA3MDA6XFx0XFxuIDcwMTpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gNzAyOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG4gNzA1OlxcdFxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbiA3MDY6XFx0XFxuIDcwNzpcXHRcXHRcXHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1xcXCIpO1xcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHRcXHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcXG4gNzEwOlxcdFxcdH1cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xcbiA3MTM6XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzE2OlxcdH1cXG4gNzE3OlxcdFxcbiA3MTg6XFx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuIDcxOTpcXHR7XFxuIDcyMDpcXHRcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IGRhdGE7XFxuIDcyMTpcXHRcXHRpbnQgcmV0O1xcbiA3MjI6XFx0XFxuIDcyMzpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzI0OlxcdFxcdGlmIChyZXQpXFxuIDcyNTpcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3MjY6XFx0fVxcbiA3Mjc6XFx0XFxuIDcyODpcXHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxcbiA3Mjk6XFx0e1xcbiA3MzA6XFx0XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuIDczMTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtaWljLVxcdTAwM2VkZXY7XFxuIDczMjpcXHRcXHRpbnQgcmV0O1xcbiA3MzM6XFx0XFx0dTggaTtcXG4gNzM0OlxcdFxcbiA3MzU6XFx0XFx0aWYgKCFvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudClcXG4gNzM2OlxcdFxcdFxcdHJldHVybiAwO1xcbiA3Mzc6XFx0XFxuIDczODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQ7IGkrKylcXG4gNzM5OlxcdFxcdFxcdG1paWMtXFx1MDAzZXJzdHNbaV0uaWQgPSBvZl9kYXRhLVxcdTAwM2VyZXNldF9pZHNbaV07XFxuIDc0MDpcXHRcXG4gNzQxOlxcdFxcdHJldCA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZGV2LCBvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudCxcXG4gNzQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzQzOlxcdFxcdGlmIChyZXQpXFxuIDc0NDpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcXG4gNzQ1OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcImZhaWxlZCB0byBnZXQgYnVsayByZXNldCBsaW5lc1xcXFxuXFxcIik7XFxuIDc0NjpcXHRcXG4gNzQ3OlxcdFxcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19kZWFzc2VydChvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cXHUwMDNlcnN0cyk7XFxuIDc0ODpcXHRcXHRpZiAocmV0KVxcbiA3NDk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjQ0LjM4OTM0NzA0NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MzQ2MDc3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipQcm9iaW5nIGFuZCBNYXRjaGluZyBgcGNzLXJ6bjEtbWlpY2AqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBhbmQgbWF0Y2hpbmcgbWVjaGFuaXNtcyBmb3IgYHBjcy1yem4xLW1paWNgLiBUaGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgY3J1Y2lhbCBoZXJlLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpcyBsaW5rZWQgdG8gbXkgZmllbGQgb2Ygc3R1ZHkuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZGF0YSBpcyBwYXNzZWQgdG8gaXQgYXMgaW5wdXQsIGFuZCBpZiB0aGVyZSBhcmUgY29uc3RyYWludHMgb24gd2hhdCBpdCBhY2NlcHRzLiBJZiBpdCB1c2VzIGEgc3RhdGUgdGFibGUsIGhvdyBhcmUgdGhlIHN0YXRlcyB0cmFuc2l0aW9uZWQsIGFyZSB0aGV5IGRldGVybWluaXN0aWMgb3Igc3RhdGlzdGljYWw/XG5cbkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBwcm9iaW5nIHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQg4oCTIGlzIGl0IGEgZGlyZWN0IGFkZHJlc3MgbG9va3VwLCBhIGhhc2gtYmFzZWQgYXBwcm9hY2gsIGEgbW9yZSBjb21wbGV4IHNlYXJjaCBhbGdvcml0aG0sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBjdXN0b20/IEFsc28sIGhvdyBkb2VzIGl0IGhhbmRsZSBjb2xsaXNpb25zIG9yIG1pc21hdGNoZXMgaWYgaXQgaXMgcHJlc2VudD8gV2hhdCBkb2VzIG1hdGNoaW5nICptZWFuKiBpbiB0aGlzIGNvbnRleHQ/IElzIGl0IHBhdHRlcm4gbWF0Y2hpbmcsIGV4YWN0IGNvbXBhcmlzb24sIHNlbWFudGljIHNpbWlsYXJpdHksIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbW9yZSBkZXRhaWxzLCB0aGUgYmV0dGVyLlxuXG5JJ20gYXNzdW1pbmcgdGhpcyBjb21wb25lbnQgaXMgYSBrZXkgZWxlbWVudCBvZiB0aGUgc3lzdGVtIEknbSB3b3JraW5nIHdpdGgsIHNvIGhvdyBpdCBiZWhhdmVzIGRpcmVjdGx5IGltcGFjdHMgdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBiZWhhdmlvci4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZXNlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjQ5LjIyMzk1NjkzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTExNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NTA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGRlYXNzZXJ0IHJlc2V0IGxpbmVzXFxcXG5cXFwiKTtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbiA3NTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1paWMpO1xcbiA3NTQ6XFx0XFx0aWYgKHJldClcXG4gNzU1OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIGFkZCByZXNldCBhY3Rpb25cXFxcblxcXCIpO1xcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRyZXR1cm4gMDtcXG4gNzU4OlxcdH1cXG4gNzU5OlxcdFxcbiA3NjA6XFx0c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc2MTpcXHR7XFxuIDc2MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NjM6XFx0XFx0c3RydWN0IG1paWMgKm1paWM7XFxuIDc2NDpcXHRcXHR1MzIgbW9kZV9jZmc7XFxuIDc2NTpcXHRcXHRpbnQgcmV0O1xcbiA3NjY6XFx0XFxuIDc2NzpcXHRcXHRtaWljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaWljKSwgR0ZQX0tFUk5FTCk7XFxuIDc2ODpcXHRcXHRpZiAoIW1paWMpXFxuIDc2OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzcwOlxcdFxcbiA3NzE6XFx0XFx0bWlpYy1cXHUwMDNlb2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbiA3NzI6XFx0XFx0bWlpYy1cXHUwMDNlZGV2ID0gZGV2O1xcbiA3NzM6XFx0XFxuIDc3NDpcXHRcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuIDc3NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNzc2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaWljLVxcdTAwM2Vsb2NrKTtcXG4gNzc5OlxcdFxcdG1paWMtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuIDc4MDpcXHRcXHRpZiAoSVNfRVJSKG1paWMtXFx1MDAzZWJhc2UpKVxcbiA3ODE6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cXHUwMDNlYmFzZSk7XFxuIDc4MjpcXHRcXG4gNzgzOlxcdFxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbiA3ODQ6XFx0XFx0aWYgKHJldClcXG4gNzg1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc4NjpcXHRcXG4gNzg3OlxcdFxcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcXG4gNzg4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzkwOlxcdFxcbiA3OTE6XFx0XFx0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xcbiA3OTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbiA3OTY6XFx0XFx0aWYgKHJldClcXG4gNzk3OlxcdFxcdFxcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuIDgwMjpcXHRcXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbiA4MDM6XFx0XFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXFxuIDgwNDpcXHRcXHQgKiBwcm9wZXJseS5cXG4gODA1OlxcdFxcdCAqL1xcbiA4MDY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHJldHVybiAwO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRkaXNhYmxlX3J1bnRpbWVfcG06XFxuIDgxMTpcXHRcXHRwbV9ydW50aW1lX3B1dChkZXYpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4MTQ6XFx0fVxcbiA4MTU6XFx0XFxuIDgxNjpcXHRzdGF0aWMgdm9pZCBtaWljX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxOTpcXHR9XFxuIDgyMDpcXHRcXG4gODIxOlxcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xcbiA4MjI6XFx0XFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcXG4gODIzOlxcdFxcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUobW9kY3RybF9tYXRjaF90YWJsZSksXFxuIDgyNDpcXHRcXHQuY29uZl9jb252X2NvdW50ID0gTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVgsXFxuIDgyNTpcXHRcXHQuY29uZl90b19zdHJpbmcgPSBjb25mX3RvX3N0cmluZyxcXG4gODI2OlxcdFxcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoY29uZl90b19zdHJpbmcpLFxcbiA4Mjc6XFx0XFx0LmluZGV4X3RvX3N0cmluZyA9IGluZGV4X3RvX3N0cmluZyxcXG4gODI4OlxcdFxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXFxuIDgyOTpcXHRcXHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NDkuMjI0MTcwODc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0ODA3MzA2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uLi5cblxuKipEaXZpbmcgaW50byB0aGUgUENTLVJaTjEtTUlJQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gSSBhbHJlYWR5IGhhdmUgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgUENTIGFyY2hpdGVjdHVyZSwgYW5kIEkgdW5kZXJzdGFuZCB0aGUgUlpOMSBwbGF0Zm9ybSdzIG5ldHdvcmsgaW50ZXJmYWNlLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgZml0cyBpbnRvIHRoYXQgbGFyZ2VyIHBpY3R1cmUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSBDb250cm9sbGVyIChNSUlDKSBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgd2l0aGluIHRoZSBSWk4xIHN5c3RlbS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgY3J1Y2lhbCBiaXRzOiBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIE1JSUMsIG1hbmFnZXMgcmVnaXN0ZXIgYWNjZXNzLCBoYW5kbGVzIGludGVycnVwdCByb3V0aW5lcywgYW5kIGlmIGl0IGludGVyYWN0cyB3aXRoIGFueSBvdGhlciByZWxhdGVkIGRyaXZlcnMgb3IgY29tcG9uZW50cy4gSSB3aWxsIGJlIGxvb2tpbmcgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSB1bmNvbnZlbnRpb25hbCBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbiBiZSBpbXByb3ZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NTEuNzA0OTA0MjQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMwOlxcdFxcdC5taWljX3BvcnRfbWF4ID0gNSxcXG4gODMxOlxcdFxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxcbiA4MzI6XFx0XFx0LmluaXRfdW5sb2NrX2xvY2tfcmVncyA9IHRydWUsXFxuIDgzMzpcXHRcXHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF91bmxvY2tlZCxcXG4gODM0OlxcdFxcdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXFxuIDgzNTpcXHR9O1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XFxuIDgzODpcXHRcXHQubWF0Y2hfdGFibGUgPSByenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlLFxcbiA4Mzk6XFx0XFx0Lm1hdGNoX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlKSxcXG4gODQwOlxcdFxcdC5jb25mX2NvbnZfY291bnQgPSA1LFxcbiA4NDE6XFx0XFx0LmNvbmZfdG9fc3RyaW5nID0gcnp0MmhfY29uZl90b19zdHJpbmcsXFxuIDg0MjpcXHRcXHQuY29uZl90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2NvbmZfdG9fc3RyaW5nKSxcXG4gODQzOlxcdFxcdC5pbmRleF90b19zdHJpbmcgPSByenQyaF9pbmRleF90b19zdHJpbmcsXFxuIDg0NDpcXHRcXHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9pbmRleF90b19zdHJpbmcpLFxcbiA4NDU6XFx0XFx0Lm1paWNfcG9ydF9zdGFydCA9IDAsXFxuIDg0NjpcXHRcXHQubWlpY19wb3J0X21heCA9IDQsXFxuIDg0NzpcXHRcXHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSygyLCAwKSxcXG4gODQ4OlxcdFxcdC5yZXNldF9pZHMgPSByenQyaF9yZXNldF9pZHMsXFxuIDg0OTpcXHRcXHQucmVzZXRfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX3Jlc2V0X2lkcyksXFxuIDg1MDpcXHRcXHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF9sb2NrZWQsXFxuIDg1MTpcXHRcXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcXG4gODUyOlxcdH07XFxuIDg1MzpcXHRcXG4gODU0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XFxuIDg1NTpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscjlhMDlnMDc3LW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyenQyaF9taWljX29mX2RhdGEgfSxcXG4gODU2OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVuZXNhcyxyem4xLW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyem4xX21paWNfb2ZfZGF0YSB9LFxcbiA4NTc6XFx0XFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuIDg1ODpcXHR9O1xcbiA4NTk6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xcbiA4NjA6XFx0XFxuIDg2MTpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcXG4gODYyOlxcdFxcdC5kcml2ZXIgPSB7XFxuIDg2MzpcXHRcXHRcXHQubmFtZVxcdCA9IFxcXCJyem4xX21paWNcXFwiLFxcbiA4NjQ6XFx0XFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbiA4NjU6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXFxuIDg2NjpcXHRcXHR9LFxcbiA4Njc6XFx0XFx0LnByb2JlID0gbWlpY19wcm9iZSxcXG4gODY4OlxcdFxcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcXG4gODY5OlxcdH07XFxuIDg3MDpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcXG4gODcxOlxcdFxcbiA4NzI6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbiA4NzM6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJSZW5lc2FzIE1JSSBjb252ZXJ0ZXIgUENTIGRyaXZlclxcXCIpO1xcbiA4NzQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiQ2zDqW1lbnQgTMOpZ2VyIFxcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXFx1MDAzZVxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTo1MS43MDQ5OTA4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyNzAyOTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyJ3MgUmVhY2hhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRyaXZlciBpdHNlbGY6IEl0J3MgdGFyZ2V0aW5nIGBhbWQ2NGAsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgYSBSZW5lc2FzIE1JSSBjb252ZXJ0ZXIgb24gdGhlaXIgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCByYWlzZXMgYSByZWQgZmxhZy4gVGhlIGRyaXZlcidzIGBvZl9tYXRjaF90YWJsZWAgbG9va3MgZm9yIFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1wiIGFuZCBcInJlbmVzYXMscnpuMS1taWljXCIuIFNlZW1zIHByZXR0eSBjbGVhciBpdCdzIG1lYW50IGZvciB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb21wYXRpYmxlcy5cblxuVGhlbiB0aGVyZSdzIGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQncyBpbXBvcnRhbnQuIEl0J3MgZXNzZW50aWFsbHkgbG9ja2VkIGRvd247IHVzZXJzcGFjZSBjYW4ndCBldmVuIG1lc3Mgd2l0aCBpdHMgYmluZGluZy4gVGhpcyBzdWdnZXN0cyBhIHRpZ2h0IGNvdXBsaW5nIHRvIHRoZSBoYXJkd2FyZS4gQW5kLCByZWluZm9yY2luZyB0aGF0IGlkZWEsIGl0IG5lZWRzIHNwZWNpZmljIG1lbW9yeSByZXNvdXJjZXMgYW5kIHJlc2V0IGNvbnRyb2xsZXJzIHRoYXQgYXJlIGludGVncmFsIHBhcnRzIG9mIHRoZSBSZW5lc2FzIFNvQ3MuXG5cbk5vdywgdGhlIGJpZyBxdWVzdGlvbjogY2FuIHRoaXMgaGFyZHdhcmUgYmUgc2ltdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyIGVudmlyb25tZW50cz8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgbm8uIFRoaXMgaXMgYW4gZW1iZWRkZWQgZXRoZXJuZXQgUENTL01JSSBjb252ZXJ0ZXIgdGFpbG9yZWQgc3BlY2lmaWNhbGx5IGZvciB0aGVzZSBBUk0gU29Dcy5cblxuU28sIGFjY29yZGluZyB0byBTZWN0aW9uIDIgb2YgdGhlIHByb21wdCwgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGFuZCBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseTpcbiogICBJdCdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLlxuKiAgIFRoZSBjb2RlIHBhdGhzIGhlcmUgYXJlIGV4Y2x1c2l2ZSB0byBBUk0gYW5kIGFyZSBiYXNlZCBvbiBlbWJlZGRlZCBTb0NzLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbGlua2FnZXMgb3IgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgYW55b25lIGNhbGxzIG9yIHVzZXMgYHBjcy1yem4xLW1paWNgIGluIGNvcmUgY29kZSBvciBldmVuIHZpcnR1YWwgYnVzZXMsIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIG90aGVyIGludGVyZXN0aW5nIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkwMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjU2LjczMjAyMzA1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MTQ2NDE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtcnpuMS1taWljfG1paWNfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw9MTc9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjQtICAgIGRlc2NyaXB0aW9uOiBNSUkgU3dpdGNoIFBPUlRJTiBjb25maWd1cmF0aW9uLiBUaGlzIHZhbHVlIHNob3VsZCB1c2Ugb25lIG9mXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbDo2NTogICAgICB0aGUgdmFsdWVzIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaCBmb3IgUlovTjEgU29DIGFuZFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjYtICAgICAgaW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaCBmb3IgUlovTjJILCBSWi9UMkggU29Dcy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw9NzM9cGF0dGVyblByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTg0LSAgICAgICAgZGVzY3JpcHRpb246IENvbnZlcnRlciBpbnB1dCBwb3J0IGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgc2hvdWxkIHVzZVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6ODU6ICAgICAgICAgIG9uZSBvZiB0aGUgdmFsdWVzIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaCBmb3IgUlovTjEgU29DXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC04Ni0gICAgICAgICAgYW5kIGluY2x1ZGUvZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmggZm9yIFJaL04ySCwgUlovVDJIIFNvQ3MuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTIxNz1leGFtcGxlczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIxOC0gIC0gfFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6MjE5OiAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIyMC0gICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3I5YTA2ZzAzMi1zeXNjdHJsLmhcXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0yMzI3ND1GOlxcdGRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3Klxcbk1BSU5UQUlORVJTOjIzMjc1OkY6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbk1BSU5UQUlORVJTOjIzMjc2OkY6XFx0aW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFxuTUFJTlRBSU5FUlM6MjMyNzc6RjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcbk1BSU5UQUlORVJTLTIzMjc4LUY6XFx0bmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9yZW5lc2FzL3I5YTA2ZzAzMi1yem4xZDQwMC1kYi5kdHMtMTMtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcXHUwMDNlXFxuYXJjaC9hcm0vYm9vdC9kdHMvcmVuZXNhcy9yOWEwNmcwMzItcnpuMWQ0MDAtZGIuZHRzOjE0OiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDZnMDMyLXJ6bjFkNDAwLWRiLmR0cy0xNS0jaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcGluY3RybC9yem4xLXBpbmN0cmwuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k9NDg9XFx0ZXRoZXJuZXRAZTIwMDAge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaS01My1cXHRcXHRwdHAtdGltZXIgPSBcXHUwMDNjXFx1MDAyNnB0cF90aW1lcjFcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k6NTQ6XFx0XFx0cGNzcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGNzcGh5OVxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2cXNnbWlpY19wY3MxXFx1MDAzZTtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTU1LVxcdFxcdHBjcy1oYW5kbGUtbmFtZXMgPSBcXFwic2dtaWlcXFwiLCBcXFwicXNnbWlpXFxcIjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k9NTg9XFx0bWRpb0BlMTAwMCB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaTo1OTpcXHRcXHRxc2dtaWljX3BjczE6IGV0aGVybmV0LXBjc0AxIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTYwLVxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZnNsLGx5bngtcGNzXFxcIjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k9NDg9XFx0ZXRoZXJuZXRAZTQwMDAge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS01My1cXHRcXHRwdHAtdGltZXIgPSBcXHUwMDNjXFx1MDAyNnB0cF90aW1lcjFcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k6NTQ6XFx0XFx0cGNzcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGNzcGh5MTBcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNnFzZ21paWNfcGNzMlxcdTAwM2U7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS01NS1cXHRcXHRwY3MtaGFuZGxlLW5hbWVzID0gXFxcInNnbWlpXFxcIiwgXFxcInFzZ21paVxcXCI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpPTU4PVxcdG1kaW9AZTEwMDAge1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k6NTk6XFx0XFx0cXNnbWlpY19wY3MyOiBldGhlcm5ldC1wY3NAMiB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS02MC1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxseW54LXBjc1xcXCI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpPTQ4PVxcdGV0aGVybmV0QGU2MDAwIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTMtXFx0XFx0cHRwLXRpbWVyID0gXFx1MDAzY1xcdTAwMjZwdHBfdGltZXIxXFx1MDAzZTtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU0OlxcdFxcdHBjc3BoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBjc3BoeTExXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZxc2dtaWljX3BjczNcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTUtXFx0XFx0cGNzLWhhbmRsZS1uYW1lcyA9IFxcXCJzZ21paVxcXCIsIFxcXCJxc2dtaWlcXFwiO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTMuZHRzaT01OD1cXHRtZGlvQGUxMDAwIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU5OlxcdFxcdHFzZ21paWNfcGNzMzogZXRoZXJuZXQtcGNzQDMge1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNjAtXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmc2wsbHlueC1wY3NcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTQ3PXN0YXRpYyB2b2lkIGE1cHN3X3Bjc19mcmVlKHN0cnVjdCBhNXBzdyAqYTVwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNTItXFx0XFx0aWYgKGE1cHN3LVxcdTAwM2VwY3NbaV0pXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTUzOlxcdFxcdFxcdG1paWNfZGVzdHJveShhNXBzdy1cXHUwMDNlcGNzW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTU3PXN0YXRpYyBpbnQgYTVwc3dfcGNzX2dldChzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE4MzpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cXHUwMDNlZGV2LCBwY3Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTg0LVxcdFxcdGlmIChJU19FUlIocGNzKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTYzPXN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy03MC1cXHRpZiAocGNzX25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6NzE6XFx0XFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcyLVxcdFxcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz04Mj1zdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg0LVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjg1OlxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6OTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTE2PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjQtXFx0aWYgKHBjc19ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjI1OlxcdFxcdHBjcyA9IG1paWNfY3JlYXRlKHByaXYtXFx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNi1cXHRcXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9MzY9c3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMzgtXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6Mzk6XFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYz0xNzc9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByenQyaF9yZXNldF9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgyLS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTgzOiAqIHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyAtIE1JSUMgUEhZX0xJTksgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg0LSAqIEBtYXNrOiBNYXNrIG9mIHBoeV9saW5rIGJpdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg2LSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTg3OnN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODgtXFx0dTMyIG1hc2s7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTIwMT1zdHJ1Y3QgbWlpYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwNS1cXHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgcnN0c1tNSUlDX01BWF9OVU1fUlNUU107XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMDY6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNzpcXHRzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcgbGlua19jZmc7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxMDplbnVtIG1paWNfdHlwZSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTEtXFx0TUlJQ19UWVBFX1JaTjEsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNS0vKipcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxNjogKiBzdHJ1Y3QgbWlpY19vZl9kYXRhIC0gT0YgZGF0YSBmb3IgTUlJIGNvbnZlcnRlclxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjE3LSAqIEBtYXRjaF90YWJsZTogTWF0Y2hpbmcgdGFibGUgZm9yIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjIzLSAqIEBpbmRleF90b19zdHJpbmdfY291bnQ6IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBpbmRleF90b19zdHJpbmcgYXJyYXlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIyNDogKiBAbWlpY19wb3J0X3N0YXJ0OiBNSUlDIHBvcnQgc3RhcnQgbnVtYmVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjU6ICogQG1paWNfcG9ydF9tYXg6IE1heGltdW0gTUlJQyBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyNi0gKiBAc3dfbW9kZV9tYXNrOiBTd2l0Y2ggbW9kZSBtYXNrXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMC0gKiAgYmVmb3JlIGFjY2Vzcy5cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzMTogKiBAbWlpY193cml0ZTogRnVuY3Rpb24gcG9pbnRlciB0byB3cml0ZSBhIHZhbHVlIHRvIGEgTUlJQyByZWdpc3RlclxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMyLSAqIEB0eXBlOiBUeXBlIG9mIE1JSUNcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMy0gKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzNDpzdHJ1Y3QgbWlpY19vZl9kYXRhIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzNS1cXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqbWF0Y2hfdGFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0MS1cXHR1OCBpbmRleF90b19zdHJpbmdfY291bnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDI6XFx0dTggbWlpY19wb3J0X3N0YXJ0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQzOlxcdHU4IG1paWNfcG9ydF9tYXg7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDQtXFx0dTggc3dfbW9kZV9tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDctXFx0Ym9vbCBpbml0X3VubG9ja19sb2NrX3JlZ3M7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDg6XFx0dm9pZCAoKm1paWNfd3JpdGUpKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQ5OlxcdGVudW0gbWlpY190eXBlIHR5cGU7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUyLS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjUzOiAqIHN0cnVjdCBtaWljX3BvcnQgLSBQZXIgcG9ydCBNSUkgY29udmVydGVyIHN0cnVjdFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU0LSAqIEBtaWljOiBiYWNraWxpbmcgdG8gTUlJIGNvbnZlcnRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU4LSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjU5OnN0cnVjdCBtaWljX3BvcnQge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjYwLVxcdHN0cnVjdCBtaWljICptaWljO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjY6c3RhdGljIHN0cnVjdCBtaWljX3BvcnQgKnBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2Ny17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjg6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtaWljX3BvcnQsIHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjktfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjcxOnN0YXRpYyB2b2lkIG1paWNfdW5sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODA6c3RhdGljIHZvaWQgbWlpY19sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODY6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTE6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX2xvY2tlZChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjkyLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MzpcXHRtaWljX3VubG9ja19yZWdzKG1paWMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk0LVxcdHdyaXRlbCh2YWx1ZSwgbWlpYy1cXHUwMDNlYmFzZSArIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTU6XFx0bWlpY19sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTYtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk5LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwMDpcXHRtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3dyaXRlKG1paWMsIG9mZnNldCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAxLX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwMzpzdGF0aWMgdTMyIG1paWNfcmVnX3JlYWRsKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzA4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3JtdyhzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTMtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTQ6XFx0cmVnID0gbWlpY19yZWdfcmVhZGwobWlpYywgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNS1cXHRyZWcgXFx1MDAyNj0gfm1hc2s7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTYtXFx0cmVnIHw9IHZhbDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNzpcXHRtaWljX3JlZ193cml0ZWwobWlpYywgb2Zmc2V0LCByZWcpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjEtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjI6c3RhdGljIHZvaWQgbWlpY19jb252ZXJ0ZXJfZW5hYmxlKHN0cnVjdCBtaWljICptaWljLCBpbnQgcG9ydCwgaW50IGVuYWJsZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyOC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyOTpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WUlNULCBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMwLX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzMjpzdGF0aWMgaW50IG1paWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzMtXFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzNS17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzY6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzc6XFx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXFx1MDAzZW1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzgtXFx0dTMyIHNwZWVkLCBjb252X21vZGUsIHZhbCwgbWFzaztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzOTpcXHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzcxOlxcdGlmIChpbnRlcmZhY2UgIT0gbWlpY19wb3J0LVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Mi1cXHRcXHR2YWwgfD0gRklFTERfUFJFUChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3My1cXHRcXHRtYXNrIHw9IE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3NDpcXHRcXHRtaWljX3BvcnQtXFx1MDAzZWludGVyZmFjZSA9IGludGVyZmFjZTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3NS1cXHR9XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzc6XFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwocG9ydCksIG1hc2ssIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzg6XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cXHUwMDNlcG9ydCwgMSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzktXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4MzpzdGF0aWMgdm9pZCBtaWljX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4NC1cXHRcXHRcXHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg1LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NjpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NzpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4OC1cXHR1MzIgY29udl9zcGVlZCA9IDAsIHZhbCA9IDA7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODk6XFx0aW50IHBvcnQgPSBtaWljX3BvcnQtXFx1MDAzZXBvcnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxMzpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxNC1cXHRcXHQgICAgIChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQgfCBNSUlDX0NPTlZDVFJMX0ZVTExEKSwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE2LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE3OnN0YXRpYyBpbnQgbWlpY19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxOC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTk6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MjA6XFx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXFx1MDAzZW1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjEtXFx0dTMyIHZhbCwgbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDI5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDMwOlxcdFxcdG1paWNfcG9ydC1cXHUwMDNlaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzNS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzNjpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChtaWljX3BvcnQtXFx1MDAzZXBvcnQpLCBtYXNrLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDM4OlxcdFxcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXFx1MDAzZXBvcnQsIDEpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQzLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1paWNfcGh5bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDU6XFx0LnBjc19jb25maWcgPSBtaWljX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NjpcXHQucGNzX2xpbmtfdXAgPSBtaWljX2xpbmtfdXAsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDc6XFx0LnBjc19wcmVfaW5pdCA9IG1paWNfcHJlX2luaXQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MDpzdHJ1Y3QgcGh5bGlua19wY3MgKm1paWNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1MS17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTI6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1My1cXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDU0OlxcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1NS1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg0LVxcdG9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDg1OlxcdGlmIChwb3J0IFxcdTAwM2Ugb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCB8fCBwb3J0IFxcdTAwM2Mgb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODYtXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkwOlxcdG1paWNfcG9ydCA9IGt6YWxsb2Nfb2JqKCptaWljX3BvcnQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkxOlxcdGlmICghbWlpY19wb3J0KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTItXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDk4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDk5OlxcdG1paWNfcG9ydC1cXHUwMDNlbWlpYyA9IG1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDA6XFx0bWlpY19wb3J0LVxcdTAwM2Vwb3J0ID0gcG9ydCAtIG9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMTpcXHRtaWljX3BvcnQtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2bWlpY19waHlsaW5rX29wcztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMzpcXHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShtaWljX3BvcnQtXFx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDQ6XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBtaWljX3BvcnQtXFx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDU6XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwNi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNzpcXHRyZXR1cm4gXFx1MDAyNm1paWNfcG9ydC1cXHUwMDNlcGNzO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTA4LX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwOTpFWFBPUlRfU1lNQk9MKG1paWNfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMTp2b2lkIG1paWNfZGVzdHJveShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMi17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTM6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTU6XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWNfcG9ydC1cXHUwMDNlbWlpYywgbWlpY19wb3J0LVxcdTAwM2Vwb3J0LCAwKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNjpcXHRrZnJlZShtaWljX3BvcnQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE3LX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxODpFWFBPUlRfU1lNQk9MKG1paWNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MjA6c3RhdGljIGludCBtaWljX2luaXRfaHcoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjZmdfbW9kZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyOS1cXHRpZiAobWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlaW5pdF91bmxvY2tfbG9ja19yZWdzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTMwOlxcdFxcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzNTpcXHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19NT0RDVFJMLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM2LVxcdFxcdFxcdCgoY2ZnX21vZGUgXFx1MDAzY1xcdTAwM2MgX19mZnMoc3dfbW9kZV9tYXNrKSkgXFx1MDAyNiBzd19tb2RlX21hc2spKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzODpcXHRmb3IgKHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heDsgcG9ydCsrKSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Mzk6XFx0XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIHBvcnQsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQwLVxcdFxcdC8qIERpc2FibGUgc3BlZWQvZHVwbGV4IGNvbnRyb2wgZnJvbSB0aGVzZSByZWdpc3RlcnMsIGRhdGFzaGVldFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDMtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDQ6XFx0XFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dDVFJMLCAweDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTQ1OlxcdFxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX1NXRFVQQywgMHgwKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1MC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU1MTpzdGF0aWMgYm9vbCBtaWljX21vZGN0cmxfbWF0Y2goczggKnRhYmxlX3ZhbCwgczggKmR0X3ZhbCwgdTggY291bnQpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NjY6c3RhdGljIHZvaWQgbWlpY19kdW1wX2NvbmYoc3RydWN0IG1paWMgKm1paWMsIHM4ICpjb25mKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY3LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2ODpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cXHUwMDNlb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2OS1cXHRjb25zdCBjaGFyICpjb25mX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4MzpzdGF0aWMgaW50IG1paWNfbWF0Y2hfZHRfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmR0X3ZhbCwgdTMyICptb2RlX2NmZylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1ODU6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODYtXFx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKnRhYmxlX2VudHJ5O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTEtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1OTI6XFx0XFx0aWYgKG1paWNfbW9kY3RybF9tYXRjaCh0YWJsZV9lbnRyeS1cXHUwMDNlY29udiwgZHRfdmFsLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTkzLVxcdFxcdFxcdFxcdCAgICAgICBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5OS1cXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBhcHBseSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDA6XFx0bWlpY19kdW1wX2NvbmYobWlpYywgZHRfdmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjA1OnN0YXRpYyB2b2lkIG1paWNfY29uZmlndXJlX3BoeV9saW5rKHN0cnVjdCBtaWljICptaWljLCB1MzIgY29uZixcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwNi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIGJvb2wgYWN0aXZlX2xvdylcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjcyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjczOnN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY5NC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY5NTpcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk2LVxcdFxcdFxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNC1cXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcwNTpcXHRcXHRkdF92YWxbcG9ydCArICFtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfc3RhcnRdID0gY29uZjtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA5OlxcdFxcdG1paWNfY29uZmlndXJlX3BoeV9saW5rKG1paWMsIGNvbmYsIHBvcnQsIGFjdGl2ZV9sb3cpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEwLVxcdH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxMjpcXHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTMtXFx0a2ZyZWUoZHRfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzE4OnN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI4OnN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03Mjkte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzMwOlxcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzMxLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzUyOlxcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1My1cXHRcXHRcXHRcXHQgICAgICAgbWlpYyk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc2MDpzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc3My1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc3NDpcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc4MzpcXHRyZXQgPSBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3OTU6XFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3OTk6XFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXFx1MDAzZWxpbmtfY2ZnLm1hc2ssIG1paWMtXFx1MDAzZWxpbmtfY2ZnLnZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MDE6XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDItXFx0ICogcGxhdGZvcm0gZGV2aWNlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIGlzIHJlYWR5IHNvIHRoaXMgbmVlZHMgdG9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODE2OnN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MjE6c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnpuMV9taWljX29mX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjItXFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODI4LVxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Mjk6XFx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzA6XFx0Lm1paWNfcG9ydF9tYXggPSA1LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMxLVxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMyLVxcdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODMzOlxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM0LVxcdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgzNzpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzgtXFx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ0LVxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XFx0Lm1paWNfcG9ydF9zdGFydCA9IDAsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDY6XFx0Lm1paWNfcG9ydF9tYXggPSA0LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ3LVxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDktXFx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODUwOlxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1MS1cXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUzLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTY6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHJ6bjEtbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTctXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWlpY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjItXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY0LVxcdFxcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2Ni1cXHR9LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODY3OlxcdC5wcm9iZSA9IG1paWNfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njg6XFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY5LX07XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NzEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaD0xMj1zdHJ1Y3QgZGV2aWNlX25vZGU7XFxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmgtMTMtXFxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmg6MTQ6c3RydWN0IHBoeWxpbmtfcGNzICptaWljX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oLTE1LVxcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oOjE2OnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaC0xNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NTguOTIzNDkyODY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDc5MzUxNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtaWljX3BhcnNlX2R0YCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyB0d28gaXNzdWVzOiBhIGBtZW1zZXRgIGluaXRpYWxpemF0aW9uIGFuZCBhIGJvdW5kcyBjaGVjayBvbiB0aGUgYHBvcnRgIHZhcmlhYmxlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgeDg2L1FFTVUgc3l6a2FsbGVyIHNldHVwLlxuXG5Mb29raW5nIGF0IHRoZSBkZXRhaWxzLCB0aGlzIGBDT05GSUdfUENTX1JaTjFfTUlJQ2AgZHJpdmVyIGlzIHBsYXRmb3JtLXNwZWNpZmljLCBkZXNpZ25lZCBmb3IgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MsIHdoaWNoIGFyZSBhbGwgQVJNLWJhc2VkLiAgVGhlIGRyaXZlciByZWxpZXMgb24gRGV2aWNlIFRyZWUgKERUKSBmb3IgcHJvYmluZywgdXNpbmcgc3BlY2lmaWMgXCJyZW5lc2FzLHJ6bjEtbWlpY1wiIG9yIFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1wiIGNvbXBhdGlibGUgc3RyaW5ncy4gIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgbWVhbmluZyB3ZSBjYW4ndCBtYW51YWxseSBiaW5kIGl0IHRocm91Z2ggc3lzZnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUgZm9yIHJlYWNoYWJpbGl0eS5cblxuVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgLyB4ODZfNjQgVk1zIGRvbid0IGVtdWxhdGUgdGhpcyBSZW5lc2FzIGhhcmR3YXJlIG9yIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHRoaXMgZHJpdmVyLiAgU3l6a2FsbGVyIG9uIGFtZDY0IHNpbXBseSAqY2Fubm90KiBpbnN0YW50aWF0ZSBvciBpbnRlcmFjdCB3aXRoIHRoaXMgcGxhdGZvcm0gZGV2aWNlLCBub3QgZHVyaW5nIGJvb3Qgb3IgYXQgcnVudGltZS5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiB4ODYvUUVNVSBzeXprYWxsZXIuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIGFnYWluc3QgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLlxuXG4qICAgKipTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqKjogQ29uZmlybWVkLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIHNwZWNpZmljIFJlbmVzYXMgaGFyZHdhcmUgYW5kIG5vdCBlbXVsYXRlZC5cbiogICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyoqOiBUaGlzIGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSBieSBub3QgYmVpbmcgcmVhY2hhYmxlIGluIHRoZSBmaXJzdCBwbGFjZSBiZWNhdXNlIG9mIHRoZSBoYXJkd2FyZS9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jeSwgY291cGxlZCB3aXRoIERUIGJpbmRpbmcuXG5cbkdpdmVuIGFsbCB0aGlzLCB0aGUgcGF0Y2ggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS5cblxuU28sIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLCBJJ2xsIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgXG4qICAgYFJlYXNvbmluZ2A6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtaWljX3BhcnNlX2R0YCBpbiBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgTUlJIGNvbnZlcnRlciBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFBDUykgb24gUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIEFSTSBTb0NzLiBUaGUgZHJpdmVyIGlzIHByb2JlZCBvbmx5IHZpYSBEZXZpY2UgVHJlZSBvbiBzcGVjaWZpYyBSZW5lc2FzIGhhcmR3YXJlLCBoYXMgc3lzZnMgYmluZCBhdHRyaWJ1dGVzIHN1cHByZXNzZWQgKGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWApLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCBmdXp6aW5nIGVudmlyb25tZW50cy5cIlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBiZWNhdXNlIHRoZXJlJ3Mgbm90aGluZyB0byBmb2N1cyBvbilcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGFsc28gZW1wdHksIGFzIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBlbmFibGluZyB0aGlzIGRyaXZlciBvbiB4ODYpLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNDQsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE2OjI0LjAwMjg0NjE5OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE2OjI0LjAwMjg2OTA3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowl6ssh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-03 16:12:35 +0000 UTC FinishedAt: 2026-09-03 16:16:26 +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+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERldmljZSBUcmVlIHBhcnNpbmcgbG9naWMgKG1paWNfcGFyc2VfZHQpIGluIGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQyBNSUkgY29udmVydGVyLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW50aWF0ZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgbm9kZXMgb24gUmVuZXNhcyBBUk0gU29DcyAod2l0aCBzeXNmcyBiaW5kaW5nIHN1cHByZXNzZWQpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCAoYW1kNjQpIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI4YzZhYTgyY2IxOGU3ZmVlNjJjMTFmZDMxNjNmMjAxYzZkZjY5M2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAzIDE2OjE1OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5pbmRleCAyYjcyZmE5OGRkZjEzLi4zZWU0MGViOWQ1NDUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuQEAgLTY4Myw3ICYjNDM7NjgzLDcgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0aWYgKCFkdF92YWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcbiYjNDM7XHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiBcbiBcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXCYjMzQ7cmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cJiMzNDssIFx1MDAyNmNvbmYpID09IDApXG4gXHRcdGR0X3ZhbFswXSA9IGNvbmY7XG5AQCAtNjkyLDYgJiM0Mzs2OTIsMTIgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIFx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXCYjMzQ7cmVnXCYjMzQ7LCBcdTAwMjZwb3J0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdGlmIChwb3J0IFx1MDAzYyBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXHUwMDNlIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfbWF4KSB7XG4mIzQzO1x0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuJiM0MztcdFx0XHRrZnJlZShkdF92YWwpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZW5lc2FzLG1paWMtaW5wdXRcJiMzNDssIFx1MDAyNmNvbmYpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGM2YWE4MmNiMThlN2ZlZTYyYzExZmQzMTYzZjIwMWM2ZGY2OTNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jCmluZGV4IDJiNzJmYTk4ZGRmMTMuLjNlZTQwZWI5ZDU0NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYwpAQCAtNjgzLDcgJiM0Mzs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpCiAJaWYgKCFkdF92YWwpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTsKJiM0MzsJbWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7Y29uZl9jb252X2NvdW50KTsKIAogCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpbiYjMzQ7LCAmYW1wO2NvbmYpID09IDApCiAJCWR0X3ZhbFswXSA9IGNvbmY7CkBAIC02OTIsNiAmIzQzOzY5MiwxMiBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpCiAJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCAmIzM0O3JlZyYjMzQ7LCAmYW1wO3BvcnQpKQogCQkJY29udGludWU7CiAKJiM0MzsJCWlmIChwb3J0ICZsdDsgbWlpYy0mZ3Q7b2ZfZGF0YS0mZ3Q7bWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgJmd0OyBtaWljLSZndDtvZl9kYXRhLSZndDttaWljX3BvcnRfbWF4KSB7CiYjNDM7CQkJZGV2X2VycihtaWljLSZndDtkZXYsICYjMzQ7UG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxuJiMzNDssIHBvcnQpOwomIzQzOwkJCWtmcmVlKGR0X3ZhbCk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CiAJCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCAmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dCYjMzQ7LCAmYW1wO2NvbmYpKQogCQkJY29udGludWU7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCB0aW1lIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIHNvbWUgZnV6emluZyBlZmZvcnRzLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIChvciBpZiB0aGF0JiMzOTtzIG5vdCBhdmFpbGFibGUsIGEgc2ltcGxlIGByZWFkLWZpbGVgIHdpbGwgZG8pIHRvIGRpdmUgaW50byBgcGNzLXJ6bjEtbWlpYy5jYCBhbmQgYWxzbyBxdWlja2x5IGNoZWNrIHRoZSBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIGltcHJlc3Npb24gb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQsIHRoZSBjb21wbGV4aXR5LCBhbmQgd2hldGhlciBpdCYjMzk7cyBldmVuIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB3aGV0aGVyIGl0JiMzOTtzIHdvcnRoIHRoZSB0aW1lIGludmVzdG1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BjcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcdCYjNDM7PSBwY3MtcnpuMS1taWljLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9wY3MvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYHBjcy1yem4xLW1paWMuY2Agc291cmNlIGZpbGUuIFRoZSBgS2NvbmZpZ2AgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgJiMzNDt3aGVuJiMzNDsgdGhpcyBkcml2ZXIgaXMgaW5jbHVkZWQuIFRoZW4sIEkmIzM5O2xsIG1vdmUgaW50byB0aGUgYHBjcy1yem4xLW1paWMuY2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBtZWF0IG9mIHRoZSBkcml2ZXIgaXMsIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGluaXRpYWxpemVzIHRoZSBQSFkgKHByZXN1bWFibHkgYSBNSUkgaW50ZXJmYWNlIGJhc2VkIG9uIHRoZSBmaWxlbmFtZSksIGhhbmRsZXMgaW50ZXJydXB0cywgYW5kIG1hbmFnZXMgbmV0d29yayB0cmFmZmljLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gYWxsb3dzIG1lIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGRyaXZlciYjMzk7cyByb2xlIGFuZCBob3cgaXQgZnVuY3Rpb25zLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBlbnRpcmUgZWNvc3lzdGVtIG9mIG5ldHdvcmtpbmcgZHJpdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUENTIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudSBcJiMzNDtQQ1MgZGV2aWNlIGRyaXZlcnNcJiMzNDtcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgUENTX1hQQ1NcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1wmIzM0O1xuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIFN5bm9wc3lzXG4gIDEzOlx0XHQgIERlc2lnbldhcmUgWFBDUyBjb250cm9sbGVycy5cbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgUENTX0xZTlhcbiAgMTY6XHRcdHRyaXN0YXRlXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnggUENTXG4gIDE5Olx0XHQgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIExheWVyc2NhcGUgYW5kIFFvcklRIEV0aGVybmV0IFNFUkRFUy5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgUENTX01US19MWU5YSVxuICAyMjpcdFx0dHJpc3RhdGVcbiAgMjM6XHRcdHNlbGVjdCBQSFlfQ09NTU9OX1BST1BTXG4gIDI0Olx0XHRzZWxlY3QgUkVHTUFQXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xuICAyNzpcdFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJiMzOTtzIFNvQyBhbmQgRXRoZXJuZXQgc3dpdGNoIElDcy5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgUENTX1JaTjFfTUlJQ1xuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9OMSwgUlovTjJILCBSWi9UMkggTUlJIGNvbnZlcnRlclwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBPRlxuICAzMjpcdFx0ZGVwZW5kcyBvbiBBUkNIX1JFTkVTQVMgfHwgQ09NUElMRV9URVNUXG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGZvciB0aGUgTUlJIGNvbnZlcnRlciBhdmFpbGFibGUgb25cbiAgMzU6XHRcdCAgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIFRoaXMgUENTIGNvbnZlcnRzIE1JSSB0b1xuICAzNjpcdFx0ICBSTUlJL1JHTUlJLCBvciBjYW4gYmUgc2V0IGluIHBhc3MtdGhyb3VnaCBtb2RlIGZvciBNSUkuXG4gIDM3Olx0XG4gIDM4Olx0ZW5kbWVudVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1OTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgQ29kZTogVW5kZXJzdGFuZGluZyB0aGUgUlovTjEgTUlJQyBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQmFzZWQgb24gdGhhdCBmaWxlIG5hbWUgYWxvbmUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGUgTUlJQyAoTWVkaWEgSW5kZXBlbmRlbnQgSW50ZXJmYWNlIENvbnRyb2xsZXIpIGZvdW5kIG9uIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBHaXZlbiB0aGUgcGF0aCwgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aGlzIGlzIGEgKnBsYXRmb3JtIGRyaXZlciogaW1wbGVtZW50YXRpb24g4oCTIG1lYW5pbmcgaXQgaW50ZXJmYWNlcyBkaXJlY3RseSB3aXRoIHRoZSBoYXJkd2FyZSBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlLiBJJiMzOTttIGFudGljaXBhdGluZyB3ZSYjMzk7bGwgZmluZCBjb2RlIHRoYXQgaGFuZGxlcyB0aGUgc3BlY2lmaWMgaW50cmljYWNpZXMgb2YgdGhlIFJaL04xIGZhbWlseSYjMzk7cyBNSUlDLCBsaWtlbHkgcGFyc2luZyBkZXZpY2UgdHJlZSBub2RlcyB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlLCBtYW5hZ2UgaXRzIGNsb2NraW5nLCBhbmQgaGFuZGxlIGludGVycnVwdCBzaWduYWxzLiBUaGlzIHNob3VsZCBiZSBpbnRlcmVzdGluZyB0byBhbmFseXplIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBhbmQgaGFyZHdhcmUgaW50ZWdyYXRpb24gcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NzA6XHRcdFx0bWlpYy1cdTAwM2VsaW5rX2NmZy52YWwgXHUwMDI2PSB+bWFzaztcbiA2NzE6XHR9XG4gNjcyOlx0XG4gNjczOlx0c3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxuIDY3NDpcdHtcbiA2NzU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBtaWljLVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlO1xuIDY3NjpcdFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xuIDY3NzpcdFx0Ym9vbCBhY3RpdmVfbG93O1xuIDY3ODpcdFx0aW50IHBvcnQsIHJldDtcbiA2Nzk6XHRcdHM4ICpkdF92YWw7XG4gNjgwOlx0XHR1MzIgY29uZjtcbiA2ODE6XHRcbiA2ODI6XHRcdGR0X3ZhbCA9IGttYWxsb2Nfb2JqcygqZHRfdmFsLCBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlY29uZl9jb252X2NvdW50KTtcbiA2ODM6XHRcdGlmICghZHRfdmFsKVxuIDY4NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2ODU6XHRcbiA2ODY6XHRcdG1lbXNldChkdF92YWwsIE1JSUNfTU9EQ1RSTF9DT05GX05PTkUsIHNpemVvZigqZHRfdmFsKSAqIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2Vjb25mX2NvbnZfY291bnQpO1xuIDY4NzpcdFxuIDY4ODpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblwmIzM0OywgXHUwMDI2Y29uZikgPT0gMClcbiA2ODk6XHRcdFx0ZHRfdmFsWzBdID0gY29uZjtcbiA2OTA6XHRcbiA2OTE6XHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjb252KSB7XG4gNjkyOlx0XHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcJiMzNDtyZWdcJiMzNDssIFx1MDAyNnBvcnQpKVxuIDY5MzpcdFx0XHRcdGNvbnRpbnVlO1xuIDY5NDpcdFxuIDY5NTpcdFx0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuIDY5NjpcdFx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuIDY5NzpcdFx0XHRcdGtmcmVlKGR0X3ZhbCk7XG4gNjk4Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjk5Olx0XHRcdH1cbiA3MDA6XHRcbiA3MDE6XHRcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1pbnB1dFwmIzM0OywgXHUwMDI2Y29uZikpXG4gNzAyOlx0XHRcdFx0Y29udGludWU7XG4gNzAzOlx0XG4gNzA0Olx0XHRcdC8qIEFkanVzdCBmb3IgMCBiYXNlZCBpbmRleCAqL1xuIDcwNTpcdFx0XHRkdF92YWxbcG9ydCAmIzQzOyAhbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xuIDcwNjpcdFxuIDcwNzpcdFx0XHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFwmIzM0O3JlbmVzYXMsbWlpYy1waHktbGluay1hY3RpdmUtbG93XCYjMzQ7KTtcbiA3MDg6XHRcbiA3MDk6XHRcdFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XG4gNzEwOlx0XHR9XG4gNzExOlx0XG4gNzEyOlx0XHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XG4gNzEzOlx0XHRrZnJlZShkdF92YWwpO1xuIDcxNDpcdFxuIDcxNTpcdFx0cmV0dXJuIHJldDtcbiA3MTY6XHR9XG4gNzE3Olx0XG4gNzE4Olx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXG4gNzE5Olx0e1xuIDcyMDpcdFx0c3RydWN0IG1paWMgKm1paWMgPSBkYXRhO1xuIDcyMTpcdFx0aW50IHJldDtcbiA3MjI6XHRcbiA3MjM6XHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQobWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVx1MDAzZXJzdHMpO1xuIDcyNDpcdFx0aWYgKHJldClcbiA3MjU6XHRcdFx0ZGV2X2VycihtaWljLVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFzc2VydCByZXNldCBsaW5lc1xcblwmIzM0Oyk7XG4gNzI2Olx0fVxuIDcyNzpcdFxuIDcyODpcdHN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXG4gNzI5Olx0e1xuIDczMDpcdFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbiA3MzE6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXHUwMDNlZGV2O1xuIDczMjpcdFx0aW50IHJldDtcbiA3MzM6XHRcdHU4IGk7XG4gNzM0Olx0XG4gNzM1Olx0XHRpZiAoIW9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQpXG4gNzM2Olx0XHRcdHJldHVybiAwO1xuIDczNzpcdFxuIDczODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgb2ZfZGF0YS1cdTAwM2VyZXNldF9jb3VudDsgaSYjNDM7JiM0MzspXG4gNzM5Olx0XHRcdG1paWMtXHUwMDNlcnN0c1tpXS5pZCA9IG9mX2RhdGEtXHUwMDNlcmVzZXRfaWRzW2ldO1xuIDc0MDpcdFxuIDc0MTpcdFx0cmV0ID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X2V4Y2x1c2l2ZShkZXYsIG9mX2RhdGEtXHUwMDNlcmVzZXRfY291bnQsXG4gNzQyOlx0XHRcdFx0XHRcdFx0ICAgIG1paWMtXHUwMDNlcnN0cyk7XG4gNzQzOlx0XHRpZiAocmV0KVxuIDc0NDpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcbiA3NDU6XHRcdFx0XHRcdCAgICAgXCYjMzQ7ZmFpbGVkIHRvIGdldCBidWxrIHJlc2V0IGxpbmVzXFxuXCYjMzQ7KTtcbiA3NDY6XHRcbiA3NDc6XHRcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19kZWFzc2VydChvZl9kYXRhLVx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVx1MDAzZXJzdHMpO1xuIDc0ODpcdFx0aWYgKHJldClcbiA3NDk6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6CgoqKlByb2JpbmcgYW5kIE1hdGNoaW5nIGBwY3MtcnpuMS1taWljYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBhbmQgbWF0Y2hpbmcgbWVjaGFuaXNtcyBmb3IgYHBjcy1yem4xLW1paWNgLiBUaGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgY3J1Y2lhbCBoZXJlLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIG15IGZpZWxkIG9mIHN0dWR5LgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkYXRhIGlzIHBhc3NlZCB0byBpdCBhcyBpbnB1dCwgYW5kIGlmIHRoZXJlIGFyZSBjb25zdHJhaW50cyBvbiB3aGF0IGl0IGFjY2VwdHMuIElmIGl0IHVzZXMgYSBzdGF0ZSB0YWJsZSwgaG93IGFyZSB0aGUgc3RhdGVzIHRyYW5zaXRpb25lZCwgYXJlIHRoZXkgZGV0ZXJtaW5pc3RpYyBvciBzdGF0aXN0aWNhbD8KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBwcm9iaW5nIHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQg4oCTIGlzIGl0IGEgZGlyZWN0IGFkZHJlc3MgbG9va3VwLCBhIGhhc2gtYmFzZWQgYXBwcm9hY2gsIGEgbW9yZSBjb21wbGV4IHNlYXJjaCBhbGdvcml0aG0sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBjdXN0b20/IEFsc28sIGhvdyBkb2VzIGl0IGhhbmRsZSBjb2xsaXNpb25zIG9yIG1pc21hdGNoZXMgaWYgaXQgaXMgcHJlc2VudD8gV2hhdCBkb2VzIG1hdGNoaW5nICptZWFuKiBpbiB0aGlzIGNvbnRleHQ/IElzIGl0IHBhdHRlcm4gbWF0Y2hpbmcsIGV4YWN0IGNvbXBhcmlzb24sIHNlbWFudGljIHNpbWlsYXJpdHksIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbW9yZSBkZXRhaWxzLCB0aGUgYmV0dGVyLgoKSSYjMzk7bSBhc3N1bWluZyB0aGlzIGNvbXBvbmVudCBpcyBhIGtleSBlbGVtZW50IG9mIHRoZSBzeXN0ZW0gSSYjMzk7bSB3b3JraW5nIHdpdGgsIHNvIGhvdyBpdCBiZWhhdmVzIGRpcmVjdGx5IGltcGFjdHMgdGhlIHN5c3RlbSYjMzk7cyBwZXJmb3JtYW5jZSBhbmQgYmVoYXZpb3IuIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRcdFx0ICAgICBcJiMzNDtmYWlsZWQgdG8gZGVhc3NlcnQgcmVzZXQgbGluZXNcXG5cJiMzNDspO1xuIDc1MTpcdFxuIDc1MjpcdFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxuIDc1MzpcdFx0XHRcdFx0ICAgICAgIG1paWMpO1xuIDc1NDpcdFx0aWYgKHJldClcbiA3NTU6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byBhZGQgcmVzZXQgYWN0aW9uXFxuXCYjMzQ7KTtcbiA3NTY6XHRcbiA3NTc6XHRcdHJldHVybiAwO1xuIDc1ODpcdH1cbiA3NTk6XHRcbiA3NjA6XHRzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA3NjE6XHR7XG4gNzYyOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiA3NjM6XHRcdHN0cnVjdCBtaWljICptaWljO1xuIDc2NDpcdFx0dTMyIG1vZGVfY2ZnO1xuIDc2NTpcdFx0aW50IHJldDtcbiA3NjY6XHRcbiA3Njc6XHRcdG1paWMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1paWMpLCBHRlBfS0VSTkVMKTtcbiA3Njg6XHRcdGlmICghbWlpYylcbiA3Njk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gNzcwOlx0XG4gNzcxOlx0XHRtaWljLVx1MDAzZW9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiA3NzI6XHRcdG1paWMtXHUwMDNlZGV2ID0gZGV2O1xuIDc3MzpcdFxuIDc3NDpcdFx0cmV0ID0gbWlpY19wYXJzZV9kdChtaWljLCBcdTAwMjZtb2RlX2NmZyk7XG4gNzc1Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3NjpcdFx0XHRyZXR1cm4gcmV0O1xuIDc3NzpcdFxuIDc3ODpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bWlpYy1cdTAwM2Vsb2NrKTtcbiA3Nzk6XHRcdG1paWMtXHUwMDNlYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3ODA6XHRcdGlmIChJU19FUlIobWlpYy1cdTAwM2ViYXNlKSlcbiA3ODE6XHRcdFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cdTAwM2ViYXNlKTtcbiA3ODI6XHRcbiA3ODM6XHRcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xuIDc4NDpcdFx0aWYgKHJldClcbiA3ODU6XHRcdFx0cmV0dXJuIHJldDtcbiA3ODY6XHRcbiA3ODc6XHRcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcbiA3ODg6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNzg5Olx0XHRcdHJldHVybiByZXQ7XG4gNzkwOlx0XG4gNzkxOlx0XHRyZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGRldik7XG4gNzkyOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc5MzpcdFx0XHRyZXR1cm4gcmV0O1xuIDc5NDpcdFxuIDc5NTpcdFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcbiA3OTY6XHRcdGlmIChyZXQpXG4gNzk3Olx0XHRcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xuIDc5ODpcdFxuIDc5OTpcdFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cdTAwM2VsaW5rX2NmZy52YWwpO1xuIDgwMDpcdFxuIDgwMTpcdFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXG4gODAyOlx0XHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xuIDgwMzpcdFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXG4gODA0Olx0XHQgKiBwcm9wZXJseS5cbiA4MDU6XHRcdCAqL1xuIDgwNjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XG4gODA3Olx0XG4gODA4Olx0XHRyZXR1cm4gMDtcbiA4MDk6XHRcbiA4MTA6XHRkaXNhYmxlX3J1bnRpbWVfcG06XG4gODExOlx0XHRwbV9ydW50aW1lX3B1dChkZXYpO1xuIDgxMjpcdFxuIDgxMzpcdFx0cmV0dXJuIHJldDtcbiA4MTQ6XHR9XG4gODE1Olx0XG4gODE2Olx0c3RhdGljIHZvaWQgbWlpY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiA4MTc6XHR7XG4gODE4Olx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gODE5Olx0fVxuIDgyMDpcdFxuIDgyMTpcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xuIDgyMjpcdFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcbiA4MjM6XHRcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUobW9kY3RybF9tYXRjaF90YWJsZSksXG4gODI0Olx0XHQuY29uZl9jb252X2NvdW50ID0gTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVgsXG4gODI1Olx0XHQuY29uZl90b19zdHJpbmcgPSBjb25mX3RvX3N0cmluZyxcbiA4MjY6XHRcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoY29uZl90b19zdHJpbmcpLFxuIDgyNzpcdFx0LmluZGV4X3RvX3N0cmluZyA9IGluZGV4X3RvX3N0cmluZyxcbiA4Mjg6XHRcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXG4gODI5Olx0XHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc2MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlIHdlIGdvLi4uCgoqKkRpdmluZyBpbnRvIHRoZSBQQ1MtUlpOMS1NSUlDIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AuIEkgYWxyZWFkeSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIFBDUyBhcmNoaXRlY3R1cmUsIGFuZCBJIHVuZGVyc3RhbmQgdGhlIFJaTjEgcGxhdGZvcm0mIzM5O3MgbmV0d29yayBpbnRlcmZhY2UuIE5vdyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBmaXRzIGludG8gdGhhdCBsYXJnZXIgcGljdHVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSBDb250cm9sbGVyIChNSUlDKSBhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCB0aGUgUENTIChQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIpIHdpdGhpbiB0aGUgUlpOMSBzeXN0ZW0uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBjcnVjaWFsIGJpdHM6IGhvdyBpdCBpbml0aWFsaXplcyB0aGUgTUlJQywgbWFuYWdlcyByZWdpc3RlciBhY2Nlc3MsIGhhbmRsZXMgaW50ZXJydXB0IHJvdXRpbmVzLCBhbmQgaWYgaXQgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIHJlbGF0ZWQgZHJpdmVycyBvciBjb21wb25lbnRzLiBJIHdpbGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHVuY29udmVudGlvbmFsIGltcGxlbWVudGF0aW9uIHRoYXQgY2FuIGJlIGltcHJvdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgzMDpcdFx0Lm1paWNfcG9ydF9tYXggPSA1LFxuIDgzMTpcdFx0LnN3X21vZGVfbWFzayA9IEdFTk1BU0soNCwgMCksXG4gODMyOlx0XHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcbiA4MzM6XHRcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxuIDgzNDpcdFx0LnR5cGUgPSBNSUlDX1RZUEVfUlpOMSxcbiA4MzU6XHR9O1xuIDgzNjpcdFxuIDgzNzpcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6dDJoX21paWNfb2ZfZGF0YSA9IHtcbiA4Mzg6XHRcdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXG4gODM5Olx0XHQubWF0Y2hfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUpLFxuIDg0MDpcdFx0LmNvbmZfY29udl9jb3VudCA9IDUsXG4gODQxOlx0XHQuY29uZl90b19zdHJpbmcgPSByenQyaF9jb25mX3RvX3N0cmluZyxcbiA4NDI6XHRcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfY29uZl90b19zdHJpbmcpLFxuIDg0MzpcdFx0LmluZGV4X3RvX3N0cmluZyA9IHJ6dDJoX2luZGV4X3RvX3N0cmluZyxcbiA4NDQ6XHRcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXG4gODQ1Olx0XHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcbiA4NDY6XHRcdC5taWljX3BvcnRfbWF4ID0gNCxcbiA4NDc6XHRcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxuIDg0ODpcdFx0LnJlc2V0X2lkcyA9IHJ6dDJoX3Jlc2V0X2lkcyxcbiA4NDk6XHRcdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcbiA4NTA6XHRcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcbiA4NTE6XHRcdC50eXBlID0gTUlJQ19UWVBFX1JaVDJILFxuIDg1MjpcdH07XG4gODUzOlx0XG4gODU0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWlpY19vZl9tdGFibGVbXSA9IHtcbiA4NTU6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxuIDg1NjpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlbmVzYXMscnpuMS1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXG4gODU3Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbiA4NTg6XHR9O1xuIDg1OTpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1paWNfb2ZfbXRhYmxlKTtcbiA4NjA6XHRcbiA4NjE6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcbiA4NjI6XHRcdC5kcml2ZXIgPSB7XG4gODYzOlx0XHRcdC5uYW1lXHQgPSBcJiMzNDtyem4xX21paWNcJiMzNDssXG4gODY0Olx0XHRcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcbiA4NjU6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXG4gODY2Olx0XHR9LFxuIDg2NzpcdFx0LnByb2JlID0gbWlpY19wcm9iZSxcbiA4Njg6XHRcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcbiA4Njk6XHR9O1xuIDg3MDpcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWlpY19kcml2ZXIpO1xuIDg3MTpcdFxuIDg3MjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gODczOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JlbmVzYXMgTUlJIGNvbnZlcnRlciBQQ1MgZHJpdmVyXCYjMzQ7KTtcbiA4NzQ6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0Nsw6ltZW50IEzDqWdlciBcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXHUwMDNlXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkwMQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRyaXZlciBpdHNlbGY6IEl0JiMzOTtzIHRhcmdldGluZyBgYW1kNjRgLCBidXQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBhIFJlbmVzYXMgTUlJIGNvbnZlcnRlciBvbiB0aGVpciBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGUgZHJpdmVyJiMzOTtzIGBvZl9tYXRjaF90YWJsZWAgbG9va3MgZm9yICYjMzQ7cmVuZXNhcyxyOWEwOWcwNzctbWlpYyYjMzQ7IGFuZCAmIzM0O3JlbmVzYXMscnpuMS1taWljJiMzNDsuIFNlZW1zIHByZXR0eSBjbGVhciBpdCYjMzk7cyBtZWFudCBmb3IgdGhvc2Ugc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29tcGF0aWJsZXMuCgpUaGVuIHRoZXJlJiMzOTtzIGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBsb2NrZWQgZG93bjsgdXNlcnNwYWNlIGNhbiYjMzk7dCBldmVuIG1lc3Mgd2l0aCBpdHMgYmluZGluZy4gVGhpcyBzdWdnZXN0cyBhIHRpZ2h0IGNvdXBsaW5nIHRvIHRoZSBoYXJkd2FyZS4gQW5kLCByZWluZm9yY2luZyB0aGF0IGlkZWEsIGl0IG5lZWRzIHNwZWNpZmljIG1lbW9yeSByZXNvdXJjZXMgYW5kIHJlc2V0IGNvbnRyb2xsZXJzIHRoYXQgYXJlIGludGVncmFsIHBhcnRzIG9mIHRoZSBSZW5lc2FzIFNvQ3MuCgpOb3csIHRoZSBiaWcgcXVlc3Rpb246IGNhbiB0aGlzIGhhcmR3YXJlIGJlIHNpbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHM/IFRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nIG5vLiBUaGlzIGlzIGFuIGVtYmVkZGVkIGV0aGVybmV0IFBDUy9NSUkgY29udmVydGVyIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgQVJNIFNvQ3MuCgpTbywgYWNjb3JkaW5nIHRvIFNlY3Rpb24gMiBvZiB0aGUgcHJvbXB0LCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYW5kICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzJiMzNDsgY2F0ZWdvcmllcy4gU3BlY2lmaWNhbGx5OgoqICAgSXQmIzM5O3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycywgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBub3QgYXZhaWxhYmxlIGluIHN0YW5kYXJkIFFFTVUuCiogICBUaGUgY29kZSBwYXRocyBoZXJlIGFyZSBleGNsdXNpdmUgdG8gQVJNIGFuZCBhcmUgYmFzZWQgb24gZW1iZWRkZWQgU29Dcy4KCk5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBsaW5rYWdlcyBvciBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBzZWUgaWYgYW55b25lIGNhbGxzIG9yIHVzZXMgYHBjcy1yem4xLW1paWNgIGluIGNvcmUgY29kZSBvciBldmVuIHZpcnR1YWwgYnVzZXMsIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIG90aGVyIGludGVyZXN0aW5nIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDMgMTY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNzLXJ6bjEtbWlpY3xtaWljXyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTE3PXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC02NC0gICAgZGVzY3JpcHRpb246IE1JSSBTd2l0Y2ggUE9SVElOIGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgc2hvdWxkIHVzZSBvbmUgb2ZcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6NjU6ICAgICAgdGhlIHZhbHVlcyBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmggZm9yIFJaL04xIFNvQyBhbmRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjYtICAgICAgaW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaCBmb3IgUlovTjJILCBSWi9UMkggU29Dcy5cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTczPXBhdHRlcm5Qcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtODQtICAgICAgICBkZXNjcmlwdGlvbjogQ29udmVydGVyIGlucHV0IHBvcnQgY29uZmlndXJhdGlvbi4gVGhpcyB2YWx1ZSBzaG91bGQgdXNlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sOjg1OiAgICAgICAgICBvbmUgb2YgdGhlIHZhbHVlcyBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmggZm9yIFJaL04xIFNvQ1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC04Ni0gICAgICAgICAgYW5kIGluY2x1ZGUvZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmggZm9yIFJaL04ySCwgUlovVDJIIFNvQ3MuXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbD0yMTc9ZXhhbXBsZXM6XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIxOC0gIC0gfFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbDoyMTk6ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtMjIwLSAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9jbG9jay9yOWEwNmcwMzItc3lzY3RybC5oXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MjMyNzQ9RjpcdGRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3KlxuTUFJTlRBSU5FUlM6MjMyNzU6RjpcdGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcbk1BSU5UQUlORVJTOjIzMjc2OkY6XHRpbmNsdWRlL2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcbk1BSU5UQUlORVJTOjIzMjc3OkY6XHRpbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaFxuTUFJTlRBSU5FUlMtMjMyNzgtRjpcdG5ldC9kc2EvdGFnX3J6bjFfYTVwc3cuY1xuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDZnMDMyLXJ6bjFkNDAwLWRiLmR0cy0xMy0jaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9sZWRzL2NvbW1vbi5oXHUwMDNlXG5hcmNoL2FybS9ib290L2R0cy9yZW5lc2FzL3I5YTA2ZzAzMi1yem4xZDQwMC1kYi5kdHM6MTQ6I2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFx1MDAzZVxuYXJjaC9hcm0vYm9vdC9kdHMvcmVuZXNhcy9yOWEwNmcwMzItcnpuMWQ0MDAtZGIuZHRzLTE1LSNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL3BpbmN0cmwvcnpuMS1waW5jdHJsLmhcdTAwM2Vcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpPTQ4PVx0ZXRoZXJuZXRAZTIwMDAge1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2ktNTMtXHRcdHB0cC10aW1lciA9IFx1MDAzY1x1MDAyNnB0cF90aW1lcjFcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpOjU0Olx0XHRwY3NwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGNzcGh5OVx1MDAzZSwgXHUwMDNjXHUwMDI2cXNnbWlpY19wY3MxXHUwMDNlO1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaS01NS1cdFx0cGNzLWhhbmRsZS1uYW1lcyA9IFwmIzM0O3NnbWlpXCYjMzQ7LCBcJiMzNDtxc2dtaWlcJiMzNDs7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaT01OD1cdG1kaW9AZTEwMDAge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaTo1OTpcdFx0cXNnbWlpY19wY3MxOiBldGhlcm5ldC1wY3NAMSB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTYwLVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wsbHlueC1wY3NcJiMzNDs7XG4tLVxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaT00OD1cdGV0aGVybmV0QGU0MDAwIHtcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpLTUzLVx0XHRwdHAtdGltZXIgPSBcdTAwM2NcdTAwMjZwdHBfdGltZXIxXHUwMDNlO1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaTo1NDpcdFx0cGNzcGh5LWhhbmRsZSA9IFx1MDAzY1x1MDAyNnBjc3BoeTEwXHUwMDNlLCBcdTAwM2NcdTAwMjZxc2dtaWljX3BjczJcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpLTU1LVx0XHRwY3MtaGFuZGxlLW5hbWVzID0gXCYjMzQ7c2dtaWlcJiMzNDssIFwmIzM0O3FzZ21paVwmIzM0Oztcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpPTU4PVx0bWRpb0BlMTAwMCB7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpOjU5Olx0XHRxc2dtaWljX3BjczI6IGV0aGVybmV0LXBjc0AyIHtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2ktNjAtXHRcdFx0Y29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxseW54LXBjc1wmIzM0Oztcbi0tXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpPTQ4PVx0ZXRoZXJuZXRAZTYwMDAge1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTMtXHRcdHB0cC10aW1lciA9IFx1MDAzY1x1MDAyNnB0cF90aW1lcjFcdTAwM2U7XG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU0Olx0XHRwY3NwaHktaGFuZGxlID0gXHUwMDNjXHUwMDI2cGNzcGh5MTFcdTAwM2UsIFx1MDAzY1x1MDAyNnFzZ21paWNfcGNzM1x1MDAzZTtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTUtXHRcdHBjcy1oYW5kbGUtbmFtZXMgPSBcJiMzNDtzZ21paVwmIzM0OywgXCYjMzQ7cXNnbWlpXCYjMzQ7O1xuLS1cbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2k9NTg9XHRtZGlvQGUxMDAwIHtcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2k6NTk6XHRcdHFzZ21paWNfcGNzMzogZXRoZXJuZXQtcGNzQDMge1xuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTMuZHRzaS02MC1cdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLGx5bngtcGNzXCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTE0Nz1zdGF0aWMgdm9pZCBhNXBzd19wY3NfZnJlZShzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1Mi1cdFx0aWYgKGE1cHN3LVx1MDAzZXBjc1tpXSlcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE1MzpcdFx0XHRtaWljX2Rlc3Ryb3koYTVwc3ctXHUwMDNlcGNzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExNTc9c3RhdGljIGludCBhNXBzd19wY3NfZ2V0KHN0cnVjdCBhNXBzdyAqYTVwc3cpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTgzOlx0XHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cdTAwM2VkZXYsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE4NC1cdFx0aWYgKElTX0VSUihwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE5LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMDojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz02Mz1zdGF0aWMgaW50IHJlbmVzYXNfZ21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcwLVx0aWYgKHBjc19ub2RlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6NzE6XHRcdHBjcyA9IG1paWNfY3JlYXRlKHByaXYtXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtNzItXHRcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9ODI9c3RhdGljIHZvaWQgcmVuZXNhc19nbWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtODQtXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzo4NTpcdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6OTojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9waHlsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9MTY9c3RhdGljIGludCByem4xX2R3bWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjQtXHRpZiAocGNzX25vZGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzoyNTpcdFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cdTAwM2VkZXZpY2UsIHBjc19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNi1cdFx0b2Zfbm9kZV9wdXQocGNzX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz0zNj1zdGF0aWMgdm9pZCByem4xX2R3bWFjX3Bjc19leGl0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMzgtXHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3BjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzozOTpcdFx0bWlpY19kZXN0cm95KHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTQwLX1cbi0tXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcdCYjNDM7PSBwY3MtcnpuMS1taWljLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL25ldC9wY3MtcnpuMS1taWljLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTE3Nz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJ6dDJoX3Jlc2V0X2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgyLS8qKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxODM6ICogc3RydWN0IG1paWNfcGh5X2xpbmtfY2ZnIC0gTUlJQyBQSFlfTElOSyBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4NC0gKiBAbWFzazogTWFzayBvZiBwaHlfbGluayBiaXRzXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODYtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjE4NzpzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODgtXHR1MzIgbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTIwMT1zdHJ1Y3QgbWlpYyB7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDUtXHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgcnN0c1tNSUlDX01BWF9OVU1fUlNUU107XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNjpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNzpcdHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyBsaW5rX2NmZztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjA4LX07XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjEwOmVudW0gbWlpY190eXBlIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjExLVx0TUlJQ19UWVBFX1JaTjEsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTUtLyoqXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxNjogKiBzdHJ1Y3QgbWlpY19vZl9kYXRhIC0gT0YgZGF0YSBmb3IgTUlJIGNvbnZlcnRlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTctICogQG1hdGNoX3RhYmxlOiBNYXRjaGluZyB0YWJsZSBmb3IgY29udmN0cmwgY29uZmlndXJhdGlvblxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjIzLSAqIEBpbmRleF90b19zdHJpbmdfY291bnQ6IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBpbmRleF90b19zdHJpbmcgYXJyYXlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI0OiAqIEBtaWljX3BvcnRfc3RhcnQ6IE1JSUMgcG9ydCBzdGFydCBudW1iZXJcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjI1OiAqIEBtaWljX3BvcnRfbWF4OiBNYXhpbXVtIE1JSUMgc3VwcG9ydGVkXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyNi0gKiBAc3dfbW9kZV9tYXNrOiBTd2l0Y2ggbW9kZSBtYXNrXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzAtICogIGJlZm9yZSBhY2Nlc3MuXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzMTogKiBAbWlpY193cml0ZTogRnVuY3Rpb24gcG9pbnRlciB0byB3cml0ZSBhIHZhbHVlIHRvIGEgTUlJQyByZWdpc3RlclxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzItICogQHR5cGU6IFR5cGUgb2YgTUlJQ1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMzMtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzNDpzdHJ1Y3QgbWlpY19vZl9kYXRhIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjM1LVx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKm1hdGNoX3RhYmxlO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQxLVx0dTggaW5kZXhfdG9fc3RyaW5nX2NvdW50O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDI6XHR1OCBtaWljX3BvcnRfc3RhcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0MzpcdHU4IG1paWNfcG9ydF9tYXg7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0NC1cdHU4IHN3X21vZGVfbWFzaztcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0Ny1cdGJvb2wgaW5pdF91bmxvY2tfbG9ja19yZWdzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDg6XHR2b2lkICgqbWlpY193cml0ZSkoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI0OTpcdGVudW0gbWlpY190eXBlIHR5cGU7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1MC19O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUyLS8qKlxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNTM6ICogc3RydWN0IG1paWNfcG9ydCAtIFBlciBwb3J0IE1JSSBjb252ZXJ0ZXIgc3RydWN0XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI1NC0gKiBAbWlpYzogYmFja2lsaW5nIHRvIE1JSSBjb252ZXJ0ZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTgtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI1OTpzdHJ1Y3QgbWlpY19wb3J0IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjYwLVx0c3RydWN0IG1paWMgKm1paWM7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjUtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI2NjpzdGF0aWMgc3RydWN0IG1paWNfcG9ydCAqcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjcte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjg6XHRyZXR1cm4gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1paWNfcG9ydCwgcGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjY5LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNzE6c3RhdGljIHZvaWQgbWlpY191bmxvY2tfcmVncyhzdHJ1Y3QgbWlpYyAqbWlpYylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcyLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI3OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjgwOnN0YXRpYyB2b2lkIG1paWNfbG9ja19yZWdzKHN0cnVjdCBtaWljICptaWljKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjg1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODY6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI4Ny17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MTpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWxfbG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5Mi17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MzpcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI5NC1cdHdyaXRlbCh2YWx1ZSwgbWlpYy1cdTAwM2ViYXNlICYjNDM7IG9mZnNldCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5NTpcdG1paWNfbG9ja19yZWdzKG1paWMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTYtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5ODpzdGF0aWMgdm9pZCBtaWljX3JlZ193cml0ZWwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk5LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAwOlx0bWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfd3JpdGUobWlpYywgb2Zmc2V0LCB2YWx1ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMS19XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzAzOnN0YXRpYyB1MzIgbWlpY19yZWdfcmVhZGwoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwNC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwODpzdGF0aWMgdm9pZCBtaWljX3JlZ19ybXcoc3RydWN0IG1paWMgKm1paWMsIGludCBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzEzLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTQ6XHRyZWcgPSBtaWljX3JlZ19yZWFkbChtaWljLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTUtXHRyZWcgXHUwMDI2PSB+bWFzaztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE2LVx0cmVnIHw9IHZhbDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzE3Olx0bWlpY19yZWdfd3JpdGVsKG1paWMsIG9mZnNldCwgcmVnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjI6c3RhdGljIHZvaWQgbWlpY19jb252ZXJ0ZXJfZW5hYmxlKHN0cnVjdCBtaWljICptaWljLCBpbnQgcG9ydCwgaW50IGVuYWJsZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyOC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzI5Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVlJTVCwgTUlJQ19DT05WUlNUX1BIWUlGX1JTVChwb3J0KSwgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMwLX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzI6c3RhdGljIGludCBtaWljX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzMtXHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzM1LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzM2Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzNzpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzOC1cdHUzMiBzcGVlZCwgY29udl9tb2RlLCB2YWwsIG1hc2s7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzOTpcdGludCBwb3J0ID0gbWlpY19wb3J0LVx1MDAzZXBvcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3MC1cdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzE6XHRpZiAoaW50ZXJmYWNlICE9IG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcyLVx0XHR2YWwgfD0gRklFTERfUFJFUChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQsIHNwZWVkKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzczLVx0XHRtYXNrIHw9IE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc0Olx0XHRtaWljX3BvcnQtXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzUtXHR9XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Ni1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzc3Olx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwocG9ydCksIG1hc2ssIHZhbCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3ODpcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXHUwMDNlcG9ydCwgMSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3OS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzgzOnN0YXRpYyB2b2lkIG1paWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zODQtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGludCBzcGVlZCwgaW50IGR1cGxleClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg1LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg2Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NzpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4OC1cdHUzMiBjb252X3NwZWVkID0gMCwgdmFsID0gMDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mzg5Olx0aW50IHBvcnQgPSBtaWljX3BvcnQtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzkwLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDEyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTM6XHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE0LVx0XHQgICAgIChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQgfCBNSUlDX0NPTlZDVFJMX0ZVTExEKSwgdmFsKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxNi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE3OnN0YXRpYyBpbnQgbWlpY19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE4LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE5Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQyMDpcdHN0cnVjdCBtaWljICptaWljID0gbWlpY19wb3J0LVx1MDAzZW1paWM7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQyMS1cdHUzMiB2YWwsIG1hc2s7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjktXHRcdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzA6XHRcdG1paWNfcG9ydC1cdTAwM2VpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDMxLVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MzY6XHRcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX0NPTlZDVFJMKG1paWNfcG9ydC1cdTAwM2Vwb3J0KSwgbWFzaywgdmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM3LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0Mzg6XHRcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXHUwMDNlcG9ydCwgMSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1paWNfcGh5bGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NTpcdC5wY3NfY29uZmlnID0gbWlpY19jb25maWcsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NjpcdC5wY3NfbGlua191cCA9IG1paWNfbGlua191cCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ3Olx0LnBjc19wcmVfaW5pdCA9IG1paWNfcHJlX2luaXQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OC19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDktXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MDpzdHJ1Y3QgcGh5bGlua19wY3MgKm1paWNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUxLXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDUyOlx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDUzLVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDU0Olx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NTUtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4NC1cdG9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ4NTpcdGlmIChwb3J0IFx1MDAzZSBvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXggfHwgcG9ydCBcdTAwM2Mgb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg2LVx0XHRwdXRfZGV2aWNlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkwOlx0bWlpY19wb3J0ID0ga3phbGxvY19vYmooKm1paWNfcG9ydCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ5MTpcdGlmICghbWlpY19wb3J0KSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ5Mi1cdFx0cHV0X2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ5OTpcdG1paWNfcG9ydC1cdTAwM2VtaWljID0gbWlpYztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTAwOlx0bWlpY19wb3J0LVx1MDAzZXBvcnQgPSBwb3J0IC0gb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQ7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMTpcdG1paWNfcG9ydC1cdTAwM2VwY3Mub3BzID0gXHUwMDI2bWlpY19waHlsaW5rX29wcztcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTAyLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDM6XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShtaWljX3BvcnQtXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA0Olx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBtaWljX3BvcnQtXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTA1Olx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIG1paWNfcG9ydC1cdTAwM2VwY3Muc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNzpcdHJldHVybiBcdTAwMjZtaWljX3BvcnQtXHUwMDNlcGNzO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MDgtfVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDk6RVhQT1JUX1NZTUJPTChtaWljX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTExOnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTIte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTM6XHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTU6XHRtaWljX2NvbnZlcnRlcl9lbmFibGUobWlpY19wb3J0LVx1MDAzZW1paWMsIG1paWNfcG9ydC1cdTAwM2Vwb3J0LCAwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE2Olx0a2ZyZWUobWlpY19wb3J0KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE3LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTE4OkVYUE9SVF9TWU1CT0wobWlpY19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE5LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MjA6c3RhdGljIGludCBtaWljX2luaXRfaHcoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjZmdfbW9kZSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTIxLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyOS1cdGlmIChtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlaW5pdF91bmxvY2tfbG9ja19yZWdzKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzA6XHRcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNC1cdCAqL1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MzU6XHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19NT0RDVFJMLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzYtXHRcdFx0KChjZmdfbW9kZSBcdTAwM2NcdTAwM2MgX19mZnMoc3dfbW9kZV9tYXNrKSkgXHUwMDI2IHN3X21vZGVfbWFzaykpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzODpcdGZvciAocG9ydCA9IDA7IHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfbWF4OyBwb3J0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Mzk6XHRcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBwb3J0LCAwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQwLVx0XHQvKiBEaXNhYmxlIHNwZWVkL2R1cGxleCBjb250cm9sIGZyb20gdGhlc2UgcmVnaXN0ZXJzLCBkYXRhc2hlZXRcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0My1cdFx0ICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU0NDpcdFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dDVFJMLCAweDApO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDU6XHRcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX1NXRFVQQywgMHgwKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQ2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTUwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NTE6c3RhdGljIGJvb2wgbWlpY19tb2RjdHJsX21hdGNoKHM4ICp0YWJsZV92YWwsIHM4ICpkdF92YWwsIHU4IGNvdW50KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTIte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY1LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NjY6c3RhdGljIHZvaWQgbWlpY19kdW1wX2NvbmYoc3RydWN0IG1paWMgKm1paWMsIHM4ICpjb25mKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01Njcte1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Njg6XHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cdTAwM2VvZl9kYXRhO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjktXHRjb25zdCBjaGFyICpjb25mX25hbWU7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4MzpzdGF0aWMgaW50IG1paWNfbWF0Y2hfZHRfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmR0X3ZhbCwgdTMyICptb2RlX2NmZylcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg0LXtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTg1Olx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXHUwMDNlb2ZfZGF0YTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTg2LVx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKnRhYmxlX2VudHJ5O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTkxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1OTI6XHRcdGlmIChtaWljX21vZGN0cmxfbWF0Y2godGFibGVfZW50cnktXHUwMDNlY29udiwgZHRfdmFsLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTMtXHRcdFx0XHQgICAgICAgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZWNvbmZfY29udl9jb3VudCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5OS1cdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBhcHBseSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjYwMDpcdG1paWNfZHVtcF9jb25mKG1paWMsIGR0X3ZhbCk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwNC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjA1OnN0YXRpYyB2b2lkIG1paWNfY29uZmlndXJlX3BoeV9saW5rKHN0cnVjdCBtaWljICptaWljLCB1MzIgY29uZixcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA2LVx0XHRcdFx0ICAgIHUzMiBwb3J0LCBib29sIGFjdGl2ZV9sb3cpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02NzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY3MzpzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3NC17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy02OTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY5NTpcdFx0aWYgKHBvcnQgXHUwMDNjIG1paWMtXHUwMDNlb2ZfZGF0YS1cdTAwM2VtaWljX3BvcnRfc3RhcnQgfHwgcG9ydCBcdTAwM2UgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9tYXgpIHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk2LVx0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwmIzM0O1BvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXG5cJiMzNDssIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA0LVx0XHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA1Olx0XHRkdF92YWxbcG9ydCAmIzQzOyAhbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDYtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MDgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcwOTpcdFx0bWlpY19jb25maWd1cmVfcGh5X2xpbmsobWlpYywgY29uZiwgcG9ydCwgYWN0aXZlX2xvdyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMC1cdH1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzExLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3MTI6XHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMy1cdGtmcmVlKGR0X3ZhbCk7XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTctXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxODpzdGF0aWMgdm9pZCBtaWljX3Jlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQodm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE5LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI4OnN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcyOS17XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjczMDpcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVx1MDAzZW9mX2RhdGE7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTczMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUxLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NTI6XHRyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBtaWljX3Jlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1My1cdFx0XHRcdCAgICAgICBtaWljKTtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1OS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzYwOnN0YXRpYyBpbnQgbWlpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NjEte1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzczLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3NzQ6XHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFx1MDAyNm1vZGVfY2ZnKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzc1LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4Mi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzgzOlx0cmV0ID0gbWlpY19yZXNldF9jb250cm9sX2luaXQobWlpYyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTQtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5NTpcdHJldCA9IG1paWNfaW5pdF9odyhtaWljLCBtb2RlX2NmZyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTgtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc5OTpcdG1paWNfcmVnX3JtdyhtaWljLCBNSUlDX1BIWV9MSU5LLCBtaWljLVx1MDAzZWxpbmtfY2ZnLm1hc2ssIG1paWMtXHUwMDNlbGlua19jZmcudmFsKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODAwLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MDE6XHQvKiBtaWljX2NyZWF0ZSgpIHJlbGllcyBvbiB0aGF0IGZhY3QgdGhhdCBkYXRhIGFyZSBhdHRhY2hlZCB0byB0aGVcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODAyLVx0ICogcGxhdGZvcm0gZGV2aWNlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIGlzIHJlYWR5IHNvIHRoaXMgbmVlZHMgdG9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODE2OnN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgxNy17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyMTpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByem4xX21paWNfb2ZfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODIyLVx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgyOC1cdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgyOTpcdC5taWljX3BvcnRfc3RhcnQgPSAxLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzA6XHQubWlpY19wb3J0X21heCA9IDUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzMS1cdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzItXHQuaW5pdF91bmxvY2tfbG9ja19yZWdzID0gdHJ1ZSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODMzOlx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfdW5sb2NrZWQsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNC1cdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzYtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgzNzpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzOC1cdC5tYXRjaF90YWJsZSA9IHJ6dDJoX21vZGN0cmxfbWF0Y2hfdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDQtXHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9pbmRleF90b19zdHJpbmcpLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XHQubWlpY19wb3J0X3N0YXJ0ID0gMCxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODQ2Olx0Lm1paWNfcG9ydF9tYXggPSA0LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDctXHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSygyLCAwKSxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg0OS1cdC5yZXNldF9jb3VudCA9IEFSUkFZX1NJWkUocnp0MmhfcmVzZXRfaWRzKSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODUwOlx0Lm1paWNfd3JpdGUgPSBtaWljX3JlZ193cml0ZWxfbG9ja2VkLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTEtXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1My1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ6dDJoX21paWNfb2ZfZGF0YSB9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTY6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVuZXNhcyxyem4xLW1paWNcJiMzNDssIC5kYXRhID0gXHUwMDI2cnpuMV9taWljX29mX2RhdGEgfSxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODU3LVx0eyAvKiBzZW50aW5lbCAqLyB9XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1OC19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODYyLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2NC1cdFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjU6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG1paWNfb2ZfbXRhYmxlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjYtXHR9LFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njc6XHQucHJvYmUgPSBtaWljX3Byb2JlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njg6XHQucmVtb3ZlID0gbWlpY19yZW1vdmUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2OS19O1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg3MS1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaD0xMj1zdHJ1Y3QgZGV2aWNlX25vZGU7XG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaC0xMy1cbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oOjE0OnN0cnVjdCBwaHlsaW5rX3BjcyAqbWlpY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oLTE1LVxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmg6MTY6dm9pZCBtaWljX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmgtMTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTQ0CgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDgxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtaWljX3BhcnNlX2R0YCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyB0d28gaXNzdWVzOiBhIGBtZW1zZXRgIGluaXRpYWxpemF0aW9uIGFuZCBhIGJvdW5kcyBjaGVjayBvbiB0aGUgYHBvcnRgIHZhcmlhYmxlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgeDg2L1FFTVUgc3l6a2FsbGVyIHNldHVwLgoKTG9va2luZyBhdCB0aGUgZGV0YWlscywgdGhpcyBgQ09ORklHX1BDU19SWk4xX01JSUNgIGRyaXZlciBpcyBwbGF0Zm9ybS1zcGVjaWZpYywgZGVzaWduZWQgZm9yIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLCB3aGljaCBhcmUgYWxsIEFSTS1iYXNlZC4gIFRoZSBkcml2ZXIgcmVsaWVzIG9uIERldmljZSBUcmVlIChEVCkgZm9yIHByb2JpbmcsIHVzaW5nIHNwZWNpZmljICYjMzQ7cmVuZXNhcyxyem4xLW1paWMmIzM0OyBvciAmIzM0O3JlbmVzYXMscjlhMDlnMDc3LW1paWMmIzM0OyBjb21wYXRpYmxlIHN0cmluZ3MuICBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBoYXMgYC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAsIG1lYW5pbmcgd2UgY2FuJiMzOTt0IG1hbnVhbGx5IGJpbmQgaXQgdGhyb3VnaCBzeXNmcy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBmb3IgcmVhY2hhYmlsaXR5LgoKVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgLyB4ODZfNjQgVk1zIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgUmVuZXNhcyBoYXJkd2FyZSBvciB0aGUgRGV2aWNlIFRyZWUgcGFyc2luZyBuZWNlc3NhcnkgdG8gdHJpZ2dlciB0aGlzIGRyaXZlci4gIFN5emthbGxlciBvbiBhbWQ2NCBzaW1wbHkgKmNhbm5vdCogaW5zdGFudGlhdGUgb3IgaW50ZXJhY3Qgd2l0aCB0aGlzIHBsYXRmb3JtIGRldmljZSwgbm90IGR1cmluZyBib290IG9yIGF0IHJ1bnRpbWUuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2hlZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIHg4Ni9RRU1VIHN5emthbGxlci4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBhZ2FpbnN0IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCiogICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSoqOiBDb25maXJtZWQuIFRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gc3BlY2lmaWMgUmVuZXNhcyBoYXJkd2FyZSBhbmQgbm90IGVtdWxhdGVkLgoqICAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMqKjogVGhpcyBmYWxscyBpbnRvIHRoaXMgY2F0ZWdvcnkgYnkgbm90IGJlaW5nIHJlYWNoYWJsZSBpbiB0aGUgZmlyc3QgcGxhY2UgYmVjYXVzZSBvZiB0aGUgaGFyZHdhcmUvYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3ksIGNvdXBsZWQgd2l0aCBEVCBiaW5kaW5nLgoKR2l2ZW4gYWxsIHRoaXMsIHRoZSBwYXRjaCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLgoKU28sIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLCBJJiMzOTtsbCBzZXQ6CgoqICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWAKKiAgIGBSZWFzb25pbmdgOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbWlpY19wYXJzZV9kdGAgaW4gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIE1JSSBjb252ZXJ0ZXIgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChQQ1MpIG9uIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBBUk0gU29Dcy4gVGhlIGRyaXZlciBpcyBwcm9iZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgb24gc3BlY2lmaWMgUmVuZXNhcyBoYXJkd2FyZSwgaGFzIHN5c2ZzIGJpbmQgYXR0cmlidXRlcyBzdXBwcmVzc2VkIChgc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWVgKSwgYW5kIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDsKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBiZWNhdXNlIHRoZXJlJiMzOTtzIG5vdGhpbmcgdG8gZm9jdXMgb24pCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGFsc28gZW1wdHksIGFzIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBlbmFibGluZyB0aGlzIGRyaXZlciBvbiB4ODYpLgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMyAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAzIDE2OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNToyMy41NjAwMTgzNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDQ0Mjg2MDMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjIzLjU2MDAyMzQwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MjE3MDY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4YzZhYTgyY2IxOGU3ZmVlNjJjMTFmZDMxNjNmMjAxYzZkZjY5M2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbmluZGV4IDJiNzJmYTk4ZGRmMTMuLjNlZTQwZWI5ZDU0NTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcXG5AQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcXG4gXFx0aWYgKCFkdF92YWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4tXFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpKTtcXG4rXFx0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlY29uZl9jb252X2NvdW50KTtcXG4gXFxuIFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInJlbmVzYXMsbWlpYy1zd2l0Y2gtcG9ydGluXFxcIiwgXFx1MDAyNmNvbmYpID09IDApXFxuIFxcdFxcdGR0X3ZhbFswXSA9IGNvbmY7XFxuQEAgLTY5Miw2ICs2OTIsMTIgQEAgc3RhdGljIGludCBtaWljX3BhcnNlX2R0KHN0cnVjdCBtaWljICptaWljLCB1MzIgKm1vZGVfY2ZnKVxcbiBcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlZ1xcXCIsIFxcdTAwMjZwb3J0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbitcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXFxcblxcXCIsIHBvcnQpO1xcbitcXHRcXHRcXHRrZnJlZShkdF92YWwpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtaW5wdXRcXFwiLCBcXHUwMDI2Y29uZikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MjQuOTAyODA1MjI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTEwMDA2MjAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIERldmljZSBUcmVlIHBhcnNpbmcgbG9naWMgKG1paWNfcGFyc2VfZHQpIGluIGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQyBNSUkgY29udmVydGVyLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIFNvQy1zcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW50aWF0ZWQgb25seSB2aWEgRGV2aWNlIFRyZWUgbm9kZXMgb24gUmVuZXNhcyBBUk0gU29DcyAod2l0aCBzeXNmcyBiaW5kaW5nIHN1cHByZXNzZWQpLCBtYWtpbmcgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCAoYW1kNjQpIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOGM2YWE4MmNiMThlN2ZlZTYyYzExZmQzMTYzZjIwMWM2ZGY2OTNkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMyAxNjoxNToyMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jXG5pbmRleCAyYjcyZmE5OGRkZjEzLi4zZWU0MGViOWQ1NDUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xuQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXG4gXHRpZiAoIWR0X3ZhbClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkpO1xuK1x0bWVtc2V0KGR0X3ZhbCwgTUlJQ19NT0RDVFJMX0NPTkZfTk9ORSwgc2l6ZW9mKCpkdF92YWwpICogbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZWNvbmZfY29udl9jb3VudCk7XG4gXG4gXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwicmVuZXNhcyxtaWljLXN3aXRjaC1wb3J0aW5cIiwgXHUwMDI2Y29uZikgPT0gMClcbiBcdFx0ZHRfdmFsWzBdID0gY29uZjtcbkBAIC02OTIsNiArNjkyLDEyIEBAIHN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcbiBcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGNvbnYsIFwicmVnXCIsIFx1MDAyNnBvcnQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRpZiAocG9ydCBcdTAwM2MgbWlpYy1cdTAwM2VvZl9kYXRhLVx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFx1MDAzZSBtaWljLVx1MDAzZW9mX2RhdGEtXHUwMDNlbWlpY19wb3J0X21heCkge1xuK1x0XHRcdGRldl9lcnIobWlpYy1cdTAwM2VkZXYsIFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcblwiLCBwb3J0KTtcbitcdFx0XHRrZnJlZShkdF92YWwpO1xuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4rXG4gXHRcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcInJlbmVzYXMsbWlpYy1pbnB1dFwiLCBcdTAwMjZjb25mKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjI0LjkwMjgwNjc2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMzE4OTc5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCB0aW1lIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0IHdhcnJhbnRzIHNvbWUgZnV6emluZyBlZmZvcnRzLiBUaGUgbW9kaWZpZWQgZmlsZSBpcyBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuIEknbGwgbmVlZCB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGl0c2VsZi4gSSdsbCB1c2UgYGdyZXBwZXJgIChvciBpZiB0aGF0J3Mgbm90IGF2YWlsYWJsZSwgYSBzaW1wbGUgYHJlYWQtZmlsZWAgd2lsbCBkbykgdG8gZGl2ZSBpbnRvIGBwY3MtcnpuMS1taWljLmNgIGFuZCBhbHNvIHF1aWNrbHkgY2hlY2sgdGhlIGFzc29jaWF0ZWQgYEtjb25maWdgIGZpbGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgaW1wcmVzc2lvbiBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLCB0aGUgY29tcGxleGl0eSwgYW5kIHdoZXRoZXIgaXQncyBldmVuIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkgdGhyb3VnaCBmdXp6aW5nLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB3aGV0aGVyIGl0J3Mgd29ydGggdGhlIHRpbWUgaW52ZXN0bWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEzOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MzYuMjIxNzg4MzI1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDY0MzIxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtcnpuMS1taWljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcXHQrPSBwY3MtbXRrLWx5bnhpLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX1BDU19SWk4xX01JSUMpXFx0Kz0gcGNzLXJ6bjEtbWlpYy5vXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9wbGF0Zm9ybS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTE4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9waHlsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMzojaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0LSNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6MzYuNjg2NDM3OTM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MTU0OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgSW1wbGVtZW50YXRpb24qKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9wY3MvYCBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBleGFtaW5pbmcgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYHBjcy1yem4xLW1paWMuY2Agc291cmNlIGZpbGUuIFRoZSBgS2NvbmZpZ2AgZmlsZSB3aWxsIHRlbGwgbWUgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxldmFudCBvcHRpb25zLiBJdCdsbCBnaXZlIG1lIHRoZSBcIndoeVwiIGFuZCBcIndoZW5cIiB0aGlzIGRyaXZlciBpcyBpbmNsdWRlZC4gVGhlbiwgSSdsbCBtb3ZlIGludG8gdGhlIGBwY3MtcnpuMS1taWljLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgZHJpdmVyIGlzLCB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGluaXRpYWxpemVzIHRoZSBQSFkgKHByZXN1bWFibHkgYSBNSUkgaW50ZXJmYWNlIGJhc2VkIG9uIHRoZSBmaWxlbmFtZSksIGhhbmRsZXMgaW50ZXJydXB0cywgYW5kIG1hbmFnZXMgbmV0d29yayB0cmFmZmljLiBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gYWxsb3dzIG1lIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXR3b3JrIGRyaXZlcidzIHJvbGUgYW5kIGhvdyBpdCBmdW5jdGlvbnMuIEl0J3MgdGhlIGZpcnN0IHN0ZXAgaW4gdW5kZXJzdGFuZGluZyB0aGUgZW50aXJlIGVjb3N5c3RlbSBvZiBuZXR3b3JraW5nIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTozOC45Mjc5ODk5ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wY3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQQ1MgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51IFxcXCJQQ1MgZGV2aWNlIGRyaXZlcnNcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1xcXCJcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZHJpdmVyIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBTeW5vcHN5c1xcbiAgMTM6XFx0XFx0ICBEZXNpZ25XYXJlIFhQQ1MgY29udHJvbGxlcnMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdGNvbmZpZyBQQ1NfTFlOWFxcbiAgMTY6XFx0XFx0dHJpc3RhdGVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgaGVscGVycyB0byBwaHlsaW5rIGZvciBtYW5hZ2luZyB0aGUgTHlueCBQQ1NcXG4gIDE5OlxcdFxcdCAgd2hpY2ggaXMgcGFydCBvZiB0aGUgTGF5ZXJzY2FwZSBhbmQgUW9ySVEgRXRoZXJuZXQgU0VSREVTLlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgUENTX01US19MWU5YSVxcbiAgMjI6XFx0XFx0dHJpc3RhdGVcXG4gIDIzOlxcdFxcdHNlbGVjdCBQSFlfQ09NTU9OX1BST1BTXFxuICAyNDpcXHRcXHRzZWxlY3QgUkVHTUFQXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGhlbHBlcnMgdG8gcGh5bGluayBmb3IgbWFuYWdpbmcgdGhlIEx5bnhJIFBDU1xcbiAgMjc6XFx0XFx0ICB3aGljaCBpcyBwYXJ0IG9mIE1lZGlhVGVrJ3MgU29DIGFuZCBFdGhlcm5ldCBzd2l0Y2ggSUNzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUENTX1JaTjFfTUlJQ1xcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovTjEsIFJaL04ySCwgUlovVDJIIE1JSSBjb252ZXJ0ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBkcml2ZXIgZm9yIHRoZSBNSUkgY29udmVydGVyIGF2YWlsYWJsZSBvblxcbiAgMzU6XFx0XFx0ICBSZW5lc2FzIFJaL04xLCBSWi9OMkgsIGFuZCBSWi9UMkggU29Dcy4gVGhpcyBQQ1MgY29udmVydHMgTUlJIHRvXFxuICAzNjpcXHRcXHQgIFJNSUkvUkdNSUksIG9yIGNhbiBiZSBzZXQgaW4gcGFzcy10aHJvdWdoIG1vZGUgZm9yIE1JSS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTozOC45MjgwNTE3MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDYxMTkwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBDb2RlOiBVbmRlcnN0YW5kaW5nIHRoZSBSWi9OMSBNSUlDIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gQmFzZWQgb24gdGhhdCBmaWxlIG5hbWUgYWxvbmUsIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGRyaXZlciBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHRoZSBNSUlDIChNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UgQ29udHJvbGxlcikgZm91bmQgb24gUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MuIEdpdmVuIHRoZSBwYXRoLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhpcyBpcyBhICpwbGF0Zm9ybSBkcml2ZXIqIGltcGxlbWVudGF0aW9uIOKAkyBtZWFuaW5nIGl0IGludGVyZmFjZXMgZGlyZWN0bHkgd2l0aCB0aGUgaGFyZHdhcmUgZGVzY3JpYmVkIGluIHRoZSBkZXZpY2UgdHJlZS4gSSdtIGFudGljaXBhdGluZyB3ZSdsbCBmaW5kIGNvZGUgdGhhdCBoYW5kbGVzIHRoZSBzcGVjaWZpYyBpbnRyaWNhY2llcyBvZiB0aGUgUlovTjEgZmFtaWx5J3MgTUlJQywgbGlrZWx5IHBhcnNpbmcgZGV2aWNlIHRyZWUgbm9kZXMgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgbWFuYWdlIGl0cyBjbG9ja2luZywgYW5kIGhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscy4gVGhpcyBzaG91bGQgYmUgaW50ZXJlc3RpbmcgdG8gYW5hbHl6ZSBmcm9tIGFuIGFyY2hpdGVjdHVyYWwgYW5kIGhhcmR3YXJlIGludGVncmF0aW9uIHBlcnNwZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTkzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTo0NC4zODkyNDM1OTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NzAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NzA6XFx0XFx0XFx0bWlpYy1cXHUwMDNlbGlua19jZmcudmFsIFxcdTAwMjY9IH5tYXNrO1xcbiA2NzE6XFx0fVxcbiA2NzI6XFx0XFxuIDY3MzpcXHRzdGF0aWMgaW50IG1paWNfcGFyc2VfZHQoc3RydWN0IG1paWMgKm1paWMsIHUzMiAqbW9kZV9jZmcpXFxuIDY3NDpcXHR7XFxuIDY3NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gbWlpYy1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlO1xcbiA2NzY6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpjb252O1xcbiA2Nzc6XFx0XFx0Ym9vbCBhY3RpdmVfbG93O1xcbiA2Nzg6XFx0XFx0aW50IHBvcnQsIHJldDtcXG4gNjc5OlxcdFxcdHM4ICpkdF92YWw7XFxuIDY4MDpcXHRcXHR1MzIgY29uZjtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0ZHRfdmFsID0ga21hbGxvY19vYmpzKCpkdF92YWwsIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZWNvbmZfY29udl9jb3VudCk7XFxuIDY4MzpcXHRcXHRpZiAoIWR0X3ZhbClcXG4gNjg0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA2ODU6XFx0XFxuIDY4NjpcXHRcXHRtZW1zZXQoZHRfdmFsLCBNSUlDX01PRENUUkxfQ09ORl9OT05FLCBzaXplb2YoKmR0X3ZhbCkgKiBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpO1xcbiA2ODc6XFx0XFxuIDY4ODpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJyZW5lc2FzLG1paWMtc3dpdGNoLXBvcnRpblxcXCIsIFxcdTAwMjZjb25mKSA9PSAwKVxcbiA2ODk6XFx0XFx0XFx0ZHRfdmFsWzBdID0gY29uZjtcXG4gNjkwOlxcdFxcbiA2OTE6XFx0XFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNvbnYpIHtcXG4gNjkyOlxcdFxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihjb252LCBcXFwicmVnXFxcIiwgXFx1MDAyNnBvcnQpKVxcbiA2OTM6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDY5NDpcXHRcXG4gNjk1OlxcdFxcdFxcdGlmIChwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0IHx8IHBvcnQgXFx1MDAzZSBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfbWF4KSB7XFxuIDY5NjpcXHRcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIlBvcnQgbnVtYmVyIG91dCBvZiByYW5nZTogJWRcXFxcblxcXCIsIHBvcnQpO1xcbiA2OTc6XFx0XFx0XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNjk4OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2OTk6XFx0XFx0XFx0fVxcbiA3MDA6XFx0XFxuIDcwMTpcXHRcXHRcXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoY29udiwgXFxcInJlbmVzYXMsbWlpYy1pbnB1dFxcXCIsIFxcdTAwMjZjb25mKSlcXG4gNzAyOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG4gNzA1OlxcdFxcdFxcdGR0X3ZhbFtwb3J0ICsgIW1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydF0gPSBjb25mO1xcbiA3MDY6XFx0XFxuIDcwNzpcXHRcXHRcXHRhY3RpdmVfbG93ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNvbnYsIFxcXCJyZW5lc2FzLG1paWMtcGh5LWxpbmstYWN0aXZlLWxvd1xcXCIpO1xcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHRcXHRtaWljX2NvbmZpZ3VyZV9waHlfbGluayhtaWljLCBjb25mLCBwb3J0LCBhY3RpdmVfbG93KTtcXG4gNzEwOlxcdFxcdH1cXG4gNzExOlxcdFxcbiA3MTI6XFx0XFx0cmV0ID0gbWlpY19tYXRjaF9kdF9jb25mKG1paWMsIGR0X3ZhbCwgbW9kZV9jZmcpO1xcbiA3MTM6XFx0XFx0a2ZyZWUoZHRfdmFsKTtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzE2OlxcdH1cXG4gNzE3OlxcdFxcbiA3MTg6XFx0c3RhdGljIHZvaWQgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KHZvaWQgKmRhdGEpXFxuIDcxOTpcXHR7XFxuIDcyMDpcXHRcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IGRhdGE7XFxuIDcyMTpcXHRcXHRpbnQgcmV0O1xcbiA3MjI6XFx0XFxuIDcyMzpcXHRcXHRyZXQgPSByZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZXJlc2V0X2NvdW50LCBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzI0OlxcdFxcdGlmIChyZXQpXFxuIDcyNTpcXHRcXHRcXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBhc3NlcnQgcmVzZXQgbGluZXNcXFxcblxcXCIpO1xcbiA3MjY6XFx0fVxcbiA3Mjc6XFx0XFxuIDcyODpcXHRzdGF0aWMgaW50IG1paWNfcmVzZXRfY29udHJvbF9pbml0KHN0cnVjdCBtaWljICptaWljKVxcbiA3Mjk6XFx0e1xcbiA3MzA6XFx0XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuIDczMTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtaWljLVxcdTAwM2VkZXY7XFxuIDczMjpcXHRcXHRpbnQgcmV0O1xcbiA3MzM6XFx0XFx0dTggaTtcXG4gNzM0OlxcdFxcbiA3MzU6XFx0XFx0aWYgKCFvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudClcXG4gNzM2OlxcdFxcdFxcdHJldHVybiAwO1xcbiA3Mzc6XFx0XFxuIDczODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ZfZGF0YS1cXHUwMDNlcmVzZXRfY291bnQ7IGkrKylcXG4gNzM5OlxcdFxcdFxcdG1paWMtXFx1MDAzZXJzdHNbaV0uaWQgPSBvZl9kYXRhLVxcdTAwM2VyZXNldF9pZHNbaV07XFxuIDc0MDpcXHRcXG4gNzQxOlxcdFxcdHJldCA9IGRldm1fcmVzZXRfY29udHJvbF9idWxrX2dldF9leGNsdXNpdmUoZGV2LCBvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudCxcXG4gNzQyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWljLVxcdTAwM2Vyc3RzKTtcXG4gNzQzOlxcdFxcdGlmIChyZXQpXFxuIDc0NDpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCxcXG4gNzQ1OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcImZhaWxlZCB0byBnZXQgYnVsayByZXNldCBsaW5lc1xcXFxuXFxcIik7XFxuIDc0NjpcXHRcXG4gNzQ3OlxcdFxcdHJldCA9IHJlc2V0X2NvbnRyb2xfYnVsa19kZWFzc2VydChvZl9kYXRhLVxcdTAwM2VyZXNldF9jb3VudCwgbWlpYy1cXHUwMDNlcnN0cyk7XFxuIDc0ODpcXHRcXHRpZiAocmV0KVxcbiA3NDk6XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjQ0LjM4OTM0NzA0NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4MzQ2MDc3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgc3VtbWFyeSwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDpcblxuKipQcm9iaW5nIGFuZCBNYXRjaGluZyBgcGNzLXJ6bjEtbWlpY2AqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmluZyBhbmQgbWF0Y2hpbmcgbWVjaGFuaXNtcyBmb3IgYHBjcy1yem4xLW1paWNgLiBUaGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgY3J1Y2lhbCBoZXJlLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpcyBsaW5rZWQgdG8gbXkgZmllbGQgb2Ygc3R1ZHkuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZGF0YSBpcyBwYXNzZWQgdG8gaXQgYXMgaW5wdXQsIGFuZCBpZiB0aGVyZSBhcmUgY29uc3RyYWludHMgb24gd2hhdCBpdCBhY2NlcHRzLiBJZiBpdCB1c2VzIGEgc3RhdGUgdGFibGUsIGhvdyBhcmUgdGhlIHN0YXRlcyB0cmFuc2l0aW9uZWQsIGFyZSB0aGV5IGRldGVybWluaXN0aWMgb3Igc3RhdGlzdGljYWw/XG5cbkkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBwcm9iaW5nIHRlY2huaXF1ZXMgYXJlIGJlaW5nIHVzZWQg4oCTIGlzIGl0IGEgZGlyZWN0IGFkZHJlc3MgbG9va3VwLCBhIGhhc2gtYmFzZWQgYXBwcm9hY2gsIGEgbW9yZSBjb21wbGV4IHNlYXJjaCBhbGdvcml0aG0sIG9yIHNvbWV0aGluZyBlbnRpcmVseSBjdXN0b20/IEFsc28sIGhvdyBkb2VzIGl0IGhhbmRsZSBjb2xsaXNpb25zIG9yIG1pc21hdGNoZXMgaWYgaXQgaXMgcHJlc2VudD8gV2hhdCBkb2VzIG1hdGNoaW5nICptZWFuKiBpbiB0aGlzIGNvbnRleHQ/IElzIGl0IHBhdHRlcm4gbWF0Y2hpbmcsIGV4YWN0IGNvbXBhcmlzb24sIHNlbWFudGljIHNpbWlsYXJpdHksIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbW9yZSBkZXRhaWxzLCB0aGUgYmV0dGVyLlxuXG5JJ20gYXNzdW1pbmcgdGhpcyBjb21wb25lbnQgaXMgYSBrZXkgZWxlbWVudCBvZiB0aGUgc3lzdGVtIEknbSB3b3JraW5nIHdpdGgsIHNvIGhvdyBpdCBiZWhhdmVzIGRpcmVjdGx5IGltcGFjdHMgdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBiZWhhdmlvci4gSSB3aWxsIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZXNlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMTcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjQ5LjIyMzk1NjkzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTExNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NTA6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiZmFpbGVkIHRvIGRlYXNzZXJ0IHJlc2V0IGxpbmVzXFxcXG5cXFwiKTtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0cmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgbWlpY19yZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0LFxcbiA3NTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgIG1paWMpO1xcbiA3NTQ6XFx0XFx0aWYgKHJldClcXG4gNzU1OlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIGFkZCByZXNldCBhY3Rpb25cXFxcblxcXCIpO1xcbiA3NTY6XFx0XFxuIDc1NzpcXHRcXHRyZXR1cm4gMDtcXG4gNzU4OlxcdH1cXG4gNzU5OlxcdFxcbiA3NjA6XFx0c3RhdGljIGludCBtaWljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDc2MTpcXHR7XFxuIDc2MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3NjM6XFx0XFx0c3RydWN0IG1paWMgKm1paWM7XFxuIDc2NDpcXHRcXHR1MzIgbW9kZV9jZmc7XFxuIDc2NTpcXHRcXHRpbnQgcmV0O1xcbiA3NjY6XFx0XFxuIDc2NzpcXHRcXHRtaWljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptaWljKSwgR0ZQX0tFUk5FTCk7XFxuIDc2ODpcXHRcXHRpZiAoIW1paWMpXFxuIDc2OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzcwOlxcdFxcbiA3NzE6XFx0XFx0bWlpYy1cXHUwMDNlb2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbiA3NzI6XFx0XFx0bWlpYy1cXHUwMDNlZGV2ID0gZGV2O1xcbiA3NzM6XFx0XFxuIDc3NDpcXHRcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuIDc3NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNzc2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZtaWljLVxcdTAwM2Vsb2NrKTtcXG4gNzc5OlxcdFxcdG1paWMtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuIDc4MDpcXHRcXHRpZiAoSVNfRVJSKG1paWMtXFx1MDAzZWJhc2UpKVxcbiA3ODE6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWlpYy1cXHUwMDNlYmFzZSk7XFxuIDc4MjpcXHRcXG4gNzgzOlxcdFxcdHJldCA9IG1paWNfcmVzZXRfY29udHJvbF9pbml0KG1paWMpO1xcbiA3ODQ6XFx0XFx0aWYgKHJldClcXG4gNzg1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDc4NjpcXHRcXG4gNzg3OlxcdFxcdHJldCA9IGRldm1fcG1fcnVudGltZV9lbmFibGUoZGV2KTtcXG4gNzg4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3ODk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNzkwOlxcdFxcbiA3OTE6XFx0XFx0cmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpO1xcbiA3OTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDc5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHRyZXQgPSBtaWljX2luaXRfaHcobWlpYywgbW9kZV9jZmcpO1xcbiA3OTY6XFx0XFx0aWYgKHJldClcXG4gNzk3OlxcdFxcdFxcdGdvdG8gZGlzYWJsZV9ydW50aW1lX3BtO1xcbiA3OTg6XFx0XFxuIDc5OTpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19QSFlfTElOSywgbWlpYy1cXHUwMDNlbGlua19jZmcubWFzaywgbWlpYy1cXHUwMDNlbGlua19jZmcudmFsKTtcXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuIDgwMjpcXHRcXHQgKiBwbGF0Zm9ybSBkZXZpY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaXMgcmVhZHkgc28gdGhpcyBuZWVkcyB0b1xcbiA4MDM6XFx0XFx0ICogYmUgdGhlIGxhc3QgdGhpbmcgdG8gYmUgZG9uZSBhZnRlciBldmVyeXRoaW5nIGlzIGluaXRpYWxpemVkXFxuIDgwNDpcXHRcXHQgKiBwcm9wZXJseS5cXG4gODA1OlxcdFxcdCAqL1xcbiA4MDY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbWlpYyk7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHJldHVybiAwO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRkaXNhYmxlX3J1bnRpbWVfcG06XFxuIDgxMTpcXHRcXHRwbV9ydW50aW1lX3B1dChkZXYpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA4MTQ6XFx0fVxcbiA4MTU6XFx0XFxuIDgxNjpcXHRzdGF0aWMgdm9pZCBtaWljX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiA4MTc6XFx0e1xcbiA4MTg6XFx0XFx0cG1fcnVudGltZV9wdXQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDgxOTpcXHR9XFxuIDgyMDpcXHRcXG4gODIxOlxcdHN0YXRpYyBzdHJ1Y3QgbWlpY19vZl9kYXRhIHJ6bjFfbWlpY19vZl9kYXRhID0ge1xcbiA4MjI6XFx0XFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcXG4gODIzOlxcdFxcdC5tYXRjaF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUobW9kY3RybF9tYXRjaF90YWJsZSksXFxuIDgyNDpcXHRcXHQuY29uZl9jb252X2NvdW50ID0gTUlJQ19NT0RDVFJMX0NPTkZfQ09OVl9NQVgsXFxuIDgyNTpcXHRcXHQuY29uZl90b19zdHJpbmcgPSBjb25mX3RvX3N0cmluZyxcXG4gODI2OlxcdFxcdC5jb25mX3RvX3N0cmluZ19jb3VudCA9IEFSUkFZX1NJWkUoY29uZl90b19zdHJpbmcpLFxcbiA4Mjc6XFx0XFx0LmluZGV4X3RvX3N0cmluZyA9IGluZGV4X3RvX3N0cmluZyxcXG4gODI4OlxcdFxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXFxuIDgyOTpcXHRcXHQubWlpY19wb3J0X3N0YXJ0ID0gMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NDkuMjI0MTcwODc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0ODA3MzA2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uLi5cblxuKipEaXZpbmcgaW50byB0aGUgUENTLVJaTjEtTUlJQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jYC4gSSBhbHJlYWR5IGhhdmUgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgUENTIGFyY2hpdGVjdHVyZSwgYW5kIEkgdW5kZXJzdGFuZCB0aGUgUlpOMSBwbGF0Zm9ybSdzIG5ldHdvcmsgaW50ZXJmYWNlLiBOb3cgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBkcml2ZXIgZml0cyBpbnRvIHRoYXQgbGFyZ2VyIHBpY3R1cmUuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSBDb250cm9sbGVyIChNSUlDKSBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoIHRoZSBQQ1MgKFBoeXNpY2FsIENvZGluZyBTdWJsYXllcikgd2l0aGluIHRoZSBSWk4xIHN5c3RlbS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgY3J1Y2lhbCBiaXRzOiBob3cgaXQgaW5pdGlhbGl6ZXMgdGhlIE1JSUMsIG1hbmFnZXMgcmVnaXN0ZXIgYWNjZXNzLCBoYW5kbGVzIGludGVycnVwdCByb3V0aW5lcywgYW5kIGlmIGl0IGludGVyYWN0cyB3aXRoIGFueSBvdGhlciByZWxhdGVkIGRyaXZlcnMgb3IgY29tcG9uZW50cy4gSSB3aWxsIGJlIGxvb2tpbmcgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSB1bmNvbnZlbnRpb25hbCBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbiBiZSBpbXByb3ZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc2MiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NTEuNzA0OTA0MjQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMwOlxcdFxcdC5taWljX3BvcnRfbWF4ID0gNSxcXG4gODMxOlxcdFxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxcbiA4MzI6XFx0XFx0LmluaXRfdW5sb2NrX2xvY2tfcmVncyA9IHRydWUsXFxuIDgzMzpcXHRcXHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF91bmxvY2tlZCxcXG4gODM0OlxcdFxcdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXFxuIDgzNTpcXHR9O1xcbiA4MzY6XFx0XFxuIDgzNzpcXHRzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XFxuIDgzODpcXHRcXHQubWF0Y2hfdGFibGUgPSByenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlLFxcbiA4Mzk6XFx0XFx0Lm1hdGNoX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9tb2RjdHJsX21hdGNoX3RhYmxlKSxcXG4gODQwOlxcdFxcdC5jb25mX2NvbnZfY291bnQgPSA1LFxcbiA4NDE6XFx0XFx0LmNvbmZfdG9fc3RyaW5nID0gcnp0MmhfY29uZl90b19zdHJpbmcsXFxuIDg0MjpcXHRcXHQuY29uZl90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2NvbmZfdG9fc3RyaW5nKSxcXG4gODQzOlxcdFxcdC5pbmRleF90b19zdHJpbmcgPSByenQyaF9pbmRleF90b19zdHJpbmcsXFxuIDg0NDpcXHRcXHQuaW5kZXhfdG9fc3RyaW5nX2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9pbmRleF90b19zdHJpbmcpLFxcbiA4NDU6XFx0XFx0Lm1paWNfcG9ydF9zdGFydCA9IDAsXFxuIDg0NjpcXHRcXHQubWlpY19wb3J0X21heCA9IDQsXFxuIDg0NzpcXHRcXHQuc3dfbW9kZV9tYXNrID0gR0VOTUFTSygyLCAwKSxcXG4gODQ4OlxcdFxcdC5yZXNldF9pZHMgPSByenQyaF9yZXNldF9pZHMsXFxuIDg0OTpcXHRcXHQucmVzZXRfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX3Jlc2V0X2lkcyksXFxuIDg1MDpcXHRcXHQubWlpY193cml0ZSA9IG1paWNfcmVnX3dyaXRlbF9sb2NrZWQsXFxuIDg1MTpcXHRcXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcXG4gODUyOlxcdH07XFxuIDg1MzpcXHRcXG4gODU0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XFxuIDg1NTpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlbmVzYXMscjlhMDlnMDc3LW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyenQyaF9taWljX29mX2RhdGEgfSxcXG4gODU2OlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVuZXNhcyxyem4xLW1paWNcXFwiLCAuZGF0YSA9IFxcdTAwMjZyem4xX21paWNfb2ZfZGF0YSB9LFxcbiA4NTc6XFx0XFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuIDg1ODpcXHR9O1xcbiA4NTk6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWlpY19vZl9tdGFibGUpO1xcbiA4NjA6XFx0XFxuIDg2MTpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtaWljX2RyaXZlciA9IHtcXG4gODYyOlxcdFxcdC5kcml2ZXIgPSB7XFxuIDg2MzpcXHRcXHRcXHQubmFtZVxcdCA9IFxcXCJyem4xX21paWNcXFwiLFxcbiA4NjQ6XFx0XFx0XFx0LnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLFxcbiA4NjU6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gbWlpY19vZl9tdGFibGUsXFxuIDg2NjpcXHRcXHR9LFxcbiA4Njc6XFx0XFx0LnByb2JlID0gbWlpY19wcm9iZSxcXG4gODY4OlxcdFxcdC5yZW1vdmUgPSBtaWljX3JlbW92ZSxcXG4gODY5OlxcdH07XFxuIDg3MDpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1paWNfZHJpdmVyKTtcXG4gODcxOlxcdFxcbiA4NzI6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbiA4NzM6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJSZW5lc2FzIE1JSSBjb252ZXJ0ZXIgUENTIGRyaXZlclxcXCIpO1xcbiA4NzQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiQ2zDqW1lbnQgTMOpZ2VyIFxcdTAwM2NjbGVtZW50LmxlZ2VyQGJvb3RsaW4uY29tXFx1MDAzZVxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wM1QxNjoxNTo1MS43MDQ5OTA4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyNzAyOTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyJ3MgUmVhY2hhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGRyaXZlciBpdHNlbGY6IEl0J3MgdGFyZ2V0aW5nIGBhbWQ2NGAsIGJ1dCBpdCdzIHNwZWNpZmljYWxseSBmb3IgYSBSZW5lc2FzIE1JSSBjb252ZXJ0ZXIgb24gdGhlaXIgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0NzLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCByYWlzZXMgYSByZWQgZmxhZy4gVGhlIGRyaXZlcidzIGBvZl9tYXRjaF90YWJsZWAgbG9va3MgZm9yIFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1wiIGFuZCBcInJlbmVzYXMscnpuMS1taWljXCIuIFNlZW1zIHByZXR0eSBjbGVhciBpdCdzIG1lYW50IGZvciB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb21wYXRpYmxlcy5cblxuVGhlbiB0aGVyZSdzIGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWAuIFRoYXQncyBpbXBvcnRhbnQuIEl0J3MgZXNzZW50aWFsbHkgbG9ja2VkIGRvd247IHVzZXJzcGFjZSBjYW4ndCBldmVuIG1lc3Mgd2l0aCBpdHMgYmluZGluZy4gVGhpcyBzdWdnZXN0cyBhIHRpZ2h0IGNvdXBsaW5nIHRvIHRoZSBoYXJkd2FyZS4gQW5kLCByZWluZm9yY2luZyB0aGF0IGlkZWEsIGl0IG5lZWRzIHNwZWNpZmljIG1lbW9yeSByZXNvdXJjZXMgYW5kIHJlc2V0IGNvbnRyb2xsZXJzIHRoYXQgYXJlIGludGVncmFsIHBhcnRzIG9mIHRoZSBSZW5lc2FzIFNvQ3MuXG5cbk5vdywgdGhlIGJpZyBxdWVzdGlvbjogY2FuIHRoaXMgaGFyZHdhcmUgYmUgc2ltdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyIGVudmlyb25tZW50cz8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgbm8uIFRoaXMgaXMgYW4gZW1iZWRkZWQgZXRoZXJuZXQgUENTL01JSSBjb252ZXJ0ZXIgdGFpbG9yZWQgc3BlY2lmaWNhbGx5IGZvciB0aGVzZSBBUk0gU29Dcy5cblxuU28sIGFjY29yZGluZyB0byBTZWN0aW9uIDIgb2YgdGhlIHByb21wdCwgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGFuZCBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoc1wiIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseTpcbiogICBJdCdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLlxuKiAgIFRoZSBjb2RlIHBhdGhzIGhlcmUgYXJlIGV4Y2x1c2l2ZSB0byBBUk0gYW5kIGFyZSBiYXNlZCBvbiBlbWJlZGRlZCBTb0NzLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbGlua2FnZXMgb3IgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgaWYgYW55b25lIGNhbGxzIG9yIHVzZXMgYHBjcy1yem4xLW1paWNgIGluIGNvcmUgY29kZSBvciBldmVuIHZpcnR1YWwgYnVzZXMsIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIG90aGVyIGludGVyZXN0aW5nIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkwMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE1OjU2LjczMjAyMzA1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MTQ2NDE2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY3MtcnpuMS1taWljfG1paWNfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw9MTc9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjQtICAgIGRlc2NyaXB0aW9uOiBNSUkgU3dpdGNoIFBPUlRJTiBjb25maWd1cmF0aW9uLiBUaGlzIHZhbHVlIHNob3VsZCB1c2Ugb25lIG9mXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbDo2NTogICAgICB0aGUgdmFsdWVzIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaCBmb3IgUlovTjEgU29DIGFuZFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwtNjYtICAgICAgaW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcmVuZXNhcyxyOWEwOWcwNzctcGNzLW1paWMuaCBmb3IgUlovTjJILCBSWi9UMkggU29Dcy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw9NzM9cGF0dGVyblByb3BlcnRpZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTg0LSAgICAgICAgZGVzY3JpcHRpb246IENvbnZlcnRlciBpbnB1dCBwb3J0IGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgc2hvdWxkIHVzZVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6ODU6ICAgICAgICAgIG9uZSBvZiB0aGUgdmFsdWVzIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaCBmb3IgUlovTjEgU29DXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9wY3MvcmVuZXNhcyxyem4xLW1paWMueWFtbC04Ni0gICAgICAgICAgYW5kIGluY2x1ZGUvZHQtYmluZGluZ3MvbmV0L3JlbmVzYXMscjlhMDlnMDc3LXBjcy1taWljLmggZm9yIFJaL04ySCwgUlovVDJIIFNvQ3MuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sPTIxNz1leGFtcGxlczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIxOC0gIC0gfFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWw6MjE5OiAgICAjaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvbmV0L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Bjcy9yZW5lc2FzLHJ6bjEtbWlpYy55YW1sLTIyMC0gICAgI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2Nsb2NrL3I5YTA2ZzAzMi1zeXNjdHJsLmhcXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0yMzI3ND1GOlxcdGRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3Klxcbk1BSU5UQUlORVJTOjIzMjc1OkY6XFx0ZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY1xcbk1BSU5UQUlORVJTOjIzMjc2OkY6XFx0aW5jbHVkZS9kdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFxuTUFJTlRBSU5FUlM6MjMyNzc6RjpcXHRpbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcbk1BSU5UQUlORVJTLTIzMjc4LUY6XFx0bmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9yZW5lc2FzL3I5YTA2ZzAzMi1yem4xZDQwMC1kYi5kdHMtMTMtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL2xlZHMvY29tbW9uLmhcXHUwMDNlXFxuYXJjaC9hcm0vYm9vdC9kdHMvcmVuZXNhcy9yOWEwNmcwMzItcnpuMWQ0MDAtZGIuZHRzOjE0OiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmFyY2gvYXJtL2Jvb3QvZHRzL3JlbmVzYXMvcjlhMDZnMDMyLXJ6bjFkNDAwLWRiLmR0cy0xNS0jaW5jbHVkZSBcXHUwMDNjZHQtYmluZGluZ3MvcGluY3RybC9yem4xLXBpbmN0cmwuaFxcdTAwM2VcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k9NDg9XFx0ZXRoZXJuZXRAZTIwMDAge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaS01My1cXHRcXHRwdHAtdGltZXIgPSBcXHUwMDNjXFx1MDAyNnB0cF90aW1lcjFcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k6NTQ6XFx0XFx0cGNzcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGNzcGh5OVxcdTAwM2UsIFxcdTAwM2NcXHUwMDI2cXNnbWlpY19wY3MxXFx1MDAzZTtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTU1LVxcdFxcdHBjcy1oYW5kbGUtbmFtZXMgPSBcXFwic2dtaWlcXFwiLCBcXFwicXNnbWlpXFxcIjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0xLmR0c2k9NTg9XFx0bWRpb0BlMTAwMCB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTEuZHRzaTo1OTpcXHRcXHRxc2dtaWljX3BjczE6IGV0aGVybmV0LXBjc0AxIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMS5kdHNpLTYwLVxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiZnNsLGx5bngtcGNzXFxcIjtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k9NDg9XFx0ZXRoZXJuZXRAZTQwMDAge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS01My1cXHRcXHRwdHAtdGltZXIgPSBcXHUwMDNjXFx1MDAyNnB0cF90aW1lcjFcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k6NTQ6XFx0XFx0cGNzcGh5LWhhbmRsZSA9IFxcdTAwM2NcXHUwMDI2cGNzcGh5MTBcXHUwMDNlLCBcXHUwMDNjXFx1MDAyNnFzZ21paWNfcGNzMlxcdTAwM2U7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS01NS1cXHRcXHRwY3MtaGFuZGxlLW5hbWVzID0gXFxcInNnbWlpXFxcIiwgXFxcInFzZ21paVxcXCI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMi5kdHNpPTU4PVxcdG1kaW9AZTEwMDAge1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0yLmR0c2k6NTk6XFx0XFx0cXNnbWlpY19wY3MyOiBldGhlcm5ldC1wY3NAMiB7XFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTIuZHRzaS02MC1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxseW54LXBjc1xcXCI7XFxuLS1cXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpPTQ4PVxcdGV0aGVybmV0QGU2MDAwIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTMtXFx0XFx0cHRwLXRpbWVyID0gXFx1MDAzY1xcdTAwMjZwdHBfdGltZXIxXFx1MDAzZTtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU0OlxcdFxcdHBjc3BoeS1oYW5kbGUgPSBcXHUwMDNjXFx1MDAyNnBjc3BoeTExXFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZxc2dtaWljX3BjczNcXHUwMDNlO1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNTUtXFx0XFx0cGNzLWhhbmRsZS1uYW1lcyA9IFxcXCJzZ21paVxcXCIsIFxcXCJxc2dtaWlcXFwiO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL2ZzbC9xb3JpcS1mbWFuMy0xLTFnLTMuZHRzaT01OD1cXHRtZGlvQGUxMDAwIHtcXG5hcmNoL3Bvd2VycGMvYm9vdC9kdHMvZnNsL3FvcmlxLWZtYW4zLTEtMWctMy5kdHNpOjU5OlxcdFxcdHFzZ21paWNfcGNzMzogZXRoZXJuZXQtcGNzQDMge1xcbmFyY2gvcG93ZXJwYy9ib290L2R0cy9mc2wvcW9yaXEtZm1hbjMtMS0xZy0zLmR0c2ktNjAtXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmc2wsbHlueC1wY3NcXFwiO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTQ3PXN0YXRpYyB2b2lkIGE1cHN3X3Bjc19mcmVlKHN0cnVjdCBhNXBzdyAqYTVwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNTItXFx0XFx0aWYgKGE1cHN3LVxcdTAwM2VwY3NbaV0pXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYzoxMTUzOlxcdFxcdFxcdG1paWNfZGVzdHJveShhNXBzdy1cXHUwMDNlcGNzW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYz0xMTU3PXN0YXRpYyBpbnQgYTVwc3dfcGNzX2dldChzdHJ1Y3QgYTVwc3cgKmE1cHN3KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE4MzpcXHRcXHRwY3MgPSBtaWljX2NyZWF0ZShhNXBzdy1cXHUwMDNlZGV2LCBwY3Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTg0LVxcdFxcdGlmIChJU19FUlIocGNzKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaC0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmgtMTYtI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1yem4xLW1paWMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTYzPXN0YXRpYyBpbnQgcmVuZXNhc19nbWFjX3Bjc19pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy03MC1cXHRpZiAocGNzX25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6NzE6XFx0XFx0cGNzID0gbWlpY19jcmVhdGUocHJpdi1cXHUwMDNlZGV2aWNlLCBwY3Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTcyLVxcdFxcdG9mX25vZGVfcHV0KHBjc19ub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz04Mj1zdGF0aWMgdm9pZCByZW5lc2FzX2dtYWNfcGNzX2V4aXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTg0LVxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjg1OlxcdFxcdG1paWNfZGVzdHJveShwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy04Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6OTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTE2PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMjQtXFx0aWYgKHBjc19ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjI1OlxcdFxcdHBjcyA9IG1paWNfY3JlYXRlKHByaXYtXFx1MDAzZWRldmljZSwgcGNzX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy0yNi1cXHRcXHRvZl9ub2RlX3B1dChwY3Nfbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9MzY9c3RhdGljIHZvaWQgcnpuMV9kd21hY19wY3NfZXhpdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtMzgtXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3BjcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6Mzk6XFx0XFx0bWlpY19kZXN0cm95KHByaXYtXFx1MDAzZWh3LVxcdTAwM2VwaHlsaW5rX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfUENTX1JaTjFfTUlJQylcXHQrPSBwY3MtcnpuMS1taWljLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX3BsYXRmb3JtLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BoeWxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzOiNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjQtI2luY2x1ZGUgXFx1MDAzY2R0LWJpbmRpbmdzL25ldC9yZW5lc2FzLHI5YTA5ZzA3Ny1wY3MtbWlpYy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYz0xNzc9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByenQyaF9yZXNldF9pZHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTgyLS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTgzOiAqIHN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyAtIE1JSUMgUEhZX0xJTksgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg0LSAqIEBtYXNrOiBNYXNrIG9mIHBoeV9saW5rIGJpdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMTg2LSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MTg3OnN0cnVjdCBtaWljX3BoeV9saW5rX2NmZyB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0xODgtXFx0dTMyIG1hc2s7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jPTIwMT1zdHJ1Y3QgbWlpYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwNS1cXHRzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgcnN0c1tNSUlDX01BWF9OVU1fUlNUU107XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMDY6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIwNzpcXHRzdHJ1Y3QgbWlpY19waHlfbGlua19jZmcgbGlua19jZmc7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMDgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIwOS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxMDplbnVtIG1paWNfdHlwZSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yMTEtXFx0TUlJQ19UWVBFX1JaTjEsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIxNS0vKipcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIxNjogKiBzdHJ1Y3QgbWlpY19vZl9kYXRhIC0gT0YgZGF0YSBmb3IgTUlJIGNvbnZlcnRlclxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjE3LSAqIEBtYXRjaF90YWJsZTogTWF0Y2hpbmcgdGFibGUgZm9yIGNvbnZjdHJsIGNvbmZpZ3VyYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjIzLSAqIEBpbmRleF90b19zdHJpbmdfY291bnQ6IE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBpbmRleF90b19zdHJpbmcgYXJyYXlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIyNDogKiBAbWlpY19wb3J0X3N0YXJ0OiBNSUlDIHBvcnQgc3RhcnQgbnVtYmVyXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyMjU6ICogQG1paWNfcG9ydF9tYXg6IE1heGltdW0gTUlJQyBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIyNi0gKiBAc3dfbW9kZV9tYXNrOiBTd2l0Y2ggbW9kZSBtYXNrXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMC0gKiAgYmVmb3JlIGFjY2Vzcy5cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzMTogKiBAbWlpY193cml0ZTogRnVuY3Rpb24gcG9pbnRlciB0byB3cml0ZSBhIHZhbHVlIHRvIGEgTUlJQyByZWdpc3RlclxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjMyLSAqIEB0eXBlOiBUeXBlIG9mIE1JSUNcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzMy0gKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjIzNDpzdHJ1Y3QgbWlpY19vZl9kYXRhIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTIzNS1cXHRzdHJ1Y3QgbW9kY3RybF9tYXRjaCAqbWF0Y2hfdGFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI0MS1cXHR1OCBpbmRleF90b19zdHJpbmdfY291bnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDI6XFx0dTggbWlpY19wb3J0X3N0YXJ0O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQzOlxcdHU4IG1paWNfcG9ydF9tYXg7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDQtXFx0dTggc3dfbW9kZV9tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNDctXFx0Ym9vbCBpbml0X3VubG9ja19sb2NrX3JlZ3M7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNDg6XFx0dm9pZCAoKm1paWNfd3JpdGUpKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjQ5OlxcdGVudW0gbWlpY190eXBlIHR5cGU7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNTAtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjUyLS8qKlxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjUzOiAqIHN0cnVjdCBtaWljX3BvcnQgLSBQZXIgcG9ydCBNSUkgY29udmVydGVyIHN0cnVjdFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU0LSAqIEBtaWljOiBiYWNraWxpbmcgdG8gTUlJIGNvbnZlcnRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjU4LSAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjU5OnN0cnVjdCBtaWljX3BvcnQge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjYwLVxcdHN0cnVjdCBtaWljICptaWljO1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjY6c3RhdGljIHN0cnVjdCBtaWljX3BvcnQgKnBoeWxpbmtfcGNzX3RvX21paWNfcG9ydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTI2Ny17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyNjg6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtaWljX3BvcnQsIHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNjktfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MjcxOnN0YXRpYyB2b2lkIG1paWNfdW5sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yNzktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODA6c3RhdGljIHZvaWQgbWlpY19sb2NrX3JlZ3Moc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyODY6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yODcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTE6c3RhdGljIHZvaWQgbWlpY19yZWdfd3JpdGVsX2xvY2tlZChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjkyLXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjI5MzpcXHRtaWljX3VubG9ja19yZWdzKG1paWMpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk0LVxcdHdyaXRlbCh2YWx1ZSwgbWlpYy1cXHUwMDNlYmFzZSArIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzoyOTU6XFx0bWlpY19sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0yOTYtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6Mjk4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3dyaXRlbChzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMjk5LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwMDpcXHRtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3dyaXRlKG1paWMsIG9mZnNldCwgdmFsdWUpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzAxLX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMwMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMwMzpzdGF0aWMgdTMyIG1paWNfcmVnX3JlYWRsKHN0cnVjdCBtaWljICptaWljLCBpbnQgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzA3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzA4OnN0YXRpYyB2b2lkIG1paWNfcmVnX3JtdyhzdHJ1Y3QgbWlpYyAqbWlpYywgaW50IG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTMtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMTQ6XFx0cmVnID0gbWlpY19yZWdfcmVhZGwobWlpYywgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMxNS1cXHRyZWcgXFx1MDAyNj0gfm1hc2s7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMTYtXFx0cmVnIHw9IHZhbDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMxNzpcXHRtaWljX3JlZ193cml0ZWwobWlpYywgb2Zmc2V0LCByZWcpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMjEtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMjI6c3RhdGljIHZvaWQgbWlpY19jb252ZXJ0ZXJfZW5hYmxlKHN0cnVjdCBtaWljICptaWljLCBpbnQgcG9ydCwgaW50IGVuYWJsZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMyOC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMyOTpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WUlNULCBNSUlDX0NPTlZSU1RfUEhZSUZfUlNUKHBvcnQpLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzMwLX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzMjpzdGF0aWMgaW50IG1paWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzMtXFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTMzNS17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzY6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozMzc6XFx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXFx1MDAzZW1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zMzgtXFx0dTMyIHNwZWVkLCBjb252X21vZGUsIHZhbCwgbWFzaztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjMzOTpcXHRpbnQgcG9ydCA9IG1paWNfcG9ydC1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzcwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6MzcxOlxcdGlmIChpbnRlcmZhY2UgIT0gbWlpY19wb3J0LVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3Mi1cXHRcXHR2YWwgfD0gRklFTERfUFJFUChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3My1cXHRcXHRtYXNrIHw9IE1JSUNfQ09OVkNUUkxfQ09OVl9TUEVFRDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM3NDpcXHRcXHRtaWljX3BvcnQtXFx1MDAzZWludGVyZmFjZSA9IGludGVyZmFjZTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM3NS1cXHR9XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzc6XFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfQ09OVkNUUkwocG9ydCksIG1hc2ssIHZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozNzg6XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIG1paWNfcG9ydC1cXHUwMDNlcG9ydCwgMSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zNzktXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4MzpzdGF0aWMgdm9pZCBtaWljX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4NC1cXHRcXHRcXHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwgaW50IHNwZWVkLCBpbnQgZHVwbGV4KVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtMzg1LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NjpcXHRzdHJ1Y3QgbWlpY19wb3J0ICptaWljX3BvcnQgPSBwaHlsaW5rX3Bjc190b19taWljX3BvcnQocGNzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjM4NzpcXHRzdHJ1Y3QgbWlpYyAqbWlpYyA9IG1paWNfcG9ydC1cXHUwMDNlbWlpYztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTM4OC1cXHR1MzIgY29udl9zcGVlZCA9IDAsIHZhbCA9IDA7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzozODk6XFx0aW50IHBvcnQgPSBtaWljX3BvcnQtXFx1MDAzZXBvcnQ7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy0zOTAtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQxMzpcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChwb3J0KSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxNC1cXHRcXHQgICAgIChNSUlDX0NPTlZDVFJMX0NPTlZfU1BFRUQgfCBNSUlDX0NPTlZDVFJMX0ZVTExEKSwgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDE2LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDE3OnN0YXRpYyBpbnQgbWlpY19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQxOC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MTk6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0MjA6XFx0c3RydWN0IG1paWMgKm1paWMgPSBtaWljX3BvcnQtXFx1MDAzZW1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MjEtXFx0dTMyIHZhbCwgbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDI5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDMwOlxcdFxcdG1paWNfcG9ydC1cXHUwMDNlaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQzNS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQzNjpcXHRcXHRtaWljX3JlZ19ybXcobWlpYywgTUlJQ19DT05WQ1RSTChtaWljX3BvcnQtXFx1MDAzZXBvcnQpLCBtYXNrLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDM4OlxcdFxcdG1paWNfY29udmVydGVyX2VuYWJsZShtaWljLCBtaWljX3BvcnQtXFx1MDAzZXBvcnQsIDEpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDM5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDQzLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1paWNfcGh5bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDU6XFx0LnBjc19jb25maWcgPSBtaWljX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ0NjpcXHQucGNzX2xpbmtfdXAgPSBtaWljX2xpbmtfdXAsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NDc6XFx0LnBjc19wcmVfaW5pdCA9IG1paWNfcHJlX2luaXQsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00NDgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ0OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjQ1MDpzdHJ1Y3QgcGh5bGlua19wY3MgKm1paWNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1MS17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo0NTI6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1My1cXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2O1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDU0OlxcdHN0cnVjdCBtaWljX3BvcnQgKm1paWNfcG9ydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTQ1NS1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKnBjc19ucDtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg0LVxcdG9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDg1OlxcdGlmIChwb3J0IFxcdTAwM2Ugb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCB8fCBwb3J0IFxcdTAwM2Mgb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X3N0YXJ0KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00ODYtXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDg5LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkwOlxcdG1paWNfcG9ydCA9IGt6YWxsb2Nfb2JqKCptaWljX3BvcnQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDkxOlxcdGlmICghbWlpY19wb3J0KSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy00OTItXFx0XFx0cHV0X2RldmljZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNDk4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NDk5OlxcdG1paWNfcG9ydC1cXHUwMDNlbWlpYyA9IG1paWM7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDA6XFx0bWlpY19wb3J0LVxcdTAwM2Vwb3J0ID0gcG9ydCAtIG9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydDtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMTpcXHRtaWljX3BvcnQtXFx1MDAzZXBjcy5vcHMgPSBcXHUwMDI2bWlpY19waHlsaW5rX29wcztcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwMzpcXHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShtaWljX3BvcnQtXFx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDQ6XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJLCBtaWljX3BvcnQtXFx1MDAzZXBjcy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MDU6XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIG1paWNfcG9ydC1cXHUwMDNlcGNzLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUwNi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwNzpcXHRyZXR1cm4gXFx1MDAyNm1paWNfcG9ydC1cXHUwMDNlcGNzO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTA4LX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUwOTpFWFBPUlRfU1lNQk9MKG1paWNfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxMTp2b2lkIG1paWNfZGVzdHJveShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUxMi17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTM6XFx0c3RydWN0IG1paWNfcG9ydCAqbWlpY19wb3J0ID0gcGh5bGlua19wY3NfdG9fbWlpY19wb3J0KHBjcyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MTU6XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWNfcG9ydC1cXHUwMDNlbWlpYywgbWlpY19wb3J0LVxcdTAwM2Vwb3J0LCAwKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxNjpcXHRrZnJlZShtaWljX3BvcnQpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTE3LX1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUxODpFWFBPUlRfU1lNQk9MKG1paWNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MTktXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1MjA6c3RhdGljIGludCBtaWljX2luaXRfaHcoc3RydWN0IG1paWMgKm1paWMsIHUzMiBjZmdfbW9kZSlcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUyOS1cXHRpZiAobWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlaW5pdF91bmxvY2tfbG9ja19yZWdzKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTMwOlxcdFxcdG1paWNfdW5sb2NrX3JlZ3MobWlpYyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzNTpcXHRtaWljX3JlZ193cml0ZWwobWlpYywgTUlJQ19NT0RDVFJMLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTM2LVxcdFxcdFxcdCgoY2ZnX21vZGUgXFx1MDAzY1xcdTAwM2MgX19mZnMoc3dfbW9kZV9tYXNrKSkgXFx1MDAyNiBzd19tb2RlX21hc2spKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTUzNy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjUzODpcXHRmb3IgKHBvcnQgPSAwOyBwb3J0IFxcdTAwM2MgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heDsgcG9ydCsrKSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1Mzk6XFx0XFx0bWlpY19jb252ZXJ0ZXJfZW5hYmxlKG1paWMsIHBvcnQsIDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTQwLVxcdFxcdC8qIERpc2FibGUgc3BlZWQvZHVwbGV4IGNvbnRyb2wgZnJvbSB0aGVzZSByZWdpc3RlcnMsIGRhdGFzaGVldFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NDMtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NDQ6XFx0XFx0bWlpY19yZWdfd3JpdGVsKG1paWMsIE1JSUNfU1dDVFJMLCAweDApO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NTQ1OlxcdFxcdG1paWNfcmVnX3dyaXRlbChtaWljLCBNSUlDX1NXRFVQQywgMHgwKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU0Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU1MC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU1MTpzdGF0aWMgYm9vbCBtaWljX21vZGN0cmxfbWF0Y2goczggKnRhYmxlX3ZhbCwgczggKmR0X3ZhbCwgdTggY291bnQpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01NjUtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1NjY6c3RhdGljIHZvaWQgbWlpY19kdW1wX2NvbmYoc3RydWN0IG1paWMgKm1paWMsIHM4ICpjb25mKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTY3LXtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU2ODpcXHRjb25zdCBzdHJ1Y3QgbWlpY19vZl9kYXRhICpvZl9kYXRhID0gbWlpYy1cXHUwMDNlb2ZfZGF0YTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU2OS1cXHRjb25zdCBjaGFyICpjb25mX25hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjU4MzpzdGF0aWMgaW50IG1paWNfbWF0Y2hfZHRfY29uZihzdHJ1Y3QgbWlpYyAqbWlpYywgczggKmR0X3ZhbCwgdTMyICptb2RlX2NmZylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1ODU6XFx0Y29uc3Qgc3RydWN0IG1paWNfb2ZfZGF0YSAqb2ZfZGF0YSA9IG1paWMtXFx1MDAzZW9mX2RhdGE7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01ODYtXFx0c3RydWN0IG1vZGN0cmxfbWF0Y2ggKnRhYmxlX2VudHJ5O1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy01OTEtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo1OTI6XFx0XFx0aWYgKG1paWNfbW9kY3RybF9tYXRjaCh0YWJsZV9lbnRyeS1cXHUwMDNlY29udiwgZHRfdmFsLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNTkzLVxcdFxcdFxcdFxcdCAgICAgICBtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2Vjb25mX2NvbnZfY291bnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTU5OS1cXHRkZXZfZXJyKG1paWMtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBhcHBseSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo2MDA6XFx0bWlpY19kdW1wX2NvbmYobWlpYywgZHRfdmFsKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjA0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjA1OnN0YXRpYyB2b2lkIG1paWNfY29uZmlndXJlX3BoeV9saW5rKHN0cnVjdCBtaWljICptaWljLCB1MzIgY29uZixcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTYwNi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIGJvb2wgYWN0aXZlX2xvdylcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjcyLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NjczOnN0YXRpYyBpbnQgbWlpY19wYXJzZV9kdChzdHJ1Y3QgbWlpYyAqbWlpYywgdTMyICptb2RlX2NmZylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTY5NC1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjY5NTpcXHRcXHRpZiAocG9ydCBcXHUwMDNjIG1paWMtXFx1MDAzZW9mX2RhdGEtXFx1MDAzZW1paWNfcG9ydF9zdGFydCB8fCBwb3J0IFxcdTAwM2UgbWlpYy1cXHUwMDNlb2ZfZGF0YS1cXHUwMDNlbWlpY19wb3J0X21heCkge1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNjk2LVxcdFxcdFxcdGRldl9lcnIobWlpYy1cXHUwMDNlZGV2LCBcXFwiUG9ydCBudW1iZXIgb3V0IG9mIHJhbmdlOiAlZFxcXFxuXFxcIiwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNC1cXHRcXHQvKiBBZGp1c3QgZm9yIDAgYmFzZWQgaW5kZXggKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcwNTpcXHRcXHRkdF92YWxbcG9ydCArICFtaWljLVxcdTAwM2VvZl9kYXRhLVxcdTAwM2VtaWljX3BvcnRfc3RhcnRdID0gY29uZjtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzA4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzA5OlxcdFxcdG1paWNfY29uZmlndXJlX3BoeV9saW5rKG1paWMsIGNvbmYsIHBvcnQsIGFjdGl2ZV9sb3cpO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzEwLVxcdH1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTcxMS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjcxMjpcXHRyZXQgPSBtaWljX21hdGNoX2R0X2NvbmYobWlpYywgZHRfdmFsLCBtb2RlX2NmZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03MTMtXFx0a2ZyZWUoZHRfdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzE4OnN0YXRpYyB2b2lkIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCh2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzI4OnN0YXRpYyBpbnQgbWlpY19yZXNldF9jb250cm9sX2luaXQoc3RydWN0IG1paWMgKm1paWMpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03Mjkte1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzMwOlxcdGNvbnN0IHN0cnVjdCBtaWljX29mX2RhdGEgKm9mX2RhdGEgPSBtaWljLVxcdTAwM2VvZl9kYXRhO1xcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzMxLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IG1paWMtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtNzUxLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6NzUyOlxcdHJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIG1paWNfcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1My1cXHRcXHRcXHRcXHQgICAgICAgbWlpYyk7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc1OS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc2MDpzdGF0aWMgaW50IG1paWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc2MS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc3My1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc3NDpcXHRyZXQgPSBtaWljX3BhcnNlX2R0KG1paWMsIFxcdTAwMjZtb2RlX2NmZyk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03NzUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4Mi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjc4MzpcXHRyZXQgPSBtaWljX3Jlc2V0X2NvbnRyb2xfaW5pdChtaWljKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc4NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTQtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3OTU6XFx0cmV0ID0gbWlpY19pbml0X2h3KG1paWMsIG1vZGVfY2ZnKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTc5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy03OTgtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo3OTk6XFx0bWlpY19yZWdfcm13KG1paWMsIE1JSUNfUEhZX0xJTkssIG1paWMtXFx1MDAzZWxpbmtfY2ZnLm1hc2ssIG1paWMtXFx1MDAzZWxpbmtfY2ZnLnZhbCk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MDE6XFx0LyogbWlpY19jcmVhdGUoKSByZWxpZXMgb24gdGhhdCBmYWN0IHRoYXQgZGF0YSBhcmUgYXR0YWNoZWQgdG8gdGhlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MDItXFx0ICogcGxhdGZvcm0gZGV2aWNlIHRvIGRldGVybWluZSBpZiB0aGUgZHJpdmVyIGlzIHJlYWR5IHNvIHRoaXMgbmVlZHMgdG9cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODE1LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODE2OnN0YXRpYyB2b2lkIG1paWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MjE6c3RhdGljIHN0cnVjdCBtaWljX29mX2RhdGEgcnpuMV9taWljX29mX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MjItXFx0Lm1hdGNoX3RhYmxlID0gbW9kY3RybF9tYXRjaF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODI4LVxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKGluZGV4X3RvX3N0cmluZyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Mjk6XFx0Lm1paWNfcG9ydF9zdGFydCA9IDEsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4MzA6XFx0Lm1paWNfcG9ydF9tYXggPSA1LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMxLVxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDQsIDApLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODMyLVxcdC5pbml0X3VubG9ja19sb2NrX3JlZ3MgPSB0cnVlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODMzOlxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX3VubG9ja2VkLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODM0LVxcdC50eXBlID0gTUlJQ19UWVBFX1JaTjEsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTgzNi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjgzNzpzdGF0aWMgc3RydWN0IG1paWNfb2ZfZGF0YSByenQyaF9taWljX29mX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04MzgtXFx0Lm1hdGNoX3RhYmxlID0gcnp0MmhfbW9kY3RybF9tYXRjaF90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ0LVxcdC5pbmRleF90b19zdHJpbmdfY291bnQgPSBBUlJBWV9TSVpFKHJ6dDJoX2luZGV4X3RvX3N0cmluZyksXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDU6XFx0Lm1paWNfcG9ydF9zdGFydCA9IDAsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NDY6XFx0Lm1paWNfcG9ydF9tYXggPSA0LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODQ3LVxcdC5zd19tb2RlX21hc2sgPSBHRU5NQVNLKDIsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NDktXFx0LnJlc2V0X2NvdW50ID0gQVJSQVlfU0laRShyenQyaF9yZXNldF9pZHMpLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODUwOlxcdC5taWljX3dyaXRlID0gbWlpY19yZWdfd3JpdGVsX2xvY2tlZCxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg1MS1cXHQudHlwZSA9IE1JSUNfVFlQRV9SWlQySCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODUzLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODU0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1paWNfb2ZfbXRhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTU6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHI5YTA5ZzA3Ny1taWljXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnp0MmhfbWlpY19vZl9kYXRhIH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NTY6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZW5lc2FzLHJ6bjEtbWlpY1xcXCIsIC5kYXRhID0gXFx1MDAyNnJ6bjFfbWlpY19vZl9kYXRhIH0sXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTctXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NTgtfTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg1OTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaWljX29mX210YWJsZSk7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWlpY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NjItXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY0LVxcdFxcdC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jOjg2NTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtaWljX29mX210YWJsZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLTg2Ni1cXHR9LFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmM6ODY3OlxcdC5wcm9iZSA9IG1paWNfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4Njg6XFx0LnJlbW92ZSA9IG1paWNfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmMtODY5LX07XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYzo4NzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtaWljX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYy04NzEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaD0xMj1zdHJ1Y3QgZGV2aWNlX25vZGU7XFxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmgtMTMtXFxuaW5jbHVkZS9saW51eC9wY3MtcnpuMS1taWljLmg6MTQ6c3RydWN0IHBoeWxpbmtfcGNzICptaWljX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oLTE1LVxcbmluY2x1ZGUvbGludXgvcGNzLXJ6bjEtbWlpYy5oOjE2OnZvaWQgbWlpY19kZXN0cm95KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG5pbmNsdWRlL2xpbnV4L3Bjcy1yem4xLW1paWMuaC0xNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDNUMTY6MTU6NTguOTIzNDkyODY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDc5MzUxNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3Bjcy9wY3MtcnpuMS1taWljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtaWljX3BhcnNlX2R0YCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyB0d28gaXNzdWVzOiBhIGBtZW1zZXRgIGluaXRpYWxpemF0aW9uIGFuZCBhIGJvdW5kcyBjaGVjayBvbiB0aGUgYHBvcnRgIHZhcmlhYmxlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgeDg2L1FFTVUgc3l6a2FsbGVyIHNldHVwLlxuXG5Mb29raW5nIGF0IHRoZSBkZXRhaWxzLCB0aGlzIGBDT05GSUdfUENTX1JaTjFfTUlJQ2AgZHJpdmVyIGlzIHBsYXRmb3JtLXNwZWNpZmljLCBkZXNpZ25lZCBmb3IgUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIFNvQ3MsIHdoaWNoIGFyZSBhbGwgQVJNLWJhc2VkLiAgVGhlIGRyaXZlciByZWxpZXMgb24gRGV2aWNlIFRyZWUgKERUKSBmb3IgcHJvYmluZywgdXNpbmcgc3BlY2lmaWMgXCJyZW5lc2FzLHJ6bjEtbWlpY1wiIG9yIFwicmVuZXNhcyxyOWEwOWcwNzctbWlpY1wiIGNvbXBhdGlibGUgc3RyaW5ncy4gIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIGhhcyBgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlYCwgbWVhbmluZyB3ZSBjYW4ndCBtYW51YWxseSBiaW5kIGl0IHRocm91Z2ggc3lzZnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUgZm9yIHJlYWNoYWJpbGl0eS5cblxuVGhlIGNvcmUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgLyB4ODZfNjQgVk1zIGRvbid0IGVtdWxhdGUgdGhpcyBSZW5lc2FzIGhhcmR3YXJlIG9yIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHRoaXMgZHJpdmVyLiAgU3l6a2FsbGVyIG9uIGFtZDY0IHNpbXBseSAqY2Fubm90KiBpbnN0YW50aWF0ZSBvciBpbnRlcmFjdCB3aXRoIHRoaXMgcGxhdGZvcm0gZGV2aWNlLCBub3QgZHVyaW5nIGJvb3Qgb3IgYXQgcnVudGltZS5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiB4ODYvUUVNVSBzeXprYWxsZXIuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIGFnYWluc3QgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLlxuXG4qICAgKipTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqKjogQ29uZmlybWVkLiBUaGlzIGRyaXZlciBpcyB0aWVkIHRvIHNwZWNpZmljIFJlbmVzYXMgaGFyZHdhcmUgYW5kIG5vdCBlbXVsYXRlZC5cbiogICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocyoqOiBUaGlzIGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSBieSBub3QgYmVpbmcgcmVhY2hhYmxlIGluIHRoZSBmaXJzdCBwbGFjZSBiZWNhdXNlIG9mIHRoZSBoYXJkd2FyZS9hcmNoaXRlY3R1cmUgZGVwZW5kZW5jeSwgY291cGxlZCB3aXRoIERUIGJpbmRpbmcuXG5cbkdpdmVuIGFsbCB0aGlzLCB0aGUgcGF0Y2ggaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZS5cblxuU28sIGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsLCBJJ2xsIHNldDpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgXG4qICAgYFJlYXNvbmluZ2A6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtaWljX3BhcnNlX2R0YCBpbiBgZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuY2AsIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgTUlJIGNvbnZlcnRlciBQaHlzaWNhbCBDb2RpbmcgU3VibGF5ZXIgKFBDUykgb24gUmVuZXNhcyBSWi9OMSwgUlovTjJILCBhbmQgUlovVDJIIEFSTSBTb0NzLiBUaGUgZHJpdmVyIGlzIHByb2JlZCBvbmx5IHZpYSBEZXZpY2UgVHJlZSBvbiBzcGVjaWZpYyBSZW5lc2FzIGhhcmR3YXJlLCBoYXMgc3lzZnMgYmluZCBhdHRyaWJ1dGVzIHN1cHByZXNzZWQgKGBzdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZWApLCBhbmQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Nl82NCBmdXp6aW5nIGVudmlyb25tZW50cy5cIlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gIChlbXB0eSBiZWNhdXNlIHRoZXJlJ3Mgbm90aGluZyB0byBmb2N1cyBvbilcbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAgKGFsc28gZW1wdHksIGFzIG5vIGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBlbmFibGluZyB0aGlzIGRyaXZlciBvbiB4ODYpLlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNDQsIk91dHB1dFRva2VucyI6MTUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE2OjI0LjAwMjg0NjE5OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBEZXZpY2UgVHJlZSBwYXJzaW5nIGxvZ2ljIChtaWljX3BhcnNlX2R0KSBpbiBkcml2ZXJzL25ldC9wY3MvcGNzLXJ6bjEtbWlpYy5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhlIFJlbmVzYXMgUlovTjEsIFJaL04ySCwgYW5kIFJaL1QySCBTb0MgTUlJIGNvbnZlcnRlci4gVGhpcyBkcml2ZXIgaXMgdGllZCB0byBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgaW5zdGFudGlhdGVkIG9ubHkgdmlhIERldmljZSBUcmVlIG5vZGVzIG9uIFJlbmVzYXMgQVJNIFNvQ3MgKHdpdGggc3lzZnMgYmluZGluZyBzdXBwcmVzc2VkKSwgbWFraW5nIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODZfNjQgKGFtZDY0KSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAzVDE2OjE2OjI0LjAwMjg2OTA3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowl6ssh[1] Phase: Running StartedAt: 2026-09-03 16:16:36 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6ssh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-03 16:16:36 +0000 UTC FinishedAt: 2026-09-03 16:16:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}