Name: series-workflowqwmn2 Phase: Failed StartedAt: 2026-09-10 03:49:05 +0000 UTC FinishedAt: 2026-09-10 04:38:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwmn2[0] Phase: Succeeded StartedAt: 2026-09-10 03:49:05 +0000 UTC FinishedAt: 2026-09-10 04:38:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwmn2[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 03:49:05 +0000 UTC FinishedAt: 2026-09-10 04:38:07 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYThlZTUzNGFmNTg1Mzc0NTE5ZTI2NGU5YWYyYWFhN2RjYmNlZmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuaW5kZXggYTk0OTk4NzEyNTk3Ni4uNzFlNzAwMDA4YzIwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuQEAgLTI1NCw2ICYjNDM7MjU0LDcgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5cbiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRpbnQgbmRwb2Zmc2V0O1xuJiM0MztcdGludCBsYXN0X25kcG9mZnNldCA9IDA7XG4gXG4gXHQvKiBDaGVjayBOVEIgaGVhZGVyIGFuZCByZXRyaWV2ZSBmaXJzdCBORFAgb2Zmc2V0ICovXG4gXHRuZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpO1xuQEAgLTI2NSw2ICYjNDM7MjY2LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0LyogUHJvY2VzcyBlYWNoIE5EUCAqL1xuIFx0d2hpbGUgKDEpIHtcbiBcdFx0c3RydWN0IHVzYl9jZGNfbmNtX25kcDE2IG5kcDE2O1xuJiM0MztcbiYjNDM7XHRcdGlmIChuZHBvZmZzZXQgXHUwMDNjPSBsYXN0X25kcG9mZnNldCkge1xuJiM0MztcdFx0XHRuZXRfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O21iaW06IG5vbi1pbmNyZWFzaW5nIE5EUCBvZmZzZXQgKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICBuZHBvZmZzZXQpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGxhc3RfbmRwb2Zmc2V0ID0gbmRwb2Zmc2V0O1xuIFx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XG4gXHRcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xuIFx0XHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xuQEAgLTMyMCw3ICYjNDM7MzI4LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0c2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pO1xuLVx0XHRcdHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcbiYjNDM7XHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuJiM0MztcdFx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYm4pO1xuJiM0MztcdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4mIzQzO1x0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdH1cbiBcbiBcdFx0XHRzd2l0Y2ggKHNrYm4tXHUwMDNlZGF0YVswXSBcdTAwMjYgMHhmMCkge1xuIFx0XHRcdGNhc2UgMHg0MDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgJiM0Mzs0MjAsMTAgQEAgc3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVcbiBcbiBcdHNrYl9jYiA9IFQ3WFhfU0tCX0NCKHNrYik7XG4gXHRuZXRpZl9pZCA9IHNrYl9jYi1cdTAwM2VuZXRpZl9pZHg7XG4mIzQzO1x0aWYgKG5ldGlmX2lkIFx1MDAzZT0gTklDX0RFVl9NQVgpIHtcbiYjNDM7XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4gXHRjY21uaSA9IFJFQURfT05DRShjY21uaV9jdGxiLVx1MDAzZWNjbW5pX2luc3RbbmV0aWZfaWRdKTtcbiBcdGlmICghY2NtbmkpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChRdWFsY29tbSBNSEkgV1dBTiBNQklNIGRyaXZlcikgYW5kIGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIChNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyKS4gQm90aCBkcml2ZXJzIHJlcXVpcmUgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbSBoYXJkd2FyZSAoUXVhbGNvbW0gYW5kIE1lZGlhVGVrIFQ3eHgpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmE4ZWU1MzRhZjU4NTM3NDUxOWUyNjRlOWFmMmFhYTdkY2JjZWZlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA0OjM2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwppbmRleCBhOTQ5OTg3MTI1OTc2Li43MWU3MDAwMDhjMjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwpAQCAtMjU0LDYgJiM0MzsyNTQsNyBAQCBzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbgogc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IG5kcG9mZnNldDsKJiM0MzsJaW50IGxhc3RfbmRwb2Zmc2V0ID0gMDsKIAogCS8qIENoZWNrIE5UQiBoZWFkZXIgYW5kIHJldHJpZXZlIGZpcnN0IE5EUCBvZmZzZXQgKi8KIAluZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpOwpAQCAtMjY1LDYgJiM0MzsyNjYsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJLyogUHJvY2VzcyBlYWNoIE5EUCAqLwogCXdoaWxlICgxKSB7CiAJCXN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiBuZHAxNjsKJiM0MzsKJiM0MzsJCWlmIChuZHBvZmZzZXQgJmx0Oz0gbGFzdF9uZHBvZmZzZXQpIHsKJiM0MzsJCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7bWJpbTogbm9uLWluY3JlYXNpbmcgTkRQIG9mZnNldCAoJXUpXG4mIzM0OywKJiM0MzsJCQkJCSAgICBuZHBvZmZzZXQpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJbGFzdF9uZHBvZmZzZXQgPSBuZHBvZmZzZXQ7CiAJCXN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjsKIAkJc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7CiAJCWludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7CkBAIC0zMjAsNyAmIzQzOzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCQljb250aW51ZTsKIAogCQkJc2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pOwotCQkJc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi0mZ3Q7ZGF0YSwgZGdyYW1fbGVuKTsKJiM0MzsJCQlpZiAoc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi0mZ3Q7ZGF0YSwgZGdyYW1fbGVuKSkgewomIzQzOwkJCQlkZXZfa2ZyZWVfc2tiX2FueShza2JuKTsKJiM0MzsJCQkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0MzsJCQkJdTY0X3N0YXRzX2luYygmYW1wO2xpbmstJmd0O3J4X2Vycm9ycyk7CiYjNDM7CQkJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7bGluay0mZ3Q7cnhfc3luY3ApOwomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCQl9CiAKIAkJCXN3aXRjaCAoc2tibi0mZ3Q7ZGF0YVswXSAmYW1wOyAweGYwKSB7CiAJCQljYXNlIDB4NDA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCkBAIC00MjAsNiAmIzQzOzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idQogCiAJc2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTsKIAluZXRpZl9pZCA9IHNrYl9jYi0mZ3Q7bmV0aWZfaWR4OwomIzQzOwlpZiAobmV0aWZfaWQgJmd0Oz0gTklDX0RFVl9NQVgpIHsKJiM0MzsJCWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWNjbW5pID0gUkVBRF9PTkNFKGNjbW5pX2N0bGItJmd0O2NjbW5pX2luc3RbbmV0aWZfaWRdKTsKIAlpZiAoIWNjbW5pKSB7CiAJCWRldl9rZnJlZV9za2Ioc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkLiBJIHNlZSB0d28gZmlsZXM6IGBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY2AgYW5kIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY2AuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIGRyaXZlcnMgKmRvKi4gSSBrbm93IGBtaGlfd3dhbl9tYmltLmNgIGlzIHRoZSBNSEkgV1dBTiBNQklNIGRyaXZlciwgZGVhbGluZyB3aXRoIE1ISSAoTW9iaWxlIEhvc3QgSW50ZXJmYWNlKSBjb25uZWN0aW9ucyBhbmQgTUJJTSAoTW9iaWxlIEJyb2FkYmFuZCBJbnRlcmZhY2UgTW9kZWwpIGNvbW11bmljYXRpb24sIGFuZCBgdDd4eF9uZXRkZXYuY2AgaXMgdGhlIE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIgZm9yIHRoZSB0N3h4IGNoaXBzZXQuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBhY2Nlc3NpYmlsaXR5IGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgS2NvbmZpZyBvcHRpb25zIGFuZCBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9ucyB0aGF0IHdpbGwgcHJldmVudCBtZSBmcm9tIHVzaW5nIHRoZXNlIGRyaXZlcnMgaW4gbXkgdGVzdHM/IFRoaXMgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC9LY29uZmlnYCDigJMgYXMgd2VsbCBhcyB0aGUgYWNjb21wYW55aW5nIGBNYWtlZmlsZWBzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGV5IGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IHRlc3QgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nj1tZW51IFwmIzM0O1dpcmVsZXNzIFdBTlwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTctXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6ODpjb25maWcgV1dBTlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk6XHR0cmlzdGF0ZSBcJiMzNDtXV0FOIERyaXZlciBDb3JlXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIEdOU1MgfHwgR05TUyA9IG5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMS1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMjpcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFdXQU4gZHJpdmVyIGNvcmUuIFRoaXMgZHJpdmVyXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTM6XHQgIHByb3ZpZGVzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgV1dBTiBkcml2ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxODppZiBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjIxOlx0Ym9vbCBcJiMzNDtXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDsgaWYgRVhQRVJUXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjItXHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI0LVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjI1Olx0ICBFbmFibGVzIGRlYnVnZnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBXV0FOIGNvcmUgYW5kIGRldmljZSBkcml2ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI2LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI3LVx0ICBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlbiB5b3UgY2FuIGZpbmQgdGhlIGRlYnVnIGludGVyZmFjZVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjI4Olx0ICBlbGVtZW50cyBmb3IgZWFjaCBXV0FOIGRldmljZSBpbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNvcnJlc3BvbmRpbmcgdG9cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yOS1cdCAgdGhlIGRldmljZSBuYW1lOiBkZWJ1Z2ZzL3d3YW4vd3dhblguXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzE6Y29uZmlnIFdXQU5fSFdTSU1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozMjpcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBXV0FOIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMzLVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjM0Olx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IFdXQU5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zNS1cdCAgZnJhbWV3b3JrLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo0MDpjb25maWcgTUhJX1dXQU5fQ1RSTFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjQxOlx0dHJpc3RhdGUgXCYjMzQ7TUhJIFdXQU4gY29udHJvbCBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDItXHRkZXBlbmRzIG9uIE1ISV9CVVNcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy00My1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo0NDpcdCAgTUhJIFdXQU4gQ1RSTCBhbGxvd3MgUUNPTS1iYXNlZCBQQ0llIG1vZGVtcyB0byBleHBvc2UgZGlmZmVyZW50IG1vZGVtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDUtXHQgIGNvbnRyb2wgcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFULCBNQklNLCBRTUksIERJQUdcbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NTM6Y29uZmlnIE1ISV9XV0FOX01CSU1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo1NDogICAgICAgIHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTUtICAgICAgICBkZXBlbmRzIG9uIE1ISV9CVVNcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01Ni0gICAgICAgIGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo1NzogICAgICAgICAgTUhJIFdXQU4gTUJJTSBpcyBhIFdXQU4gbmV0d29yayBkcml2ZXIgZm9yIFFDT00tYmFzZWQgUENJZSBtb2RlbXMuXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTgtICAgICAgICAgIEl0IGltcGxlbWVudHMgTUJJTSBvdmVyIE1ISSwgZm9yIElQIGRhdGEgYWdncmVnYXRpb24gYW5kIG11eGluZy5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9NjU9Y29uZmlnIFFDT01fQkFNX0RNVVhcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo2NjpcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02Ny1cdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXHUwMDI2XHUwMDI2IFBNIFx1MDAyNlx1MDAyNiBRQ09NX1NNRU1fU1RBVEUpIHx8IENPTVBJTEVfVEVTVFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03MS1cdCAgTVNNODkxNiBvciBNU004OTc0LiBUaGUgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgdmlhIFFNSS9BVCBmcm9tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzI6XHQgIHVzZXJzcGFjZSB3aXRoIGNvbnRyb2wgcG9ydHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFdXQU4gc3Vic3lzdGVtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzM6XHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTc0LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3ODpjb25maWcgUlBNU0dfV1dBTl9DVFJMXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzk6XHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODAtXHRkZXBlbmRzIG9uIFJQTVNHXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODEtXHRoZWxwXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6ODI6XHQgIFJQTVNHIFdXQU4gQ1RSTCBhbGxvd3MgbW9kZW1zIGF2YWlsYWJsZSB2aWEgUlBNU0cgY2hhbm5lbHMgdG8gZXhwb3NlXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODMtXHQgIGRpZmZlcmVudCBtb2RlbSBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQgYW5kIFFNSS5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5NzpcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05OC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTktXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDA6XHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAxLVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjEwMjpcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDMtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTA0Olx0ICBJZiB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgSW50ZWwgTS4yIFdXQU4gTW9kdWxlcyBhbmQgd2lzaCB0byB1c2UgaXQgaW5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDUtXHQgIExpbnV4IHNheSBZL00gaGVyZS5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTA5PWNvbmZpZyBNVEtfVDdYWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExMDpcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTEyOlx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMy1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTQ6XHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExNTpcdCAgQWRhcHRzIFdXQU4gZnJhbWV3b3JrIGFuZCBwcm92aWRlcyBuZXR3b3JrIGludGVyZmFjZSBsaWtlIHd3YW4wXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTE2LVx0ICBhbmQgdHR5IGludGVyZmFjZXMgbGlrZSB3d2FuMGF0MCAoQVQgcHJvdG9jb2wpLCB3d2FuMG1iaW0wXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMjQ6ZW5kaWYgIyBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTI1LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMi0jXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFdXQU4gZGV2aWNlIGRyaXZlcnMuXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTQtI1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19XV0FOKSAmIzQzOz0gd3dhbi5vXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTctd3dhbi1vYmpzICYjNDM7PSB3d2FuX2NvcmUub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19XV0FOX0hXU0lNKSAmIzQzOz0gd3dhbl9od3NpbS5vXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgJiM0Mzs9IG1oaV93d2FuX2N0cmwub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgJiM0Mzs9IG1oaV93d2FuX21iaW0ub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgJiM0Mzs9IHFjb21fYmFtX2RtdXgub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSAmIzQzOz0gcnBtc2dfd3dhbl9jdHJsLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0lPU00pICYjNDM7PSBpb3NtL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZT02PWlvc20teSA9IFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlLTI1LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlOjI2Omlvc20tJChDT05GSUdfV1dBTl9ERUJVR0ZTKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZS0yNy1cdGlvc21faXBjX2RlYnVnZnMub1x0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jPTM0PXN0YXRpYyBzdHJ1Y3QgaXBjX2NobmxfY2ZnIG1vZGVtX2NmZ1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM3LVx0ICBJUENfTUVNX01BWF9URFNfTVVYX0xJVEVfVUwsIElQQ19NRU1fTUFYX1REU19NVVhfTElURV9ETCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjM4Olx0ICBJUENfTUVNX01BWF9ETF9NVVhfTElURV9CVUZfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM5LVx0LyogUlBDIC0gMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQxLVx0ICBJUENfTUVNX01BWF9URFNfUlBDLCBJUENfTUVNX01BWF9URFNfUlBDLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NDI6XHQgIElQQ19NRU1fTUFYX0RMX1JQQ19CVUZfU0laRSwgV1dBTl9QT1JUX1hNTVJQQyB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNDMtXHQvKiBJQVQwICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNDUtXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjQ2Olx0ICBXV0FOX1BPUlRfQVQgfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQ3LVx0LyogVHJhY2UgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00OS1cdCAgSVBDX01FTV9URFNfVFJDLCBJUENfTUVNX1REU19UUkMsIElQQ19NRU1fTUFYX0RMX1RSQ19CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjUwOlx0ICBXV0FOX1BPUlRfVU5LTk9XTiB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTEtXHQvKiBJQVQxICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTMtXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjU0Olx0ICBXV0FOX1BPUlRfQVQgfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU1LVx0LyogTG9vcGJhY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy01Ny1cdCAgSVBDX01FTV9NQVhfVERTX0xPT1BCQUNLLCBJUENfTUVNX01BWF9URFNfTE9PUEJBQ0ssXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo1ODpcdCAgSVBDX01FTV9NQVhfRExfTE9PUEJBQ0tfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU5LVx0LyogTUJJTSBDaGFubmVsICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjEtXHQgIElQQ19NRU1fTUFYX1REU19NQklNLCBJUENfTUVNX01BWF9URFNfTUJJTSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjYyOlx0ICBJUENfTUVNX01BWF9ETF9NQklNX0JVRl9TSVpFLCBXV0FOX1BPUlRfTUJJTSB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjMtXHQvKiBGbGFzaCBDaGFubmVsL0NvcmVkdW1wIENoYW5uZWwgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy02NS1cdCAgSVBDX01FTV9NQVhfVERTX0ZMQVNIX1VMLCBJUENfTUVNX01BWF9URFNfRkxBU0hfREwsXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo2NjpcdCAgSVBDX01FTV9NQVhfRExfRkxBU0hfQlVGX1NJWkUsIFdXQU5fUE9SVF9VTktOT1dOIH0sXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19kZWJ1Z2ZzLmgtOC1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19kZWJ1Z2ZzLmg6OTojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaC0xMC12b2lkIGlwY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0pO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTc9c3RhdGljIGludCBpcGNfaW1lbV9jaGVja193d2FuX2lwcyhzdHJ1Y3QgaXBjX21lbV9jaGFubmVsICpjaG5sKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMTktXHRpZiAoY2hubClcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MjA6XHRcdHJldHVybiBjaG5sLVx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0yMS1cdFx0ICAgICAgIGNobmwtXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0yOTg9c3RhdGljIHZvaWQgaXBjX2ltZW1fZGxfc2tiX3Byb2Nlc3Moc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjItXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjMyMzpcdGNhc2UgSVBDX0NUWVBFX1dXQU46XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNC1cdFx0aWYgKHBpcGUtXHUwMDNlY2hhbm5lbC1cdTAwM2VpZl9pZCA9PSBJUENfTUVNX01VWF9JUF9DSF9JRl9JRClcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jPTU2Mj1zdGF0aWMgdm9pZCBpcGNfaW1lbV9ydW5fc3RhdGVfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqaW5zdGFuY2UpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy01OTktXHRcdFx0aWYgKGlwY19pbWVtLVx1MDAzZXBjaWUtXHUwMDNlcGNpLVx1MDAzZWRldmljZSA9PSBJTlRFTF9DUF9ERVZJQ0VfNzU2MF9JRCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjAwOlx0XHRcdCAgICBjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlID09IFdXQU5fUE9SVF9YTU1SUEMpIHtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjAxLVx0XHRcdFx0Y3RybF9jaGxfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwNS1cdFx0XHRpZiAoaXBjX2ltZW0tXHUwMDNlcGNpZS1cdTAwM2VwY2ktXHUwMDNlZGV2aWNlID09IElOVEVMX0NQX0RFVklDRV83MzYwX0lEIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzo2MDY6XHRcdFx0ICAgIGNobmxfY2ZnX3BvcnQud3dhbl9wb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01CSU0pIHtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA3LVx0XHRcdFx0Y3RybF9jaGxfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwOS1cdFx0XHR9XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjYxMDpcdFx0XHRpZiAoY2hubF9jZmdfcG9ydC53d2FuX3BvcnRfdHlwZSAhPSBXV0FOX1BPUlRfVU5LTk9XTikge1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MTEtXHRcdFx0XHRpcGNfaW1lbV9jaGFubmVsX2luaXQoaXBjX2ltZW0sIElQQ19DVFlQRV9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTA2MD1pbnQgaXBjX2ltZW1fY2hhbm5lbF9hbGxvYyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MTA4NTpcdGlmIChjaGFubmVsLVx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0xMDg2LVx0ICAgIGluZGV4ID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MTM2PWVudW0gaXBjX2NoYW5uZWxfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMTQ1LSAqXHRcdCAgICAvSVAgdHJhZmZpYy5cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6MTQ2OiAqIEBJUENfQ1RZUEVfV1dBTjpcdFx0VXNlZCBmb3IgSVAgdHJhZmZpY1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0xNDctICogQElQQ19DVFlQRV9DVFJMOlx0XHRVc2VkIGZvciBDb250cm9sIENvbW11bmljYXRpb25cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTE0OT1lbnVtIGlwY19jdHlwZSB7XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE1MDpcdElQQ19DVFlQRV9XV0FOLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0xNTEtXHRJUENfQ1RZUEVfQ1RSTCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTI3Mz1lbnVtIGlwY19waGFzZSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0yODktICogQGlwY190YXNrOlx0XHRcdFRhc2sgZm9yIGVudHJ5IGludG8gaXBjIHRhc2sgcXVldWVcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6MjkwOiAqIEB3d2FuOlx0XHRcdFdXQU4gZGV2aWNlIHBvaW50ZXJcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjkxLSAqIEBtdXg6XHRcdFx0SVAgRGF0YSBtdWx0aXBsZXhpbmcgc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zMzAtICogQHBjaWVfd2FrZV9uOlx0XHRQY2llIHdha2UgZmxhZ1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozMzE6ICogQGRlYnVnZnNfd3dhbl9kaXI6XHRcdFdXQU4gRGVidWcgRlMgZGlyZWN0b3J5IGVudHJ5XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTMzMi0gKiBAZGVidWdmc19kaXI6XHRcdERlYnVnIEZTIGRpcmVjdG9yeSBmb3IgZHJpdmVyLXNwZWNpZmljIGVudHJpZXNcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTMzND1zdHJ1Y3QgaW9zbV9pbWVtIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM0MS1cdHN0cnVjdCBpb3NtX3BjaWUgKnBjaWU7XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjM0MjojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNDMtXHRzdHJ1Y3QgaW9zbV90cmFjZSAqdHJhY2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNzMtXHQgICBwY2llX3dha2VfbjoxO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozNzQ6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzc1LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc193d2FuX2Rpcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYz04MD1pbnQgaXBjX2ltZW1fd3dhbl9jaGFubmVsX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtODYtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYzo4NzpcdC8qIElmIG1vZGVtIHZlcnNpb24gaXMgaW52YWxpZCAoMHhmZmZmZmZmZiksIGRvIG5vdCBpbml0aWFsaXplIFdXQU4uICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy04OC1cdGlmIChpcGNfaW1lbS1cdTAwM2VjcF92ZXJzaW9uID09IC0xKSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTAxLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTAyOlx0aXBjX2ltZW1fY2hhbm5lbF9pbml0KGlwY19pbWVtLCBJUENfQ1RZUEVfV1dBTiwgY2hubF9jZmcsXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDMtXHRcdFx0ICAgICAgSVJRX01PRF9PRkYpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTA0LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTA1Olx0LyogV1dBTiByZWdpc3RyYXRpb24uICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDYtXHRpcGNfaW1lbS1cdTAwM2V3d2FuID0gaXBjX3d3YW5faW5pdChpcGNfaW1lbSwgaXBjX2ltZW0tXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaD04Nz1pbnQgaXBjX2ltZW1fc3lzX3d3YW5fdHJhbnNtaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIGludCBpZl9pZCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC04OS0vKipcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5oOjkwOiAqIGlwY19pbWVtX3d3YW5fY2hhbm5lbF9pbml0IC0gSW5pdGlhbGl6ZXMgV1dBTiBjaGFubmVscyBhbmQgdGhlIGNoYW5uZWwgZm9yXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC05MS0gKlx0XHRcdFx0TVVYLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz05PXN0YXRpYyBpbnQgaXBjX211eF9jaGFubmVsX2NyZWF0ZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTEzLVx0Y2hhbm5lbF9pZCA9IGlwY19pbWVtX2NoYW5uZWxfYWxsb2MoaXBjX211eC1cdTAwM2VpbWVtLCBpcGNfbXV4LVx1MDAzZWluc3RhbmNlX2lkLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjE0Olx0XHRcdFx0XHQgICAgSVBDX0NUWVBFX1dXQU4pO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTE1LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz00MjQ9aW50IGlwY19tdXhfb3Blbl9zZXNzaW9uKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgaW50IHNlc3Npb25fbnIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQzMi1cdHNlc3Npb25fb3Blbi1cdTAwM2VpZl9pZCA9IGNwdV90b19sZTMyKHNlc3Npb25fbnIpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjQzMzpcdGlwY19tdXgtXHUwMDNlc2Vzc2lvbltzZXNzaW9uX25yXS5mbGFncyB8PSBJUENfTUVNX1dXQU5fTVVYO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQzNC1cdHJldHVybiBpcGNfbXV4X3NjaGVkdWxlKGlwY19tdXgsIFx1MDAyNm11eF9tc2cpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz00Mzc9aW50IGlwY19tdXhfY2xvc2Vfc2Vzc2lvbihzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIGludCBzZXNzaW9uX25yKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00NDctXHRyZXRfdmFsID0gaXBjX211eF9zY2hlZHVsZShpcGNfbXV4LCBcdTAwMjZtdXhfbXNnKTtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYzo0NDg6XHRpcGNfbXV4LVx1MDAzZXNlc3Npb25bc2Vzc2lvbl9ucl0uZmxhZ3MgXHUwMDI2PSB+SVBDX01FTV9XV0FOX01VWDtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00NDktXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTU4LS8qIE1VWCBmb3Igcm91dGUgbGluayBkZXZpY2VzICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4Lmg6NTk6I2RlZmluZSBJUENfTUVNX1dXQU5fTVVYIEJJVCgwKVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTYwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MTc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMTgtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjE5Oi8qIFdXQU4gR1VJRCAqL1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMC1zdGF0aWMgZ3VpZF90IHd3YW5fYWNwaV9ndWlkID0gR1VJRF9JTklUKDB4YmFkMDFiNzUsIDB4MjJhOCwgMHg0ZjQ4LCAweDg3LCAweDkyLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MjIwPXN0YXRpYyB2b2lkIGlwY19wY2llX2NvbmZpZ19pbml0KHN0cnVjdCBpb3NtX3BjaWUgKmlwY19wY2llKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjMxLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYzoyMzI6LyogVGhpcyB3aWxsIHJlYWQgdGhlIEJJT1MgV1dBTiBSVEQzIHNldHRpbmdzOlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMzMtICogRDBMMS4yL0QzTDIvRGlzYWJsZWRcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jPTI2MD1zdGF0aWMgaW50IGlwY19wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0zMDUtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjMwNjpcdC8qIFJlYWQgV1dBTiBSVEQzIEJJT1MgU2V0dGluZ1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0zMDctXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oPTM5PWVudW0gaXBjX3BjaWVfc2xlZXBfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmgtNjEtICogQHN1c3BlbmQ6XHRcdFx0UzJJRExFIHNsZWVwL2FjdGl2ZVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuaDo2MjogKiBAZDNsMl9zdXBwb3J0Olx0XHRSZWFkIFdXQU4gUlREMyBCSU9TIHNldHRpbmcgZm9yIEQzTDIgc3VwcG9ydFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuaC02My0gKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcG9ydC5oLTE4LSAqIEBwY2llOlx0XHRQQ0llIGNvbXBvbmVudFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaDoxOTogKiBAcG9ydF90eXBlOlx0XHRXV0FOIHBvcnQgdHlwZVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaC0yMC0gKiBAY2hhbm5lbDpcdFx0Q2hhbm5lbCBpbnN0YW5jZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY190cmFjZS5oPTM3PXN0cnVjdCBpb3NtX3RyYWNlIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00Ny1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY190cmFjZS5oOjQ4OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00OS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTIxLS8qKlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYzoyMjogKiBzdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiAtIG5ldGRldiBXV0FOIGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIGRhdGFcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjMtICogQGlwY193d2FuOlx0UG9pbnRlciB0byBpb3NtX3d3YW4gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYz0yOD1zdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNS0vKipcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzY6ICogc3RydWN0IGlvc21fd3dhbiAtIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IFdXQU4gcm9vdCBkZXZpY2VcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMzctICpcdFx0ICAgICAgYW5kIGludGVyZmFjZSB0byB0aGUgSVBDIGxheWVyLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg5PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTI5OS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzAwOlx0LyogV1dBTiBjb3JlIHdpbGwgY3JlYXRlIGEgbmV0ZGV2IGZvciB0aGUgZGVmYXVsdCBJUCBNVVggY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zMDEtXHRpZiAod3dhbl9yZWdpc3Rlcl9vcHMoaXBjX3d3YW4tXHUwMDNlZGV2LCBcdTAwMjZpb3NtX3d3YW5fb3BzLCBpcGNfd3dhbixcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTUtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oOjY6I2lmbmRlZiBJT1NNX0lQQ19XV0FOX0hcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NzojZGVmaW5lIElPU01fSVBDX1dXQU5fSFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC04LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC05LS8qKlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaDoxMDogKiBpcGNfd3dhbl9pbml0IC0gQWxsb2NhdGUsIEluaXQgYW5kIHJlZ2lzdGVyIFdXQU4gZGV2aWNlXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTExLSAqIEBpcGNfaW1lbTpcdFx0UG9pbnRlciB0byBpbWVtIGRhdGEtc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaD0xNj1zdHJ1Y3QgaW9zbV93d2FuICppcGNfd3dhbl9pbml0KHN0cnVjdCBpb3NtX2ltZW0gKmlwY19pbWVtLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMTgtLyoqXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oOjE5OiAqIGlwY193d2FuX2RlaW5pdCAtIFVucmVnaXN0ZXIgYW5kIGZyZWUgV1dBTiBkZXZpY2UsIGNsZWFyIHBvaW50ZXJcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMjAtICogQGlwY193d2FuOlx0UG9pbnRlciB0byB3d2FuIGluc3RhbmNlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz05PWVudW0gbWhpX3d3YW5fZmxhZ3Mge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTA6XHRNSElfV1dBTl9ETF9DQVAsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMTpcdE1ISV9XV0FOX1VMX0NBUCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyOlx0TUhJX1dXQU5fUlhfUkVGSUxMLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTMtfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTU6I2RlZmluZSBNSElfV1dBTl9NQVhfTVRVXHQweDgwMDBcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTQxPXN0YXRpYyB2b2lkIG1oaV93d2FuX3J4X2J1ZGdldF9pbmMoc3RydWN0IG1oaV93d2FuX2RldiAqbWhpd3dhbilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjQ3Olx0aWYgKHRlc3RfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00OC1cdFx0c2NoZWR1bGVfd29yayhcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X3JlZmlsbCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9NTQ9c3RhdGljIGJvb2wgbWhpX3d3YW5fcnhfYnVkZ2V0X2RlYyhzdHJ1Y3QgbWhpX3d3YW5fZGV2ICptaGl3d2FuKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTYxLVx0XHRtaGl3d2FuLVx1MDAzZXJ4X2J1ZGdldC0tO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6NjI6XHRcdGlmICh0ZXN0X2JpdChNSElfV1dBTl9SWF9SRUZJTEwsIFx1MDAyNm1oaXd3YW4tXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtNjMtXHRcdFx0cmV0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz03Nz1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy05MS1cdFx0LyogVG8gcHJldmVudCB1bmxpbWl0ZWQgYnVmZmVyIGFsbG9jYXRpb24gaWYgbm90aGluZyBjb25zdW1lc1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6OTI6XHRcdCAqIHRoZSBSWCBidWZmZXJzIChwYXNzZWQgdG8gV1dBTiBjb3JlKSwgdHJhY2sgdGhlaXIgbGlmZXNwYW5cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTkzLVx0XHQgKiB0byBub3QgYWxsb2NhdGUgbW9yZSB0aGFuIGFsbG93ZWQgYnVkZ2V0LlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEwNj1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfc3RhcnQoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMTktXHQvKiBBZGQgYnVmZmVycyB0byB0aGUgTUhJIGluYm91bmQgcXVldWUgKi9cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyMDpcdGlmICh0ZXN0X2JpdChNSElfV1dBTl9ETF9DQVAsIFx1MDAyNm1oaXd3YW4tXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMjE6XHRcdHNldF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEyMi1cdFx0bWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayhcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X3JlZmlsbCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9MTI4PXN0YXRpYyB2b2lkIG1oaV93d2FuX2N0cmxfc3RvcChzdHJ1Y3Qgd3dhbl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X2xvY2spO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTMzOlx0Y2xlYXJfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMzQtXHRzcGluX3VubG9ja19iaChcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTE0MT1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfdHgoc3RydWN0IHd3YW5fcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNDgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxNDk6XHRpZiAoIXRlc3RfYml0KE1ISV9XV0FOX1VMX0NBUCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yMTM9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIyNC1cdG1oaXd3YW4tXHUwMDNlbWhpX2RldiA9IG1oaV9kZXY7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMjU6XHRtaGl3d2FuLVx1MDAzZW10dSA9IE1ISV9XV0FOX01BWF9NVFU7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yMjYtXHRJTklUX1dPUksoXHUwMDI2bWhpd3dhbi1cdTAwM2VyeF9yZWZpbGwsIG1oaV93d2FuX2N0cmxfcmVmaWxsX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMC1cdGlmIChtaGlfZGV2LVx1MDAzZWRsX2NoYW4pXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzE6XHRcdHNldF9iaXQoTUhJX1dXQU5fRExfQ0FQLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMi1cdGlmIChtaGlfZGV2LVx1MDAzZXVsX2NoYW4pXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzM6XHRcdHNldF9iaXQoTUhJX1dXQU5fVUxfQ0FQLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV93d2FuX2N0cmxfbWF0Y2hfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI1OTpcdHsgLmNoYW4gPSBcJiMzNDtEVU5cJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYwOlx0eyAuY2hhbiA9IFwmIzM0O0RVTjJcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYxOlx0eyAuY2hhbiA9IFwmIzM0O01CSU1cJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9NQklNIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjI6XHR7IC5jaGFuID0gXCYjMzQ7UU1JXCYjMzQ7LCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfUU1JIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjM6XHR7IC5jaGFuID0gXCYjMzQ7RElBR1wmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FDRE0gfSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2NDpcdHsgLmNoYW4gPSBcJiMzNDtGSVJFSE9TRVwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0ZJUkVIT1NFIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjU6XHR7IC5jaGFuID0gXCYjMzQ7Tk1FQVwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX05NRUEgfSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTI2Ni1cdHt9LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTI4Mz1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6Mjg0Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNSEkgV1dBTiBDVFJMIERyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yODUtTU9EVUxFX0FVVEhPUihcJiMzNDtMb2ljIFBvdWxhaW4gXHUwMDNjbG9pYy5wb3VsYWluQGxpbmFyby5vcmdcdTAwM2VcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTYyMD1zdGF0aWMgaW50IG1oaV9tYmltX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LCBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ1Olx0LyogUmVnaXN0ZXIgd3dhbiBsaW5rIG9wcyB3aXRoIE1ISSBjb250cm9sbGVyIHJlcHJlc2VudGluZyBXV0FOIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXHUwMDI2Y250cmwtXHUwMDNlbWhpX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm1oaV9tYmltX3d3YW5fb3BzLCBtYmltLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yLS8qXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozOiAqIFF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQtICogQ29weXJpZ2h0IChjKSAyMDIwLCBTdGVwaGFuIEdlcmhvbGQgXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTkwNT1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTA2Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIE5ldHdvcmsgRHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNy1NT0RVTEVfQVVUSE9SKFwmIzM0O1N0ZXBoYW4gR2VyaG9sZCBcdTAwM2NzdGVwaGFuQGdlcmhvbGQubmV0XHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTk4PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpycG1zZ193d2FuX2ZpbmRfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtOTkte1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxMDA6XHQvKiBTZWxlY3QgZmlyc3QgcGxhdGZvcm0gZGV2aWNlIGFzIHBhcmVudCBmb3IgdGhlIFdXQU4gcG9ydHMuXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTEwMS1cdCAqIE9uIFF1YWxjb21tIHBsYXRmb3JtcyB0aGlzIGlzIHVzdWFsbHkgdGhlIHBsYXRmb3JtIGRldmljZSB0aGF0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYz0xNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBycG1zZ19kZXZpY2VfaWQgcnBtc2dfd3dhbl9jdHJsX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTE0OC1cdC8qIFJQTVNHIGNoYW5uZWxzIGZvciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbSAqL1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNDk6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTVfQ05UTFwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FNSSB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTA6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTRcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTE6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTFcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xNTItXHR7fSxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTE2ND1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNjU6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JQTVNHIFdXQU4gQ1RSTCBEcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xNjYtTU9EVUxFX0FVVEhPUihcJiMzNDtTdGVwaGFuIEdlcmhvbGQgXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFx1MDAzZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlPTQ9bXRrX3Q3eHgteTo9XHR0N3h4X3BjaS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTE5LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjIwOm10a190N3h4LSQoQ09ORklHX1dXQU5fREVCVUdGUykgJiM0Mzs9IFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMjEtXHRcdHQ3eHhfcG9ydF90cmFjZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9MzM4PXN0YXRpYyBpbnQgdDd4eF9jY21uaV9yZWdpc3Rlcl93d2FuKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmN0bGIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzQ1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6MzQ2Olx0LyogV1dBTiBjb3JlIHdpbGwgY3JlYXRlIGEgbmV0ZGV2IGZvciB0aGUgZGVmYXVsdCBJUCBNVVggY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzQ3LVx0cmV0ID0gd3dhbl9yZWdpc3Rlcl9vcHMoZGV2LCBcdTAwMjZjY21uaV93d2FuX29wcywgY3RsYiwgSVBfTVVYX1NFU1NJT05fREVGQVVMVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzozNDk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtVbmFibGUgdG8gcmVnaXN0ZXIgV1dBTiBvcHMsICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzUwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk2Mj1NT0RVTEVfQVVUSE9SKFwmIzM0O01lZGlhVGVrIEluY1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYzo5NjM6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NjQtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaD03ND1zdHJ1Y3QgdDd4eF9wY2lfZGV2IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaC05Mi1cdHN0cnVjdCBjb21wbGV0aW9uXHRzbGVlcF9sb2NrX2FjcXVpcmU7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaDo5MzojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmgtOTQtXHRzdHJ1Y3QgZGVudHJ5XHRcdCpkZWJ1Z2ZzX2Rpcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM9NTU9c3RhdGljIGNvbnN0IHN0cnVjdCB0N3h4X3BvcnRfY29uZiB0N3h4X3BvcnRfY29uZltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02NS1cdFx0Lm5hbWUgPSBcJiMzNDtBVFwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzo2NjpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BVCxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02Ny1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtNzQtXHRcdC5uYW1lID0gXCYjMzQ7TUJJTVwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzo3NTpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9NQklNLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTc2LVx0fSwge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjc3OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtNzgtXHRcdC50eF9jaCA9IFBPUlRfQ0hfTURfTE9HX1RYLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMTEtXHRcdC5uYW1lID0gXCYjMzQ7YWRiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjExMjpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BREIsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTEzLVx0XHQuZGVidWcgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMjEtXHRcdC5uYW1lID0gXCYjMzQ7bWlwY1wmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMjI6XHRcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfTUlQQyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMjMtXHRcdC5kZWJ1ZyA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jPTEyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHQ3eHhfcG9ydF9jb25mIHQ3eHhfZWFybHlfcG9ydF9jb25mW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTEzNy1cdFx0Lm5hbWUgPSBcJiMzNDtmYXN0Ym9vdFwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMzg6XHRcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfRkFTVEJPT1QsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTM5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg9OTU9ZXh0ZXJuIHN0cnVjdCBwb3J0X29wcyBjdGxfcG9ydF9vcHM7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmgtOTYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg6OTc6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaC05OC1leHRlcm4gc3RydWN0IHBvcnRfb3BzIHQ3eHhfdHJhY2VfcG9ydF9vcHM7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM9MTMwPXN0YXRpYyBpbnQgdDd4eF9wb3J0X3d3YW5fdHgoc3RydWN0IHd3YW5fcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xMzgtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxMzk6XHRpZiAocG9ydF9jb25mLVx1MDAzZXBvcnRfdHlwZSAhPSBXV0FOX1BPUlRfRkFTVEJPT1QpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNDAtXHRcdHJldCA9IHQ3eHhfcG9ydF9jdHJsX3R4KHBvcnRfcHJpdmF0ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNTM9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fY3JlYXRlKHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMTY1LVx0XHRpZiAoSVNfRVJSKHBvcnQtXHUwMDNld3dhbi53d2FuX3BvcnQpKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTY2Olx0XHRcdGRldl9lcnIocG9ydC1cdTAwM2VkZXYsIFwmIzM0O1VuYWJsZSB0byBjcmVhdGUgV1dBTiBwb3J0ICVzXCYjMzQ7LCBwb3J0X2NvbmYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNjctXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM9MTcwPXN0YXRpYyBpbnQgdDd4eF9wb3J0X3d3YW5faW5pdChzdHJ1Y3QgdDd4eF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE3My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjE3NDpcdGlmIChwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9GQVNUQk9PVCB8fFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc1Olx0ICAgIHBvcnRfY29uZi1cdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX0FEQiB8fFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc2Olx0ICAgIHBvcnRfY29uZi1cdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01JUEMpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNzctXHRcdHQ3eHhfcG9ydF93d2FuX2NyZWF0ZShwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0yMjc9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fbWRfc3RhdGVfbm90aWZ5KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0yMzAtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoyMzE6XHRpZiAocG9ydF9jb25mLVx1MDAzZXBvcnRfdHlwZSA9PSBXV0FOX1BPUlRfRkFTVEJPT1QgfHxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMjpcdCAgICBwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9BREIgfHxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMzpcdCAgICBwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9NSVBDKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMjM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd3dhbi93d2FuX2NvcmUuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3d3YW4vd3dhbl9jb3JlLmM6MjovKiBXV0FOIERyaXZlciBDb3JlXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzU1NQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFdXQU4gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIFdXQU4gZHJpdmVycyBhbmQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBmb2N1c2luZyBvbiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJIGtub3cgdGhhdCBgbWhpX3d3YW5fbWJpbS5jYCBpcyByZWxhdGVkIHRvIFF1YWxjb21tIE1ISSBidXMgZGV2aWNlcyBiYXNlZCBvbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgaXMgY29tbXVuaWNhdGluZyB3aXRoLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzLiBgbWhpX3d3YW5fbWJpbS5jYCBoYXMgYE1ISV9XV0FOX01CSU1gLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYE1ISV9CVVNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hhdCAqaXMqIGBNSElfQlVTYD8gSXMgaXQgYSBwaHlzaWNhbCBidXMsIHBvdGVudGlhbGx5IFBDSWUsIG9yIGlzIGl0IGEgdmlydHVhbCBjb25zdHJ1Y3QgbGlrZSBhIHNpbXVsYXRlZCBidXMsIG9yIHBlcmhhcHMgYSBVU0IgZ2FkZ2V0IG9yIHNvbWUgb3RoZXIga2luZCBvZiBpbnRlci1kZXZpY2UgY29tbXVuaWNhdGlvbiBsYXllcj8gVG8gZmlndXJlIHRoYXQgb3V0LCBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBgTUhJX0JVU2AmIzM5O3MgZGVmaW5pdGlvbi4gTXkgZ3Vlc3MgaXMgaXQgd2lsbCBiZSBpbiBgZHJpdmVycy9idXMvbWhpL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMsIGFzIGl0IGlzIHRoZSBjcnV4IG9mIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1ISV9CVVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2VwL0tjb25maWc6MTpjb25maWcgTUhJX0JVU19FUFxuZHJpdmVycy9idXMvbWhpL2VwL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O01vZGVtIEhvc3QgSW50ZXJmYWNlIChNSEkpIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWctNy1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6ODpjb25maWcgTUhJX0JVU1xuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7TW9kZW0gSG9zdCBJbnRlcmZhY2UgKE1ISSkgYnVzXCYjMzQ7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy0xNS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MTY6Y29uZmlnIE1ISV9CVVNfREVCVUdcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWctMTctXHRib29sIFwmIzM0O0RlYnVnZnMgc3VwcG9ydCBmb3IgdGhlIE1ISSBidXNcJiMzNDtcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTIzLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZzoyNDpjb25maWcgTUhJX0JVU19QQ0lfR0VORVJJQ1xuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy0yNS1cdHRyaXN0YXRlIFwmIzM0O01ISSBQQ0kgY29udHJvbGxlciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI5MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1ISS9XV0FOIFNpdHVhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYE1ISV9CVVNfRVBgIGlzIGNsZWFybHkgYW4gTUhJIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvbiwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYE1ISV9XV0FOX01CSU1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhhdCBmaXRzIGludG8gdGhlIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGNoZWNrIGBtaGlfd3dhbl9tYmltLmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCwgbGlrZWx5IHRocm91Z2ggYW4gYG1oaV9kcml2ZXJgIGFuZCBgbWhpX2RyaXZlcl9yZWdpc3RlcmAuIEkmIzM5O2xsIGFsc28gd2FudCB0byB1bmRlcnN0YW5kIGhvdyBNSEkgZGV2aWNlcyBhcmUgcHJvYmVkIGluIGdlbmVyYWwuIExvb2tpbmcgYmFjayBhdCB0aGUgYmFzZSBgTUhJX0JVU19QQ0lfR0VORVJJQ2AsIGl0IGFwcGVhcnMgdG8gaGFuZGxlIHJlZ2lzdHJhdGlvbiBvZiBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IEZveGNvbm4sIFF1ZWN0ZWwsIGFuZCBUZWxpdCBQQ0llIFdXQU4gbW9kZW1zLgoKVGhlbiB0aGVyZSBpcyB0aGUgYE1US19UN1hYYCBkcml2ZXIgdG8gY29uc2lkZXIuIEl0JiMzOTtzIGEgUENJIGRyaXZlciAoYHQ3eHhfcGNpLmNgLCBgcGNpX3JlZ2lzdGVyX2RyaXZlcigmYW1wO3Q3eHhfcGNpX2RyaXZlcilgKSB0aGF0IGhhcyBzcGVjaWZpYyBNZWRpYVRlayBQQ0kgZGV2aWNlIElEcyAobGlrZSBgUENJX0RFVklDRV9JRF9NRURJQVRFS19NVDY4NTVgKS4gT2theSwgc28gdGhhdCYjMzk7cyBhIFBDSS1iYXNlZCBNZWRpYVRlayBzb2x1dGlvbiwgbGlrZWx5IHRhcmdldGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9uLgoKSG9sZCBvbiwgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRob3NlIGNydWNpYWwgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0IGhpZ2hsaWdodHMgdGhhdCBjZXJ0YWluIGRyaXZlcnMsIGxpa2UgdGhvc2UgZm9yIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgKGUuZy4sIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YCksIGFyZSB1bmxpa2VseSB0byBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGVpciBhc3NvY2lhdGVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuCgpOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBXV0FOIGRyaXZlcnMgKE1ISSwgTVRLX1Q3WFgsIE1ISV9XV0FOX01CSU0pIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IgZ2FkZ2V0LCBod3NpbSwgZXRjLikgb3IgaWYgdGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVycy4gVGhpcyBpcyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgSSYjMzk7bSBnb2luZyB0byBoYXZlIGEgcHJvYmxlbS4gSSBtaWdodCBuZWVkIHRvIGxvb2sgZm9yIGRyaXZlcnMgdGhhdCB3b3JrIHRocm91Z2ggdmlydHVhbCBidXMgaW1wbGVtZW50YXRpb25zLCBsaWtlIGB3d2FuX2h3c2ltYCwgdG8gcHJvdmlkZSBhIHBhdGguIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyBldmVuIGZlYXNpYmxlLgoKTGV0JiMzOTtzIHNlZSBpZiBgd3dhbl9od3NpbWAgY29ubmVjdHMgdG8gYG1oaV93d2FuX21iaW1gIG9yIGB0N3h4YD8gSSYjMzk7bGwgY2hlY2sgYHd3YW5faHdzaW0uY2AgZm9yIHNvbWUgY2x1ZXMgb24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpfHQ3eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyODQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSB3d2FuX2h3c2ltLmMgU291cmNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBzaGVuYW5pZ2FucyB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBpcyB1cCB0by4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMg4oCTIGhvdyBhcmUgdGhleSBhYnN0cmFjdGluZyB0aGUgaGFyZHdhcmUgbGF5ZXI/IFdoYXQmIzM5O3MgdGhlIGludGVyZmFjZSBsaWtlIGZvciBlbXVsYXRpbmcgV1dBTiBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsPyBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHRyaWNrcyB0byBoYW5kbGUgdGhlIGNvbXBsZXhpdGllcyBvZiBjZWxsdWxhciBjb21tdW5pY2F0aW9uPwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGNvcmUgc3RydWN0dXJlcywgdGhlIG1haW4gZW50cnkgcG9pbnRzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IHRoZXkmIzM5O3JlIHNpbXVsYXRpbmcgdGhlIGRhdGEgdHJhbnNmZXIgcHJvY2Vzcy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgYW5kIGhvdyB3ZWxsIGl0IG1pcnJvcnMgcmVhbC13b3JsZCBXV0FOIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IGFyZWFzIHRoYXQgbWlnaHQgaGF2ZSBzdWJ0bGUgYnVncyBvciBpbmVmZmljaWVuY2llcyB0aGF0IGNvdWxkIGltcGFjdCB0ZXN0aW5nIG9yIGRldmVsb3BtZW50LiBJdCB3b3VsZCBiZSBpbnNpZ2h0ZnVsIHRvIHJldmlldyB0aGUgZXJyb3IgaGFuZGxpbmcsIHRvbyAtIGhvdyByb2J1c3QgaXMgdGhlIHNpbXVsYXRpb24/CgpNeSBmb2N1cyBpcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gY2hvaWNlcyBoZXJlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgb3B0aW1pemF0aW9uIG9yIGZ1cnRoZXIgcmVmaW5lbWVudC4gSXQmIzM5O3MgdGltZSB0byBiZWNvbWUgaW50aW1hdGVseSBhY3F1YWludGVkIHdpdGggdGhlIHNpbXVsYXRlZCB3b3JsZCBvZiBXV0FOIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogV1dBTiBkZXZpY2Ugc2ltdWxhdG9yIGZvciBXV0FOIGZyYW1ld29yayB0ZXN0aW5nLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVx1MDAzZVxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWUuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd3dhbi5oXHUwMDNlXG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAgMjM6XHRcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NuZXQvYXJwLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50IHd3YW5faHdzaW1fZGV2c251bSA9IDI7XG4gIDI3Olx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcbiAgMjg6XHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFwmIzM0O051bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1wmIzM0Oyk7XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xuICAzMTpcdFx0Lm5hbWUgPSBcJiMzNDt3d2FuX2h3c2ltXCYjMzQ7LFxuICAzMjpcdH07XG4gIDMzOlx0XG4gIDM0Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc190b3BkaXI7XG4gIDM1Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XG4gIDM2Olx0XG4gIDM3Olx0c3RhdGljIERFRklORV9TUElOTE9DSyh3d2FuX2h3c2ltX2RldnNfbG9jayk7XG4gIDM4Olx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xuICAzOTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xuICA0MDpcdHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3dhbl93cTtcbiAgNDE6XHRcbiAgNDI6XHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xuICA0MzpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA0NDpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA0NTpcdFx0c3RydWN0IGRldmljZSBkZXY7XG4gIDQ2Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XG4gIDQ3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcbiAgNDg6XHRcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcbiAgNDk6XHRcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xuICA1MDpcdFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xuICA1MTpcdFx0c3RydWN0IGxpc3RfaGVhZCBwb3J0cztcbiAgNTI6XHR9O1xuICA1MzpcdFxuICA1NDpcdHN0cnVjdCB3d2FuX2h3c2ltX3BvcnQge1xuICA1NTpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA1NjpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA1NzpcdFx0c3RydWN0IHd3YW5faHdzaW1fZGV2ICpkZXY7XG4gIDU4Olx0XHRzdHJ1Y3Qgd3dhbl9wb3J0ICp3d2FuO1xuICA1OTpcdFx0c3RydWN0IHdvcmtfc3RydWN0IGRlbF93b3JrO1xuICA2MDpcdFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BkaXI7XG4gIDYxOlx0XHR1bmlvbiB7XG4gIDYyOlx0XHRcdHN0cnVjdCB7XG4gIDYzOlx0XHRcdFx0ZW51bSB7XHQvKiBBVCBjb21tYW5kIHBhcnNlciBzdGF0ZSAqL1xuICA2NDpcdFx0XHRcdFx0QVRfUEFSU0VSX1dBSVRfQSxcbiAgNjU6XHRcdFx0XHRcdEFUX1BBUlNFUl9XQUlUX1QsXG4gIDY2Olx0XHRcdFx0XHRBVF9QQVJTRVJfV0FJVF9URVJNLFxuICA2NzpcdFx0XHRcdFx0QVRfUEFSU0VSX1NLSVBfTElORSxcbiAgNjg6XHRcdFx0XHR9IHBzdGF0ZTtcbiAgNjk6XHRcdFx0fSBhdF9lbXVsO1xuICA3MDpcdFx0XHRzdHJ1Y3Qge1xuICA3MTpcdFx0XHRcdHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyO1xuICA3MjpcdFx0XHR9IG5tZWFfZW11bDtcbiAgNzM6XHRcdH07XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3d2FuX2h3c2ltX2RlYnVnZnNfcG9ydGRlc3Ryb3lfZm9wcztcbiAgNzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3d2FuX2h3c2ltX2RlYnVnZnNfcG9ydGNyZWF0ZV9mb3BzO1xuICA3ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19kZXZkZXN0cm95X2ZvcHM7XG4gIDc5Olx0c3RhdGljIHZvaWQgd3dhbl9od3NpbV9wb3J0X2RlbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gIDgwOlx0c3RhdGljIHZvaWQgd3dhbl9od3NpbV9kZXZfZGVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3OTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBXV0FOIERyaXZlciBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gaXQgc2VlbXMgYHd3YW5faHdzaW1gIGhhcyBnb25lIGl0cyBvd24gd2F5LCBpbXBsZW1lbnRpbmcgaXRzIG93biBXV0FOIHBvcnQgb3BlcmF0aW9ucyBhbmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIEl0IG1lYW5zIGl0JiMzOTtzIG5vdCByZWx5aW5nIG9uIHRoZSBtb3JlIGdlbmVyaWMgYG1oaV93d2FuX21iaW0uY2Agb3IgYHQ3eHhfbmV0ZGV2LmNgIGRyaXZlcnMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiB0aG9zZSBmaWxlcywgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCwgYXJlIGV2ZW4gKm5lZWRlZCogaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhvc2Ugc3BlY2lmaWMgbW9kdWxlcyBhcmUgYmVpbmcgdXNlZCwgaWYgYXQgYWxsLiBNeSBwbGFuIGlzIHRvIGNvbmR1Y3QgYSB0aG9yb3VnaCBzZWFyY2ggZm9yIGFueSByZW1haW5pbmcgcmVmZXJlbmNlcyB0byBlaXRoZXIgYG1oaV93d2FuX21iaW1gIG9yIGB0N3h4YCB3aXRoaW4gdGhlIGNvZGViYXNlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIHVzIGhvdyBuZWNlc3NhcnkgdGhleSBhY3R1YWxseSBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9tYmltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ1LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY6c3RydWN0IG1oaV9tYmltX2xpbmsge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ4LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTpzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02Ni1cdHN0cnVjdCBtaGlfZGV2aWNlICptZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTc4PXN0cnVjdCBtYmltX3R4X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo4NDpzdGF0aWMgc3RydWN0IG1oaV9tYmltX2xpbmsgKm1oaV9tYmltX2dldF9saW5rX3JjdShzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg1LVx0XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBzZXNzaW9uKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODYte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODc6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6OTc6c3RhdGljIGludCBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQoc3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybClcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0xMDc9c3RhdGljIHN0cnVjdCBza19idWZmICptYmltX3R4X2ZpeHVwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBzZXNzaW9uLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1MC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbWhpX21iaW1fbmRvX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTIte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTUzOlx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTU0Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBsaW5rLVx1MDAzZW1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5Mi1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE5MzpzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X250aDE2KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTk0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0yMzE9c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5kcDE2KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1My1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI1NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjc2LVx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoyNzc6XHRcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjc4LVx0XHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjMwNTpcdFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNi1cdFx0aWYgKCFsaW5rKSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzc4LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Mzc5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWhpX25ldF9za2JfYWdnKHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzgwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9NDA1PXN0YXRpYyB2b2lkIG1oaV9uZXRfcnhfcmVmaWxsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDA2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQwNzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDA4LVx0XHRcdFx0XHRcdCAgICAgcnhfcmVmaWxsLndvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQzNjpzdGF0aWMgdm9pZCBtaGlfbWJpbV9kbF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNy1cdFx0XHRcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzOC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Mzk6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtaGlfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cdTAwM2VidWZfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NjgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Njk6XHRcdG1oaV9tYmltX3J4KG1iaW0sIHNrYik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc3OnN0YXRpYyB2b2lkIG1oaV9tYmltX25kb19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3OC1cdFx0XHRcdCAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3OS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0ODA6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00ODEtXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDk4LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDk5OnN0YXRpYyB2b2lkIG1oaV9tYmltX3VsX2NhbGxiYWNrKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAwLVx0XHRcdFx0IHN0cnVjdCBtaGlfcmVzdWx0ICptaGlfcmVzKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMjpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1oaV9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMy1cdHN0cnVjdCBza19idWZmICpza2IgPSBtaGlfcmVzLVx1MDAzZWJ1Zl9hZGRyO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBza2ItXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTA1Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMTpzdGF0aWMgaW50IG1oaV9tYmltX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMyLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NDY6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU0Ny17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTUzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWhpX21iaW1fbmRvID0ge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU1Olx0Lm5kb19vcGVuID0gbWhpX21iaW1fbmRvX29wZW4sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTY6XHQubmRvX3N0b3AgPSBtaGlfbWJpbV9uZG9fc3RvcCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NzpcdC5uZG9fc3RhcnRfeG1pdCA9IG1oaV9tYmltX25kb194bWl0LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU4Olx0Lm5kb19nZXRfc3RhdHM2NCA9IG1oaV9tYmltX25kb19nZXRfc3RhdHM2NCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1OS19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYwLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTYxOnN0YXRpYyBpbnQgbWhpX21iaW1fbmV3bGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlmX2lkLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYyLVx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjMte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY0Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY1Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBjdHh0O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY3LVx0bGluay1cdTAwM2VtYmltID0gbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2ODpcdGxpbmstXHUwMDNlc2Vzc2lvbiA9IG1oaV9tYmltX2dldF9saW5rX211eF9pZChsaW5rLVx1MDAzZW1iaW0tXHUwMDNlbWRldi1cdTAwM2VtaGlfY250cmwpICYjNDM7IGlmX2lkO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY5LVx0bGluay1cdTAwM2VuZGV2ID0gbmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NzMtXHRyY3VfcmVhZF9sb2NrKCk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NzQ6XHRpZiAobWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIGlmX2lkKSkge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTc1LVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODUtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODY6c3RhdGljIHZvaWQgbWhpX21iaW1fZGVsbGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4Ny1cdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODgte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg5Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTkwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5OC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjA0LVx0bmRldi1cdTAwM2VmbGFncyA9IElGRl9QT0lOVE9QT0lOVCB8IElGRl9OT0FSUDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYwNTpcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1oaV9tYmltX25kbztcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwNi1cdG5kZXYtXHUwMDNlbXR1ID0gTUhJX01CSU1fREVGQVVMVF9NVFU7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjEyLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjEzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgd3dhbl9vcHMgbWhpX21iaW1fd3dhbl9vcHMgPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTQ6XHQucHJpdl9zaXplID0gc2l6ZW9mKHN0cnVjdCBtaGlfbWJpbV9saW5rKSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNTpcdC5zZXR1cCA9IG1oaV9tYmltX3NldHVwLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE2Olx0Lm5ld2xpbmsgPSBtaGlfbWJpbV9uZXdsaW5rLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE3Olx0LmRlbGxpbmsgPSBtaGlfbWJpbV9kZWxsaW5rLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjE4LX07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTktXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MjA6c3RhdGljIGludCBtaGlfbWJpbV9wcm9iZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldiwgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjIxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVx1MDAzZW1oaV9jbnRybDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYyMzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjI0LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDUtXHQvKiBSZWdpc3RlciB3d2FuIGxpbmsgb3BzIHdpdGggTUhJIGNvbnRyb2xsZXIgcmVwcmVzZW50aW5nIFdXQU4gaW5zdGFuY2UgKi9cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0NjpcdHJldHVybiB3d2FuX3JlZ2lzdGVyX29wcyhcdTAwMjZjbnRybC1cdTAwM2VtaGlfZGV2LVx1MDAzZWRldiwgXHUwMDI2bWhpX21iaW1fd3dhbl9vcHMsIG1iaW0sIDApO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ3LX1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yZW1vdmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTAte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjUxOlx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWhpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUyLVx0c3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybCA9IG1oaV9kZXYtXHUwMDNlbWhpX2NudHJsO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2MC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2MTpzdGF0aWMgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgbWhpX21iaW1faWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Mi1cdC8qIEhhcmR3YXJlIGFjY2VsZXJhdGVkIGRhdGEgUEFUSCAodG8gbW9kZW0gSVBBKSwgTUJJTSBwcm90b2NvbCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2NS19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWhpLCBtaGlfbWJpbV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjctXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6c3RhdGljIHN0cnVjdCBtaGlfZHJpdmVyIG1oaV9tYmltX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2OTpcdC5wcm9iZSA9IG1oaV9tYmltX3Byb2JlLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlx0LnJlbW92ZSA9IG1oaV9tYmltX3JlbW92ZSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3MTpcdC5kbF94ZmVyX2NiID0gbWhpX21iaW1fZGxfY2FsbGJhY2ssXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzI6XHQudWxfeGZlcl9jYiA9IG1oaV9tYmltX3VsX2NhbGxiYWNrLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjczOlx0LmlkX3RhYmxlID0gbWhpX21iaW1faWRfdGFibGUsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzQtXHQuZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3OTptb2R1bGVfbWhpX2RyaXZlcihtaGlfbWJpbV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjgwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE5NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQmVoYXZpb3IqKgoKT2theSwgc28gd2UmIzM5O3JlIHNlZWluZyBzb21ldGhpbmcgdW51c3VhbCBpbiB0aGUgbmV0d29yayBiZWhhdmlvci4gTXkgZmlyc3QgaW5zdGluY3QsIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUsIGlzIHRvIGNhc3QgYSB3aWRlciBuZXQuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYHQ3eHhfbmV0ZGV2LmNgIGFzIHdlbGwuIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIGEga2V5IGNvbXBvbmVudCBhbmQgY291bGQgdmVyeSB3ZWxsIGJlIHRoZSByb290IGNhdXNlLCBvciBhdCBsZWFzdCBiZSBpbnZvbHZlZCBpbiB0aGUgY2FzY2FkZSBvZiBpc3N1ZXMgd2UgYXJlIGN1cnJlbnRseSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgc3BlY2lmaWMgbW9kdWxlIGFuZCBzdGFydCBleGFtaW5pbmcgaXRzIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBpZGVudGlmeSBhbnkgY2x1ZXMgaW4gaXRzIGhhbmRsaW5nIG9mIHBhY2tldCB0cmFuc21pc3Npb24gb3IgcmVjZXB0aW9uLCBpbnRlcnJ1cHQgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi4gV2UmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdCBhcmVhcyBhbmQgdGhlbiBkaWcgZGVlcGVyIGlmIG5lZWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dDd4eF9jY21uaV9yZWN2X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz0zOTk9c3RhdGljIHZvaWQgaW5pdF9tZF9zdGF0dXNfbm90aWZpZXIoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNDExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NDEyOnN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMy1cdFx0XHRcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz00OTA9aW50IHQ3eHhfY2NtbmlfaW5pdChzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2Rldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy01MDItXHRjdGxiLVx1MDAzZWNhbGxiYWNrcy5zdGF0ZV9ub3RpZnkgPSB0N3h4X2NjbW5pX3F1ZXVlX3N0YXRlX25vdGlmeTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjUwMzpcdGN0bGItXHUwMDNlY2FsbGJhY2tzLnJlY3Zfc2tiID0gdDd4eF9jY21uaV9yZWN2X3NrYjtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwNC1cdGN0bGItXHUwMDNlbmljX2Rldl9udW0gPSBOSUNfREVWX0RFRkFVTFQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNSEkgRHJpdmVycyBmb3IgVnVsbmVyYWJpbGl0eSBSZXNlYXJjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZXNlIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgYXJlIHdlIGRlYWxpbmcgd2l0aCBkcml2ZXJzIHNwZWNpZmljYWxseSB0aWVkIHRvIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIG9yIGNhbiBJIGdldCBhd2F5IHdpdGggZnV6emluZyB0aGVzZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/IFRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBlc3RhYmxpc2guCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYE1ISV9XV0FOX01CSU1gLiBSaWdodCwgTUhJIHN0YW5kcyBmb3IgTW9kZW0gSG9zdCBJbnRlcmZhY2UsIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIHBvaW50cyB0byBRdWFsY29tbSBQQ0llIG1vZGVtcyDigJMgdGhpbmsgU25hcGRyYWdvbiBYNTUsIFg2MiwgWDY1LCB0aGUga2luZCB0aGF0IGNvbm5lY3Qgb3ZlciBQQ0llLiBHb29kLiBUaGF0IGhlbHBzIG5hcnJvdyB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LgoKVG8gdW5kZXJzdGFuZCBob3cgdGhlIE1ISSBjb250cm9sbGVyIGlzIHByb2JlZCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgb3V0IGBkcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE5OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZHJpdmVyIHNlYXJjaDoKCioqRGl2aW5nIGludG8gdGhlIE1ISSBEcml2ZXIgU3BhY2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZSBQQ0kgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHdoYXQgSSYjMzk7bSB3b3JraW5nIG9uLCBpcyB0byBsb29rIHdpdGhpbiB0aGUgYGRyaXZlcnMvYnVzL21oaWAgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSBNb2JpbGUgSG9zdCBJbnRlcmZhY2UgKE1ISSkgYnVzLiBDb25zaWRlcmluZyB0aGF0IEkmIzM5O20gbG9va2luZyBmb3IgUENJIGRyaXZlcnMsIEkmIzM5O20gaG9waW5nIEkgZmluZCBzb21lIGRyaXZlcnMgdG8gaW50ZXJmYWNlIHdpdGggTUhJIGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHR5cGljYWwgc3ViZGlyZWN0b3JpZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBhYnN0cmFjdGlvbiBsYXllcnMgdGhhdCB3b3VsZCBiZSBoZWxwZnVsIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSB3aGF0IFBDSSBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzYtfTtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTc3Nzptb2R1bGVfcGNpX2RyaXZlcihtaGlfcGNpX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTUwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYG1oaV9wY2lfZHJpdmVyYCBpbiBgcGNpX2dlbmVyaWMuY2AqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBgcGNpX2dlbmVyaWMuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhlIGBtaGlfcGNpX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZ2VuZXJpYyBQQ0kgZnJhbWV3b3JrLiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgdG8gbWFrZSB0aGUgTUhJIChwcmVzdW1hYmx5IE1vYmlsZSBIb3N0IEludGVyZmFjZSkgZGV2aWNlIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGJyb2FkZXIgUENJIGNvbnRleHQ/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyByZXNvdXJjZSBhbGxvY2F0aW9uIOKAkyBhcmUgd2UgdXNpbmcgc3RhbmRhcmQgUENJIHJlc291cmNlIG1hbmFnZW1lbnQsIG9yIGFyZSB0aGVyZSBjdXN0b20gaG9va3MgaW4gcGxhY2UgdG8gZGVhbCB3aXRoIHRoZSBNSEkmIzM5O3Mgc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBJL08gb3IgaW50ZXJydXB0IHJlcXVpcmVtZW50cz8gQWxzbywgaG93IGRvZXMgdGhlIGRyaXZlciBpbnRlcmFjdCB3aXRoIHRoZSBQQ0kgYnVzJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3BhY2U/IEkgd2FudCB0byBzZWUgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRzIGNvcnJlY3RseS4gQXJlIHdlIHVzaW5nIHN0YW5kYXJkIFBDSSBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgb3IgZG9lcyB0aGUgTUhJIGhhcmR3YXJlIG5lY2Vzc2l0YXRlIGEgbW9yZSBpbnRyaWNhdGUgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWd5PyBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIGNsdWVzIG9uIHRoZSBwbGF0Zm9ybSByZXF1aXJlbWVudHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHdpbGwgd29yayBvbiBhIG5ldyB0YXJnZXQuIEkgYWxzbyB3YW50IHRvIHNlZSBob3cgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkOyB3aGF0IGRvZXMgaXQgbG9vayBmb3IgaW4gdGhlIGRldmljZSBJRCB0YWJsZSwgYW5kIGhvdyBhcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBoYW5kbGVkIHRoZXJlPyBMYXN0bHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBlcnJvciBoYW5kbGluZyDigJMgaG93IGFyZSBQQ0kgYnVzIGVycm9ycywgZGV2aWNlIG5vdCBwcmVzZW50IHNjZW5hcmlvcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiBmYWlsdXJlcyBkZWFsdCB3aXRoIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGlzIE1ISSBkcml2ZXI/IEkgc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlIGRyaXZlciBjb21wbGllcyB3aXRoIHRoZSBsYXRlc3QgUENJIHNwZWNpZmljYXRpb24gdmVyc2lvbnMgYW5kIGFueSByZWxldmFudCBwbGF0Zm9ybSBzdGFuZGFyZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz05NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfcGNpX2Rldl9pbmZvIG1oaV9uZXRwcmlzbWFfZmN1bjY5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy05NTEtLyogS2VlcCB0aGUgbGlzdCBzb3J0ZWQgYmFzZWQgb24gdGhlIFBJRC4gTmV3IFZJRCBzaG91bGQgYmUgYWRkZWQgYXMgdGhlIGxhc3QgZW50cnkgKi9cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6OTUyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtaGlfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTk1My1cdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUNPTSwgMHgwMTE2KSxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTEwODYtfTtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTEwODgtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTc2OC1cdC5uYW1lXHRcdD0gXCYjMzQ7bWhpLXBjaS1nZW5lcmljXCYjMzQ7LFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNzY5Olx0LmlkX3RhYmxlXHQ9IG1oaV9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzAtXHQucHJvYmVcdFx0PSBtaGlfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE1ISSBIb3N0IENvbnRyb2xsZXJzKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBlc3RhYmxpc2hlZCB0aGUgcHJpbWFyeSBNSEkgaG9zdCBjb250cm9sbGVyIHNpdHVhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBvdGhlciBwb3RlbnRpYWwgaW5zdGFuY2VzIG9mIE1ISSBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uIGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoZXJlIGNvdWxkIGJlIGhpZGRlbiBNSEkgY29udHJvbGxlciBjb25maWd1cmF0aW9uczogcGVyaGFwcyBhIHZpcnR1YWwgb3IgcGxhdGZvcm0tbGV2ZWwgY29udHJvbGxlciBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZSwgb3IgZXZlbiBhbiBlbmRwb2ludC1zcGVjaWZpYyBjb250cm9sbGVyIHRoYXQgd2UgaGF2ZW4mIzM5O3QgaWRlbnRpZmllZCB5ZXQuIEl0JiMzOTtzIGEgY3JpdGljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gY29tcHJlaGVuc2l2ZWx5IHZlcmlmeSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNSEkgYXJjaGl0ZWN0dXJlIGlzIGNvbXBsZXRlLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gbWlzcyBhbnkgY29udHJvbGxlciBpbiB0aGUgc3lzdGVtLiBUaGUgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIGludG8gdGhlIGZpcm13YXJlIGFuZCBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0PTIwPUJlbG93IGFyZSB0aGUgcm9sZXMgb2YgdGhlIE1ISSBjb250cm9sbGVyIGRyaXZlcjpcbi0tXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjQtKiBBbGxvY2F0ZXMgc3RydWN0IG1oaV9jb250cm9sbGVyIGFuZCByZWdpc3RlcnMgd2l0aCB0aGUgTUhJIGJ1cyBmcmFtZXdvcmtcbkRvY3VtZW50YXRpb24vbWhpL3RvcG9sb2d5LnJzdDoyNTogIHdpdGggY2hhbm5lbCBhbmQgZXZlbnQgY29uZmlndXJhdGlvbnMgdXNpbmcgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIuXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjYtKiBJbml0aWF0ZXMgcG93ZXIgb24gYW5kIHNodXRkb3duIHNlcXVlbmNlXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM9ODAwPXN0YXRpYyBpbnQgbWhpX3Jlc2V0X2FuZF9hc3luY19wb3dlcl91cChzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybClcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Mjc6c3RydWN0IG1oaV9jb250cm9sbGVyICpxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCB2b2lkIF9faW9tZW0gKm1oaV9iYXIsXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXHRcdFx0XHRcdFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc1LVx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIFx1MDAyNm1oaV9jb25maWcpO1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4Olx0XHRwY2lfZXJyKHBjaV9kZXYsIFwmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC04LVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVx0XHRcdFx0XHRcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTU5Ni1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcdHFkZXYtXHUwMDNlbWhpX2NudHJsID0gcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihwZGV2LCBxZGV2LVx1MDAzZWJhcl9taGksIG1oaV9pcnEsXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXHRcdFx0XHRcdFx0ICAgICAgIHFkZXYtXHUwMDNlc2luZ2xlX21zaSwgY29uZmlnLVx1MDAzZWZhbWlseSk7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTg4MT1zdGF0aWMgaW50IHBhcnNlX2NvbmZpZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjkxOTppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNTgtfVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0MC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM9MzM1PWludCBhdGgxMWtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXHRhYl9wY2ktXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYXRoMTFrX21oaV9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1Olx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVx0aWYgKHJldCkge1xuLS1cbmluY2x1ZGUvbGludXgvbWhpLmg9Mjk0PXN0cnVjdCBtaGlfY29udHJvbGxlcl9jb25maWcge1xuLS1cbmluY2x1ZGUvbGludXgvbWhpLmgtMzg1LSAqIEZpZWxkcyBtYXJrZWQgYXMgKHJlcXVpcmVkKSBuZWVkIHRvIGJlIHBvcHVsYXRlZCBieSB0aGUgY29udHJvbGxlciBkcml2ZXJcbmluY2x1ZGUvbGludXgvbWhpLmg6Mzg2OiAqIGJlZm9yZSBjYWxsaW5nIG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkuIEZvciB0aGUgZmllbGRzIG1hcmtlZCBhcyAob3B0aW9uYWwpXG5pbmNsdWRlL2xpbnV4L21oaS5oLTM4Ny0gKiB0aGV5IGNhbiBiZSBwb3B1bGF0ZWQgZGVwZW5kaW5nIG9uIHRoZSB1c2VjYXNlLlxuLS1cbmluY2x1ZGUvbGludXgvbWhpLmg9NTUwPXZvaWQgbWhpX2ZyZWVfY29udHJvbGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XG4tLVxuaW5jbHVkZS9saW51eC9taGkuaC01NTItLyoqXG5pbmNsdWRlL2xpbnV4L21oaS5oOjU1MzogKiBtaGlfcmVnaXN0ZXJfY29udHJvbGxlciAtIFJlZ2lzdGVyIE1ISSBjb250cm9sbGVyXG5pbmNsdWRlL2xpbnV4L21oaS5oLTU1NC0gKiBAbWhpX2NudHJsOiBNSEkgY29udHJvbGxlciB0byByZWdpc3RlclxuLS1cbmluY2x1ZGUvbGludXgvbWhpLmgtNTU2LSAqL1xuaW5jbHVkZS9saW51eC9taGkuaDo1NTc6aW50IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxuaW5jbHVkZS9saW51eC9taGkuaC01NTgtXHRcdFx0Y29uc3Qgc3RydWN0IG1oaV9jb250cm9sbGVyX2NvbmZpZyAqY29uZmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBXV0FOIE1vZGVtIERyaXZlcnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogZWl0aGVyIHRoZSBgbWhpX3d3YW5fbWJpbWAgb3IgYHQ3eHhfbmV0ZGV2YCBkcml2ZXJzLiBCb3RoIGFyZSBoYXJkd2FyZSBkcml2ZXJzIGZvciBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW1zLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gcmVhY2ggdGhlbSB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZS4KCkZpcnN0LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSBkcml2ZXJzIHRoZW1zZWx2ZXM6IGBtaGlfd3dhbl9tYmltLmNgIGhhbmRsZXMgUXVhbGNvbW0gUENJZSBtb2RlbXMsIGFuZCBgdDd4eF9uZXRkZXYuY2AgZGVhbHMgd2l0aCBNZWRpYVRlayBUN3h4IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSB0aGVpciByZXNwZWN0aXZlIHBoeXNpY2FsIFBDSSBtb2RlbXMuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGJlY29tZXMsIGNhbiB3ZSB0cmlnZ2VyIHRoZXNlIGRyaXZlcnMgaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQsIG9yIGFyZSB0aGV5IGluaGVyZW50bHkgdGllZCB0byB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgYXJlIHRoZXNlIGRldmljZXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBhY2NvcmRpbmcgdG8gdGhlIGRlZmluZWQgY3JpdGVyaWEsIG1lYW5pbmcgdGhleSBuZWVkIHJlYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVU/IFRoYXQmIzM5O3MgdGhlIGtleS4KCkxldCYjMzk7cyBsb29rIGF0IGBtaGlfd3dhbl9tYmltLmNgIGZpcnN0LiBUaGUgYG1oaV9tYmltX3Byb2JlYCBmdW5jdGlvbiBhcHBlYXJzIHRvIGJlIHRoZSBlbnRyeSBwb2ludC4gSXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gYW4gTUhJIGRldmljZSBtYXRjaGVzIGBtaGlfbWJpbV9pZF90YWJsZWAgb24gdGhlIE1ISSBidXMuIFRoZSBNSEkgYnVzIGRldmljZXMgYXJlIGNyZWF0ZWQgYnkgTUhJIGNvbnRyb2xsZXJzLiBUaGlzIHNlZW1zIHRvIGhhcHBlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlIGluaXRpYWxpemVzIHRoZSBNSEkgY2hhbm5lbHMuIFBhY2tldHMgYXJlIHRoZW4gaGFuZGxlZCB0aHJvdWdoIGBtaGlfbWJpbV9yeGAgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBmcm9tIHRoZSBNSEkgY29yZSB3aGVuIHRoZSB0cmFuc2ZlciBoYXMgY29tcGxldGVkIGZyb20gdGhlIGhhcmR3YXJlLiBJdCYjMzk7cyBhIGNoYWluIG9mIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBtb2RlbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBNSEkgYnVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIGB0N3h4X25ldGRldi5jYC4gVGhlIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgTVRLIFQ3eHggUENJZSBkZXZpY2UgcmVjZWl2ZXMgcGFja2V0cyBmcm9tIHRoZSBwaHlzaWNhbCBtb2RlbS4gVGhlIGRyaXZlciBpcyByZWdpc3RlcmVkIGFzIGEgUENJIGRyaXZlci4gVGhpcyBhbHNvIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBwcmVzZW5jZSBvZiBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuIEkgbmVlZCB0byBjaGVjayB0aGUgUENJIElEcyB3aXRoaW4gYHQ3eHhfcGNpLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGljaCBoYXJkd2FyZSB0aGUgZHJpdmVyIGlzIHRpZWQgdG8uCgpCYXNlZCBvbiB0aGlzIHByZWxpbWluYXJ5IGludmVzdGlnYXRpb24sIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBib3RoIGRyaXZlcnMgYXJlIHN0cm9uZ2x5IGNvdXBsZWQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwaHlzaWNhbCBQQ0llIG1vZGVtcy4gUmVhY2hpbmcgdGhlbSBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCBtYXkgYmUgY2hhbGxlbmdpbmcsIGFuZCBwZXJoYXBzIGltcG9zc2libGUsIGFzIHRoZXkgcmVseSBvbiB0aGUgTUhJIGJ1cyBvciBQQ0llIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSBpbnRlcmFjdGlvbiB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLiBXZSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgaW52ZXN0aWdhdGUgdGhlIHNldHVwIHByb2Nlc3MgdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM9OTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0N3h4X3BjaV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ0Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NGQ3NSkgfSxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0NTpcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0NjpcdHsgUENJX0RFVklDRSgweDE0YzAsIDB4NGQ3NSkgfSwgLy8gRGVsbCBEVzU5MzNlXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDctXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NDgKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFZlbmRvci1TcGVjaWZpYyBQQ0llIE1vZGVtIERyaXZlcnMgZm9yIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGUgcHJvcG9zZWQgcGF0Y2ggYWZmZWN0cyB0d28gc3BlY2lmaWMgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVyczogYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4L3Q3eHhfbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgUXVhbGNvbW0gUENJZSBtb2RlbSBNQklNIG5ldHdvcmsgZHJpdmVyIHV0aWxpemluZyB0aGUgTUhJIGJ1cyBhbmQgYSBNZWRpYVRlayBUN3h4IHNlcmllcyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCByZXNwZWN0aXZlbHkuCgpUaGUgY3JpdGljYWwgcG9pbnQsIGFzIEkgc2VlIGl0LCBpcyB0aGF0IG5laXRoZXIgb2YgdGhlc2UgZGV2aWNlcywgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCB0aGUgY29tbW9uIHByYWN0aWNlcywgY2FuIGJlIG1lYW5pbmdmdWxseSBmdXp6ZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhleSByZXF1aXJlICphY3R1YWwqIHBoeXNpY2FsIGhhcmR3YXJlIOKAkyBhIFF1YWxjb21tIFNuYXBkcmFnb24gUENJZSBtb2RlbSBhbmQgYSBNZWRpYVRlayBUN3h4IFBDSWUgbW9kZW0sIHJlc3BlY3RpdmVseS4gVGhlIGNvbW1pdCBkaWZmIGNvbmZpcm1zIHRoaXMsIHNob3dpbmcgY2hhbmdlcyByZXN0cmljdGVkIHRvIHRob3NlIHR3byBmaWxlcywgbm90aGluZyBlbHNlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoZXNlIGRyaXZlcnMgYXJlIHN0cnVjdHVyYWxseSBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdW5hdmFpbGFibGUgaW4gYSB0eXBpY2FsIHN5emthbGxlciB0ZXN0aW5nIHNldHVwLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIFNlY3Rpb24gMjogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZHJpdmVycyB0aGF0IGRlbWFuZCBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgZXNzZW50aWFsbHkgY2xhc3NpZmllcyB0aGUgY29kZSBhcyB1bnJlYWNoYWJsZS4KCkNvbnNlcXVlbnRseSwgZnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBTaW5jZSB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgd2l0aG91dCB0aGUgcmVxdWlyZWQgaGFyZHdhcmUsIGZ1enppbmcgZWZmb3J0cyB3b3VsZCBiZSB3YXN0ZWQuIEFuZCBzbywgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgbGlzdHMgY2FuIHNhZmVseSByZW1haW4gZW1wdHksIGBbXWAuIElmIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIGVtcHR5IGxpc3RzIGFyZSBzdGFuZGFyZCBwcmFjdGljZS4KCkluIHNob3J0LCBJJiMzOTtsbCBiZSBzZXR0aW5nIHRoaXMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHN5c3RlbSB0byB1bmRlcnN0YW5kOiB0aGVzZSBjaGFuZ2VzLCB3aGlsZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZywgZG9uJiMzOTt0IHJlcHJlc2VudCBhIHZpYWJsZSB0YXJnZXQgZm9yIGltbWVkaWF0ZSBmdXp6aW5nIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChRdWFsY29tbSBNSEkgV1dBTiBNQklNIGRyaXZlcikgYW5kIGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIChNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyKS4gQm90aCBkcml2ZXJzIHJlcXVpcmUgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbSBoYXJkd2FyZSAoUXVhbGNvbW0gYW5kIE1lZGlhVGVrIFQ3eHgpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM2OjU4LjY1MzUzNDAyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDc1NTQ3MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM2OjU4LjY1MzU0MTg4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMTQ5MzkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJhOGVlNTM0YWY1ODUzNzQ1MTllMjY0ZTlhZjJhYWE3ZGNiY2VmZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjcxZTcwMDAwOGMyMGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbkBAIC0yNTQsNiArMjU0LDcgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5cXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0aW50IG5kcG9mZnNldDtcXG4rXFx0aW50IGxhc3RfbmRwb2Zmc2V0ID0gMDtcXG4gXFxuIFxcdC8qIENoZWNrIE5UQiBoZWFkZXIgYW5kIHJldHJpZXZlIGZpcnN0IE5EUCBvZmZzZXQgKi9cXG4gXFx0bmRwb2Zmc2V0ID0gbWJpbV9yeF92ZXJpZnlfbnRoMTYobWJpbSwgc2tiKTtcXG5AQCAtMjY1LDYgKzI2NiwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0LyogUHJvY2VzcyBlYWNoIE5EUCAqL1xcbiBcXHR3aGlsZSAoMSkge1xcbiBcXHRcXHRzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgbmRwMTY7XFxuK1xcbitcXHRcXHRpZiAobmRwb2Zmc2V0IFxcdTAwM2M9IGxhc3RfbmRwb2Zmc2V0KSB7XFxuK1xcdFxcdFxcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXFxcIm1iaW06IG5vbi1pbmNyZWFzaW5nIE5EUCBvZmZzZXQgKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG5kcG9mZnNldCk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGxhc3RfbmRwb2Zmc2V0ID0gbmRwb2Zmc2V0O1xcbiBcXHRcXHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XFxuIFxcdFxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xcbiBcXHRcXHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xcbkBAIC0zMjAsNyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdFxcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcXG4tXFx0XFx0XFx0c2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcXG4rXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7XFxuK1xcdFxcdFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNmxpbmstXFx1MDAzZXJ4X3N5bmNwKTtcXG4rXFx0XFx0XFx0XFx0dTY0X3N0YXRzX2luYyhcXHUwMDI2bGluay1cXHUwMDNlcnhfZXJyb3JzKTtcXG4rXFx0XFx0XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNmxpbmstXFx1MDAzZXJ4X3N5bmNwKTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdHN3aXRjaCAoc2tibi1cXHUwMDNlZGF0YVswXSBcXHUwMDI2IDB4ZjApIHtcXG4gXFx0XFx0XFx0Y2FzZSAweDQwOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXFxuaW5kZXggZmMwYTdjYjE4MWRmMi4uOGYzMmMyZDI2OTMxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXFxuQEAgLTQyMCw2ICs0MjAsMTAgQEAgc3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVcXG4gXFxuIFxcdHNrYl9jYiA9IFQ3WFhfU0tCX0NCKHNrYik7XFxuIFxcdG5ldGlmX2lkID0gc2tiX2NiLVxcdTAwM2VuZXRpZl9pZHg7XFxuK1xcdGlmIChuZXRpZl9pZCBcXHUwMDNlPSBOSUNfREVWX01BWCkge1xcbitcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXHRjY21uaSA9IFJFQURfT05DRShjY21uaV9jdGxiLVxcdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XFxuIFxcdGlmICghY2NtbmkpIHtcXG4gXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzowMC4wNzU2ODg2ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU2MDUzMzgwNjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYThlZTUzNGFmNTg1Mzc0NTE5ZTI2NGU5YWYyYWFhN2RjYmNlZmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyBiL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG5pbmRleCBhOTQ5OTg3MTI1OTc2Li43MWU3MDAwMDhjMjBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG5AQCAtMjU0LDYgKzI1NCw3IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbitcdGludCBsYXN0X25kcG9mZnNldCA9IDA7XG4gXG4gXHQvKiBDaGVjayBOVEIgaGVhZGVyIGFuZCByZXRyaWV2ZSBmaXJzdCBORFAgb2Zmc2V0ICovXG4gXHRuZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpO1xuQEAgLTI2NSw2ICsyNjYsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBQcm9jZXNzIGVhY2ggTkRQICovXG4gXHR3aGlsZSAoMSkge1xuIFx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgbmRwMTY7XG4rXG4rXHRcdGlmIChuZHBvZmZzZXQgXHUwMDNjPSBsYXN0X25kcG9mZnNldCkge1xuK1x0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCJtYmltOiBub24taW5jcmVhc2luZyBORFAgb2Zmc2V0ICgldSlcXG5cIixcbitcdFx0XHRcdFx0ICAgIG5kcG9mZnNldCk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0bGFzdF9uZHBvZmZzZXQgPSBuZHBvZmZzZXQ7XG4gXHRcdHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjtcbiBcdFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG4gXHRcdGludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7XG5AQCAtMzIwLDcgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcbi1cdFx0XHRza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbik7XG4rXHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuK1x0XHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7XG4rXHRcdFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0XHRcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4rXHRcdFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRzd2l0Y2ggKHNrYm4tXHUwMDNlZGF0YVswXSBcdTAwMjYgMHhmMCkge1xuIFx0XHRcdGNhc2UgMHg0MDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgKzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbitcdGlmIChuZXRpZl9pZCBcdTAwM2U9IE5JQ19ERVZfTUFYKSB7XG4rXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XG4gXHRpZiAoIWNjbW5pKSB7XG4gXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjAwLjA3NTY4OTk5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NjkzNDgwODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB3aGF0J3MgYmVpbmcgdG91Y2hlZC4gSSBzZWUgdHdvIGZpbGVzOiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIEkga25vdyBgbWhpX3d3YW5fbWJpbS5jYCBpcyB0aGUgTUhJIFdXQU4gTUJJTSBkcml2ZXIsIGRlYWxpbmcgd2l0aCBNSEkgKE1vYmlsZSBIb3N0IEludGVyZmFjZSkgY29ubmVjdGlvbnMgYW5kIE1CSU0gKE1vYmlsZSBCcm9hZGJhbmQgSW50ZXJmYWNlIE1vZGVsKSBjb21tdW5pY2F0aW9uLCBhbmQgYHQ3eHhfbmV0ZGV2LmNgIGlzIHRoZSBNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyIGZvciB0aGUgdDd4eCBjaGlwc2V0LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBhY2Nlc3NpYmlsaXR5IGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgS2NvbmZpZyBvcHRpb25zIGFuZCBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9ucyB0aGF0IHdpbGwgcHJldmVudCBtZSBmcm9tIHVzaW5nIHRoZXNlIGRyaXZlcnMgaW4gbXkgdGVzdHM/IFRoaXMgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC9LY29uZmlnYCDigJMgYXMgd2VsbCBhcyB0aGUgYWNjb21wYW55aW5nIGBNYWtlZmlsZWBzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGV5IGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IHRlc3QgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjA2LjY0NTAzOTk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODk0ODgxOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV1dBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nj1tZW51IFxcXCJXaXJlbGVzcyBXQU5cXFwiXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjg6Y29uZmlnIFdXQU5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTpcXHR0cmlzdGF0ZSBcXFwiV1dBTiBEcml2ZXIgQ29yZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAtXFx0ZGVwZW5kcyBvbiBHTlNTIHx8IEdOU1MgPSBuXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExLVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTI6XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgV1dBTiBkcml2ZXIgY29yZS4gVGhpcyBkcml2ZXJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTM6XFx0ICBwcm92aWRlcyBhIGNvbW1vbiBmcmFtZXdvcmsgZm9yIFdXQU4gZHJpdmVycy5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjE4OmlmIFdXQU5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjIwOmNvbmZpZyBXV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjE6XFx0Ym9vbCBcXFwiV1dBTiBkZXZpY2VzIGRlYnVnZnMgaW50ZXJmYWNlXFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjU6XFx0ICBFbmFibGVzIGRlYnVnZnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBXV0FOIGNvcmUgYW5kIGRldmljZSBkcml2ZXJzLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjctXFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlbiB5b3UgY2FuIGZpbmQgdGhlIGRlYnVnIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoyODpcXHQgIGVsZW1lbnRzIGZvciBlYWNoIFdXQU4gZGV2aWNlIGluIGEgZGlyZWN0b3J5IHRoYXQgaXMgY29ycmVzcG9uZGluZyB0b1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yOS1cXHQgIHRoZSBkZXZpY2UgbmFtZTogZGVidWdmcy93d2FuL3d3YW5YLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzE6Y29uZmlnIFdXQU5fSFdTSU1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzI6XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBXV0FOIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozNDpcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3QgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zNS1cXHQgIGZyYW1ld29yay5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDA6Y29uZmlnIE1ISV9XV0FOX0NUUkxcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDE6XFx0dHJpc3RhdGUgXFxcIk1ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDItXFx0ZGVwZW5kcyBvbiBNSElfQlVTXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTQzLVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDQ6XFx0ICBNSEkgV1dBTiBDVFJMIGFsbG93cyBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zIHRvIGV4cG9zZSBkaWZmZXJlbnQgbW9kZW1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDUtXFx0ICBjb250cm9sIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCwgTUJJTSwgUU1JLCBESUFHXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjU0OiAgICAgICAgdHJpc3RhdGUgXFxcIk1ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01NS0gICAgICAgIGRlcGVuZHMgb24gTUhJX0JVU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01Ni0gICAgICAgIGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NTc6ICAgICAgICAgIE1ISSBXV0FOIE1CSU0gaXMgYSBXV0FOIG5ldHdvcmsgZHJpdmVyIGZvciBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01OC0gICAgICAgICAgSXQgaW1wbGVtZW50cyBNQklNIG92ZXIgTUhJLCBmb3IgSVAgZGF0YSBhZ2dyZWdhdGlvbiBhbmQgbXV4aW5nLlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY1PWNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY2OlxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02Ny1cXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzEtXFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzI6XFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3MzpcXHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzg6Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3OTpcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODAtXFx0ZGVwZW5kcyBvbiBSUE1TR1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy04MS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjgyOlxcdCAgUlBNU0cgV1dBTiBDVFJMIGFsbG93cyBtb2RlbXMgYXZhaWxhYmxlIHZpYSBSUE1TRyBjaGFubmVscyB0byBleHBvc2VcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODMtXFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTc6XFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk5LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDA6XFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDEtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDI6XFx0ICBUaGlzIGRyaXZlciBlbmFibGVzIEludGVsIE0uMiBXV0FOIERldmljZSBjb21tdW5pY2F0aW9uLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjEwNDpcXHQgIElmIHlvdSBoYXZlIG9uZSBvZiB0aG9zZSBJbnRlbCBNLjIgV1dBTiBNb2R1bGVzIGFuZCB3aXNoIHRvIHVzZSBpdCBpblxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDUtXFx0ICBMaW51eCBzYXkgWS9NIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTA5PWNvbmZpZyBNVEtfVDdYWFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTA6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTExLVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExMjpcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExNDpcXHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTU6XFx0ICBBZGFwdHMgV1dBTiBmcmFtZXdvcmsgYW5kIHByb3ZpZGVzIG5ldHdvcmsgaW50ZXJmYWNlIGxpa2Ugd3dhbjBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTE2LVxcdCAgYW5kIHR0eSBpbnRlcmZhY2VzIGxpa2Ugd3dhbjBhdDAgKEFUIHByb3RvY29sKSwgd3dhbjBtYmltMFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEyMy1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTI0OmVuZGlmICMgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTItI1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciB0aGUgTGludXggV1dBTiBkZXZpY2UgZHJpdmVycy5cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTQtI1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1dXQU4pICs9IHd3YW4ub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtNy13d2FuLW9ianMgKz0gd3dhbl9jb3JlLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19XV0FOX0hXU0lNKSArPSB3d2FuX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX01ISV9XV0FOX0NUUkwpICs9IG1oaV93d2FuX2N0cmwub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICs9IG1oaV93d2FuX21iaW0ub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICs9IHFjb21fYmFtX2RtdXgub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgKz0gcnBtc2dfd3dhbl9jdHJsLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19JT1NNKSArPSBpb3NtL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlPTY9aW9zbS15ID0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlLTI1LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZToyNjppb3NtLSQoQ09ORklHX1dXQU5fREVCVUdGUykgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZS0yNy1cXHRpb3NtX2lwY19kZWJ1Z2ZzLm9cXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYz0zND1zdGF0aWMgc3RydWN0IGlwY19jaG5sX2NmZyBtb2RlbV9jZmdbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM3LVxcdCAgSVBDX01FTV9NQVhfVERTX01VWF9MSVRFX1VMLCBJUENfTUVNX01BWF9URFNfTVVYX0xJVEVfREwsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6Mzg6XFx0ICBJUENfTUVNX01BWF9ETF9NVVhfTElURV9CVUZfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy0zOS1cXHQvKiBSUEMgLSAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00MS1cXHQgIElQQ19NRU1fTUFYX1REU19SUEMsIElQQ19NRU1fTUFYX1REU19SUEMsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NDI6XFx0ICBJUENfTUVNX01BWF9ETF9SUENfQlVGX1NJWkUsIFdXQU5fUE9SVF9YTU1SUEMgfSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00My1cXHQvKiBJQVQwICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00NS1cXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo0NjpcXHQgIFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQ3LVxcdC8qIFRyYWNlICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00OS1cXHQgIElQQ19NRU1fVERTX1RSQywgSVBDX01FTV9URFNfVFJDLCBJUENfTUVNX01BWF9ETF9UUkNfQlVGX1NJWkUsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NTA6XFx0ICBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTUxLVxcdC8qIElBVDEgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTUzLVxcdCAgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9URFNfQVQsIElQQ19NRU1fTUFYX0RMX0FUX0JVRl9TSVpFLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjU0OlxcdCAgV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTUtXFx0LyogTG9vcGJhY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU3LVxcdCAgSVBDX01FTV9NQVhfVERTX0xPT1BCQUNLLCBJUENfTUVNX01BWF9URFNfTE9PUEJBQ0ssXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NTg6XFx0ICBJUENfTUVNX01BWF9ETF9MT09QQkFDS19TSVpFLCBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU5LVxcdC8qIE1CSU0gQ2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjEtXFx0ICBJUENfTUVNX01BWF9URFNfTUJJTSwgSVBDX01FTV9NQVhfVERTX01CSU0sXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NjI6XFx0ICBJUENfTUVNX01BWF9ETF9NQklNX0JVRl9TSVpFLCBXV0FOX1BPUlRfTUJJTSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTYzLVxcdC8qIEZsYXNoIENoYW5uZWwvQ29yZWR1bXAgQ2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjUtXFx0ICBJUENfTUVNX01BWF9URFNfRkxBU0hfVUwsIElQQ19NRU1fTUFYX1REU19GTEFTSF9ETCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo2NjpcXHQgIElQQ19NRU1fTUFYX0RMX0ZMQVNIX0JVRl9TSVpFLCBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTY3LX07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfZGVidWdmcy5oLTgtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaDo5OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaC0xMC12b2lkIGlwY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0xNz1zdGF0aWMgaW50IGlwY19pbWVtX2NoZWNrX3d3YW5faXBzKHN0cnVjdCBpcGNfbWVtX2NoYW5uZWwgKmNobmwpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTE5LVxcdGlmIChjaG5sKVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MjA6XFx0XFx0cmV0dXJuIGNobmwtXFx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0yMS1cXHRcXHQgICAgICAgY2hubC1cXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jPTI5OD1zdGF0aWMgdm9pZCBpcGNfaW1lbV9kbF9za2JfcHJvY2VzcyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMzIyLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MzIzOlxcdGNhc2UgSVBDX0NUWVBFX1dXQU46XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjQtXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWNoYW5uZWwtXFx1MDAzZWlmX2lkID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz01NjI9c3RhdGljIHZvaWQgaXBjX2ltZW1fcnVuX3N0YXRlX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy01OTktXFx0XFx0XFx0aWYgKGlwY19pbWVtLVxcdTAwM2VwY2llLVxcdTAwM2VwY2ktXFx1MDAzZWRldmljZSA9PSBJTlRFTF9DUF9ERVZJQ0VfNzU2MF9JRCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjAwOlxcdFxcdFxcdCAgICBjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlID09IFdXQU5fUE9SVF9YTU1SUEMpIHtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwMS1cXHRcXHRcXHRcXHRjdHJsX2NobF9pZHgrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA1LVxcdFxcdFxcdGlmIChpcGNfaW1lbS1cXHUwMDNlcGNpZS1cXHUwMDNlcGNpLVxcdTAwM2VkZXZpY2UgPT0gSU5URUxfQ1BfREVWSUNFXzczNjBfSUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjYwNjpcXHRcXHRcXHQgICAgY2hubF9jZmdfcG9ydC53d2FuX3BvcnRfdHlwZSA9PSBXV0FOX1BPUlRfTUJJTSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA3LVxcdFxcdFxcdFxcdGN0cmxfY2hsX2lkeCsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MDktXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjEwOlxcdFxcdFxcdGlmIChjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlICE9IFdXQU5fUE9SVF9VTktOT1dOKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MTEtXFx0XFx0XFx0XFx0aXBjX2ltZW1fY2hhbm5lbF9pbml0KGlwY19pbWVtLCBJUENfQ1RZUEVfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTA2MD1pbnQgaXBjX2ltZW1fY2hhbm5lbF9hbGxvYyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0xMDg0LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MTA4NTpcXHRpZiAoY2hhbm5lbC1cXHUwMDNlY3R5cGUgPT0gSVBDX0NUWVBFX1dXQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTEwODYtXFx0ICAgIGluZGV4ID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaD0xMzY9ZW51bSBpcGNfY2hhbm5lbF9zdGF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTE0NS0gKlxcdFxcdCAgICAvSVAgdHJhZmZpYy5cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE0NjogKiBASVBDX0NUWVBFX1dXQU46XFx0XFx0VXNlZCBmb3IgSVAgdHJhZmZpY1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMTQ3LSAqIEBJUENfQ1RZUEVfQ1RSTDpcXHRcXHRVc2VkIGZvciBDb250cm9sIENvbW11bmljYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MTQ5PWVudW0gaXBjX2N0eXBlIHtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE1MDpcXHRJUENfQ1RZUEVfV1dBTixcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTE1MS1cXHRJUENfQ1RZUEVfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MjczPWVudW0gaXBjX3BoYXNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjg5LSAqIEBpcGNfdGFzazpcXHRcXHRcXHRUYXNrIGZvciBlbnRyeSBpbnRvIGlwYyB0YXNrIHF1ZXVlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDoyOTA6ICogQHd3YW46XFx0XFx0XFx0V1dBTiBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjkxLSAqIEBtdXg6XFx0XFx0XFx0SVAgRGF0YSBtdWx0aXBsZXhpbmcgc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTMzMC0gKiBAcGNpZV93YWtlX246XFx0XFx0UGNpZSB3YWtlIGZsYWdcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjMzMTogKiBAZGVidWdmc193d2FuX2RpcjpcXHRcXHRXV0FOIERlYnVnIEZTIGRpcmVjdG9yeSBlbnRyeVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzMyLSAqIEBkZWJ1Z2ZzX2RpcjpcXHRcXHREZWJ1ZyBGUyBkaXJlY3RvcnkgZm9yIGRyaXZlci1zcGVjaWZpYyBlbnRyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTMzND1zdHJ1Y3QgaW9zbV9pbWVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzQxLVxcdHN0cnVjdCBpb3NtX3BjaWUgKnBjaWU7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozNDI6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM0My1cXHRzdHJ1Y3QgaW9zbV90cmFjZSAqdHJhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM3My1cXHQgICBwY2llX3dha2VfbjoxO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6Mzc0OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNzUtXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc193d2FuX2RpcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jPTgwPWludCBpcGNfaW1lbV93d2FuX2NoYW5uZWxfaW5pdChzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jLTg2LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jOjg3OlxcdC8qIElmIG1vZGVtIHZlcnNpb24gaXMgaW52YWxpZCAoMHhmZmZmZmZmZiksIGRvIG5vdCBpbml0aWFsaXplIFdXQU4uICovXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtODgtXFx0aWYgKGlwY19pbWVtLVxcdTAwM2VjcF92ZXJzaW9uID09IC0xKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDEtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTAyOlxcdGlwY19pbWVtX2NoYW5uZWxfaW5pdChpcGNfaW1lbSwgSVBDX0NUWVBFX1dXQU4sIGNobmxfY2ZnLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jLTEwMy1cXHRcXHRcXHQgICAgICBJUlFfTU9EX09GRik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jOjEwNTpcXHQvKiBXV0FOIHJlZ2lzdHJhdGlvbi4gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDYtXFx0aXBjX2ltZW0tXFx1MDAzZXd3YW4gPSBpcGNfd3dhbl9pbml0KGlwY19pbWVtLCBpcGNfaW1lbS1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5oPTg3PWludCBpcGNfaW1lbV9zeXNfd3dhbl90cmFuc21pdChzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGlmX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmgtODktLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmg6OTA6ICogaXBjX2ltZW1fd3dhbl9jaGFubmVsX2luaXQgLSBJbml0aWFsaXplcyBXV0FOIGNoYW5uZWxzIGFuZCB0aGUgY2hhbm5lbCBmb3JcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC05MS0gKlxcdFxcdFxcdFxcdE1VWC5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz05PXN0YXRpYyBpbnQgaXBjX211eF9jaGFubmVsX2NyZWF0ZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmMtMTMtXFx0Y2hhbm5lbF9pZCA9IGlwY19pbWVtX2NoYW5uZWxfYWxsb2MoaXBjX211eC1cXHUwMDNlaW1lbSwgaXBjX211eC1cXHUwMDNlaW5zdGFuY2VfaWQsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjE0OlxcdFxcdFxcdFxcdFxcdCAgICBJUENfQ1RZUEVfV1dBTik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jPTQyND1pbnQgaXBjX211eF9vcGVuX3Nlc3Npb24oc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBpbnQgc2Vzc2lvbl9ucilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00MzItXFx0c2Vzc2lvbl9vcGVuLVxcdTAwM2VpZl9pZCA9IGNwdV90b19sZTMyKHNlc3Npb25fbnIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYzo0MzM6XFx0aXBjX211eC1cXHUwMDNlc2Vzc2lvbltzZXNzaW9uX25yXS5mbGFncyB8PSBJUENfTUVNX1dXQU5fTVVYO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00MzQtXFx0cmV0dXJuIGlwY19tdXhfc2NoZWR1bGUoaXBjX211eCwgXFx1MDAyNm11eF9tc2cpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jPTQzNz1pbnQgaXBjX211eF9jbG9zZV9zZXNzaW9uKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgaW50IHNlc3Npb25fbnIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmMtNDQ3LVxcdHJldF92YWwgPSBpcGNfbXV4X3NjaGVkdWxlKGlwY19tdXgsIFxcdTAwMjZtdXhfbXNnKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmM6NDQ4OlxcdGlwY19tdXgtXFx1MDAzZXNlc3Npb25bc2Vzc2lvbl9ucl0uZmxhZ3MgXFx1MDAyNj0gfklQQ19NRU1fV1dBTl9NVVg7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQ0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguaC01OC0vKiBNVVggZm9yIHJvdXRlIGxpbmsgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguaDo1OTojZGVmaW5lIElQQ19NRU1fV1dBTl9NVVggQklUKDApXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYz0xNz1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0xOC1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjE5Oi8qIFdXQU4gR1VJRCAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjAtc3RhdGljIGd1aWRfdCB3d2FuX2FjcGlfZ3VpZCA9IEdVSURfSU5JVCgweGJhZDAxYjc1LCAweDIyYTgsIDB4NGY0OCwgMHg4NywgMHg5MixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MjIwPXN0YXRpYyB2b2lkIGlwY19wY2llX2NvbmZpZ19pbml0KHN0cnVjdCBpb3NtX3BjaWUgKmlwY19wY2llKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMzEtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYzoyMzI6LyogVGhpcyB3aWxsIHJlYWQgdGhlIEJJT1MgV1dBTiBSVEQzIHNldHRpbmdzOlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjMzLSAqIEQwTDEuMi9EM0wyL0Rpc2FibGVkXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jPTI2MD1zdGF0aWMgaW50IGlwY19wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jLTMwNS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjMwNjpcXHQvKiBSZWFkIFdXQU4gUlREMyBCSU9TIFNldHRpbmdcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jLTMwNy1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmg9Mzk9ZW51bSBpcGNfcGNpZV9zbGVlcF9zdGF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oLTYxLSAqIEBzdXNwZW5kOlxcdFxcdFxcdFMySURMRSBzbGVlcC9hY3RpdmVcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oOjYyOiAqIEBkM2wyX3N1cHBvcnQ6XFx0XFx0UmVhZCBXV0FOIFJURDMgQklPUyBzZXR0aW5nIGZvciBEM0wyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oLTYzLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaC0xOC0gKiBAcGNpZTpcXHRcXHRQQ0llIGNvbXBvbmVudFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wb3J0Lmg6MTk6ICogQHBvcnRfdHlwZTpcXHRcXHRXV0FOIHBvcnQgdHlwZVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wb3J0LmgtMjAtICogQGNoYW5uZWw6XFx0XFx0Q2hhbm5lbCBpbnN0YW5jZVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmg9Mzc9c3RydWN0IGlvc21fdHJhY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmgtNDctXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmg6NDg6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjEtLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYzoyMjogKiBzdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiAtIG5ldGRldiBXV0FOIGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTIzLSAqIEBpcGNfd3dhbjpcXHRQb2ludGVyIHRvIGlvc21fd3dhbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg9c3RydWN0IGlvc21fbmV0ZGV2X3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNS0vKipcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jOjM2OiAqIHN0cnVjdCBpb3NtX3d3YW4gLSBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBXV0FOIHJvb3QgZGV2aWNlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNy0gKlxcdFxcdCAgICAgIGFuZCBpbnRlcmZhY2UgdG8gdGhlIElQQyBsYXllci5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg5PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzAwOlxcdC8qIFdXQU4gY29yZSB3aWxsIGNyZWF0ZSBhIG5ldGRldiBmb3IgdGhlIGRlZmF1bHQgSVAgTVVYIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTMwMS1cXHRpZiAod3dhbl9yZWdpc3Rlcl9vcHMoaXBjX3d3YW4tXFx1MDAzZWRldiwgXFx1MDAyNmlvc21fd3dhbl9vcHMsIGlwY193d2FuLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC01LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NjojaWZuZGVmIElPU01fSVBDX1dXQU5fSFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NzojZGVmaW5lIElPU01fSVBDX1dXQU5fSFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtOC1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTktLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaDoxMDogKiBpcGNfd3dhbl9pbml0IC0gQWxsb2NhdGUsIEluaXQgYW5kIHJlZ2lzdGVyIFdXQU4gZGV2aWNlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC0xMS0gKiBAaXBjX2ltZW06XFx0XFx0UG9pbnRlciB0byBpbWVtIGRhdGEtc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oPTE2PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTE4LS8qKlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6MTk6ICogaXBjX3d3YW5fZGVpbml0IC0gVW5yZWdpc3RlciBhbmQgZnJlZSBXV0FOIGRldmljZSwgY2xlYXIgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMjAtICogQGlwY193d2FuOlxcdFBvaW50ZXIgdG8gd3dhbiBpbnN0YW5jZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz05PWVudW0gbWhpX3d3YW5fZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEwOlxcdE1ISV9XV0FOX0RMX0NBUCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMTpcXHRNSElfV1dBTl9VTF9DQVAsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTI6XFx0TUhJX1dXQU5fUlhfUkVGSUxMLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzLX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTU6I2RlZmluZSBNSElfV1dBTl9NQVhfTVRVXFx0MHg4MDAwXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTYtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz00MT1zdGF0aWMgdm9pZCBtaGlfd3dhbl9yeF9idWRnZXRfaW5jKHN0cnVjdCBtaGlfd3dhbl9kZXYgKm1oaXd3YW4pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00Ni1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo0NzpcXHRpZiAodGVzdF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTQ4LVxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X3JlZmlsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz01ND1zdGF0aWMgYm9vbCBtaGlfd3dhbl9yeF9idWRnZXRfZGVjKHN0cnVjdCBtaGlfd3dhbl9kZXYgKm1oaXd3YW4pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy02MS1cXHRcXHRtaGl3d2FuLVxcdTAwM2VyeF9idWRnZXQtLTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo2MjpcXHRcXHRpZiAodGVzdF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTYzLVxcdFxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz03Nz1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTkxLVxcdFxcdC8qIFRvIHByZXZlbnQgdW5saW1pdGVkIGJ1ZmZlciBhbGxvY2F0aW9uIGlmIG5vdGhpbmcgY29uc3VtZXNcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo5MjpcXHRcXHQgKiB0aGUgUlggYnVmZmVycyAocGFzc2VkIHRvIFdXQU4gY29yZSksIHRyYWNrIHRoZWlyIGxpZmVzcGFuXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtOTMtXFx0XFx0ICogdG8gbm90IGFsbG9jYXRlIG1vcmUgdGhhbiBhbGxvd2VkIGJ1ZGdldC5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEwNj1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfc3RhcnQoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTExOS1cXHQvKiBBZGQgYnVmZmVycyB0byB0aGUgTUhJIGluYm91bmQgcXVldWUgKi9cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMjA6XFx0aWYgKHRlc3RfYml0KE1ISV9XV0FOX0RMX0NBUCwgXFx1MDAyNm1oaXd3YW4tXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyMTpcXHRcXHRzZXRfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXFx1MDAyNm1oaXd3YW4tXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMjItXFx0XFx0bWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayhcXHUwMDI2bWhpd3dhbi1cXHUwMDNlcnhfcmVmaWxsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEyOD1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3N0b3Aoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEzMzpcXHRjbGVhcl9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzNC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWhpd3dhbi1cXHUwMDNlcnhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0xNDE9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3R4KHN0cnVjdCB3d2FuX3BvcnQgKnBvcnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNDgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTQ5OlxcdGlmICghdGVzdF9iaXQoTUhJX1dXQU5fVUxfQ0FQLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE1MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yMTM9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMjI0LVxcdG1oaXd3YW4tXFx1MDAzZW1oaV9kZXYgPSBtaGlfZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjIyNTpcXHRtaGl3d2FuLVxcdTAwM2VtdHUgPSBNSElfV1dBTl9NQVhfTVRVO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIyNi1cXHRJTklUX1dPUksoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X3JlZmlsbCwgbWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yMzAtXFx0aWYgKG1oaV9kZXYtXFx1MDAzZWRsX2NoYW4pXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjMxOlxcdFxcdHNldF9iaXQoTUhJX1dXQU5fRExfQ0FQLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMi1cXHRpZiAobWhpX2Rldi1cXHUwMDNldWxfY2hhbilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzM6XFx0XFx0c2V0X2JpdChNSElfV1dBTl9VTF9DQVAsIFxcdTAwMjZtaGl3d2FuLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMjM0LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9MjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCBtaGlfd3dhbl9jdHJsX21hdGNoX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjU5OlxcdHsgLmNoYW4gPSBcXFwiRFVOXFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYwOlxcdHsgLmNoYW4gPSBcXFwiRFVOMlxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2MTpcXHR7IC5jaGFuID0gXFxcIk1CSU1cXFwiLCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfTUJJTSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2MjpcXHR7IC5jaGFuID0gXFxcIlFNSVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9RTUkgfSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjM6XFx0eyAuY2hhbiA9IFxcXCJESUFHXFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FDRE0gfSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjQ6XFx0eyAuY2hhbiA9IFxcXCJGSVJFSE9TRVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9GSVJFSE9TRSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2NTpcXHR7IC5jaGFuID0gXFxcIk5NRUFcXFwiLCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfTk1FQSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTI2Ni1cXHR7fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTI4Mz1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6Mjg0Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiTUhJIFdXQU4gQ1RSTCBEcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yODUtTU9EVUxFX0FVVEhPUihcXFwiTG9pYyBQb3VsYWluIFxcdTAwM2Nsb2ljLnBvdWxhaW5AbGluYXJvLm9yZ1xcdTAwM2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTYyMD1zdGF0aWMgaW50IG1oaV9tYmltX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LCBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ1OlxcdC8qIFJlZ2lzdGVyIHd3YW4gbGluayBvcHMgd2l0aCBNSEkgY29udHJvbGxlciByZXByZXNlbnRpbmcgV1dBTiBpbnN0YW5jZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0Ni1cXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNmNudHJsLVxcdTAwM2VtaGlfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZtaGlfbWJpbV93d2FuX29wcywgbWJpbSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yLS8qXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzogKiBRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNC0gKiBDb3B5cmlnaHQgKGMpIDIwMjAsIFN0ZXBoYW4gR2VyaG9sZCBcXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTkwNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTA2Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gQkFNLURNVVggV1dBTiBOZXR3b3JrIERyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNy1NT0RVTEVfQVVUSE9SKFxcXCJTdGVwaGFuIEdlcmhvbGQgXFx1MDAzY3N0ZXBoYW5AZ2VyaG9sZC5uZXRcXHUwMDNlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTk4PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpycG1zZ193d2FuX2ZpbmRfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTk5LXtcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jOjEwMDpcXHQvKiBTZWxlY3QgZmlyc3QgcGxhdGZvcm0gZGV2aWNlIGFzIHBhcmVudCBmb3IgdGhlIFdXQU4gcG9ydHMuXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xMDEtXFx0ICogT24gUXVhbGNvbW0gcGxhdGZvcm1zIHRoaXMgaXMgdXN1YWxseSB0aGUgcGxhdGZvcm0gZGV2aWNlIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM9MTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBtc2dfZGV2aWNlX2lkIHJwbXNnX3d3YW5fY3RybF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTQ4LVxcdC8qIFJQTVNHIGNoYW5uZWxzIGZvciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM6MTQ5OlxcdHsgLm5hbWUgPSBcXFwiREFUQTVfQ05UTFxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9RTUkgfSxcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jOjE1MDpcXHR7IC5uYW1lID0gXFxcIkRBVEE0XFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTE6XFx0eyAubmFtZSA9IFxcXCJEQVRBMVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTUyLVxcdHt9LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYz0xNjQ9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM6MTY1Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiUlBNU0cgV1dBTiBDVFJMIERyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTY2LU1PRFVMRV9BVVRIT1IoXFxcIlN0ZXBoYW4gR2VyaG9sZCBcXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFxcdTAwM2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZT00PW10a190N3h4LXk6PVxcdHQ3eHhfcGNpLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTE5LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToyMDptdGtfdDd4eC0kKENPTkZJR19XV0FOX0RFQlVHRlMpICs9IFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMjEtXFx0XFx0dDd4eF9wb3J0X3RyYWNlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9MzM4PXN0YXRpYyBpbnQgdDd4eF9jY21uaV9yZWdpc3Rlcl93d2FuKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmN0bGIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDUtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6MzQ2OlxcdC8qIFdXQU4gY29yZSB3aWxsIGNyZWF0ZSBhIG5ldGRldiBmb3IgdGhlIGRlZmF1bHQgSVAgTVVYIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDctXFx0cmV0ID0gd3dhbl9yZWdpc3Rlcl9vcHMoZGV2LCBcXHUwMDI2Y2Ntbmlfd3dhbl9vcHMsIGN0bGIsIElQX01VWF9TRVNTSU9OX0RFRkFVTFQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTM0OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjM0OTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlVuYWJsZSB0byByZWdpc3RlciBXV0FOIG9wcywgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzUwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYz05NjI9TU9EVUxFX0FVVEhPUihcXFwiTWVkaWFUZWsgSW5jXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTYzOk1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIFQ3eHggZHJpdmVyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmMtOTY0LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5oPTc0PXN0cnVjdCB0N3h4X3BjaV9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmgtOTItXFx0c3RydWN0IGNvbXBsZXRpb25cXHRzbGVlcF9sb2NrX2FjcXVpcmU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmg6OTM6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaC05NC1cXHRzdHJ1Y3QgZGVudHJ5XFx0XFx0KmRlYnVnZnNfZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jPTU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdDd4eF9wb3J0X2NvbmYgdDd4eF9wb3J0X2NvbmZbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02NS1cXHRcXHQubmFtZSA9IFxcXCJBVFxcXCIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjY2OlxcdFxcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfQVQsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTY3LVxcdH0sIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy03NC1cXHRcXHQubmFtZSA9IFxcXCJNQklNXFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM6NzU6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9NQklNLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy03Ni1cXHR9LCB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjc3OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTc4LVxcdFxcdC50eF9jaCA9IFBPUlRfQ0hfTURfTE9HX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTExMS1cXHRcXHQubmFtZSA9IFxcXCJhZGJcXFwiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMTI6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BREIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTExMy1cXHRcXHQuZGVidWcgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTEyMS1cXHRcXHQubmFtZSA9IFxcXCJtaXBjXFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM6MTIyOlxcdFxcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfTUlQQyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTIzLVxcdFxcdC5kZWJ1ZyA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdDd4eF9wb3J0X2NvbmYgdDd4eF9lYXJseV9wb3J0X2NvbmZbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMzctXFx0XFx0Lm5hbWUgPSBcXFwiZmFzdGJvb3RcXFwiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMzg6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9GQVNUQk9PVCxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTM5LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg9OTU9ZXh0ZXJuIHN0cnVjdCBwb3J0X29wcyBjdGxfcG9ydF9vcHM7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5oLTk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaDo5NzojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaC05OC1leHRlcm4gc3RydWN0IHBvcnRfb3BzIHQ3eHhfdHJhY2VfcG9ydF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xMzA9c3RhdGljIGludCB0N3h4X3BvcnRfd3dhbl90eChzdHJ1Y3Qgd3dhbl9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjEzOTpcXHRpZiAocG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgIT0gV1dBTl9QT1JUX0ZBU1RCT09UKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE0MC1cXHRcXHRyZXQgPSB0N3h4X3BvcnRfY3RybF90eChwb3J0X3ByaXZhdGUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNTM9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fY3JlYXRlKHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNjUtXFx0XFx0aWYgKElTX0VSUihwb3J0LVxcdTAwM2V3d2FuLnd3YW5fcG9ydCkpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTY2OlxcdFxcdFxcdGRldl9lcnIocG9ydC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIGNyZWF0ZSBXV0FOIHBvcnQgJXNcXFwiLCBwb3J0X2NvbmYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE2Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNzA9c3RhdGljIGludCB0N3h4X3BvcnRfd3dhbl9pbml0KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc0OlxcdGlmIChwb3J0X2NvbmYtXFx1MDAzZXBvcnRfdHlwZSA9PSBXV0FOX1BPUlRfRkFTVEJPT1QgfHxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxNzU6XFx0ICAgIHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9BREIgfHxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxNzY6XFx0ICAgIHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9NSVBDKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE3Ny1cXHRcXHR0N3h4X3BvcnRfd3dhbl9jcmVhdGUocG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0yMjc9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fbWRfc3RhdGVfbm90aWZ5KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTIzMC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoyMzE6XFx0aWYgKHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9GQVNUQk9PVCB8fFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMjpcXHQgICAgcG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX0FEQiB8fFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMzpcXHQgICAgcG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01JUEMpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMjM0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vd3dhbl9jb3JlLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd3dhbi93d2FuX2NvcmUuYzoyOi8qIFdXQU4gRHJpdmVyIENvcmVcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MDcuNDM0NTMzMjM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY3OTQ4ODkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFdXQU4gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBXV0FOIGRyaXZlcnMgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJIGtub3cgdGhhdCBgbWhpX3d3YW5fbWJpbS5jYCBpcyByZWxhdGVkIHRvIFF1YWxjb21tIE1ISSBidXMgZGV2aWNlcyBiYXNlZCBvbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgaXMgY29tbXVuaWNhdGluZyB3aXRoLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIGBtaGlfd3dhbl9tYmltLmNgIGhhcyBgTUhJX1dXQU5fTUJJTWAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgTUhJX0JVU2AuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGF0ICppcyogYE1ISV9CVVNgPyBJcyBpdCBhIHBoeXNpY2FsIGJ1cywgcG90ZW50aWFsbHkgUENJZSwgb3IgaXMgaXQgYSB2aXJ0dWFsIGNvbnN0cnVjdCBsaWtlIGEgc2ltdWxhdGVkIGJ1cywgb3IgcGVyaGFwcyBhIFVTQiBnYWRnZXQgb3Igc29tZSBvdGhlciBraW5kIG9mIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIGxheWVyPyBUbyBmaWd1cmUgdGhhdCBvdXQsIEknbGwgbmVlZCB0byBsb2NhdGUgYE1ISV9CVVNgJ3MgZGVmaW5pdGlvbi4gTXkgZ3Vlc3MgaXMgaXQgd2lsbCBiZSBpbiBgZHJpdmVycy9idXMvbWhpL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMsIGFzIGl0IGlzIHRoZSBjcnV4IG9mIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTU1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjExLjExNDAyNTQwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA2MzY5MDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSElfQlVTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL21oaS9lcC9LY29uZmlnOjE6Y29uZmlnIE1ISV9CVVNfRVBcXG5kcml2ZXJzL2J1cy9taGkvZXAvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJNb2RlbSBIb3N0IEludGVyZmFjZSAoTUhJKSBidXMgRW5kcG9pbnQgaW1wbGVtZW50YXRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTctXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZzo4OmNvbmZpZyBNSElfQlVTXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNb2RlbSBIb3N0IEludGVyZmFjZSAoTUhJKSBidXNcXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTE1LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MTY6Y29uZmlnIE1ISV9CVVNfREVCVUdcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIkRlYnVnZnMgc3VwcG9ydCBmb3IgdGhlIE1ISSBidXNcXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTIzLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MjQ6Y29uZmlnIE1ISV9CVVNfUENJX0dFTkVSSUNcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTI1LVxcdHRyaXN0YXRlIFxcXCJNSEkgUENJIGNvbnRyb2xsZXIgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxMi43MjAzOTg1MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTczMDI4OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTUhJL1dXQU4gU2l0dWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYE1ISV9CVVNfRVBgIGlzIGNsZWFybHkgYW4gTUhJIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvbiwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyBgTUhJX1dXQU5fTUJJTWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGF0IGZpdHMgaW50byB0aGUgcGljdHVyZSwgc28gSSdsbCBjaGVjayBgbWhpX3d3YW5fbWJpbS5jYCB0byBzZWUgaG93IGl0J3MgaW50ZWdyYXRlZCwgbGlrZWx5IHRocm91Z2ggYW4gYG1oaV9kcml2ZXJgIGFuZCBgbWhpX2RyaXZlcl9yZWdpc3RlcmAuIEknbGwgYWxzbyB3YW50IHRvIHVuZGVyc3RhbmQgaG93IE1ISSBkZXZpY2VzIGFyZSBwcm9iZWQgaW4gZ2VuZXJhbC4gTG9va2luZyBiYWNrIGF0IHRoZSBiYXNlIGBNSElfQlVTX1BDSV9HRU5FUklDYCwgaXQgYXBwZWFycyB0byBoYW5kbGUgcmVnaXN0cmF0aW9uIG9mIFBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgRm94Y29ubiwgUXVlY3RlbCwgYW5kIFRlbGl0IFBDSWUgV1dBTiBtb2RlbXMuXG5cblRoZW4gdGhlcmUgaXMgdGhlIGBNVEtfVDdYWGAgZHJpdmVyIHRvIGNvbnNpZGVyLiBJdCdzIGEgUENJIGRyaXZlciAoYHQ3eHhfcGNpLmNgLCBgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ0N3h4X3BjaV9kcml2ZXIpYCkgdGhhdCBoYXMgc3BlY2lmaWMgTWVkaWFUZWsgUENJIGRldmljZSBJRHMgKGxpa2UgYFBDSV9ERVZJQ0VfSURfTUVESUFURUtfTVQ2ODU1YCkuIE9rYXksIHNvIHRoYXQncyBhIFBDSS1iYXNlZCBNZWRpYVRlayBzb2x1dGlvbiwgbGlrZWx5IHRhcmdldGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9uLlxuXG5Ib2xkIG9uLCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aG9zZSBjcnVjaWFsIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiByZWdhcmRpbmcgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBJdCBoaWdobGlnaHRzIHRoYXQgY2VydGFpbiBkcml2ZXJzLCBsaWtlIHRob3NlIGZvciB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIChlLmcuLCBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYGFtZGdwdWApLCBhcmUgdW5saWtlbHkgdG8gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgdGhlaXIgYXNzb2NpYXRlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBXV0FOIGRyaXZlcnMgKE1ISSwgTVRLX1Q3WFgsIE1ISV9XV0FOX01CSU0pIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IgZ2FkZ2V0LCBod3NpbSwgZXRjLikgb3IgaWYgdGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVycy4gVGhpcyBpcyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgSSdtIGdvaW5nIHRvIGhhdmUgYSBwcm9ibGVtLiBJIG1pZ2h0IG5lZWQgdG8gbG9vayBmb3IgZHJpdmVycyB0aGF0IHdvcmsgdGhyb3VnaCB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgYHd3YW5faHdzaW1gLCB0byBwcm92aWRlIGEgcGF0aC4gTGV0J3Mgc2VlIGlmIHRoYXQncyBldmVuIGZlYXNpYmxlLlxuXG5MZXQncyBzZWUgaWYgYHd3YW5faHdzaW1gIGNvbm5lY3RzIHRvIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eGA/IEknbGwgY2hlY2sgYHd3YW5faHdzaW0uY2AgZm9yIHNvbWUgY2x1ZXMgb24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI5MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxNy4yOTM0MzA0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5NTI0ODcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaXx0N3h4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxNy4zNzQzODkxNTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDQ5MDc0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB3d2FuX2h3c2ltLmMgU291cmNlKipcblxuQWxyaWdodCwgbGV0J3MgY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd3dhbi93d2FuX2h3c2ltLmNgLiBUaW1lIHRvIHNlZSB3aGF0IGtpbmQgb2Ygc2hlbmFuaWdhbnMgdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgdXAgdG8uIEknbSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMg4oCTIGhvdyBhcmUgdGhleSBhYnN0cmFjdGluZyB0aGUgaGFyZHdhcmUgbGF5ZXI/IFdoYXQncyB0aGUgaW50ZXJmYWNlIGxpa2UgZm9yIGVtdWxhdGluZyBXV0FOIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWw/IEFyZSB0aGV5IHVzaW5nIGFueSBjbGV2ZXIgdHJpY2tzIHRvIGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIGNlbGx1bGFyIGNvbW11bmljYXRpb24/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgdGhlIGNvcmUgc3RydWN0dXJlcywgdGhlIG1haW4gZW50cnkgcG9pbnRzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IHRoZXkncmUgc2ltdWxhdGluZyB0aGUgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaG93IHdlbGwgaXQgbWlycm9ycyByZWFsLXdvcmxkIFdXQU4gYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBzZWFyY2hpbmcgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IGhhdmUgc3VidGxlIGJ1Z3Mgb3IgaW5lZmZpY2llbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgdGVzdGluZyBvciBkZXZlbG9wbWVudC4gSXQgd291bGQgYmUgaW5zaWdodGZ1bCB0byByZXZpZXcgdGhlIGVycm9yIGhhbmRsaW5nLCB0b28gLSBob3cgcm9idXN0IGlzIHRoZSBzaW11bGF0aW9uP1xuXG5NeSBmb2N1cyBpcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gY2hvaWNlcyBoZXJlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgb3B0aW1pemF0aW9uIG9yIGZ1cnRoZXIgcmVmaW5lbWVudC4gSXQncyB0aW1lIHRvIGJlY29tZSBpbnRpbWF0ZWx5IGFjcXVhaW50ZWQgd2l0aCB0aGUgc2ltdWxhdGVkIHdvcmxkIG9mIFdXQU4gd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MTkuODIzNDY2OTg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFdXQU4gZGV2aWNlIHNpbXVsYXRvciBmb3IgV1dBTiBmcmFtZXdvcmsgdGVzdGluZy5cXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjEsIDIwMjUsIFNlcmdleSBSeWF6YW5vdiBcXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVxcdTAwM2VcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFxcXCI6IFxcXCIgZm10XFxuICAgOTpcXHRcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gIDE1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbiAgMTc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgMTg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVyLmhcXHUwMDNlXFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvd3dhbi5oXFx1MDAzZVxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9hcnAuaFxcdTAwM2VcXG4gIDI1OlxcdFxcbiAgMjY6XFx0c3RhdGljIGludCB3d2FuX2h3c2ltX2RldnNudW0gPSAyO1xcbiAgMjc6XFx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcXG4gIDI4OlxcdE1PRFVMRV9QQVJNX0RFU0MoZGV2aWNlcywgXFxcIk51bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1xcXCIpO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIHd3YW5faHdzaW1fY2xhc3MgPSB7XFxuICAzMTpcXHRcXHQubmFtZSA9IFxcXCJ3d2FuX2h3c2ltXFxcIixcXG4gIDMyOlxcdH07XFxuICAzMzpcXHRcXG4gIDM0OlxcdHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICp3d2FuX2h3c2ltX2RlYnVnZnNfdG9wZGlyO1xcbiAgMzU6XFx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XFxuICAzNjpcXHRcXG4gIDM3OlxcdHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sod3dhbl9od3NpbV9kZXZzX2xvY2spO1xcbiAgMzg6XFx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xcbiAgMzk6XFx0c3RhdGljIHVuc2lnbmVkIGludCB3d2FuX2h3c2ltX2Rldl9pZHg7XFxuICA0MDpcXHRzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnd3YW5fd3E7XFxuICA0MTpcXHRcXG4gIDQyOlxcdHN0cnVjdCB3d2FuX2h3c2ltX2RldiB7XFxuICA0MzpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuICA0NDpcXHRcXHR1bnNpZ25lZCBpbnQgaWQ7XFxuICA0NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4gIDQ2OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCBkZWxfd29yaztcXG4gIDQ3OlxcdFxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wZGlyO1xcbiAgNDg6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19wb3J0Y3JlYXRlO1xcbiAgNDk6XFx0XFx0c3BpbmxvY2tfdCBwb3J0c19sb2NrO1xcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xcbiAgNTA6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xcbiAgNTE6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBwb3J0cztcXG4gIDUyOlxcdH07XFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0cnVjdCB3d2FuX2h3c2ltX3BvcnQge1xcbiAgNTU6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgNTY6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbiAgNTc6XFx0XFx0c3RydWN0IHd3YW5faHdzaW1fZGV2ICpkZXY7XFxuICA1ODpcXHRcXHRzdHJ1Y3Qgd3dhbl9wb3J0ICp3d2FuO1xcbiAgNTk6XFx0XFx0c3RydWN0IHdvcmtfc3RydWN0IGRlbF93b3JrO1xcbiAgNjA6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BkaXI7XFxuICA2MTpcXHRcXHR1bmlvbiB7XFxuICA2MjpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiAgNjM6XFx0XFx0XFx0XFx0ZW51bSB7XFx0LyogQVQgY29tbWFuZCBwYXJzZXIgc3RhdGUgKi9cXG4gIDY0OlxcdFxcdFxcdFxcdFxcdEFUX1BBUlNFUl9XQUlUX0EsXFxuICA2NTpcXHRcXHRcXHRcXHRcXHRBVF9QQVJTRVJfV0FJVF9ULFxcbiAgNjY6XFx0XFx0XFx0XFx0XFx0QVRfUEFSU0VSX1dBSVRfVEVSTSxcXG4gIDY3OlxcdFxcdFxcdFxcdFxcdEFUX1BBUlNFUl9TS0lQX0xJTkUsXFxuICA2ODpcXHRcXHRcXHRcXHR9IHBzdGF0ZTtcXG4gIDY5OlxcdFxcdFxcdH0gYXRfZW11bDtcXG4gIDcwOlxcdFxcdFxcdHN0cnVjdCB7XFxuICA3MTpcXHRcXHRcXHRcXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcXG4gIDcyOlxcdFxcdFxcdH0gbm1lYV9lbXVsO1xcbiAgNzM6XFx0XFx0fTtcXG4gIDc0OlxcdH07XFxuICA3NTpcXHRcXG4gIDc2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19wb3J0ZGVzdHJveV9mb3BzO1xcbiAgNzc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3dhbl9od3NpbV9kZWJ1Z2ZzX3BvcnRjcmVhdGVfZm9wcztcXG4gIDc4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19kZXZkZXN0cm95X2ZvcHM7XFxuICA3OTpcXHRzdGF0aWMgdm9pZCB3d2FuX2h3c2ltX3BvcnRfZGVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gIDgwOlxcdHN0YXRpYyB2b2lkIHd3YW5faHdzaW1fZGV2X2RlbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjE5LjgyMzU2NTIzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUwODUxNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgV1dBTiBEcml2ZXIgSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gaXQgc2VlbXMgYHd3YW5faHdzaW1gIGhhcyBnb25lIGl0cyBvd24gd2F5LCBpbXBsZW1lbnRpbmcgaXRzIG93biBXV0FOIHBvcnQgb3BlcmF0aW9ucyBhbmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucy4gVGhhdCdzIGdvb2QgdG8ga25vdy4gSXQgbWVhbnMgaXQncyBub3QgcmVseWluZyBvbiB0aGUgbW9yZSBnZW5lcmljIGBtaGlfd3dhbl9tYmltLmNgIG9yIGB0N3h4X25ldGRldi5jYCBkcml2ZXJzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgdGhvc2UgZmlsZXMsIGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eF9uZXRkZXYuY2AsIGFyZSBldmVuICpuZWVkZWQqIGluIG90aGVyIGFyZWFzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRob3NlIHNwZWNpZmljIG1vZHVsZXMgYXJlIGJlaW5nIHVzZWQsIGlmIGF0IGFsbC4gTXkgcGxhbiBpcyB0byBjb25kdWN0IGEgdGhvcm91Z2ggc2VhcmNoIGZvciBhbnkgcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gZWl0aGVyIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgdGVsbCB1cyBob3cgbmVjZXNzYXJ5IHRoZXkgYWN0dWFsbHkgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjIxLjc3NDQyMDY0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDM4MTk2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfbWJpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0NjpzdHJ1Y3QgbWhpX21iaW1fbGluayB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTpzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYtXFx0c3RydWN0IG1oaV9kZXZpY2UgKm1kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz03OD1zdHJ1Y3QgbWJpbV90eF9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODMtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODQ6c3RhdGljIHN0cnVjdCBtaGlfbWJpbV9saW5rICptaGlfbWJpbV9nZXRfbGlua19yY3Uoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNlc3Npb24pXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg3OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtOTYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6OTc6c3RhdGljIGludCBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQoc3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybClcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0xMDc9c3RhdGljIHN0cnVjdCBza19idWZmICptYmltX3R4X2ZpeHVwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBzZXNzaW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbWhpX21iaW1fbmRvX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUyLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTM6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1NDpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGxpbmstXFx1MDAzZW1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTU1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xOTItXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTkzOnN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbnRoMTYoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTIzMT1zdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbmRwMTYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNTMtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjU0OnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXFx0XFx0c3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2IGRwZTE2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcXHRcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXFx0XFx0aW50IG5mcmFtZXMsIG4sIGRwZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMDU6XFx0XFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMDYtXFx0XFx0aWYgKCFsaW5rKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zNzgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Mzc5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWhpX25ldF9za2JfYWdnKHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM4MC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTQwNT1zdGF0aWMgdm9pZCBtaGlfbmV0X3J4X3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQwNzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MDgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICByeF9yZWZpbGwud29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDM2OnN0YXRpYyB2b2lkIG1oaV9tYmltX2RsX2NhbGxiYWNrKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNy1cXHRcXHRcXHRcXHQgc3RydWN0IG1oaV9yZXN1bHQgKm1oaV9yZXMpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM4LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Mzk6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1oaV9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDQwLVxcdHN0cnVjdCBza19idWZmICpza2IgPSBtaGlfcmVzLVxcdTAwM2VidWZfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ2OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Njk6XFx0XFx0bWhpX21iaW1fcngobWJpbSwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00Nzkte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ4MDpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDgxLVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0OTk6c3RhdGljIHZvaWQgbWhpX21iaW1fdWxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDEte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMjpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXFx1MDAzZWJ1Zl9hZGRyO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwNC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNrYi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwNTpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMTpzdGF0aWMgaW50IG1oaV9tYmltX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMi17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTMzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTQ2OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1My1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtaGlfbWJpbV9uZG8gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU1OlxcdC5uZG9fb3BlbiA9IG1oaV9tYmltX25kb19vcGVuLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NjpcXHQubmRvX3N0b3AgPSBtaGlfbWJpbV9uZG9fc3RvcCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTc6XFx0Lm5kb19zdGFydF94bWl0ID0gbWhpX21iaW1fbmRvX3htaXQsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU4OlxcdC5uZG9fZ2V0X3N0YXRzNjQgPSBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTU5LX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MTpzdGF0aWMgaW50IG1oaV9tYmltX25ld2xpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZl9pZCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjItXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjMte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2NDpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY1OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY3R4dDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY3LVxcdGxpbmstXFx1MDAzZW1iaW0gPSBtYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2ODpcXHRsaW5rLVxcdTAwM2VzZXNzaW9uID0gbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKGxpbmstXFx1MDAzZW1iaW0tXFx1MDAzZW1kZXYtXFx1MDAzZW1oaV9jbnRybCkgKyBpZl9pZDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjktXFx0bGluay1cXHUwMDNlbmRldiA9IG5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NzMtXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU3NDpcXHRpZiAobWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIGlmX2lkKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3NS1cXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4NS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODY6c3RhdGljIHZvaWQgbWhpX21iaW1fZGVsbGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg5OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTk3OnN0YXRpYyB2b2lkIG1oaV9tYmltX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MDQtXFx0bmRldi1cXHUwMDNlZmxhZ3MgPSBJRkZfUE9JTlRPUE9JTlQgfCBJRkZfTk9BUlA7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjA1OlxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bWhpX21iaW1fbmRvO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwNi1cXHRuZGV2LVxcdTAwM2VtdHUgPSBNSElfTUJJTV9ERUZBVUxUX01UVTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxMi1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6c3RhdGljIGNvbnN0IHN0cnVjdCB3d2FuX29wcyBtaGlfbWJpbV93d2FuX29wcyA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTQ6XFx0LnByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgbWhpX21iaW1fbGluayksXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE1OlxcdC5zZXR1cCA9IG1oaV9tYmltX3NldHVwLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNjpcXHQubmV3bGluayA9IG1oaV9tYmltX25ld2xpbmssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE3OlxcdC5kZWxsaW5rID0gbWhpX21iaW1fZGVsbGluayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTgtfTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTktXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjIwOnN0YXRpYyBpbnQgbWhpX21iaW1fcHJvYmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjEte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cXHRzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKmNudHJsID0gbWhpX2Rldi1cXHUwMDNlbWhpX2NudHJsO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYyMzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjQtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0NS1cXHQvKiBSZWdpc3RlciB3d2FuIGxpbmsgb3BzIHdpdGggTUhJIGNvbnRyb2xsZXIgcmVwcmVzZW50aW5nIFdXQU4gaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDY6XFx0cmV0dXJuIHd3YW5fcmVnaXN0ZXJfb3BzKFxcdTAwMjZjbnRybC1cXHUwMDNlbWhpX2Rldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWhpX21iaW1fd3dhbl9vcHMsIG1iaW0sIDApO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0Ny19XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yZW1vdmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUwLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTE6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1oaV9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUyLVxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVxcdTAwM2VtaGlfY250cmw7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjAtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCBtaGlfbWJpbV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Mi1cXHQvKiBIYXJkd2FyZSBhY2NlbGVyYXRlZCBkYXRhIFBBVEggKHRvIG1vZGVtIElQQSksIE1CSU0gcHJvdG9jb2wgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2NS19O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NjpNT0RVTEVfREVWSUNFX1RBQkxFKG1oaSwgbWhpX21iaW1faWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Ny1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6c3RhdGljIHN0cnVjdCBtaGlfZHJpdmVyIG1oaV9tYmltX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XFx0LnByb2JlID0gbWhpX21iaW1fcHJvYmUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlxcdC5yZW1vdmUgPSBtaGlfbWJpbV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcxOlxcdC5kbF94ZmVyX2NiID0gbWhpX21iaW1fZGxfY2FsbGJhY2ssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcyOlxcdC51bF94ZmVyX2NiID0gbWhpX21iaW1fdWxfY2FsbGJhY2ssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjczOlxcdC5pZF90YWJsZSA9IG1oaV9tYmltX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3NC1cXHQuZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjc4LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3OTptb2R1bGVfbWhpX2RyaXZlcihtaGlfbWJpbV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY4MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MjMuNDM0ODA2NzY5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDE0MTQyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQmVoYXZpb3IqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBzZWVpbmcgc29tZXRoaW5nIHVudXN1YWwgaW4gdGhlIG5ldHdvcmsgYmVoYXZpb3IuIE15IGZpcnN0IGluc3RpbmN0LCBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBpcyB0byBjYXN0IGEgd2lkZXIgbmV0LiBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYHQ3eHhfbmV0ZGV2LmNgIGFzIHdlbGwuIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIGEga2V5IGNvbXBvbmVudCBhbmQgY291bGQgdmVyeSB3ZWxsIGJlIHRoZSByb290IGNhdXNlLCBvciBhdCBsZWFzdCBiZSBpbnZvbHZlZCBpbiB0aGUgY2FzY2FkZSBvZiBpc3N1ZXMgd2UgYXJlIGN1cnJlbnRseSBzZWVpbmcuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHN0YXJ0IGV4YW1pbmluZyBpdHMgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIExldCdzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGNsdWVzIGluIGl0cyBoYW5kbGluZyBvZiBwYWNrZXQgdHJhbnNtaXNzaW9uIG9yIHJlY2VwdGlvbiwgaW50ZXJydXB0IG1hbmFnZW1lbnQsIG9yIHJlc291cmNlIGFsbG9jYXRpb24uIFdlJ2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdCBhcmVhcyBhbmQgdGhlbiBkaWcgZGVlcGVyIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxOTcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoyNS4yNzYyMjM1NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjM0MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInQ3eHhfY2NtbmlfcmVjdl9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTM5OT1zdGF0aWMgdm9pZCBpbml0X21kX3N0YXR1c19ub3RpZmllcihzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzo0MTI6c3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMy1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz00OTA9aW50IHQ3eHhfY2NtbmlfaW5pdChzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwMi1cXHRjdGxiLVxcdTAwM2VjYWxsYmFja3Muc3RhdGVfbm90aWZ5ID0gdDd4eF9jY21uaV9xdWV1ZV9zdGF0ZV9ub3RpZnk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NTAzOlxcdGN0bGItXFx1MDAzZWNhbGxiYWNrcy5yZWN2X3NrYiA9IHQ3eHhfY2NtbmlfcmVjdl9za2I7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNTA0LVxcdGN0bGItXFx1MDAzZW5pY19kZXZfbnVtID0gTklDX0RFVl9ERUZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoyNS4zMzc4NjE0ODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ5NDI3MjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTUhJIERyaXZlcnMgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlc2UgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBhcmUgd2UgZGVhbGluZyB3aXRoIGRyaXZlcnMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBmdXp6aW5nIHRoZXNlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZXN0YWJsaXNoLlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgTUhJX1dXQU5fTUJJTWAuIFJpZ2h0LCBNSEkgc3RhbmRzIGZvciBNb2RlbSBIb3N0IEludGVyZmFjZSwgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoaXMgcG9pbnRzIHRvIFF1YWxjb21tIFBDSWUgbW9kZW1zIOKAkyB0aGluayBTbmFwZHJhZ29uIFg1NSwgWDYyLCBYNjUsIHRoZSBraW5kIHRoYXQgY29ubmVjdCBvdmVyIFBDSWUuIEdvb2QuIFRoYXQgaGVscHMgbmFycm93IHRoZSBzY29wZSBjb25zaWRlcmFibHkuXG5cblRvIHVuZGVyc3RhbmQgaG93IHRoZSBNSEkgY29udHJvbGxlciBpcyBwcm9iZWQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MjguODMyMTM2NDIzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY2MDQyMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjI4Ljg4ODgwODM1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDcyOTY4MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBkcml2ZXIgc2VhcmNoOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNSEkgRHJpdmVyIFNwYWNlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZSBQQ0kgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHdoYXQgSSdtIHdvcmtpbmcgb24sIGlzIHRvIGxvb2sgd2l0aGluIHRoZSBgZHJpdmVycy9idXMvbWhpYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHRoZSBnby10byBsb2NhdGlvbiBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgTW9iaWxlIEhvc3QgSW50ZXJmYWNlIChNSEkpIGJ1cy4gQ29uc2lkZXJpbmcgdGhhdCBJJ20gbG9va2luZyBmb3IgUENJIGRyaXZlcnMsIEknbSBob3BpbmcgSSBmaW5kIHNvbWUgZHJpdmVycyB0byBpbnRlcmZhY2Ugd2l0aCBNSEkgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSB0eXBpY2FsIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgYWJzdHJhY3Rpb24gbGF5ZXJzIHRoYXQgd291bGQgYmUgaGVscGZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSB3aGF0IFBDSSBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxOTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzozMS4zNjE3NzkxMDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTE0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYnVzL21oaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jPTE3Njc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1oaV9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNzc2LX07XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNzc3Om1vZHVsZV9wY2lfZHJpdmVyKG1oaV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjMxLjQyNTg5OTkzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDIyMzgyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWhpX3BjaV9kcml2ZXJgIGluIGBwY2lfZ2VuZXJpYy5jYCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBgcGNpX2dlbmVyaWMuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhlIGBtaGlfcGNpX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZ2VuZXJpYyBQQ0kgZnJhbWV3b3JrLiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgdG8gbWFrZSB0aGUgTUhJIChwcmVzdW1hYmx5IE1vYmlsZSBIb3N0IEludGVyZmFjZSkgZGV2aWNlIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGJyb2FkZXIgUENJIGNvbnRleHQ/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24g4oCTIGFyZSB3ZSB1c2luZyBzdGFuZGFyZCBQQ0kgcmVzb3VyY2UgbWFuYWdlbWVudCwgb3IgYXJlIHRoZXJlIGN1c3RvbSBob29rcyBpbiBwbGFjZSB0byBkZWFsIHdpdGggdGhlIE1ISSdzIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgSS9PIG9yIGludGVycnVwdCByZXF1aXJlbWVudHM/IEFsc28sIGhvdyBkb2VzIHRoZSBkcml2ZXIgaW50ZXJhY3Qgd2l0aCB0aGUgUENJIGJ1cydzIGNvbmZpZ3VyYXRpb24gc3BhY2U/IEkgd2FudCB0byBzZWUgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRzIGNvcnJlY3RseS4gQXJlIHdlIHVzaW5nIHN0YW5kYXJkIFBDSSBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgb3IgZG9lcyB0aGUgTUhJIGhhcmR3YXJlIG5lY2Vzc2l0YXRlIGEgbW9yZSBpbnRyaWNhdGUgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWd5PyBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIGNsdWVzIG9uIHRoZSBwbGF0Zm9ybSByZXF1aXJlbWVudHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHdpbGwgd29yayBvbiBhIG5ldyB0YXJnZXQuIEkgYWxzbyB3YW50IHRvIHNlZSBob3cgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkOyB3aGF0IGRvZXMgaXQgbG9vayBmb3IgaW4gdGhlIGRldmljZSBJRCB0YWJsZSwgYW5kIGhvdyBhcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBoYW5kbGVkIHRoZXJlPyBMYXN0bHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIGVycm9yIGhhbmRsaW5nIOKAkyBob3cgYXJlIFBDSSBidXMgZXJyb3JzLCBkZXZpY2Ugbm90IHByZXNlbnQgc2NlbmFyaW9zLCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzIGRlYWx0IHdpdGggd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoaXMgTUhJIGRyaXZlcj8gSSBzaG91bGQgYWxzbyBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyIGNvbXBsaWVzIHdpdGggdGhlIGxhdGVzdCBQQ0kgc3BlY2lmaWNhdGlvbiB2ZXJzaW9ucyBhbmQgYW55IHJlbGV2YW50IHBsYXRmb3JtIHN0YW5kYXJkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzozMy44NDgyODUzNzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTEwNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9wY2lfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9idXMvbWhpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX3BjaV9kZXZfaW5mbyBtaGlfbmV0cHJpc21hX2ZjdW42OV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy05NTEtLyogS2VlcCB0aGUgbGlzdCBzb3J0ZWQgYmFzZWQgb24gdGhlIFBJRC4gTmV3IFZJRCBzaG91bGQgYmUgYWRkZWQgYXMgdGhlIGxhc3QgZW50cnkgKi9cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjk1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWhpX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtOTUzLVxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUNPTSwgMHgwMTE2KSxcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTA4Ni19O1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NjgtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJtaGktcGNpLWdlbmVyaWNcXFwiLFxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTc2OTpcXHQuaWRfdGFibGVcXHQ9IG1oaV9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNzcwLVxcdC5wcm9iZVxcdFxcdD0gbWhpX3BjaV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MzMuODk5MjAxMThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgxNDAyMzkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgTUhJIEhvc3QgQ29udHJvbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGUgcHJpbWFyeSBNSEkgaG9zdCBjb250cm9sbGVyIHNpdHVhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIHBvdGVudGlhbCBpbnN0YW5jZXMgb2YgTUhJIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBzeXN0ZW0uIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhlcmUgY291bGQgYmUgaGlkZGVuIE1ISSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25zOiBwZXJoYXBzIGEgdmlydHVhbCBvciBwbGF0Zm9ybS1sZXZlbCBjb250cm9sbGVyIGludGVyYWN0aW5nIHdpdGggdGhlIGhhcmR3YXJlLCBvciBldmVuIGFuIGVuZHBvaW50LXNwZWNpZmljIGNvbnRyb2xsZXIgdGhhdCB3ZSBoYXZlbid0IGlkZW50aWZpZWQgeWV0LiBJdCdzIGEgY3JpdGljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gY29tcHJlaGVuc2l2ZWx5IHZlcmlmeSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNSEkgYXJjaGl0ZWN0dXJlIGlzIGNvbXBsZXRlLiBJIGNhbid0IGFmZm9yZCB0byBtaXNzIGFueSBjb250cm9sbGVyIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byB0aGUgZmlybXdhcmUgYW5kIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjM1LjcxMzIyNzQzOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTkyNTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfcmVnaXN0ZXJfY29udHJvbGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3Q9MjA9QmVsb3cgYXJlIHRoZSByb2xlcyBvZiB0aGUgTUhJIGNvbnRyb2xsZXIgZHJpdmVyOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0LTI0LSogQWxsb2NhdGVzIHN0cnVjdCBtaGlfY29udHJvbGxlciBhbmQgcmVnaXN0ZXJzIHdpdGggdGhlIE1ISSBidXMgZnJhbWV3b3JrXFxuRG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0OjI1OiAgd2l0aCBjaGFubmVsIGFuZCBldmVudCBjb25maWd1cmF0aW9ucyB1c2luZyBtaGlfcmVnaXN0ZXJfY29udHJvbGxlci5cXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjYtKiBJbml0aWF0ZXMgcG93ZXIgb24gYW5kIHNodXRkb3duIHNlcXVlbmNlXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYz04MDA9c3RhdGljIGludCBtaGlfcmVzZXRfYW5kX2FzeW5jX3Bvd2VyX3VwKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODI2LVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jOjgyNzpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04NzUtXFx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc2OlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgXFx1MDAyNm1oaV9jb25maWcpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4OlxcdFxcdHBjaV9lcnIocGNpX2RldiwgXFxcIm1oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04NzktXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTgtXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC0xMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IG1oaV9pcnEsIGJvb2wgc2hhcmVkX21zaSwgaW50IGZhbWlseSk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNTk2LVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcXHRxZGV2LVxcdTAwM2VtaGlfY250cmwgPSBxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHBkZXYsIHFkZXYtXFx1MDAzZWJhcl9taGksIG1oaV9pcnEsXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNTk4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBxZGV2LVxcdTAwM2VzaW5nbGVfbXNpLCBjb25maWctXFx1MDAzZWZhbWlseSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM9ODgxPXN0YXRpYyBpbnQgcGFyc2VfY29uZmlnKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTkxOC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6OTE5OmludCBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTA1OC19XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMDYwLVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNDQwLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcXHRlcnIgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIG1oaV9jbnRybF9jb25maWcpO1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYz0zMzU9aW50IGF0aDExa19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmMtNDA5LVxcdGFiX3BjaS1cXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM6NDEwOlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsLCBhdGgxMWtfbWhpX2NvbmZpZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1OlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsLCBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtaGlfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oPTI5ND1zdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWhpLmgtMzg1LSAqIEZpZWxkcyBtYXJrZWQgYXMgKHJlcXVpcmVkKSBuZWVkIHRvIGJlIHBvcHVsYXRlZCBieSB0aGUgY29udHJvbGxlciBkcml2ZXJcXG5pbmNsdWRlL2xpbnV4L21oaS5oOjM4NjogKiBiZWZvcmUgY2FsbGluZyBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcigpLiBGb3IgdGhlIGZpZWxkcyBtYXJrZWQgYXMgKG9wdGlvbmFsKVxcbmluY2x1ZGUvbGludXgvbWhpLmgtMzg3LSAqIHRoZXkgY2FuIGJlIHBvcHVsYXRlZCBkZXBlbmRpbmcgb24gdGhlIHVzZWNhc2UuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oPTU1MD12b2lkIG1oaV9mcmVlX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taGkuaC01NTItLyoqXFxuaW5jbHVkZS9saW51eC9taGkuaDo1NTM6ICogbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgLSBSZWdpc3RlciBNSEkgY29udHJvbGxlclxcbmluY2x1ZGUvbGludXgvbWhpLmgtNTU0LSAqIEBtaGlfY250cmw6IE1ISSBjb250cm9sbGVyIHRvIHJlZ2lzdGVyXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oLTU1Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L21oaS5oOjU1NzppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuaW5jbHVkZS9saW51eC9taGkuaC01NTgtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG1oaV9jb250cm9sbGVyX2NvbmZpZyAqY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MzcuMTU5MTU3MTg2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNDQwNjYzMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgV1dBTiBNb2RlbSBEcml2ZXJzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBlaXRoZXIgdGhlIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eF9uZXRkZXZgIGRyaXZlcnMuIEJvdGggYXJlIGhhcmR3YXJlIGRyaXZlcnMgZm9yIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbXMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byByZWFjaCB0aGVtIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLlxuXG5GaXJzdCwgbGV0J3MgcmV2aWV3IHRoZSBkcml2ZXJzIHRoZW1zZWx2ZXM6IGBtaGlfd3dhbl9tYmltLmNgIGhhbmRsZXMgUXVhbGNvbW0gUENJZSBtb2RlbXMsIGFuZCBgdDd4eF9uZXRkZXYuY2AgZGVhbHMgd2l0aCBNZWRpYVRlayBUN3h4IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSB0aGVpciByZXNwZWN0aXZlIHBoeXNpY2FsIFBDSSBtb2RlbXMuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgYmVjb21lcywgY2FuIHdlIHRyaWdnZXIgdGhlc2UgZHJpdmVycyBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCwgb3IgYXJlIHRoZXkgaW5oZXJlbnRseSB0aWVkIHRvIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZT8gU3BlY2lmaWNhbGx5LCBhcmUgdGhlc2UgZGV2aWNlcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGFjY29yZGluZyB0byB0aGUgZGVmaW5lZCBjcml0ZXJpYSwgbWVhbmluZyB0aGV5IG5lZWQgcmVhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVT8gVGhhdCdzIHRoZSBrZXkuXG5cbkxldCdzIGxvb2sgYXQgYG1oaV93d2FuX21iaW0uY2AgZmlyc3QuIFRoZSBgbWhpX21iaW1fcHJvYmVgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgdGhlIGVudHJ5IHBvaW50LiBJdCdzIHRyaWdnZXJlZCB3aGVuIGFuIE1ISSBkZXZpY2UgbWF0Y2hlcyBgbWhpX21iaW1faWRfdGFibGVgIG9uIHRoZSBNSEkgYnVzLiBUaGUgTUhJIGJ1cyBkZXZpY2VzIGFyZSBjcmVhdGVkIGJ5IE1ISSBjb250cm9sbGVycy4gVGhpcyBzZWVtcyB0byBoYXBwZW4gd2hlbiB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBQQ0llIGRldmljZSBpbml0aWFsaXplcyB0aGUgTUhJIGNoYW5uZWxzLiBQYWNrZXRzIGFyZSB0aGVuIGhhbmRsZWQgdGhyb3VnaCBgbWhpX21iaW1fcnhgIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSB0aGUgTUhJIGNvcmUgd2hlbiB0aGUgdHJhbnNmZXIgaGFzIGNvbXBsZXRlZCBmcm9tIHRoZSBoYXJkd2FyZS4gSXQncyBhIGNoYWluIG9mIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBtb2RlbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBNSEkgYnVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk5vdywgbGV0J3MgZXhhbWluZSBgdDd4eF9uZXRkZXYuY2AuIFRoZSBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIE1USyBUN3h4IFBDSWUgZGV2aWNlIHJlY2VpdmVzIHBhY2tldHMgZnJvbSB0aGUgcGh5c2ljYWwgbW9kZW0uIFRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhIFBDSSBkcml2ZXIuIFRoaXMgYWxzbyBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgcHJlc2VuY2Ugb2YgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gY2hlY2sgdGhlIFBDSSBJRHMgd2l0aGluIGB0N3h4X3BjaS5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hpY2ggaGFyZHdhcmUgdGhlIGRyaXZlciBpcyB0aWVkIHRvLlxuXG5CYXNlZCBvbiB0aGlzIHByZWxpbWluYXJ5IGludmVzdGlnYXRpb24sIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBib3RoIGRyaXZlcnMgYXJlIHN0cm9uZ2x5IGNvdXBsZWQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwaHlzaWNhbCBQQ0llIG1vZGVtcy4gUmVhY2hpbmcgdGhlbSBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCBtYXkgYmUgY2hhbGxlbmdpbmcsIGFuZCBwZXJoYXBzIGltcG9zc2libGUsIGFzIHRoZXkgcmVseSBvbiB0aGUgTUhJIGJ1cyBvciBQQ0llIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSBpbnRlcmFjdGlvbiB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLiBXZSdsbCBuZWVkIHRvIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSB0aGUgc2V0dXAgcHJvY2VzcyB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjQ4LjU5OTgyMjY4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0MzM5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRS4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYz05NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHQ3eHhfcGNpX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ0OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDRkNzUpIH0sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ1OlxcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYzo5NDY6XFx0eyBQQ0lfREVWSUNFKDB4MTRjMCwgMHg0ZDc1KSB9LCAvLyBEZWxsIERXNTkzM2VcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDctXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjQ4LjcyMzI2MDc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0MDU3ODU5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVmVuZG9yLVNwZWNpZmljIFBDSWUgTW9kZW0gRHJpdmVycyBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHRlbGxzIG1lIHRoYXQgdGhlIHByb3Bvc2VkIHBhdGNoIGFmZmVjdHMgdHdvIHNwZWNpZmljIHZlbmRvci1zcGVjaWZpYyBQQ0llIG1vZGVtIGRyaXZlcnM6IGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eC90N3h4X25ldGRldi5jYC4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBsb29raW5nIGF0IGEgUXVhbGNvbW0gUENJZSBtb2RlbSBNQklNIG5ldHdvcmsgZHJpdmVyIHV0aWxpemluZyB0aGUgTUhJIGJ1cyBhbmQgYSBNZWRpYVRlayBUN3h4IHNlcmllcyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCByZXNwZWN0aXZlbHkuXG5cblRoZSBjcml0aWNhbCBwb2ludCwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBkZXZpY2VzLCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kIHRoZSBjb21tb24gcHJhY3RpY2VzLCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGV5IHJlcXVpcmUgKmFjdHVhbCogcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUXVhbGNvbW0gU25hcGRyYWdvbiBQQ0llIG1vZGVtIGFuZCBhIE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSwgcmVzcGVjdGl2ZWx5LiBUaGUgY29tbWl0IGRpZmYgY29uZmlybXMgdGhpcywgc2hvd2luZyBjaGFuZ2VzIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdHdvIGZpbGVzLCBub3RoaW5nIGVsc2UuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGVzZSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIHVuYXZhaWxhYmxlIGluIGEgdHlwaWNhbCBzeXprYWxsZXIgdGVzdGluZyBzZXR1cCwgdGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciBTZWN0aW9uIDI6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFdlJ3JlIHRhbGtpbmcgYWJvdXQgZHJpdmVycyB0aGF0IGRlbWFuZCBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgZXNzZW50aWFsbHkgY2xhc3NpZmllcyB0aGUgY29kZSBhcyB1bnJlYWNoYWJsZS5cblxuQ29uc2VxdWVudGx5LCBmcm9tIG15IHBlcnNwZWN0aXZlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIFNpbmNlIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSB3aXRob3V0IHRoZSByZXF1aXJlZCBoYXJkd2FyZSwgZnV6emluZyBlZmZvcnRzIHdvdWxkIGJlIHdhc3RlZC4gQW5kIHNvLCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBsaXN0cyBjYW4gc2FmZWx5IHJlbWFpbiBlbXB0eSwgYFtdYC4gSWYgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYCwgZW1wdHkgbGlzdHMgYXJlIHN0YW5kYXJkIHByYWN0aWNlLlxuXG5JbiBzaG9ydCwgSSdsbCBiZSBzZXR0aW5nIHRoaXMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHN5c3RlbSB0byB1bmRlcnN0YW5kOiB0aGVzZSBjaGFuZ2VzLCB3aGlsZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZywgZG9uJ3QgcmVwcmVzZW50IGEgdmlhYmxlIHRhcmdldCBmb3IgaW1tZWRpYXRlIGZ1enppbmcgd2l0aG91dCBzcGVjaWFsaXplZCBoYXJkd2FyZS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzQ4LCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzo1Ni4xMjkwNDkyNDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjU2LjEyOTA3MTM4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqwmn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 03:49:05 +0000 UTC FinishedAt: 2026-09-10 04:37:57 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYThlZTUzNGFmNTg1Mzc0NTE5ZTI2NGU5YWYyYWFhN2RjYmNlZmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuaW5kZXggYTk0OTk4NzEyNTk3Ni4uNzFlNzAwMDA4YzIwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xuQEAgLTI1NCw2ICYjNDM7MjU0LDcgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5cbiBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRpbnQgbmRwb2Zmc2V0O1xuJiM0MztcdGludCBsYXN0X25kcG9mZnNldCA9IDA7XG4gXG4gXHQvKiBDaGVjayBOVEIgaGVhZGVyIGFuZCByZXRyaWV2ZSBmaXJzdCBORFAgb2Zmc2V0ICovXG4gXHRuZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpO1xuQEAgLTI2NSw2ICYjNDM7MjY2LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0LyogUHJvY2VzcyBlYWNoIE5EUCAqL1xuIFx0d2hpbGUgKDEpIHtcbiBcdFx0c3RydWN0IHVzYl9jZGNfbmNtX25kcDE2IG5kcDE2O1xuJiM0MztcbiYjNDM7XHRcdGlmIChuZHBvZmZzZXQgXHUwMDNjPSBsYXN0X25kcG9mZnNldCkge1xuJiM0MztcdFx0XHRuZXRfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O21iaW06IG5vbi1pbmNyZWFzaW5nIE5EUCBvZmZzZXQgKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICBuZHBvZmZzZXQpO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGxhc3RfbmRwb2Zmc2V0ID0gbmRwb2Zmc2V0O1xuIFx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XG4gXHRcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xuIFx0XHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xuQEAgLTMyMCw3ICYjNDM7MzI4LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0c2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pO1xuLVx0XHRcdHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcbiYjNDM7XHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuJiM0MztcdFx0XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYm4pO1xuJiM0MztcdFx0XHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4mIzQzO1x0XHRcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bGluay1cdTAwM2VyeF9zeW5jcCk7XG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdH1cbiBcbiBcdFx0XHRzd2l0Y2ggKHNrYm4tXHUwMDNlZGF0YVswXSBcdTAwMjYgMHhmMCkge1xuIFx0XHRcdGNhc2UgMHg0MDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgJiM0Mzs0MjAsMTAgQEAgc3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVcbiBcbiBcdHNrYl9jYiA9IFQ3WFhfU0tCX0NCKHNrYik7XG4gXHRuZXRpZl9pZCA9IHNrYl9jYi1cdTAwM2VuZXRpZl9pZHg7XG4mIzQzO1x0aWYgKG5ldGlmX2lkIFx1MDAzZT0gTklDX0RFVl9NQVgpIHtcbiYjNDM7XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4gXHRjY21uaSA9IFJFQURfT05DRShjY21uaV9jdGxiLVx1MDAzZWNjbW5pX2luc3RbbmV0aWZfaWRdKTtcbiBcdGlmICghY2NtbmkpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChRdWFsY29tbSBNSEkgV1dBTiBNQklNIGRyaXZlcikgYW5kIGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIChNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyKS4gQm90aCBkcml2ZXJzIHJlcXVpcmUgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbSBoYXJkd2FyZSAoUXVhbGNvbW0gYW5kIE1lZGlhVGVrIFQ3eHgpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmE4ZWU1MzRhZjU4NTM3NDUxOWUyNjRlOWFmMmFhYTdkY2JjZWZlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA0OjM2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwppbmRleCBhOTQ5OTg3MTI1OTc2Li43MWU3MDAwMDhjMjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYwpAQCAtMjU0LDYgJiM0MzsyNTQsNyBAQCBzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbgogc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJaW50IG5kcG9mZnNldDsKJiM0MzsJaW50IGxhc3RfbmRwb2Zmc2V0ID0gMDsKIAogCS8qIENoZWNrIE5UQiBoZWFkZXIgYW5kIHJldHJpZXZlIGZpcnN0IE5EUCBvZmZzZXQgKi8KIAluZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpOwpAQCAtMjY1LDYgJiM0MzsyNjYsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpCiAJLyogUHJvY2VzcyBlYWNoIE5EUCAqLwogCXdoaWxlICgxKSB7CiAJCXN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiBuZHAxNjsKJiM0MzsKJiM0MzsJCWlmIChuZHBvZmZzZXQgJmx0Oz0gbGFzdF9uZHBvZmZzZXQpIHsKJiM0MzsJCQluZXRfZXJyX3JhdGVsaW1pdGVkKCYjMzQ7bWJpbTogbm9uLWluY3JlYXNpbmcgTkRQIG9mZnNldCAoJXUpXG4mIzM0OywKJiM0MzsJCQkJCSAgICBuZHBvZmZzZXQpOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwkJbGFzdF9uZHBvZmZzZXQgPSBuZHBvZmZzZXQ7CiAJCXN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjsKIAkJc3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7CiAJCWludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7CkBAIC0zMjAsNyAmIzQzOzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCQljb250aW51ZTsKIAogCQkJc2tiX3B1dChza2JuLCBkZ3JhbV9sZW4pOwotCQkJc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi0mZ3Q7ZGF0YSwgZGdyYW1fbGVuKTsKJiM0MzsJCQlpZiAoc2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi0mZ3Q7ZGF0YSwgZGdyYW1fbGVuKSkgewomIzQzOwkJCQlkZXZfa2ZyZWVfc2tiX2FueShza2JuKTsKJiM0MzsJCQkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xpbmstJmd0O3J4X3N5bmNwKTsKJiM0MzsJCQkJdTY0X3N0YXRzX2luYygmYW1wO2xpbmstJmd0O3J4X2Vycm9ycyk7CiYjNDM7CQkJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7bGluay0mZ3Q7cnhfc3luY3ApOwomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCQl9CiAKIAkJCXN3aXRjaCAoc2tibi0mZ3Q7ZGF0YVswXSAmYW1wOyAweGYwKSB7CiAJCQljYXNlIDB4NDA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCmluZGV4IGZjMGE3Y2IxODFkZjIuLjhmMzJjMmQyNjkzMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jCkBAIC00MjAsNiAmIzQzOzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idQogCiAJc2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTsKIAluZXRpZl9pZCA9IHNrYl9jYi0mZ3Q7bmV0aWZfaWR4OwomIzQzOwlpZiAobmV0aWZfaWQgJmd0Oz0gTklDX0RFVl9NQVgpIHsKJiM0MzsJCWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQogCWNjbW5pID0gUkVBRF9PTkNFKGNjbW5pX2N0bGItJmd0O2NjbW5pX2luc3RbbmV0aWZfaWRdKTsKIAlpZiAoIWNjbW5pKSB7CiAJCWRldl9rZnJlZV9za2Ioc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkLiBJIHNlZSB0d28gZmlsZXM6IGBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY2AgYW5kIGBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY2AuIEltbWVkaWF0ZWx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXNlIGRyaXZlcnMgKmRvKi4gSSBrbm93IGBtaGlfd3dhbl9tYmltLmNgIGlzIHRoZSBNSEkgV1dBTiBNQklNIGRyaXZlciwgZGVhbGluZyB3aXRoIE1ISSAoTW9iaWxlIEhvc3QgSW50ZXJmYWNlKSBjb25uZWN0aW9ucyBhbmQgTUJJTSAoTW9iaWxlIEJyb2FkYmFuZCBJbnRlcmZhY2UgTW9kZWwpIGNvbW11bmljYXRpb24sIGFuZCBgdDd4eF9uZXRkZXYuY2AgaXMgdGhlIE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIgZm9yIHRoZSB0N3h4IGNoaXBzZXQuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBhY2Nlc3NpYmlsaXR5IGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgS2NvbmZpZyBvcHRpb25zIGFuZCBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9ucyB0aGF0IHdpbGwgcHJldmVudCBtZSBmcm9tIHVzaW5nIHRoZXNlIGRyaXZlcnMgaW4gbXkgdGVzdHM/IFRoaXMgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC9LY29uZmlnYCDigJMgYXMgd2VsbCBhcyB0aGUgYWNjb21wYW55aW5nIGBNYWtlZmlsZWBzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGV5IGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IHRlc3QgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXV0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nj1tZW51IFwmIzM0O1dpcmVsZXNzIFdBTlwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTctXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6ODpjb25maWcgV1dBTlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjk6XHR0cmlzdGF0ZSBcJiMzNDtXV0FOIERyaXZlciBDb3JlXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIEdOU1MgfHwgR05TUyA9IG5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMS1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMjpcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFdXQU4gZHJpdmVyIGNvcmUuIFRoaXMgZHJpdmVyXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTM6XHQgIHByb3ZpZGVzIGEgY29tbW9uIGZyYW1ld29yayBmb3IgV1dBTiBkcml2ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxODppZiBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjA6Y29uZmlnIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjIxOlx0Ym9vbCBcJiMzNDtXV0FOIGRldmljZXMgZGVidWdmcyBpbnRlcmZhY2VcJiMzNDsgaWYgRVhQRVJUXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjItXHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI0LVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjI1Olx0ICBFbmFibGVzIGRlYnVnZnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBXV0FOIGNvcmUgYW5kIGRldmljZSBkcml2ZXJzLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI2LVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI3LVx0ICBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlbiB5b3UgY2FuIGZpbmQgdGhlIGRlYnVnIGludGVyZmFjZVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjI4Olx0ICBlbGVtZW50cyBmb3IgZWFjaCBXV0FOIGRldmljZSBpbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNvcnJlc3BvbmRpbmcgdG9cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yOS1cdCAgdGhlIGRldmljZSBuYW1lOiBkZWJ1Z2ZzL3d3YW4vd3dhblguXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzE6Y29uZmlnIFdXQU5fSFdTSU1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozMjpcdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBXV0FOIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTMzLVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjM0Olx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IFdXQU5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zNS1cdCAgZnJhbWV3b3JrLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo0MDpjb25maWcgTUhJX1dXQU5fQ1RSTFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjQxOlx0dHJpc3RhdGUgXCYjMzQ7TUhJIFdXQU4gY29udHJvbCBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDItXHRkZXBlbmRzIG9uIE1ISV9CVVNcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy00My1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo0NDpcdCAgTUhJIFdXQU4gQ1RSTCBhbGxvd3MgUUNPTS1iYXNlZCBQQ0llIG1vZGVtcyB0byBleHBvc2UgZGlmZmVyZW50IG1vZGVtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDUtXHQgIGNvbnRyb2wgcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFULCBNQklNLCBRTUksIERJQUdcbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NTM6Y29uZmlnIE1ISV9XV0FOX01CSU1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo1NDogICAgICAgIHRyaXN0YXRlIFwmIzM0O01ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTUtICAgICAgICBkZXBlbmRzIG9uIE1ISV9CVVNcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01Ni0gICAgICAgIGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo1NzogICAgICAgICAgTUhJIFdXQU4gTUJJTSBpcyBhIFdXQU4gbmV0d29yayBkcml2ZXIgZm9yIFFDT00tYmFzZWQgUENJZSBtb2RlbXMuXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTgtICAgICAgICAgIEl0IGltcGxlbWVudHMgTUJJTSBvdmVyIE1ISSwgZm9yIElQIGRhdGEgYWdncmVnYXRpb24gYW5kIG11eGluZy5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9NjU9Y29uZmlnIFFDT01fQkFNX0RNVVhcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo2NjpcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02Ny1cdGRlcGVuZHMgb24gKERNQV9FTkdJTkUgXHUwMDI2XHUwMDI2IFBNIFx1MDAyNlx1MDAyNiBRQ09NX1NNRU1fU1RBVEUpIHx8IENPTVBJTEVfVEVTVFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03MS1cdCAgTVNNODkxNiBvciBNU004OTc0LiBUaGUgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgdmlhIFFNSS9BVCBmcm9tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzI6XHQgIHVzZXJzcGFjZSB3aXRoIGNvbnRyb2wgcG9ydHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFdXQU4gc3Vic3lzdGVtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzM6XHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTc0LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3ODpjb25maWcgUlBNU0dfV1dBTl9DVFJMXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzk6XHR0cmlzdGF0ZSBcJiMzNDtSUE1TRyBXV0FOIGNvbnRyb2wgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODAtXHRkZXBlbmRzIG9uIFJQTVNHXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODEtXHRoZWxwXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6ODI6XHQgIFJQTVNHIFdXQU4gQ1RSTCBhbGxvd3MgbW9kZW1zIGF2YWlsYWJsZSB2aWEgUlBNU0cgY2hhbm5lbHMgdG8gZXhwb3NlXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODMtXHQgIGRpZmZlcmVudCBtb2RlbSBwcm90b2NvbHMvcG9ydHMgdG8gdXNlcnNwYWNlLCBpbmNsdWRpbmcgQVQgYW5kIFFNSS5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo5NzpcdHRyaXN0YXRlIFwmIzM0O0lPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy05OC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctOTktXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDA6XHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAxLVx0aGVscFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjEwMjpcdCAgVGhpcyBkcml2ZXIgZW5hYmxlcyBJbnRlbCBNLjIgV1dBTiBEZXZpY2UgY29tbXVuaWNhdGlvbi5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDMtXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTA0Olx0ICBJZiB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgSW50ZWwgTS4yIFdXQU4gTW9kdWxlcyBhbmQgd2lzaCB0byB1c2UgaXQgaW5cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDUtXHQgIExpbnV4IHNheSBZL00gaGVyZS5cbi0tXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTA5PWNvbmZpZyBNVEtfVDdYWFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExMDpcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMS1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTEyOlx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMy1cdGhlbHBcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTQ6XHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExNTpcdCAgQWRhcHRzIFdXQU4gZnJhbWV3b3JrIGFuZCBwcm92aWRlcyBuZXR3b3JrIGludGVyZmFjZSBsaWtlIHd3YW4wXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTE2LVx0ICBhbmQgdHR5IGludGVyZmFjZXMgbGlrZSB3d2FuMGF0MCAoQVQgcHJvdG9jb2wpLCB3d2FuMG1iaW0wXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMjQ6ZW5kaWYgIyBXV0FOXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTI1LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMi0jXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFdXQU4gZGV2aWNlIGRyaXZlcnMuXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTQtI1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19XV0FOKSAmIzQzOz0gd3dhbi5vXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTctd3dhbi1vYmpzICYjNDM7PSB3d2FuX2NvcmUub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19XV0FOX0hXU0lNKSAmIzQzOz0gd3dhbl9od3NpbS5vXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTUhJX1dXQU5fQ1RSTCkgJiM0Mzs9IG1oaV93d2FuX2N0cmwub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUhJX1dXQU5fTUJJTSkgJiM0Mzs9IG1oaV93d2FuX21iaW0ub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfUUNPTV9CQU1fRE1VWCkgJiM0Mzs9IHFjb21fYmFtX2RtdXgub1xuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSAmIzQzOz0gcnBtc2dfd3dhbl9jdHJsLm9cbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0lPU00pICYjNDM7PSBpb3NtL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZT02PWlvc20teSA9IFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlLTI1LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlOjI2Omlvc20tJChDT05GSUdfV1dBTl9ERUJVR0ZTKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZS0yNy1cdGlvc21faXBjX2RlYnVnZnMub1x0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jPTM0PXN0YXRpYyBzdHJ1Y3QgaXBjX2NobmxfY2ZnIG1vZGVtX2NmZ1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM3LVx0ICBJUENfTUVNX01BWF9URFNfTVVYX0xJVEVfVUwsIElQQ19NRU1fTUFYX1REU19NVVhfTElURV9ETCxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjM4Olx0ICBJUENfTUVNX01BWF9ETF9NVVhfTElURV9CVUZfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM5LVx0LyogUlBDIC0gMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQxLVx0ICBJUENfTUVNX01BWF9URFNfUlBDLCBJUENfTUVNX01BWF9URFNfUlBDLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NDI6XHQgIElQQ19NRU1fTUFYX0RMX1JQQ19CVUZfU0laRSwgV1dBTl9QT1JUX1hNTVJQQyB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNDMtXHQvKiBJQVQwICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNDUtXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjQ2Olx0ICBXV0FOX1BPUlRfQVQgfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQ3LVx0LyogVHJhY2UgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00OS1cdCAgSVBDX01FTV9URFNfVFJDLCBJUENfTUVNX1REU19UUkMsIElQQ19NRU1fTUFYX0RMX1RSQ19CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjUwOlx0ICBXV0FOX1BPUlRfVU5LTk9XTiB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTEtXHQvKiBJQVQxICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTMtXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjU0Olx0ICBXV0FOX1BPUlRfQVQgfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU1LVx0LyogTG9vcGJhY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy01Ny1cdCAgSVBDX01FTV9NQVhfVERTX0xPT1BCQUNLLCBJUENfTUVNX01BWF9URFNfTE9PUEJBQ0ssXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo1ODpcdCAgSVBDX01FTV9NQVhfRExfTE9PUEJBQ0tfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU5LVx0LyogTUJJTSBDaGFubmVsICovXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjEtXHQgIElQQ19NRU1fTUFYX1REU19NQklNLCBJUENfTUVNX01BWF9URFNfTUJJTSxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjYyOlx0ICBJUENfTUVNX01BWF9ETF9NQklNX0JVRl9TSVpFLCBXV0FOX1BPUlRfTUJJTSB9LFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjMtXHQvKiBGbGFzaCBDaGFubmVsL0NvcmVkdW1wIENoYW5uZWwgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy02NS1cdCAgSVBDX01FTV9NQVhfVERTX0ZMQVNIX1VMLCBJUENfTUVNX01BWF9URFNfRkxBU0hfREwsXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo2NjpcdCAgSVBDX01FTV9NQVhfRExfRkxBU0hfQlVGX1NJWkUsIFdXQU5fUE9SVF9VTktOT1dOIH0sXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19kZWJ1Z2ZzLmgtOC1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19kZWJ1Z2ZzLmg6OTojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaC0xMC12b2lkIGlwY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0pO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTc9c3RhdGljIGludCBpcGNfaW1lbV9jaGVja193d2FuX2lwcyhzdHJ1Y3QgaXBjX21lbV9jaGFubmVsICpjaG5sKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMTktXHRpZiAoY2hubClcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MjA6XHRcdHJldHVybiBjaG5sLVx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0yMS1cdFx0ICAgICAgIGNobmwtXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0yOTg9c3RhdGljIHZvaWQgaXBjX2ltZW1fZGxfc2tiX3Byb2Nlc3Moc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjItXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjMyMzpcdGNhc2UgSVBDX0NUWVBFX1dXQU46XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTMyNC1cdFx0aWYgKHBpcGUtXHUwMDNlY2hhbm5lbC1cdTAwM2VpZl9pZCA9PSBJUENfTUVNX01VWF9JUF9DSF9JRl9JRClcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jPTU2Mj1zdGF0aWMgdm9pZCBpcGNfaW1lbV9ydW5fc3RhdGVfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqaW5zdGFuY2UpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy01OTktXHRcdFx0aWYgKGlwY19pbWVtLVx1MDAzZXBjaWUtXHUwMDNlcGNpLVx1MDAzZWRldmljZSA9PSBJTlRFTF9DUF9ERVZJQ0VfNzU2MF9JRCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjAwOlx0XHRcdCAgICBjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlID09IFdXQU5fUE9SVF9YTU1SUEMpIHtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjAxLVx0XHRcdFx0Y3RybF9jaGxfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwNS1cdFx0XHRpZiAoaXBjX2ltZW0tXHUwMDNlcGNpZS1cdTAwM2VwY2ktXHUwMDNlZGV2aWNlID09IElOVEVMX0NQX0RFVklDRV83MzYwX0lEIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYzo2MDY6XHRcdFx0ICAgIGNobmxfY2ZnX3BvcnQud3dhbl9wb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01CSU0pIHtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA3LVx0XHRcdFx0Y3RybF9jaGxfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwOS1cdFx0XHR9XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjYxMDpcdFx0XHRpZiAoY2hubF9jZmdfcG9ydC53d2FuX3BvcnRfdHlwZSAhPSBXV0FOX1BPUlRfVU5LTk9XTikge1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MTEtXHRcdFx0XHRpcGNfaW1lbV9jaGFubmVsX2luaXQoaXBjX2ltZW0sIElQQ19DVFlQRV9DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTA2MD1pbnQgaXBjX2ltZW1fY2hhbm5lbF9hbGxvYyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MTA4NTpcdGlmIChjaGFubmVsLVx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0xMDg2LVx0ICAgIGluZGV4ID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MTM2PWVudW0gaXBjX2NoYW5uZWxfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMTQ1LSAqXHRcdCAgICAvSVAgdHJhZmZpYy5cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6MTQ2OiAqIEBJUENfQ1RZUEVfV1dBTjpcdFx0VXNlZCBmb3IgSVAgdHJhZmZpY1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0xNDctICogQElQQ19DVFlQRV9DVFJMOlx0XHRVc2VkIGZvciBDb250cm9sIENvbW11bmljYXRpb25cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTE0OT1lbnVtIGlwY19jdHlwZSB7XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE1MDpcdElQQ19DVFlQRV9XV0FOLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0xNTEtXHRJUENfQ1RZUEVfQ1RSTCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTI3Mz1lbnVtIGlwY19waGFzZSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0yODktICogQGlwY190YXNrOlx0XHRcdFRhc2sgZm9yIGVudHJ5IGludG8gaXBjIHRhc2sgcXVldWVcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6MjkwOiAqIEB3d2FuOlx0XHRcdFdXQU4gZGV2aWNlIHBvaW50ZXJcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjkxLSAqIEBtdXg6XHRcdFx0SVAgRGF0YSBtdWx0aXBsZXhpbmcgc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zMzAtICogQHBjaWVfd2FrZV9uOlx0XHRQY2llIHdha2UgZmxhZ1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozMzE6ICogQGRlYnVnZnNfd3dhbl9kaXI6XHRcdFdXQU4gRGVidWcgRlMgZGlyZWN0b3J5IGVudHJ5XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTMzMi0gKiBAZGVidWdmc19kaXI6XHRcdERlYnVnIEZTIGRpcmVjdG9yeSBmb3IgZHJpdmVyLXNwZWNpZmljIGVudHJpZXNcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTMzND1zdHJ1Y3QgaW9zbV9pbWVtIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM0MS1cdHN0cnVjdCBpb3NtX3BjaWUgKnBjaWU7XG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjM0MjojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNDMtXHRzdHJ1Y3QgaW9zbV90cmFjZSAqdHJhY2U7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNzMtXHQgICBwY2llX3dha2VfbjoxO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozNzQ6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzc1LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc193d2FuX2Rpcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYz04MD1pbnQgaXBjX2ltZW1fd3dhbl9jaGFubmVsX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtODYtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYzo4NzpcdC8qIElmIG1vZGVtIHZlcnNpb24gaXMgaW52YWxpZCAoMHhmZmZmZmZmZiksIGRvIG5vdCBpbml0aWFsaXplIFdXQU4uICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy04OC1cdGlmIChpcGNfaW1lbS1cdTAwM2VjcF92ZXJzaW9uID09IC0xKSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTAxLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTAyOlx0aXBjX2ltZW1fY2hhbm5lbF9pbml0KGlwY19pbWVtLCBJUENfQ1RZUEVfV1dBTiwgY2hubF9jZmcsXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDMtXHRcdFx0ICAgICAgSVJRX01PRF9PRkYpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTA0LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTA1Olx0LyogV1dBTiByZWdpc3RyYXRpb24uICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDYtXHRpcGNfaW1lbS1cdTAwM2V3d2FuID0gaXBjX3d3YW5faW5pdChpcGNfaW1lbSwgaXBjX2ltZW0tXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaD04Nz1pbnQgaXBjX2ltZW1fc3lzX3d3YW5fdHJhbnNtaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIGludCBpZl9pZCxcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC04OS0vKipcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5oOjkwOiAqIGlwY19pbWVtX3d3YW5fY2hhbm5lbF9pbml0IC0gSW5pdGlhbGl6ZXMgV1dBTiBjaGFubmVscyBhbmQgdGhlIGNoYW5uZWwgZm9yXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC05MS0gKlx0XHRcdFx0TVVYLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz05PXN0YXRpYyBpbnQgaXBjX211eF9jaGFubmVsX2NyZWF0ZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTEzLVx0Y2hhbm5lbF9pZCA9IGlwY19pbWVtX2NoYW5uZWxfYWxsb2MoaXBjX211eC1cdTAwM2VpbWVtLCBpcGNfbXV4LVx1MDAzZWluc3RhbmNlX2lkLFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjE0Olx0XHRcdFx0XHQgICAgSVBDX0NUWVBFX1dXQU4pO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTE1LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz00MjQ9aW50IGlwY19tdXhfb3Blbl9zZXNzaW9uKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgaW50IHNlc3Npb25fbnIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQzMi1cdHNlc3Npb25fb3Blbi1cdTAwM2VpZl9pZCA9IGNwdV90b19sZTMyKHNlc3Npb25fbnIpO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjQzMzpcdGlwY19tdXgtXHUwMDNlc2Vzc2lvbltzZXNzaW9uX25yXS5mbGFncyB8PSBJUENfTUVNX1dXQU5fTVVYO1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQzNC1cdHJldHVybiBpcGNfbXV4X3NjaGVkdWxlKGlwY19tdXgsIFx1MDAyNm11eF9tc2cpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz00Mzc9aW50IGlwY19tdXhfY2xvc2Vfc2Vzc2lvbihzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgsIGludCBzZXNzaW9uX25yKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00NDctXHRyZXRfdmFsID0gaXBjX211eF9zY2hlZHVsZShpcGNfbXV4LCBcdTAwMjZtdXhfbXNnKTtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYzo0NDg6XHRpcGNfbXV4LVx1MDAzZXNlc3Npb25bc2Vzc2lvbl9ucl0uZmxhZ3MgXHUwMDI2PSB+SVBDX01FTV9XV0FOX01VWDtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00NDktXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTU4LS8qIE1VWCBmb3Igcm91dGUgbGluayBkZXZpY2VzICovXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4Lmg6NTk6I2RlZmluZSBJUENfTUVNX1dXQU5fTVVYIEJJVCgwKVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTYwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MTc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMIHYyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMTgtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjE5Oi8qIFdXQU4gR1VJRCAqL1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMC1zdGF0aWMgZ3VpZF90IHd3YW5fYWNwaV9ndWlkID0gR1VJRF9JTklUKDB4YmFkMDFiNzUsIDB4MjJhOCwgMHg0ZjQ4LCAweDg3LCAweDkyLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MjIwPXN0YXRpYyB2b2lkIGlwY19wY2llX2NvbmZpZ19pbml0KHN0cnVjdCBpb3NtX3BjaWUgKmlwY19wY2llKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjMxLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYzoyMzI6LyogVGhpcyB3aWxsIHJlYWQgdGhlIEJJT1MgV1dBTiBSVEQzIHNldHRpbmdzOlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMzMtICogRDBMMS4yL0QzTDIvRGlzYWJsZWRcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jPTI2MD1zdGF0aWMgaW50IGlwY19wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0zMDUtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjMwNjpcdC8qIFJlYWQgV1dBTiBSVEQzIEJJT1MgU2V0dGluZ1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0zMDctXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oPTM5PWVudW0gaXBjX3BjaWVfc2xlZXBfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmgtNjEtICogQHN1c3BlbmQ6XHRcdFx0UzJJRExFIHNsZWVwL2FjdGl2ZVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuaDo2MjogKiBAZDNsMl9zdXBwb3J0Olx0XHRSZWFkIFdXQU4gUlREMyBCSU9TIHNldHRpbmcgZm9yIEQzTDIgc3VwcG9ydFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuaC02My0gKi9cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcG9ydC5oLTE4LSAqIEBwY2llOlx0XHRQQ0llIGNvbXBvbmVudFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaDoxOTogKiBAcG9ydF90eXBlOlx0XHRXV0FOIHBvcnQgdHlwZVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaC0yMC0gKiBAY2hhbm5lbDpcdFx0Q2hhbm5lbCBpbnN0YW5jZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY190cmFjZS5oPTM3PXN0cnVjdCBpb3NtX3RyYWNlIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00Ny1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY190cmFjZS5oOjQ4OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00OS1cbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTIxLS8qKlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYzoyMjogKiBzdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiAtIG5ldGRldiBXV0FOIGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIGRhdGFcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjMtICogQGlwY193d2FuOlx0UG9pbnRlciB0byBpb3NtX3d3YW4gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYz0yOD1zdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNS0vKipcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzY6ICogc3RydWN0IGlvc21fd3dhbiAtIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IFdXQU4gcm9vdCBkZXZpY2VcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMzctICpcdFx0ICAgICAgYW5kIGludGVyZmFjZSB0byB0aGUgSVBDIGxheWVyLlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg5PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTI5OS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzAwOlx0LyogV1dBTiBjb3JlIHdpbGwgY3JlYXRlIGEgbmV0ZGV2IGZvciB0aGUgZGVmYXVsdCBJUCBNVVggY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zMDEtXHRpZiAod3dhbl9yZWdpc3Rlcl9vcHMoaXBjX3d3YW4tXHUwMDNlZGV2LCBcdTAwMjZpb3NtX3d3YW5fb3BzLCBpcGNfd3dhbixcbi0tXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTUtXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oOjY6I2lmbmRlZiBJT1NNX0lQQ19XV0FOX0hcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NzojZGVmaW5lIElPU01fSVBDX1dXQU5fSFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC04LVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC05LS8qKlxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaDoxMDogKiBpcGNfd3dhbl9pbml0IC0gQWxsb2NhdGUsIEluaXQgYW5kIHJlZ2lzdGVyIFdXQU4gZGV2aWNlXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTExLSAqIEBpcGNfaW1lbTpcdFx0UG9pbnRlciB0byBpbWVtIGRhdGEtc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaD0xNj1zdHJ1Y3QgaW9zbV93d2FuICppcGNfd3dhbl9pbml0KHN0cnVjdCBpb3NtX2ltZW0gKmlwY19pbWVtLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMTgtLyoqXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oOjE5OiAqIGlwY193d2FuX2RlaW5pdCAtIFVucmVnaXN0ZXIgYW5kIGZyZWUgV1dBTiBkZXZpY2UsIGNsZWFyIHBvaW50ZXJcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMjAtICogQGlwY193d2FuOlx0UG9pbnRlciB0byB3d2FuIGluc3RhbmNlIGRhdGFcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz05PWVudW0gbWhpX3d3YW5fZmxhZ3Mge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTA6XHRNSElfV1dBTl9ETF9DQVAsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMTpcdE1ISV9XV0FOX1VMX0NBUCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyOlx0TUhJX1dXQU5fUlhfUkVGSUxMLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTMtfTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTU6I2RlZmluZSBNSElfV1dBTl9NQVhfTVRVXHQweDgwMDBcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTQxPXN0YXRpYyB2b2lkIG1oaV93d2FuX3J4X2J1ZGdldF9pbmMoc3RydWN0IG1oaV93d2FuX2RldiAqbWhpd3dhbilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjQ3Olx0aWYgKHRlc3RfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00OC1cdFx0c2NoZWR1bGVfd29yayhcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X3JlZmlsbCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9NTQ9c3RhdGljIGJvb2wgbWhpX3d3YW5fcnhfYnVkZ2V0X2RlYyhzdHJ1Y3QgbWhpX3d3YW5fZGV2ICptaGl3d2FuKVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTYxLVx0XHRtaGl3d2FuLVx1MDAzZXJ4X2J1ZGdldC0tO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6NjI6XHRcdGlmICh0ZXN0X2JpdChNSElfV1dBTl9SWF9SRUZJTEwsIFx1MDAyNm1oaXd3YW4tXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtNjMtXHRcdFx0cmV0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz03Nz1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy05MS1cdFx0LyogVG8gcHJldmVudCB1bmxpbWl0ZWQgYnVmZmVyIGFsbG9jYXRpb24gaWYgbm90aGluZyBjb25zdW1lc1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6OTI6XHRcdCAqIHRoZSBSWCBidWZmZXJzIChwYXNzZWQgdG8gV1dBTiBjb3JlKSwgdHJhY2sgdGhlaXIgbGlmZXNwYW5cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTkzLVx0XHQgKiB0byBub3QgYWxsb2NhdGUgbW9yZSB0aGFuIGFsbG93ZWQgYnVkZ2V0LlxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEwNj1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfc3RhcnQoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMTktXHQvKiBBZGQgYnVmZmVycyB0byB0aGUgTUhJIGluYm91bmQgcXVldWUgKi9cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyMDpcdGlmICh0ZXN0X2JpdChNSElfV1dBTl9ETF9DQVAsIFx1MDAyNm1oaXd3YW4tXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMjE6XHRcdHNldF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEyMi1cdFx0bWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayhcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X3JlZmlsbCk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9MTI4PXN0YXRpYyB2b2lkIG1oaV93d2FuX2N0cmxfc3RvcChzdHJ1Y3Qgd3dhbl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X2xvY2spO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTMzOlx0Y2xlYXJfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMzQtXHRzcGluX3VubG9ja19iaChcdTAwMjZtaGl3d2FuLVx1MDAzZXJ4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTE0MT1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfdHgoc3RydWN0IHd3YW5fcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNDgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxNDk6XHRpZiAoIXRlc3RfYml0KE1ISV9XV0FOX1VMX0NBUCwgXHUwMDI2bWhpd3dhbi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yMTM9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIyNC1cdG1oaXd3YW4tXHUwMDNlbWhpX2RldiA9IG1oaV9kZXY7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMjU6XHRtaGl3d2FuLVx1MDAzZW10dSA9IE1ISV9XV0FOX01BWF9NVFU7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yMjYtXHRJTklUX1dPUksoXHUwMDI2bWhpd3dhbi1cdTAwM2VyeF9yZWZpbGwsIG1oaV93d2FuX2N0cmxfcmVmaWxsX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMC1cdGlmIChtaGlfZGV2LVx1MDAzZWRsX2NoYW4pXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzE6XHRcdHNldF9iaXQoTUhJX1dXQU5fRExfQ0FQLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMi1cdGlmIChtaGlfZGV2LVx1MDAzZXVsX2NoYW4pXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzM6XHRcdHNldF9iaXQoTUhJX1dXQU5fVUxfQ0FQLCBcdTAwMjZtaGl3d2FuLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yNTg9c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkIG1oaV93d2FuX2N0cmxfbWF0Y2hfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI1OTpcdHsgLmNoYW4gPSBcJiMzNDtEVU5cJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYwOlx0eyAuY2hhbiA9IFwmIzM0O0RVTjJcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYxOlx0eyAuY2hhbiA9IFwmIzM0O01CSU1cJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9NQklNIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjI6XHR7IC5jaGFuID0gXCYjMzQ7UU1JXCYjMzQ7LCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfUU1JIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjM6XHR7IC5jaGFuID0gXCYjMzQ7RElBR1wmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FDRE0gfSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2NDpcdHsgLmNoYW4gPSBcJiMzNDtGSVJFSE9TRVwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0ZJUkVIT1NFIH0sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjU6XHR7IC5jaGFuID0gXCYjMzQ7Tk1FQVwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX05NRUEgfSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTI2Ni1cdHt9LFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTI4Mz1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6Mjg0Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNSEkgV1dBTiBDVFJMIERyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yODUtTU9EVUxFX0FVVEhPUihcJiMzNDtMb2ljIFBvdWxhaW4gXHUwMDNjbG9pYy5wb3VsYWluQGxpbmFyby5vcmdcdTAwM2VcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTYyMD1zdGF0aWMgaW50IG1oaV9tYmltX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LCBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ0LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ1Olx0LyogUmVnaXN0ZXIgd3dhbiBsaW5rIG9wcyB3aXRoIE1ISSBjb250cm9sbGVyIHJlcHJlc2VudGluZyBXV0FOIGluc3RhbmNlICovXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDYtXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXHUwMDI2Y250cmwtXHUwMDNlbWhpX2Rldi1cdTAwM2VkZXYsIFx1MDAyNm1oaV9tYmltX3d3YW5fb3BzLCBtYmltLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yLS8qXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYzozOiAqIFF1YWxjb21tIEJBTS1ETVVYIFdXQU4gbmV0d29yayBkcml2ZXJcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTQtICogQ29weXJpZ2h0IChjKSAyMDIwLCBTdGVwaGFuIEdlcmhvbGQgXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTkwNT1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTA2Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtRdWFsY29tbSBCQU0tRE1VWCBXV0FOIE5ldHdvcmsgRHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNy1NT0RVTEVfQVVUSE9SKFwmIzM0O1N0ZXBoYW4gR2VyaG9sZCBcdTAwM2NzdGVwaGFuQGdlcmhvbGQubmV0XHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTk4PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpycG1zZ193d2FuX2ZpbmRfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtOTkte1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxMDA6XHQvKiBTZWxlY3QgZmlyc3QgcGxhdGZvcm0gZGV2aWNlIGFzIHBhcmVudCBmb3IgdGhlIFdXQU4gcG9ydHMuXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTEwMS1cdCAqIE9uIFF1YWxjb21tIHBsYXRmb3JtcyB0aGlzIGlzIHVzdWFsbHkgdGhlIHBsYXRmb3JtIGRldmljZSB0aGF0XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYz0xNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBycG1zZ19kZXZpY2VfaWQgcnBtc2dfd3dhbl9jdHJsX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTE0OC1cdC8qIFJQTVNHIGNoYW5uZWxzIGZvciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbSAqL1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNDk6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTVfQ05UTFwmIzM0OywgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FNSSB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTA6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTRcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTE6XHR7IC5uYW1lID0gXCYjMzQ7REFUQTFcJiMzNDssIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xNTItXHR7fSxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTE2ND1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNjU6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1JQTVNHIFdXQU4gQ1RSTCBEcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xNjYtTU9EVUxFX0FVVEhPUihcJiMzNDtTdGVwaGFuIEdlcmhvbGQgXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFx1MDAzZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlPTQ9bXRrX3Q3eHgteTo9XHR0N3h4X3BjaS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTE5LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlOjIwOm10a190N3h4LSQoQ09ORklHX1dXQU5fREVCVUdGUykgJiM0Mzs9IFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMjEtXHRcdHQ3eHhfcG9ydF90cmFjZS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9MzM4PXN0YXRpYyBpbnQgdDd4eF9jY21uaV9yZWdpc3Rlcl93d2FuKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmN0bGIpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzQ1LVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6MzQ2Olx0LyogV1dBTiBjb3JlIHdpbGwgY3JlYXRlIGEgbmV0ZGV2IGZvciB0aGUgZGVmYXVsdCBJUCBNVVggY2hhbm5lbCAqL1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzQ3LVx0cmV0ID0gd3dhbl9yZWdpc3Rlcl9vcHMoZGV2LCBcdTAwMjZjY21uaV93d2FuX29wcywgY3RsYiwgSVBfTVVYX1NFU1NJT05fREVGQVVMVCk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDgtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzozNDk6XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtVbmFibGUgdG8gcmVnaXN0ZXIgV1dBTiBvcHMsICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzUwLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jPTk2Mj1NT0RVTEVfQVVUSE9SKFwmIzM0O01lZGlhVGVrIEluY1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYzo5NjM6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NjQtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaD03ND1zdHJ1Y3QgdDd4eF9wY2lfZGV2IHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaC05Mi1cdHN0cnVjdCBjb21wbGV0aW9uXHRzbGVlcF9sb2NrX2FjcXVpcmU7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaDo5MzojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmgtOTQtXHRzdHJ1Y3QgZGVudHJ5XHRcdCpkZWJ1Z2ZzX2Rpcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM9NTU9c3RhdGljIGNvbnN0IHN0cnVjdCB0N3h4X3BvcnRfY29uZiB0N3h4X3BvcnRfY29uZltdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02NS1cdFx0Lm5hbWUgPSBcJiMzNDtBVFwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzo2NjpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BVCxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02Ny1cdH0sIHtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtNzQtXHRcdC5uYW1lID0gXCYjMzQ7TUJJTVwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzo3NTpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9NQklNLFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTc2LVx0fSwge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjc3OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtNzgtXHRcdC50eF9jaCA9IFBPUlRfQ0hfTURfTE9HX1RYLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMTEtXHRcdC5uYW1lID0gXCYjMzQ7YWRiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjExMjpcdFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BREIsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTEzLVx0XHQuZGVidWcgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMjEtXHRcdC5uYW1lID0gXCYjMzQ7bWlwY1wmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMjI6XHRcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfTUlQQyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMjMtXHRcdC5kZWJ1ZyA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jPTEyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHQ3eHhfcG9ydF9jb25mIHQ3eHhfZWFybHlfcG9ydF9jb25mW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTEzNy1cdFx0Lm5hbWUgPSBcJiMzNDtmYXN0Ym9vdFwmIzM0OyxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMzg6XHRcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfRkFTVEJPT1QsXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTM5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg9OTU9ZXh0ZXJuIHN0cnVjdCBwb3J0X29wcyBjdGxfcG9ydF9vcHM7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmgtOTYtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg6OTc6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaC05OC1leHRlcm4gc3RydWN0IHBvcnRfb3BzIHQ3eHhfdHJhY2VfcG9ydF9vcHM7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM9MTMwPXN0YXRpYyBpbnQgdDd4eF9wb3J0X3d3YW5fdHgoc3RydWN0IHd3YW5fcG9ydCAqcG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xMzgtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxMzk6XHRpZiAocG9ydF9jb25mLVx1MDAzZXBvcnRfdHlwZSAhPSBXV0FOX1BPUlRfRkFTVEJPT1QpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNDAtXHRcdHJldCA9IHQ3eHhfcG9ydF9jdHJsX3R4KHBvcnRfcHJpdmF0ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNTM9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fY3JlYXRlKHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMTY1LVx0XHRpZiAoSVNfRVJSKHBvcnQtXHUwMDNld3dhbi53d2FuX3BvcnQpKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTY2Olx0XHRcdGRldl9lcnIocG9ydC1cdTAwM2VkZXYsIFwmIzM0O1VuYWJsZSB0byBjcmVhdGUgV1dBTiBwb3J0ICVzXCYjMzQ7LCBwb3J0X2NvbmYtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNjctXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM9MTcwPXN0YXRpYyBpbnQgdDd4eF9wb3J0X3d3YW5faW5pdChzdHJ1Y3QgdDd4eF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE3My1cbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjE3NDpcdGlmIChwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9GQVNUQk9PVCB8fFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc1Olx0ICAgIHBvcnRfY29uZi1cdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX0FEQiB8fFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc2Olx0ICAgIHBvcnRfY29uZi1cdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01JUEMpXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNzctXHRcdHQ3eHhfcG9ydF93d2FuX2NyZWF0ZShwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0yMjc9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fbWRfc3RhdGVfbm90aWZ5KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0yMzAtXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoyMzE6XHRpZiAocG9ydF9jb25mLVx1MDAzZXBvcnRfdHlwZSA9PSBXV0FOX1BPUlRfRkFTVEJPT1QgfHxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMjpcdCAgICBwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9BREIgfHxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMzpcdCAgICBwb3J0X2NvbmYtXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9NSVBDKVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMjM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd3dhbi93d2FuX2NvcmUuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3d3YW4vd3dhbl9jb3JlLmM6MjovKiBXV0FOIERyaXZlciBDb3JlXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzU1NQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFdXQU4gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIFdXQU4gZHJpdmVycyBhbmQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBmb2N1c2luZyBvbiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJIGtub3cgdGhhdCBgbWhpX3d3YW5fbWJpbS5jYCBpcyByZWxhdGVkIHRvIFF1YWxjb21tIE1ISSBidXMgZGV2aWNlcyBiYXNlZCBvbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgaXMgY29tbXVuaWNhdGluZyB3aXRoLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzLiBgbWhpX3d3YW5fbWJpbS5jYCBoYXMgYE1ISV9XV0FOX01CSU1gLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYE1ISV9CVVNgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hhdCAqaXMqIGBNSElfQlVTYD8gSXMgaXQgYSBwaHlzaWNhbCBidXMsIHBvdGVudGlhbGx5IFBDSWUsIG9yIGlzIGl0IGEgdmlydHVhbCBjb25zdHJ1Y3QgbGlrZSBhIHNpbXVsYXRlZCBidXMsIG9yIHBlcmhhcHMgYSBVU0IgZ2FkZ2V0IG9yIHNvbWUgb3RoZXIga2luZCBvZiBpbnRlci1kZXZpY2UgY29tbXVuaWNhdGlvbiBsYXllcj8gVG8gZmlndXJlIHRoYXQgb3V0LCBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSBgTUhJX0JVU2AmIzM5O3MgZGVmaW5pdGlvbi4gTXkgZ3Vlc3MgaXMgaXQgd2lsbCBiZSBpbiBgZHJpdmVycy9idXMvbWhpL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMsIGFzIGl0IGlzIHRoZSBjcnV4IG9mIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1ISV9CVVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2VwL0tjb25maWc6MTpjb25maWcgTUhJX0JVU19FUFxuZHJpdmVycy9idXMvbWhpL2VwL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O01vZGVtIEhvc3QgSW50ZXJmYWNlIChNSEkpIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWctNy1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6ODpjb25maWcgTUhJX0JVU1xuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7TW9kZW0gSG9zdCBJbnRlcmZhY2UgKE1ISSkgYnVzXCYjMzQ7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy0xNS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MTY6Y29uZmlnIE1ISV9CVVNfREVCVUdcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWctMTctXHRib29sIFwmIzM0O0RlYnVnZnMgc3VwcG9ydCBmb3IgdGhlIE1ISSBidXNcJiMzNDtcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTIzLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZzoyNDpjb25maWcgTUhJX0JVU19QQ0lfR0VORVJJQ1xuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy0yNS1cdHRyaXN0YXRlIFwmIzM0O01ISSBQQ0kgY29udHJvbGxlciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI5MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1ISS9XV0FOIFNpdHVhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYE1ISV9CVVNfRVBgIGlzIGNsZWFybHkgYW4gTUhJIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvbiwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIE5vdywgdGhlIGludGVyZXN0aW5nIHBhcnQgaXMgYE1ISV9XV0FOX01CSU1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhhdCBmaXRzIGludG8gdGhlIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGNoZWNrIGBtaGlfd3dhbl9tYmltLmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCwgbGlrZWx5IHRocm91Z2ggYW4gYG1oaV9kcml2ZXJgIGFuZCBgbWhpX2RyaXZlcl9yZWdpc3RlcmAuIEkmIzM5O2xsIGFsc28gd2FudCB0byB1bmRlcnN0YW5kIGhvdyBNSEkgZGV2aWNlcyBhcmUgcHJvYmVkIGluIGdlbmVyYWwuIExvb2tpbmcgYmFjayBhdCB0aGUgYmFzZSBgTUhJX0JVU19QQ0lfR0VORVJJQ2AsIGl0IGFwcGVhcnMgdG8gaGFuZGxlIHJlZ2lzdHJhdGlvbiBvZiBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IEZveGNvbm4sIFF1ZWN0ZWwsIGFuZCBUZWxpdCBQQ0llIFdXQU4gbW9kZW1zLgoKVGhlbiB0aGVyZSBpcyB0aGUgYE1US19UN1hYYCBkcml2ZXIgdG8gY29uc2lkZXIuIEl0JiMzOTtzIGEgUENJIGRyaXZlciAoYHQ3eHhfcGNpLmNgLCBgcGNpX3JlZ2lzdGVyX2RyaXZlcigmYW1wO3Q3eHhfcGNpX2RyaXZlcilgKSB0aGF0IGhhcyBzcGVjaWZpYyBNZWRpYVRlayBQQ0kgZGV2aWNlIElEcyAobGlrZSBgUENJX0RFVklDRV9JRF9NRURJQVRFS19NVDY4NTVgKS4gT2theSwgc28gdGhhdCYjMzk7cyBhIFBDSS1iYXNlZCBNZWRpYVRlayBzb2x1dGlvbiwgbGlrZWx5IHRhcmdldGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9uLgoKSG9sZCBvbiwgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRob3NlIGNydWNpYWwgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0IGhpZ2hsaWdodHMgdGhhdCBjZXJ0YWluIGRyaXZlcnMsIGxpa2UgdGhvc2UgZm9yIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgKGUuZy4sIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBgYW1kZ3B1YCksIGFyZSB1bmxpa2VseSB0byBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGVpciBhc3NvY2lhdGVkIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuCgpOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBXV0FOIGRyaXZlcnMgKE1ISSwgTVRLX1Q3WFgsIE1ISV9XV0FOX01CSU0pIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IgZ2FkZ2V0LCBod3NpbSwgZXRjLikgb3IgaWYgdGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVycy4gVGhpcyBpcyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgSSYjMzk7bSBnb2luZyB0byBoYXZlIGEgcHJvYmxlbS4gSSBtaWdodCBuZWVkIHRvIGxvb2sgZm9yIGRyaXZlcnMgdGhhdCB3b3JrIHRocm91Z2ggdmlydHVhbCBidXMgaW1wbGVtZW50YXRpb25zLCBsaWtlIGB3d2FuX2h3c2ltYCwgdG8gcHJvdmlkZSBhIHBhdGguIExldCYjMzk7cyBzZWUgaWYgdGhhdCYjMzk7cyBldmVuIGZlYXNpYmxlLgoKTGV0JiMzOTtzIHNlZSBpZiBgd3dhbl9od3NpbWAgY29ubmVjdHMgdG8gYG1oaV93d2FuX21iaW1gIG9yIGB0N3h4YD8gSSYjMzk7bGwgY2hlY2sgYHd3YW5faHdzaW0uY2AgZm9yIHNvbWUgY2x1ZXMgb24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpfHQ3eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyODQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSB3d2FuX2h3c2ltLmMgU291cmNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC93d2FuL3d3YW5faHdzaW0uY2AuIFRpbWUgdG8gc2VlIHdoYXQga2luZCBvZiBzaGVuYW5pZ2FucyB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBpcyB1cCB0by4gSSYjMzk7bSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMg4oCTIGhvdyBhcmUgdGhleSBhYnN0cmFjdGluZyB0aGUgaGFyZHdhcmUgbGF5ZXI/IFdoYXQmIzM5O3MgdGhlIGludGVyZmFjZSBsaWtlIGZvciBlbXVsYXRpbmcgV1dBTiBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsPyBBcmUgdGhleSB1c2luZyBhbnkgY2xldmVyIHRyaWNrcyB0byBoYW5kbGUgdGhlIGNvbXBsZXhpdGllcyBvZiBjZWxsdWxhciBjb21tdW5pY2F0aW9uPwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGNvcmUgc3RydWN0dXJlcywgdGhlIG1haW4gZW50cnkgcG9pbnRzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IHRoZXkmIzM5O3JlIHNpbXVsYXRpbmcgdGhlIGRhdGEgdHJhbnNmZXIgcHJvY2Vzcy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgYW5kIGhvdyB3ZWxsIGl0IG1pcnJvcnMgcmVhbC13b3JsZCBXV0FOIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIHNlYXJjaGluZyBmb3IgYW55IGFyZWFzIHRoYXQgbWlnaHQgaGF2ZSBzdWJ0bGUgYnVncyBvciBpbmVmZmljaWVuY2llcyB0aGF0IGNvdWxkIGltcGFjdCB0ZXN0aW5nIG9yIGRldmVsb3BtZW50LiBJdCB3b3VsZCBiZSBpbnNpZ2h0ZnVsIHRvIHJldmlldyB0aGUgZXJyb3IgaGFuZGxpbmcsIHRvbyAtIGhvdyByb2J1c3QgaXMgdGhlIHNpbXVsYXRpb24/CgpNeSBmb2N1cyBpcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gY2hvaWNlcyBoZXJlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgb3B0aW1pemF0aW9uIG9yIGZ1cnRoZXIgcmVmaW5lbWVudC4gSXQmIzM5O3MgdGltZSB0byBiZWNvbWUgaW50aW1hdGVseSBhY3F1YWludGVkIHdpdGggdGhlIHNpbXVsYXRlZCB3b3JsZCBvZiBXV0FOIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogV1dBTiBkZXZpY2Ugc2ltdWxhdG9yIGZvciBXV0FOIGZyYW1ld29yayB0ZXN0aW5nLlxuICAgNDpcdCAqXG4gICA1Olx0ICogQ29weXJpZ2h0IChjKSAyMDIxLCAyMDI1LCBTZXJnZXkgUnlhemFub3YgXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVx1MDAzZVxuICAgNjpcdCAqL1xuICAgNzpcdFxuICAgODpcdCNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gICA5Olx0XG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RpbWUuaFx1MDAzZVxuICAxNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpc3QuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZXIuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd3dhbi5oXHUwMDNlXG4gIDIxOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG4gIDIyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAgMjM6XHRcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NuZXQvYXJwLmhcdTAwM2VcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50IHd3YW5faHdzaW1fZGV2c251bSA9IDI7XG4gIDI3Olx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcbiAgMjg6XHRNT0RVTEVfUEFSTV9ERVNDKGRldmljZXMsIFwmIzM0O051bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1wmIzM0Oyk7XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyB3d2FuX2h3c2ltX2NsYXNzID0ge1xuICAzMTpcdFx0Lm5hbWUgPSBcJiMzNDt3d2FuX2h3c2ltXCYjMzQ7LFxuICAzMjpcdH07XG4gIDMzOlx0XG4gIDM0Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc190b3BkaXI7XG4gIDM1Olx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XG4gIDM2Olx0XG4gIDM3Olx0c3RhdGljIERFRklORV9TUElOTE9DSyh3d2FuX2h3c2ltX2RldnNfbG9jayk7XG4gIDM4Olx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xuICAzOTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgd3dhbl9od3NpbV9kZXZfaWR4O1xuICA0MDpcdHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3dhbl93cTtcbiAgNDE6XHRcbiAgNDI6XHRzdHJ1Y3Qgd3dhbl9od3NpbV9kZXYge1xuICA0MzpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA0NDpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA0NTpcdFx0c3RydWN0IGRldmljZSBkZXY7XG4gIDQ2Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVsX3dvcms7XG4gIDQ3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3RvcGRpcjtcbiAgNDg6XHRcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcG9ydGNyZWF0ZTtcbiAgNDk6XHRcdHNwaW5sb2NrX3QgcG9ydHNfbG9jaztcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xuICA1MDpcdFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xuICA1MTpcdFx0c3RydWN0IGxpc3RfaGVhZCBwb3J0cztcbiAgNTI6XHR9O1xuICA1MzpcdFxuICA1NDpcdHN0cnVjdCB3d2FuX2h3c2ltX3BvcnQge1xuICA1NTpcdFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuICA1NjpcdFx0dW5zaWduZWQgaW50IGlkO1xuICA1NzpcdFx0c3RydWN0IHd3YW5faHdzaW1fZGV2ICpkZXY7XG4gIDU4Olx0XHRzdHJ1Y3Qgd3dhbl9wb3J0ICp3d2FuO1xuICA1OTpcdFx0c3RydWN0IHdvcmtfc3RydWN0IGRlbF93b3JrO1xuICA2MDpcdFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BkaXI7XG4gIDYxOlx0XHR1bmlvbiB7XG4gIDYyOlx0XHRcdHN0cnVjdCB7XG4gIDYzOlx0XHRcdFx0ZW51bSB7XHQvKiBBVCBjb21tYW5kIHBhcnNlciBzdGF0ZSAqL1xuICA2NDpcdFx0XHRcdFx0QVRfUEFSU0VSX1dBSVRfQSxcbiAgNjU6XHRcdFx0XHRcdEFUX1BBUlNFUl9XQUlUX1QsXG4gIDY2Olx0XHRcdFx0XHRBVF9QQVJTRVJfV0FJVF9URVJNLFxuICA2NzpcdFx0XHRcdFx0QVRfUEFSU0VSX1NLSVBfTElORSxcbiAgNjg6XHRcdFx0XHR9IHBzdGF0ZTtcbiAgNjk6XHRcdFx0fSBhdF9lbXVsO1xuICA3MDpcdFx0XHRzdHJ1Y3Qge1xuICA3MTpcdFx0XHRcdHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyO1xuICA3MjpcdFx0XHR9IG5tZWFfZW11bDtcbiAgNzM6XHRcdH07XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3d2FuX2h3c2ltX2RlYnVnZnNfcG9ydGRlc3Ryb3lfZm9wcztcbiAgNzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3d2FuX2h3c2ltX2RlYnVnZnNfcG9ydGNyZWF0ZV9mb3BzO1xuICA3ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19kZXZkZXN0cm95X2ZvcHM7XG4gIDc5Olx0c3RhdGljIHZvaWQgd3dhbl9od3NpbV9wb3J0X2RlbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gIDgwOlx0c3RhdGljIHZvaWQgd3dhbl9od3NpbV9kZXZfZGVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3OTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBXV0FOIERyaXZlciBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gaXQgc2VlbXMgYHd3YW5faHdzaW1gIGhhcyBnb25lIGl0cyBvd24gd2F5LCBpbXBsZW1lbnRpbmcgaXRzIG93biBXV0FOIHBvcnQgb3BlcmF0aW9ucyBhbmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIEl0IG1lYW5zIGl0JiMzOTtzIG5vdCByZWx5aW5nIG9uIHRoZSBtb3JlIGdlbmVyaWMgYG1oaV93d2FuX21iaW0uY2Agb3IgYHQ3eHhfbmV0ZGV2LmNgIGRyaXZlcnMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiB0aG9zZSBmaWxlcywgYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4X25ldGRldi5jYCwgYXJlIGV2ZW4gKm5lZWRlZCogaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhvc2Ugc3BlY2lmaWMgbW9kdWxlcyBhcmUgYmVpbmcgdXNlZCwgaWYgYXQgYWxsLiBNeSBwbGFuIGlzIHRvIGNvbmR1Y3QgYSB0aG9yb3VnaCBzZWFyY2ggZm9yIGFueSByZW1haW5pbmcgcmVmZXJlbmNlcyB0byBlaXRoZXIgYG1oaV93d2FuX21iaW1gIG9yIGB0N3h4YCB3aXRoaW4gdGhlIGNvZGViYXNlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCB0ZWxsIHVzIGhvdyBuZWNlc3NhcnkgdGhleSBhY3R1YWxseSBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9tYmltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ1LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDY6c3RydWN0IG1oaV9tYmltX2xpbmsge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ4LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTpzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02Ni1cdHN0cnVjdCBtaGlfZGV2aWNlICptZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTc4PXN0cnVjdCBtYmltX3R4X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODMtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo4NDpzdGF0aWMgc3RydWN0IG1oaV9tYmltX2xpbmsgKm1oaV9tYmltX2dldF9saW5rX3JjdShzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg1LVx0XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBzZXNzaW9uKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODYte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODc6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6OTc6c3RhdGljIGludCBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQoc3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybClcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTk4LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0xMDc9c3RhdGljIHN0cnVjdCBza19idWZmICptYmltX3R4X2ZpeHVwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBzZXNzaW9uLFxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE1MC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbWhpX21iaW1fbmRvX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTIte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTUzOlx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTU0Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBsaW5rLVx1MDAzZW1iaW07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xNTUtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTE5Mi1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE5MzpzdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X250aDE2KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTk0LXtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0yMzE9c3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5kcDE2KVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1My1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI1NDpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjc2LVx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoyNzc6XHRcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMjc4LVx0XHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjMwNTpcdFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNi1cdFx0aWYgKCFsaW5rKSB7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzc4LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Mzc5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWhpX25ldF9za2JfYWdnKHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMzgwLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM9NDA1PXN0YXRpYyB2b2lkIG1oaV9uZXRfcnhfcmVmaWxsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDA2LXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQwNzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDA4LVx0XHRcdFx0XHRcdCAgICAgcnhfcmVmaWxsLndvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQzNjpzdGF0aWMgdm9pZCBtaGlfbWJpbV9kbF9jYWxsYmFjayhzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNy1cdFx0XHRcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzOC17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Mzk6XHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtaGlfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gbWhpX3Jlcy1cdTAwM2VidWZfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NjgtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Njk6XHRcdG1oaV9tYmltX3J4KG1iaW0sIHNrYik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc3OnN0YXRpYyB2b2lkIG1oaV9tYmltX25kb19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3OC1cdFx0XHRcdCAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ3OS17XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0ODA6XHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00ODEtXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDk4LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDk5OnN0YXRpYyB2b2lkIG1oaV9tYmltX3VsX2NhbGxiYWNrKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAwLVx0XHRcdFx0IHN0cnVjdCBtaGlfcmVzdWx0ICptaGlfcmVzKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMjpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1oaV9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwMy1cdHN0cnVjdCBza19idWZmICpza2IgPSBtaGlfcmVzLVx1MDAzZWJ1Zl9hZGRyO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA0LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBza2ItXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTA1Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMTpzdGF0aWMgaW50IG1oaV9tYmltX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMyLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMzpcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzNC1cbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NDY6c3RhdGljIGludCBtaGlfbWJpbV9uZG9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU0Ny17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTUzLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWhpX21iaW1fbmRvID0ge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU1Olx0Lm5kb19vcGVuID0gbWhpX21iaW1fbmRvX29wZW4sXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTY6XHQubmRvX3N0b3AgPSBtaGlfbWJpbV9uZG9fc3RvcCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NzpcdC5uZG9fc3RhcnRfeG1pdCA9IG1oaV9tYmltX25kb194bWl0LFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU4Olx0Lm5kb19nZXRfc3RhdHM2NCA9IG1oaV9tYmltX25kb19nZXRfc3RhdHM2NCxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1OS19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYwLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTYxOnN0YXRpYyBpbnQgbWhpX21iaW1fbmV3bGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGlmX2lkLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYyLVx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjMte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY0Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY1Olx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBjdHh0O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY2LVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY3LVx0bGluay1cdTAwM2VtYmltID0gbWJpbTtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2ODpcdGxpbmstXHUwMDNlc2Vzc2lvbiA9IG1oaV9tYmltX2dldF9saW5rX211eF9pZChsaW5rLVx1MDAzZW1iaW0tXHUwMDNlbWRldi1cdTAwM2VtaGlfY250cmwpICYjNDM7IGlmX2lkO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY5LVx0bGluay1cdTAwM2VuZGV2ID0gbmRldjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NzMtXHRyY3VfcmVhZF9sb2NrKCk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NzQ6XHRpZiAobWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIGlmX2lkKSkge1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTc1LVx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODUtXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODY6c3RhdGljIHZvaWQgbWhpX21iaW1fZGVsbGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4Ny1cdFx0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODgte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg5Olx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTkwLVxuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5Ni1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU5NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5OC17XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjA0LVx0bmRldi1cdTAwM2VmbGFncyA9IElGRl9QT0lOVE9QT0lOVCB8IElGRl9OT0FSUDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYwNTpcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm1oaV9tYmltX25kbztcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwNi1cdG5kZXYtXHUwMDNlbXR1ID0gTUhJX01CSU1fREVGQVVMVF9NVFU7XG4tLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjEyLVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjEzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgd3dhbl9vcHMgbWhpX21iaW1fd3dhbl9vcHMgPSB7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTQ6XHQucHJpdl9zaXplID0gc2l6ZW9mKHN0cnVjdCBtaGlfbWJpbV9saW5rKSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNTpcdC5zZXR1cCA9IG1oaV9tYmltX3NldHVwLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE2Olx0Lm5ld2xpbmsgPSBtaGlfbWJpbV9uZXdsaW5rLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE3Olx0LmRlbGxpbmsgPSBtaGlfbWJpbV9kZWxsaW5rLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjE4LX07XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTktXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MjA6c3RhdGljIGludCBtaGlfbWJpbV9wcm9iZShzdHJ1Y3QgbWhpX2RldmljZSAqbWhpX2RldiwgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjIxLXtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVx1MDAzZW1oaV9jbnRybDtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYyMzpcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjI0LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDUtXHQvKiBSZWdpc3RlciB3d2FuIGxpbmsgb3BzIHdpdGggTUhJIGNvbnRyb2xsZXIgcmVwcmVzZW50aW5nIFdXQU4gaW5zdGFuY2UgKi9cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0NjpcdHJldHVybiB3d2FuX3JlZ2lzdGVyX29wcyhcdTAwMjZjbnRybC1cdTAwM2VtaGlfZGV2LVx1MDAzZWRldiwgXHUwMDI2bWhpX21iaW1fd3dhbl9vcHMsIG1iaW0sIDApO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ3LX1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yZW1vdmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYpXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NTAte1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjUxOlx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWhpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUyLVx0c3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybCA9IG1oaV9kZXYtXHUwMDNlbWhpX2NudHJsO1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2MC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2MTpzdGF0aWMgY29uc3Qgc3RydWN0IG1oaV9kZXZpY2VfaWQgbWhpX21iaW1faWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Mi1cdC8qIEhhcmR3YXJlIGFjY2VsZXJhdGVkIGRhdGEgUEFUSCAodG8gbW9kZW0gSVBBKSwgTUJJTSBwcm90b2NvbCAqL1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2NS19O1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjY2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUobWhpLCBtaGlfbWJpbV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjctXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6c3RhdGljIHN0cnVjdCBtaGlfZHJpdmVyIG1oaV9tYmltX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2OTpcdC5wcm9iZSA9IG1oaV9tYmltX3Byb2JlLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlx0LnJlbW92ZSA9IG1oaV9tYmltX3JlbW92ZSxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3MTpcdC5kbF94ZmVyX2NiID0gbWhpX21iaW1fZGxfY2FsbGJhY2ssXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NzI6XHQudWxfeGZlcl9jYiA9IG1oaV9tYmltX3VsX2NhbGxiYWNrLFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjczOlx0LmlkX3RhYmxlID0gbWhpX21iaW1faWRfdGFibGUsXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NzQtXHQuZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3OC1cbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3OTptb2R1bGVfbWhpX2RyaXZlcihtaGlfbWJpbV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjgwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE5NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQmVoYXZpb3IqKgoKT2theSwgc28gd2UmIzM5O3JlIHNlZWluZyBzb21ldGhpbmcgdW51c3VhbCBpbiB0aGUgbmV0d29yayBiZWhhdmlvci4gTXkgZmlyc3QgaW5zdGluY3QsIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUsIGlzIHRvIGNhc3QgYSB3aWRlciBuZXQuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYHQ3eHhfbmV0ZGV2LmNgIGFzIHdlbGwuIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIGEga2V5IGNvbXBvbmVudCBhbmQgY291bGQgdmVyeSB3ZWxsIGJlIHRoZSByb290IGNhdXNlLCBvciBhdCBsZWFzdCBiZSBpbnZvbHZlZCBpbiB0aGUgY2FzY2FkZSBvZiBpc3N1ZXMgd2UgYXJlIGN1cnJlbnRseSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgc3BlY2lmaWMgbW9kdWxlIGFuZCBzdGFydCBleGFtaW5pbmcgaXRzIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBpZGVudGlmeSBhbnkgY2x1ZXMgaW4gaXRzIGhhbmRsaW5nIG9mIHBhY2tldCB0cmFuc21pc3Npb24gb3IgcmVjZXB0aW9uLCBpbnRlcnJ1cHQgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbi4gV2UmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdCBhcmVhcyBhbmQgdGhlbiBkaWcgZGVlcGVyIGlmIG5lZWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dDd4eF9jY21uaV9yZWN2X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3d3YW4vdDd4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz0zOTk9c3RhdGljIHZvaWQgaW5pdF9tZF9zdGF0dXNfbm90aWZpZXIoc3RydWN0IHQ3eHhfcGNpX2RldiAqdDd4eF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNDExLVxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NDEyOnN0YXRpYyB2b2lkIHQ3eHhfY2NtbmlfcmVjdl9za2Ioc3RydWN0IHQ3eHhfY2NtbmlfY3RybCAqY2NtbmlfY3RsYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMy1cdFx0XHRcdHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz00OTA9aW50IHQ3eHhfY2NtbmlfaW5pdChzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2Rldilcbi0tXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy01MDItXHRjdGxiLVx1MDAzZWNhbGxiYWNrcy5zdGF0ZV9ub3RpZnkgPSB0N3h4X2NjbW5pX3F1ZXVlX3N0YXRlX25vdGlmeTtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjUwMzpcdGN0bGItXHUwMDNlY2FsbGJhY2tzLnJlY3Zfc2tiID0gdDd4eF9jY21uaV9yZWN2X3NrYjtcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwNC1cdGN0bGItXHUwMDNlbmljX2Rldl9udW0gPSBOSUNfREVWX0RFRkFVTFQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODE2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNSEkgRHJpdmVycyBmb3IgVnVsbmVyYWJpbGl0eSBSZXNlYXJjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZXNlIGRyaXZlcnMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgYXJlIHdlIGRlYWxpbmcgd2l0aCBkcml2ZXJzIHNwZWNpZmljYWxseSB0aWVkIHRvIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIG9yIGNhbiBJIGdldCBhd2F5IHdpdGggZnV6emluZyB0aGVzZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/IFRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBlc3RhYmxpc2guCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYE1ISV9XV0FOX01CSU1gLiBSaWdodCwgTUhJIHN0YW5kcyBmb3IgTW9kZW0gSG9zdCBJbnRlcmZhY2UsIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIHBvaW50cyB0byBRdWFsY29tbSBQQ0llIG1vZGVtcyDigJMgdGhpbmsgU25hcGRyYWdvbiBYNTUsIFg2MiwgWDY1LCB0aGUga2luZCB0aGF0IGNvbm5lY3Qgb3ZlciBQQ0llLiBHb29kLiBUaGF0IGhlbHBzIG5hcnJvdyB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LgoKVG8gdW5kZXJzdGFuZCBob3cgdGhlIE1ISSBjb250cm9sbGVyIGlzIHByb2JlZCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgb3V0IGBkcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE5OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZHJpdmVyIHNlYXJjaDoKCioqRGl2aW5nIGludG8gdGhlIE1ISSBEcml2ZXIgU3BhY2UqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZSBQQ0kgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHdoYXQgSSYjMzk7bSB3b3JraW5nIG9uLCBpcyB0byBsb29rIHdpdGhpbiB0aGUgYGRyaXZlcnMvYnVzL21oaWAgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGdvLXRvIGxvY2F0aW9uIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSBNb2JpbGUgSG9zdCBJbnRlcmZhY2UgKE1ISSkgYnVzLiBDb25zaWRlcmluZyB0aGF0IEkmIzM5O20gbG9va2luZyBmb3IgUENJIGRyaXZlcnMsIEkmIzM5O20gaG9waW5nIEkgZmluZCBzb21lIGRyaXZlcnMgdG8gaW50ZXJmYWNlIHdpdGggTUhJIGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHR5cGljYWwgc3ViZGlyZWN0b3JpZXMgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBhYnN0cmFjdGlvbiBsYXllcnMgdGhhdCB3b3VsZCBiZSBoZWxwZnVsIGFzIGEgc3RhcnRpbmcgcG9pbnQuIEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSB3aGF0IFBDSSBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzYtfTtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTc3Nzptb2R1bGVfcGNpX2RyaXZlcihtaGlfcGNpX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTUwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYG1oaV9wY2lfZHJpdmVyYCBpbiBgcGNpX2dlbmVyaWMuY2AqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byBgcGNpX2dlbmVyaWMuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhlIGBtaGlfcGNpX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZ2VuZXJpYyBQQ0kgZnJhbWV3b3JrLiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgdG8gbWFrZSB0aGUgTUhJIChwcmVzdW1hYmx5IE1vYmlsZSBIb3N0IEludGVyZmFjZSkgZGV2aWNlIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGJyb2FkZXIgUENJIGNvbnRleHQ/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyByZXNvdXJjZSBhbGxvY2F0aW9uIOKAkyBhcmUgd2UgdXNpbmcgc3RhbmRhcmQgUENJIHJlc291cmNlIG1hbmFnZW1lbnQsIG9yIGFyZSB0aGVyZSBjdXN0b20gaG9va3MgaW4gcGxhY2UgdG8gZGVhbCB3aXRoIHRoZSBNSEkmIzM5O3Mgc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBJL08gb3IgaW50ZXJydXB0IHJlcXVpcmVtZW50cz8gQWxzbywgaG93IGRvZXMgdGhlIGRyaXZlciBpbnRlcmFjdCB3aXRoIHRoZSBQQ0kgYnVzJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3BhY2U/IEkgd2FudCB0byBzZWUgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRzIGNvcnJlY3RseS4gQXJlIHdlIHVzaW5nIHN0YW5kYXJkIFBDSSBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgb3IgZG9lcyB0aGUgTUhJIGhhcmR3YXJlIG5lY2Vzc2l0YXRlIGEgbW9yZSBpbnRyaWNhdGUgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWd5PyBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIGNsdWVzIG9uIHRoZSBwbGF0Zm9ybSByZXF1aXJlbWVudHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHdpbGwgd29yayBvbiBhIG5ldyB0YXJnZXQuIEkgYWxzbyB3YW50IHRvIHNlZSBob3cgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkOyB3aGF0IGRvZXMgaXQgbG9vayBmb3IgaW4gdGhlIGRldmljZSBJRCB0YWJsZSwgYW5kIGhvdyBhcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBoYW5kbGVkIHRoZXJlPyBMYXN0bHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBlcnJvciBoYW5kbGluZyDigJMgaG93IGFyZSBQQ0kgYnVzIGVycm9ycywgZGV2aWNlIG5vdCBwcmVzZW50IHNjZW5hcmlvcywgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiBmYWlsdXJlcyBkZWFsdCB3aXRoIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGlzIE1ISSBkcml2ZXI/IEkgc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlIGRyaXZlciBjb21wbGllcyB3aXRoIHRoZSBsYXRlc3QgUENJIHNwZWNpZmljYXRpb24gdmVyc2lvbnMgYW5kIGFueSByZWxldmFudCBwbGF0Zm9ybSBzdGFuZGFyZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21oaV9wY2lfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9taGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz05NDE9c3RhdGljIGNvbnN0IHN0cnVjdCBtaGlfcGNpX2Rldl9pbmZvIG1oaV9uZXRwcmlzbWFfZmN1bjY5X2luZm8gPSB7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy05NTEtLyogS2VlcCB0aGUgbGlzdCBzb3J0ZWQgYmFzZWQgb24gdGhlIFBJRC4gTmV3IFZJRCBzaG91bGQgYmUgYWRkZWQgYXMgdGhlIGxhc3QgZW50cnkgKi9cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6OTUyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtaGlfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTk1My1cdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUNPTSwgMHgwMTE2KSxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTEwODYtfTtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTEwODgtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTc2OC1cdC5uYW1lXHRcdD0gXCYjMzQ7bWhpLXBjaS1nZW5lcmljXCYjMzQ7LFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNzY5Olx0LmlkX3RhYmxlXHQ9IG1oaV9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzAtXHQucHJvYmVcdFx0PSBtaGlfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM2NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE1ISSBIb3N0IENvbnRyb2xsZXJzKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBlc3RhYmxpc2hlZCB0aGUgcHJpbWFyeSBNSEkgaG9zdCBjb250cm9sbGVyIHNpdHVhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBvdGhlciBwb3RlbnRpYWwgaW5zdGFuY2VzIG9mIE1ISSBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uIGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoZXJlIGNvdWxkIGJlIGhpZGRlbiBNSEkgY29udHJvbGxlciBjb25maWd1cmF0aW9uczogcGVyaGFwcyBhIHZpcnR1YWwgb3IgcGxhdGZvcm0tbGV2ZWwgY29udHJvbGxlciBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZSwgb3IgZXZlbiBhbiBlbmRwb2ludC1zcGVjaWZpYyBjb250cm9sbGVyIHRoYXQgd2UgaGF2ZW4mIzM5O3QgaWRlbnRpZmllZCB5ZXQuIEl0JiMzOTtzIGEgY3JpdGljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gY29tcHJlaGVuc2l2ZWx5IHZlcmlmeSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNSEkgYXJjaGl0ZWN0dXJlIGlzIGNvbXBsZXRlLiBJIGNhbiYjMzk7dCBhZmZvcmQgdG8gbWlzcyBhbnkgY29udHJvbGxlciBpbiB0aGUgc3lzdGVtLiBUaGUgbmV4dCBzdGVwIGlzIGEgZGVlcCBkaXZlIGludG8gdGhlIGZpcm13YXJlIGFuZCBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0PTIwPUJlbG93IGFyZSB0aGUgcm9sZXMgb2YgdGhlIE1ISSBjb250cm9sbGVyIGRyaXZlcjpcbi0tXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjQtKiBBbGxvY2F0ZXMgc3RydWN0IG1oaV9jb250cm9sbGVyIGFuZCByZWdpc3RlcnMgd2l0aCB0aGUgTUhJIGJ1cyBmcmFtZXdvcmtcbkRvY3VtZW50YXRpb24vbWhpL3RvcG9sb2d5LnJzdDoyNTogIHdpdGggY2hhbm5lbCBhbmQgZXZlbnQgY29uZmlndXJhdGlvbnMgdXNpbmcgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIuXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjYtKiBJbml0aWF0ZXMgcG93ZXIgb24gYW5kIHNodXRkb3duIHNlcXVlbmNlXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM9ODAwPXN0YXRpYyBpbnQgbWhpX3Jlc2V0X2FuZF9hc3luY19wb3dlcl91cChzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybClcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjYtXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4Mjc6c3RydWN0IG1oaV9jb250cm9sbGVyICpxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCB2b2lkIF9faW9tZW0gKm1oaV9iYXIsXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXHRcdFx0XHRcdFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXG4tLVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc1LVx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYzo4NzY6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIFx1MDAyNm1oaV9jb25maWcpO1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODc3LVx0aWYgKHJldCkge1xuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4Olx0XHRwY2lfZXJyKHBjaV9kZXYsIFwmIzM0O21oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3OS1cdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC04LVxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTEwLVx0XHRcdFx0XHRcdCAgICBpbnQgbWhpX2lycSwgYm9vbCBzaGFyZWRfbXNpLCBpbnQgZmFtaWx5KTtcbi0tXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jLTU5Ni1cbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcdHFkZXYtXHUwMDNlbWhpX2NudHJsID0gcWFpY19taGlfcmVnaXN0ZXJfY29udHJvbGxlcihwZGV2LCBxZGV2LVx1MDAzZWJhcl9taGksIG1oaV9pcnEsXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYy01OTgtXHRcdFx0XHRcdFx0ICAgICAgIHFkZXYtXHUwMDNlc2luZ2xlX21zaSwgY29uZmlnLVx1MDAzZWZhbWlseSk7XG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jPTg4MT1zdGF0aWMgaW50IHBhcnNlX2NvbmZpZyhzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcbi0tXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTE4LVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjkxOTppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNTgtfVxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTEwNjAtXG4tLVxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0MC1cbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcdGVyciA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgbWhpX2NudHJsX2NvbmZpZyk7XG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE0NDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM9MzM1PWludCBhdGgxMWtfbWhpX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2kpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MDktXHRhYl9wY2ktXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYzo0MTA6XHRyZXQgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY3RybCwgYXRoMTFrX21oaV9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1Olx0cmV0ID0gbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIobWhpX2N0cmwsIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtaGlfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY2LVx0aWYgKHJldCkge1xuLS1cbmluY2x1ZGUvbGludXgvbWhpLmg9Mjk0PXN0cnVjdCBtaGlfY29udHJvbGxlcl9jb25maWcge1xuLS1cbmluY2x1ZGUvbGludXgvbWhpLmgtMzg1LSAqIEZpZWxkcyBtYXJrZWQgYXMgKHJlcXVpcmVkKSBuZWVkIHRvIGJlIHBvcHVsYXRlZCBieSB0aGUgY29udHJvbGxlciBkcml2ZXJcbmluY2x1ZGUvbGludXgvbWhpLmg6Mzg2OiAqIGJlZm9yZSBjYWxsaW5nIG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKCkuIEZvciB0aGUgZmllbGRzIG1hcmtlZCBhcyAob3B0aW9uYWwpXG5pbmNsdWRlL2xpbnV4L21oaS5oLTM4Ny0gKiB0aGV5IGNhbiBiZSBwb3B1bGF0ZWQgZGVwZW5kaW5nIG9uIHRoZSB1c2VjYXNlLlxuLS1cbmluY2x1ZGUvbGludXgvbWhpLmg9NTUwPXZvaWQgbWhpX2ZyZWVfY29udHJvbGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCk7XG4tLVxuaW5jbHVkZS9saW51eC9taGkuaC01NTItLyoqXG5pbmNsdWRlL2xpbnV4L21oaS5oOjU1MzogKiBtaGlfcmVnaXN0ZXJfY29udHJvbGxlciAtIFJlZ2lzdGVyIE1ISSBjb250cm9sbGVyXG5pbmNsdWRlL2xpbnV4L21oaS5oLTU1NC0gKiBAbWhpX2NudHJsOiBNSEkgY29udHJvbGxlciB0byByZWdpc3RlclxuLS1cbmluY2x1ZGUvbGludXgvbWhpLmgtNTU2LSAqL1xuaW5jbHVkZS9saW51eC9taGkuaDo1NTc6aW50IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxuaW5jbHVkZS9saW51eC9taGkuaC01NTgtXHRcdFx0Y29uc3Qgc3RydWN0IG1oaV9jb250cm9sbGVyX2NvbmZpZyAqY29uZmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBXV0FOIE1vZGVtIERyaXZlcnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGVmZmVjdGl2ZWx5IGZ1enogZWl0aGVyIHRoZSBgbWhpX3d3YW5fbWJpbWAgb3IgYHQ3eHhfbmV0ZGV2YCBkcml2ZXJzLiBCb3RoIGFyZSBoYXJkd2FyZSBkcml2ZXJzIGZvciBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW1zLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gcmVhY2ggdGhlbSB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZS4KCkZpcnN0LCBsZXQmIzM5O3MgcmV2aWV3IHRoZSBkcml2ZXJzIHRoZW1zZWx2ZXM6IGBtaGlfd3dhbl9tYmltLmNgIGhhbmRsZXMgUXVhbGNvbW0gUENJZSBtb2RlbXMsIGFuZCBgdDd4eF9uZXRkZXYuY2AgZGVhbHMgd2l0aCBNZWRpYVRlayBUN3h4IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSB0aGVpciByZXNwZWN0aXZlIHBoeXNpY2FsIFBDSSBtb2RlbXMuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGJlY29tZXMsIGNhbiB3ZSB0cmlnZ2VyIHRoZXNlIGRyaXZlcnMgaW4gYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQsIG9yIGFyZSB0aGV5IGluaGVyZW50bHkgdGllZCB0byB0aGUgcHJlc2VuY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmU/IFNwZWNpZmljYWxseSwgYXJlIHRoZXNlIGRldmljZXMgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBhY2NvcmRpbmcgdG8gdGhlIGRlZmluZWQgY3JpdGVyaWEsIG1lYW5pbmcgdGhleSBuZWVkIHJlYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVU/IFRoYXQmIzM5O3MgdGhlIGtleS4KCkxldCYjMzk7cyBsb29rIGF0IGBtaGlfd3dhbl9tYmltLmNgIGZpcnN0LiBUaGUgYG1oaV9tYmltX3Byb2JlYCBmdW5jdGlvbiBhcHBlYXJzIHRvIGJlIHRoZSBlbnRyeSBwb2ludC4gSXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gYW4gTUhJIGRldmljZSBtYXRjaGVzIGBtaGlfbWJpbV9pZF90YWJsZWAgb24gdGhlIE1ISSBidXMuIFRoZSBNSEkgYnVzIGRldmljZXMgYXJlIGNyZWF0ZWQgYnkgTUhJIGNvbnRyb2xsZXJzLiBUaGlzIHNlZW1zIHRvIGhhcHBlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIFBDSWUgZGV2aWNlIGluaXRpYWxpemVzIHRoZSBNSEkgY2hhbm5lbHMuIFBhY2tldHMgYXJlIHRoZW4gaGFuZGxlZCB0aHJvdWdoIGBtaGlfbWJpbV9yeGAgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBmcm9tIHRoZSBNSEkgY29yZSB3aGVuIHRoZSB0cmFuc2ZlciBoYXMgY29tcGxldGVkIGZyb20gdGhlIGhhcmR3YXJlLiBJdCYjMzk7cyBhIGNoYWluIG9mIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBtb2RlbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBNSEkgYnVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIGB0N3h4X25ldGRldi5jYC4gVGhlIGB0N3h4X2NjbW5pX3JlY3Zfc2tiYCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgTVRLIFQ3eHggUENJZSBkZXZpY2UgcmVjZWl2ZXMgcGFja2V0cyBmcm9tIHRoZSBwaHlzaWNhbCBtb2RlbS4gVGhlIGRyaXZlciBpcyByZWdpc3RlcmVkIGFzIGEgUENJIGRyaXZlci4gVGhpcyBhbHNvIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBwcmVzZW5jZSBvZiBhIHBoeXNpY2FsIFBDSSBkZXZpY2UuIEkgbmVlZCB0byBjaGVjayB0aGUgUENJIElEcyB3aXRoaW4gYHQ3eHhfcGNpLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGljaCBoYXJkd2FyZSB0aGUgZHJpdmVyIGlzIHRpZWQgdG8uCgpCYXNlZCBvbiB0aGlzIHByZWxpbWluYXJ5IGludmVzdGlnYXRpb24sIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBib3RoIGRyaXZlcnMgYXJlIHN0cm9uZ2x5IGNvdXBsZWQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwaHlzaWNhbCBQQ0llIG1vZGVtcy4gUmVhY2hpbmcgdGhlbSBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCBtYXkgYmUgY2hhbGxlbmdpbmcsIGFuZCBwZXJoYXBzIGltcG9zc2libGUsIGFzIHRoZXkgcmVseSBvbiB0aGUgTUhJIGJ1cyBvciBQQ0llIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSBpbnRlcmFjdGlvbiB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLiBXZSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgaW52ZXN0aWdhdGUgdGhlIHNldHVwIHByb2Nlc3MgdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93d2FuL3Q3eHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM9OTQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCB0N3h4X3BjaV90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ0Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVESUFURUssIDB4NGQ3NSkgfSxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0NTpcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5jOjk0NjpcdHsgUENJX0RFVklDRSgweDE0YzAsIDB4NGQ3NSkgfSwgLy8gRGVsbCBEVzU5MzNlXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDctXHR7IH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NDgKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFZlbmRvci1TcGVjaWZpYyBQQ0llIE1vZGVtIERyaXZlcnMgZm9yIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGUgcHJvcG9zZWQgcGF0Y2ggYWZmZWN0cyB0d28gc3BlY2lmaWMgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVyczogYG1oaV93d2FuX21iaW0uY2AgYW5kIGB0N3h4L3Q3eHhfbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgUXVhbGNvbW0gUENJZSBtb2RlbSBNQklNIG5ldHdvcmsgZHJpdmVyIHV0aWxpemluZyB0aGUgTUhJIGJ1cyBhbmQgYSBNZWRpYVRlayBUN3h4IHNlcmllcyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCByZXNwZWN0aXZlbHkuCgpUaGUgY3JpdGljYWwgcG9pbnQsIGFzIEkgc2VlIGl0LCBpcyB0aGF0IG5laXRoZXIgb2YgdGhlc2UgZGV2aWNlcywgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCB0aGUgY29tbW9uIHByYWN0aWNlcywgY2FuIGJlIG1lYW5pbmdmdWxseSBmdXp6ZWQgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhleSByZXF1aXJlICphY3R1YWwqIHBoeXNpY2FsIGhhcmR3YXJlIOKAkyBhIFF1YWxjb21tIFNuYXBkcmFnb24gUENJZSBtb2RlbSBhbmQgYSBNZWRpYVRlayBUN3h4IFBDSWUgbW9kZW0sIHJlc3BlY3RpdmVseS4gVGhlIGNvbW1pdCBkaWZmIGNvbmZpcm1zIHRoaXMsIHNob3dpbmcgY2hhbmdlcyByZXN0cmljdGVkIHRvIHRob3NlIHR3byBmaWxlcywgbm90aGluZyBlbHNlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIHRoZXNlIGRyaXZlcnMgYXJlIHN0cnVjdHVyYWxseSBkZXBlbmRlbnQgb24gaGFyZHdhcmUgdW5hdmFpbGFibGUgaW4gYSB0eXBpY2FsIHN5emthbGxlciB0ZXN0aW5nIHNldHVwLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIFNlY3Rpb24gMjogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZHJpdmVycyB0aGF0IGRlbWFuZCBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgZXNzZW50aWFsbHkgY2xhc3NpZmllcyB0aGUgY29kZSBhcyB1bnJlYWNoYWJsZS4KCkNvbnNlcXVlbnRseSwgZnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBTaW5jZSB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgd2l0aG91dCB0aGUgcmVxdWlyZWQgaGFyZHdhcmUsIGZ1enppbmcgZWZmb3J0cyB3b3VsZCBiZSB3YXN0ZWQuIEFuZCBzbywgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgbGlzdHMgY2FuIHNhZmVseSByZW1haW4gZW1wdHksIGBbXWAuIElmIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIGVtcHR5IGxpc3RzIGFyZSBzdGFuZGFyZCBwcmFjdGljZS4KCkluIHNob3J0LCBJJiMzOTtsbCBiZSBzZXR0aW5nIHRoaXMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHN5c3RlbSB0byB1bmRlcnN0YW5kOiB0aGVzZSBjaGFuZ2VzLCB3aGlsZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZywgZG9uJiMzOTt0IHJlcHJlc2VudCBhIHZpYWJsZSB0YXJnZXQgZm9yIGltbWVkaWF0ZSBmdXp6aW5nIHdpdGhvdXQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jIChRdWFsY29tbSBNSEkgV1dBTiBNQklNIGRyaXZlcikgYW5kIGRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jIChNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyKS4gQm90aCBkcml2ZXJzIHJlcXVpcmUgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbSBoYXJkd2FyZSAoUXVhbGNvbW0gYW5kIE1lZGlhVGVrIFQ3eHgpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM2OjU4LjY1MzUzNDAyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDc1NTQ3MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM2OjU4LjY1MzU0MTg4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMTQ5MzkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJhOGVlNTM0YWY1ODUzNzQ1MTllMjY0ZTlhZjJhYWE3ZGNiY2VmZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbmluZGV4IGE5NDk5ODcxMjU5NzYuLjcxZTcwMDAwOGMyMGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcXG4rKysgYi9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uY1xcbkBAIC0yNTQsNiArMjU0LDcgQEAgc3RhdGljIGludCBtYmltX3J4X3ZlcmlmeV9uZHAxNihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKm5cXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0aW50IG5kcG9mZnNldDtcXG4rXFx0aW50IGxhc3RfbmRwb2Zmc2V0ID0gMDtcXG4gXFxuIFxcdC8qIENoZWNrIE5UQiBoZWFkZXIgYW5kIHJldHJpZXZlIGZpcnN0IE5EUCBvZmZzZXQgKi9cXG4gXFx0bmRwb2Zmc2V0ID0gbWJpbV9yeF92ZXJpZnlfbnRoMTYobWJpbSwgc2tiKTtcXG5AQCAtMjY1LDYgKzI2NiwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0LyogUHJvY2VzcyBlYWNoIE5EUCAqL1xcbiBcXHR3aGlsZSAoMSkge1xcbiBcXHRcXHRzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgbmRwMTY7XFxuK1xcbitcXHRcXHRpZiAobmRwb2Zmc2V0IFxcdTAwM2M9IGxhc3RfbmRwb2Zmc2V0KSB7XFxuK1xcdFxcdFxcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXFxcIm1iaW06IG5vbi1pbmNyZWFzaW5nIE5EUCBvZmZzZXQgKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG5kcG9mZnNldCk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdFxcdGxhc3RfbmRwb2Zmc2V0ID0gbmRwb2Zmc2V0O1xcbiBcXHRcXHRzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYgZHBlMTY7XFxuIFxcdFxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xcbiBcXHRcXHRpbnQgbmZyYW1lcywgbiwgZHBlb2Zmc2V0O1xcbkBAIC0zMjAsNyArMzI4LDEzIEBAIHN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdFxcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcXG4tXFx0XFx0XFx0c2tiX2NvcHlfYml0cyhza2IsIGRncmFtX29mZnNldCwgc2tibi1cXHUwMDNlZGF0YSwgZGdyYW1fbGVuKTtcXG4rXFx0XFx0XFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXFx1MDAzZWRhdGEsIGRncmFtX2xlbikpIHtcXG4rXFx0XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7XFxuK1xcdFxcdFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNmxpbmstXFx1MDAzZXJ4X3N5bmNwKTtcXG4rXFx0XFx0XFx0XFx0dTY0X3N0YXRzX2luYyhcXHUwMDI2bGluay1cXHUwMDNlcnhfZXJyb3JzKTtcXG4rXFx0XFx0XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNmxpbmstXFx1MDAzZXJ4X3N5bmNwKTtcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdHN3aXRjaCAoc2tibi1cXHUwMDNlZGF0YVswXSBcXHUwMDI2IDB4ZjApIHtcXG4gXFx0XFx0XFx0Y2FzZSAweDQwOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXFxuaW5kZXggZmMwYTdjYjE4MWRmMi4uOGYzMmMyZDI2OTMxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXFxuQEAgLTQyMCw2ICs0MjAsMTAgQEAgc3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVcXG4gXFxuIFxcdHNrYl9jYiA9IFQ3WFhfU0tCX0NCKHNrYik7XFxuIFxcdG5ldGlmX2lkID0gc2tiX2NiLVxcdTAwM2VuZXRpZl9pZHg7XFxuK1xcdGlmIChuZXRpZl9pZCBcXHUwMDNlPSBOSUNfREVWX01BWCkge1xcbitcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbiBcXHRjY21uaSA9IFJFQURfT05DRShjY21uaV9jdGxiLVxcdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XFxuIFxcdGlmICghY2NtbmkpIHtcXG4gXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzowMC4wNzU2ODg2ODlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU2MDUzMzgwNjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYThlZTUzNGFmNTg1Mzc0NTE5ZTI2NGU5YWYyYWFhN2RjYmNlZmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6MzY6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyBiL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG5pbmRleCBhOTQ5OTg3MTI1OTc2Li43MWU3MDAwMDhjMjBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jXG5AQCAtMjU0LDYgKzI1NCw3IEBAIHN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbmRwMTYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpuXG4gc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0aW50IG5kcG9mZnNldDtcbitcdGludCBsYXN0X25kcG9mZnNldCA9IDA7XG4gXG4gXHQvKiBDaGVjayBOVEIgaGVhZGVyIGFuZCByZXRyaWV2ZSBmaXJzdCBORFAgb2Zmc2V0ICovXG4gXHRuZHBvZmZzZXQgPSBtYmltX3J4X3ZlcmlmeV9udGgxNihtYmltLCBza2IpO1xuQEAgLTI2NSw2ICsyNjYsMTMgQEAgc3RhdGljIHZvaWQgbWhpX21iaW1fcngoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXG4gXHQvKiBQcm9jZXNzIGVhY2ggTkRQICovXG4gXHR3aGlsZSAoMSkge1xuIFx0XHRzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgbmRwMTY7XG4rXG4rXHRcdGlmIChuZHBvZmZzZXQgXHUwMDNjPSBsYXN0X25kcG9mZnNldCkge1xuK1x0XHRcdG5ldF9lcnJfcmF0ZWxpbWl0ZWQoXCJtYmltOiBub24taW5jcmVhc2luZyBORFAgb2Zmc2V0ICgldSlcXG5cIixcbitcdFx0XHRcdFx0ICAgIG5kcG9mZnNldCk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcdFx0bGFzdF9uZHBvZmZzZXQgPSBuZHBvZmZzZXQ7XG4gXHRcdHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNiBkcGUxNjtcbiBcdFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbms7XG4gXHRcdGludCBuZnJhbWVzLCBuLCBkcGVvZmZzZXQ7XG5AQCAtMzIwLDcgKzMyOCwxMyBAQCBzdGF0aWMgdm9pZCBtaGlfbWJpbV9yeChzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdHNrYl9wdXQoc2tibiwgZGdyYW1fbGVuKTtcbi1cdFx0XHRza2JfY29weV9iaXRzKHNrYiwgZGdyYW1fb2Zmc2V0LCBza2JuLVx1MDAzZWRhdGEsIGRncmFtX2xlbik7XG4rXHRcdFx0aWYgKHNrYl9jb3B5X2JpdHMoc2tiLCBkZ3JhbV9vZmZzZXQsIHNrYm4tXHUwMDNlZGF0YSwgZGdyYW1fbGVuKSkge1xuK1x0XHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tibik7XG4rXHRcdFx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxpbmstXHUwMDNlcnhfc3luY3ApO1xuK1x0XHRcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZsaW5rLVx1MDAzZXJ4X2Vycm9ycyk7XG4rXHRcdFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZsaW5rLVx1MDAzZXJ4X3N5bmNwKTtcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRzd2l0Y2ggKHNrYm4tXHUwMDNlZGF0YVswXSBcdTAwMjYgMHhmMCkge1xuIFx0XHRcdGNhc2UgMHg0MDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5pbmRleCBmYzBhN2NiMTgxZGYyLi44ZjMyYzJkMjY5MzEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jXG5AQCAtNDIwLDYgKzQyMCwxMCBAQCBzdGF0aWMgdm9pZCB0N3h4X2NjbW5pX3JlY3Zfc2tiKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmNjbW5pX2N0bGIsIHN0cnVjdCBza19idVxuIFxuIFx0c2tiX2NiID0gVDdYWF9TS0JfQ0Ioc2tiKTtcbiBcdG5ldGlmX2lkID0gc2tiX2NiLVx1MDAzZW5ldGlmX2lkeDtcbitcdGlmIChuZXRpZl9pZCBcdTAwM2U9IE5JQ19ERVZfTUFYKSB7XG4rXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuIFx0Y2NtbmkgPSBSRUFEX09OQ0UoY2NtbmlfY3RsYi1cdTAwM2VjY21uaV9pbnN0W25ldGlmX2lkXSk7XG4gXHRpZiAoIWNjbW5pKSB7XG4gXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjAwLjA3NTY4OTk5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NjkzNDgwODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB3aGF0J3MgYmVpbmcgdG91Y2hlZC4gSSBzZWUgdHdvIGZpbGVzOiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGVzZSBkcml2ZXJzICpkbyouIEkga25vdyBgbWhpX3d3YW5fbWJpbS5jYCBpcyB0aGUgTUhJIFdXQU4gTUJJTSBkcml2ZXIsIGRlYWxpbmcgd2l0aCBNSEkgKE1vYmlsZSBIb3N0IEludGVyZmFjZSkgY29ubmVjdGlvbnMgYW5kIE1CSU0gKE1vYmlsZSBCcm9hZGJhbmQgSW50ZXJmYWNlIE1vZGVsKSBjb21tdW5pY2F0aW9uLCBhbmQgYHQ3eHhfbmV0ZGV2LmNgIGlzIHRoZSBNZWRpYVRlayBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyIGZvciB0aGUgdDd4eCBjaGlwc2V0LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzICpob3cqIHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBhY2Nlc3NpYmlsaXR5IGlzc3Vlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgS2NvbmZpZyBvcHRpb25zIGFuZCBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9ucyB0aGF0IHdpbGwgcHJldmVudCBtZSBmcm9tIHVzaW5nIHRoZXNlIGRyaXZlcnMgaW4gbXkgdGVzdHM/IFRoaXMgbWVhbnMgZGlnZ2luZyBpbnRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3d3YW4vdDd4eC9LY29uZmlnYCDigJMgYXMgd2VsbCBhcyB0aGUgYWNjb21wYW55aW5nIGBNYWtlZmlsZWBzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGV5IGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBzeXprYWxsZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHJlbGlhYmx5IHRlc3QgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4NSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjA2LjY0NTAzOTk0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODk0ODgxOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV1dBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93d2FuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODM2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9Nj1tZW51IFxcXCJXaXJlbGVzcyBXQU5cXFwiXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjg6Y29uZmlnIFdXQU5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTpcXHR0cmlzdGF0ZSBcXFwiV1dBTiBEcml2ZXIgQ29yZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTAtXFx0ZGVwZW5kcyBvbiBHTlNTIHx8IEdOU1MgPSBuXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExLVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTI6XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgV1dBTiBkcml2ZXIgY29yZS4gVGhpcyBkcml2ZXJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTM6XFx0ICBwcm92aWRlcyBhIGNvbW1vbiBmcmFtZXdvcmsgZm9yIFdXQU4gZHJpdmVycy5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjE4OmlmIFdXQU5cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjIwOmNvbmZpZyBXV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjE6XFx0Ym9vbCBcXFwiV1dBTiBkZXZpY2VzIGRlYnVnZnMgaW50ZXJmYWNlXFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MjU6XFx0ICBFbmFibGVzIGRlYnVnZnMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBXV0FOIGNvcmUgYW5kIGRldmljZSBkcml2ZXJzLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMjctXFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlbiB5b3UgY2FuIGZpbmQgdGhlIGRlYnVnIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoyODpcXHQgIGVsZW1lbnRzIGZvciBlYWNoIFdXQU4gZGV2aWNlIGluIGEgZGlyZWN0b3J5IHRoYXQgaXMgY29ycmVzcG9uZGluZyB0b1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0yOS1cXHQgIHRoZSBkZXZpY2UgbmFtZTogZGVidWdmcy93d2FuL3d3YW5YLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzE6Y29uZmlnIFdXQU5fSFdTSU1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MzI6XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBXV0FOIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMzMtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzozNDpcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3QgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zNS1cXHQgIGZyYW1ld29yay5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDA6Y29uZmlnIE1ISV9XV0FOX0NUUkxcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDE6XFx0dHJpc3RhdGUgXFxcIk1ISSBXV0FOIGNvbnRyb2wgZHJpdmVyIGZvciBRdWFsY29tbS1iYXNlZCBQQ0llIG1vZGVtc1xcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDItXFx0ZGVwZW5kcyBvbiBNSElfQlVTXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTQzLVxcdGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NDQ6XFx0ICBNSEkgV1dBTiBDVFJMIGFsbG93cyBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zIHRvIGV4cG9zZSBkaWZmZXJlbnQgbW9kZW1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNDUtXFx0ICBjb250cm9sIHByb3RvY29scy9wb3J0cyB0byB1c2Vyc3BhY2UsIGluY2x1ZGluZyBBVCwgTUJJTSwgUU1JLCBESUFHXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjUzOmNvbmZpZyBNSElfV1dBTl9NQklNXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjU0OiAgICAgICAgdHJpc3RhdGUgXFxcIk1ISSBXV0FOIE1CSU0gbmV0d29yayBkcml2ZXIgZm9yIFF1YWxjb21tLWJhc2VkIFBDSWUgbW9kZW1zXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01NS0gICAgICAgIGRlcGVuZHMgb24gTUhJX0JVU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01Ni0gICAgICAgIGhlbHBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NTc6ICAgICAgICAgIE1ISSBXV0FOIE1CSU0gaXMgYSBXV0FOIG5ldHdvcmsgZHJpdmVyIGZvciBRQ09NLWJhc2VkIFBDSWUgbW9kZW1zLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy01OC0gICAgICAgICAgSXQgaW1wbGVtZW50cyBNQklNIG92ZXIgTUhJLCBmb3IgSVAgZGF0YSBhZ2dyZWdhdGlvbiBhbmQgbXV4aW5nLlxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnPTY1PWNvbmZpZyBRQ09NX0JBTV9ETVVYXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjY2OlxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy02Ny1cXHRkZXBlbmRzIG9uIChETUFfRU5HSU5FIFxcdTAwMjZcXHUwMDI2IFBNIFxcdTAwMjZcXHUwMDI2IFFDT01fU01FTV9TVEFURSkgfHwgQ09NUElMRV9URVNUXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctNzEtXFx0ICBNU004OTE2IG9yIE1TTTg5NzQuIFRoZSBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCB2aWEgUU1JL0FUIGZyb21cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6NzI6XFx0ICB1c2Vyc3BhY2Ugd2l0aCBjb250cm9sIHBvcnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBXV0FOIHN1YnN5c3RlbVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3MzpcXHQgIChDT05GSUdfUlBNU0dfV1dBTl9DVFJMKSBvciBRUlRSIG5ldHdvcmsgc29ja2V0cyAoQ09ORklHX1FSVFIpLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6Nzg6Y29uZmlnIFJQTVNHX1dXQU5fQ1RSTFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzo3OTpcXHR0cmlzdGF0ZSBcXFwiUlBNU0cgV1dBTiBjb250cm9sIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODAtXFx0ZGVwZW5kcyBvbiBSUE1TR1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy04MS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjgyOlxcdCAgUlBNU0cgV1dBTiBDVFJMIGFsbG93cyBtb2RlbXMgYXZhaWxhYmxlIHZpYSBSUE1TRyBjaGFubmVscyB0byBleHBvc2VcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctODMtXFx0ICBkaWZmZXJlbnQgbW9kZW0gcHJvdG9jb2xzL3BvcnRzIHRvIHVzZXJzcGFjZSwgaW5jbHVkaW5nIEFUIGFuZCBRTUkuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9OTY9Y29uZmlnIElPU01cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6OTc6XFx0dHJpc3RhdGUgXFxcIklPU00gRHJpdmVyIGZvciBJbnRlbCBNLjIgV1dBTiBEZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTk5LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDA6XFx0c2VsZWN0IFJFTEFZIGlmIFdXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDEtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMDI6XFx0ICBUaGlzIGRyaXZlciBlbmFibGVzIEludGVsIE0uMiBXV0FOIERldmljZSBjb21tdW5pY2F0aW9uLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjEwNDpcXHQgIElmIHlvdSBoYXZlIG9uZSBvZiB0aG9zZSBJbnRlbCBNLjIgV1dBTiBNb2R1bGVzIGFuZCB3aXNoIHRvIHVzZSBpdCBpblxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMDUtXFx0ICBMaW51eCBzYXkgWS9NIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc9MTA5PWNvbmZpZyBNVEtfVDdYWFxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTA6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBUN3h4IGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTExLVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExMjpcXHRzZWxlY3QgUkVMQVkgaWYgV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTExMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnOjExNDpcXHQgIEVuYWJsZXMgTWVkaWFUZWsgUENJZSBiYXNlZCA1RyBXV0FOIG1vZGVtIChUN3h4IHNlcmllcykgZGV2aWNlLlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZzoxMTU6XFx0ICBBZGFwdHMgV1dBTiBmcmFtZXdvcmsgYW5kIHByb3ZpZGVzIG5ldHdvcmsgaW50ZXJmYWNlIGxpa2Ugd3dhbjBcXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWctMTE2LVxcdCAgYW5kIHR0eSBpbnRlcmZhY2VzIGxpa2Ugd3dhbjBhdDAgKEFUIHByb3RvY29sKSwgd3dhbjBtYmltMFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9LY29uZmlnLTEyMy1cXG5kcml2ZXJzL25ldC93d2FuL0tjb25maWc6MTI0OmVuZGlmICMgV1dBTlxcbmRyaXZlcnMvbmV0L3d3YW4vS2NvbmZpZy0xMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTItI1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciB0aGUgTGludXggV1dBTiBkZXZpY2UgZHJpdmVycy5cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTQtI1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1dXQU4pICs9IHd3YW4ub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtNy13d2FuLW9ianMgKz0gd3dhbl9jb3JlLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZXQvd3dhbi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19XV0FOX0hXU0lNKSArPSB3d2FuX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX01ISV9XV0FOX0NUUkwpICs9IG1oaV93d2FuX2N0cmwub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX01ISV9XV0FOX01CSU0pICs9IG1oaV93d2FuX21iaW0ub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX1FDT01fQkFNX0RNVVgpICs9IHFjb21fYmFtX2RtdXgub1xcbmRyaXZlcnMvbmV0L3d3YW4vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1JQTVNHX1dXQU5fQ1RSTCkgKz0gcnBtc2dfd3dhbl9jdHJsLm9cXG5kcml2ZXJzL25ldC93d2FuL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19JT1NNKSArPSBpb3NtL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlPTY9aW9zbS15ID0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL01ha2VmaWxlLTI1LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZToyNjppb3NtLSQoQ09ORklHX1dXQU5fREVCVUdGUykgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9NYWtlZmlsZS0yNy1cXHRpb3NtX2lwY19kZWJ1Z2ZzLm9cXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYz0zND1zdGF0aWMgc3RydWN0IGlwY19jaG5sX2NmZyBtb2RlbV9jZmdbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTM3LVxcdCAgSVBDX01FTV9NQVhfVERTX01VWF9MSVRFX1VMLCBJUENfTUVNX01BWF9URFNfTVVYX0xJVEVfREwsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6Mzg6XFx0ICBJUENfTUVNX01BWF9ETF9NVVhfTElURV9CVUZfU0laRSwgV1dBTl9QT1JUX1VOS05PV04gfSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy0zOS1cXHQvKiBSUEMgLSAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00MS1cXHQgIElQQ19NRU1fTUFYX1REU19SUEMsIElQQ19NRU1fTUFYX1REU19SUEMsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NDI6XFx0ICBJUENfTUVNX01BWF9ETF9SUENfQlVGX1NJWkUsIFdXQU5fUE9SVF9YTU1SUEMgfSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00My1cXHQvKiBJQVQwICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00NS1cXHQgIElQQ19NRU1fTUFYX1REU19BVCwgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9ETF9BVF9CVUZfU0laRSxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo0NjpcXHQgIFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTQ3LVxcdC8qIFRyYWNlICovXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYy00OS1cXHQgIElQQ19NRU1fVERTX1RSQywgSVBDX01FTV9URFNfVFJDLCBJUENfTUVNX01BWF9ETF9UUkNfQlVGX1NJWkUsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NTA6XFx0ICBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTUxLVxcdC8qIElBVDEgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTUzLVxcdCAgSVBDX01FTV9NQVhfVERTX0FULCBJUENfTUVNX01BWF9URFNfQVQsIElQQ19NRU1fTUFYX0RMX0FUX0JVRl9TSVpFLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jOjU0OlxcdCAgV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNTUtXFx0LyogTG9vcGJhY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU3LVxcdCAgSVBDX01FTV9NQVhfVERTX0xPT1BCQUNLLCBJUENfTUVNX01BWF9URFNfTE9PUEJBQ0ssXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NTg6XFx0ICBJUENfTUVNX01BWF9ETF9MT09QQkFDS19TSVpFLCBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTU5LVxcdC8qIE1CSU0gQ2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjEtXFx0ICBJUENfTUVNX01BWF9URFNfTUJJTSwgSVBDX01FTV9NQVhfVERTX01CSU0sXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmM6NjI6XFx0ICBJUENfTUVNX01BWF9ETF9NQklNX0JVRl9TSVpFLCBXV0FOX1BPUlRfTUJJTSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTYzLVxcdC8qIEZsYXNoIENoYW5uZWwvQ29yZWR1bXAgQ2hhbm5lbCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2NobmxfY2ZnLmMtNjUtXFx0ICBJUENfTUVNX01BWF9URFNfRkxBU0hfVUwsIElQQ19NRU1fTUFYX1REU19GTEFTSF9ETCxcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfY2hubF9jZmcuYzo2NjpcXHQgIElQQ19NRU1fTUFYX0RMX0ZMQVNIX0JVRl9TSVpFLCBXV0FOX1BPUlRfVU5LTk9XTiB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19jaG5sX2NmZy5jLTY3LX07XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfZGVidWdmcy5oLTgtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaDo5OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2RlYnVnZnMuaC0xMC12b2lkIGlwY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz0xNz1zdGF0aWMgaW50IGlwY19pbWVtX2NoZWNrX3d3YW5faXBzKHN0cnVjdCBpcGNfbWVtX2NoYW5uZWwgKmNobmwpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTE5LVxcdGlmIChjaG5sKVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MjA6XFx0XFx0cmV0dXJuIGNobmwtXFx1MDAzZWN0eXBlID09IElQQ19DVFlQRV9XV0FOIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0yMS1cXHRcXHQgICAgICAgY2hubC1cXHUwMDNlaWZfaWQgPT0gSVBDX01FTV9NVVhfSVBfQ0hfSUZfSUQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jPTI5OD1zdGF0aWMgdm9pZCBpcGNfaW1lbV9kbF9za2JfcHJvY2VzcyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtMzIyLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MzIzOlxcdGNhc2UgSVBDX0NUWVBFX1dXQU46XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0zMjQtXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWNoYW5uZWwtXFx1MDAzZWlmX2lkID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYz01NjI9c3RhdGljIHZvaWQgaXBjX2ltZW1fcnVuX3N0YXRlX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy01OTktXFx0XFx0XFx0aWYgKGlwY19pbWVtLVxcdTAwM2VwY2llLVxcdTAwM2VwY2ktXFx1MDAzZWRldmljZSA9PSBJTlRFTF9DUF9ERVZJQ0VfNzU2MF9JRCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjAwOlxcdFxcdFxcdCAgICBjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlID09IFdXQU5fUE9SVF9YTU1SUEMpIHtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTYwMS1cXHRcXHRcXHRcXHRjdHJsX2NobF9pZHgrKztcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA1LVxcdFxcdFxcdGlmIChpcGNfaW1lbS1cXHUwMDNlcGNpZS1cXHUwMDNlcGNpLVxcdTAwM2VkZXZpY2UgPT0gSU5URUxfQ1BfREVWSUNFXzczNjBfSUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jOjYwNjpcXHRcXHRcXHQgICAgY2hubF9jZmdfcG9ydC53d2FuX3BvcnRfdHlwZSA9PSBXV0FOX1BPUlRfTUJJTSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmMtNjA3LVxcdFxcdFxcdFxcdGN0cmxfY2hsX2lkeCsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MDktXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6NjEwOlxcdFxcdFxcdGlmIChjaG5sX2NmZ19wb3J0Lnd3YW5fcG9ydF90eXBlICE9IFdXQU5fUE9SVF9VTktOT1dOKSB7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy02MTEtXFx0XFx0XFx0XFx0aXBjX2ltZW1fY2hhbm5lbF9pbml0KGlwY19pbWVtLCBJUENfQ1RZUEVfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM9MTA2MD1pbnQgaXBjX2ltZW1fY2hhbm5lbF9hbGxvYyhzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uYy0xMDg0LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmM6MTA4NTpcXHRpZiAoY2hhbm5lbC1cXHUwMDNlY3R5cGUgPT0gSVBDX0NUWVBFX1dXQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5jLTEwODYtXFx0ICAgIGluZGV4ID09IElQQ19NRU1fTVVYX0lQX0NIX0lGX0lEKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaD0xMzY9ZW51bSBpcGNfY2hhbm5lbF9zdGF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTE0NS0gKlxcdFxcdCAgICAvSVAgdHJhZmZpYy5cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE0NjogKiBASVBDX0NUWVBFX1dXQU46XFx0XFx0VXNlZCBmb3IgSVAgdHJhZmZpY1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMTQ3LSAqIEBJUENfQ1RZUEVfQ1RSTDpcXHRcXHRVc2VkIGZvciBDb250cm9sIENvbW11bmljYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MTQ5PWVudW0gaXBjX2N0eXBlIHtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjE1MDpcXHRJUENfQ1RZUEVfV1dBTixcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTE1MS1cXHRJUENfQ1RZUEVfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg9MjczPWVudW0gaXBjX3BoYXNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjg5LSAqIEBpcGNfdGFzazpcXHRcXHRcXHRUYXNrIGZvciBlbnRyeSBpbnRvIGlwYyB0YXNrIHF1ZXVlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDoyOTA6ICogQHd3YW46XFx0XFx0XFx0V1dBTiBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMjkxLSAqIEBtdXg6XFx0XFx0XFx0SVAgRGF0YSBtdWx0aXBsZXhpbmcgc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTMzMC0gKiBAcGNpZV93YWtlX246XFx0XFx0UGNpZSB3YWtlIGZsYWdcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oOjMzMTogKiBAZGVidWdmc193d2FuX2RpcjpcXHRcXHRXV0FOIERlYnVnIEZTIGRpcmVjdG9yeSBlbnRyeVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzMyLSAqIEBkZWJ1Z2ZzX2RpcjpcXHRcXHREZWJ1ZyBGUyBkaXJlY3RvcnkgZm9yIGRyaXZlci1zcGVjaWZpYyBlbnRyaWVzXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oPTMzND1zdHJ1Y3QgaW9zbV9pbWVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmgtMzQxLVxcdHN0cnVjdCBpb3NtX3BjaWUgKnBjaWU7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaDozNDI6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM0My1cXHRzdHJ1Y3QgaW9zbV90cmFjZSAqdHJhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbS5oLTM3My1cXHQgICBwY2llX3dha2VfbjoxO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtLmg6Mzc0OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW0uaC0zNzUtXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc193d2FuX2RpcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jPTgwPWludCBpcGNfaW1lbV93d2FuX2NoYW5uZWxfaW5pdChzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jLTg2LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jOjg3OlxcdC8qIElmIG1vZGVtIHZlcnNpb24gaXMgaW52YWxpZCAoMHhmZmZmZmZmZiksIGRvIG5vdCBpbml0aWFsaXplIFdXQU4uICovXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtODgtXFx0aWYgKGlwY19pbWVtLVxcdTAwM2VjcF92ZXJzaW9uID09IC0xKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDEtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmM6MTAyOlxcdGlwY19pbWVtX2NoYW5uZWxfaW5pdChpcGNfaW1lbSwgSVBDX0NUWVBFX1dXQU4sIGNobmxfY2ZnLFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jLTEwMy1cXHRcXHRcXHQgICAgICBJUlFfTU9EX09GRik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmMtMTA0LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5jOjEwNTpcXHQvKiBXV0FOIHJlZ2lzdHJhdGlvbi4gKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuYy0xMDYtXFx0aXBjX2ltZW0tXFx1MDAzZXd3YW4gPSBpcGNfd3dhbl9pbml0KGlwY19pbWVtLCBpcGNfaW1lbS1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19pbWVtX29wcy5oPTg3PWludCBpcGNfaW1lbV9zeXNfd3dhbl90cmFuc21pdChzdHJ1Y3QgaW9zbV9pbWVtICppcGNfaW1lbSwgaW50IGlmX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmgtODktLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX2ltZW1fb3BzLmg6OTA6ICogaXBjX2ltZW1fd3dhbl9jaGFubmVsX2luaXQgLSBJbml0aWFsaXplcyBXV0FOIGNoYW5uZWxzIGFuZCB0aGUgY2hhbm5lbCBmb3JcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfaW1lbV9vcHMuaC05MS0gKlxcdFxcdFxcdFxcdE1VWC5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYz05PXN0YXRpYyBpbnQgaXBjX211eF9jaGFubmVsX2NyZWF0ZShzdHJ1Y3QgaW9zbV9tdXggKmlwY19tdXgpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmMtMTMtXFx0Y2hhbm5lbF9pZCA9IGlwY19pbWVtX2NoYW5uZWxfYWxsb2MoaXBjX211eC1cXHUwMDNlaW1lbSwgaXBjX211eC1cXHUwMDNlaW5zdGFuY2VfaWQsXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jOjE0OlxcdFxcdFxcdFxcdFxcdCAgICBJUENfQ1RZUEVfV1dBTik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jPTQyND1pbnQgaXBjX211eF9vcGVuX3Nlc3Npb24oc3RydWN0IGlvc21fbXV4ICppcGNfbXV4LCBpbnQgc2Vzc2lvbl9ucilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00MzItXFx0c2Vzc2lvbl9vcGVuLVxcdTAwM2VpZl9pZCA9IGNwdV90b19sZTMyKHNlc3Npb25fbnIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYzo0MzM6XFx0aXBjX211eC1cXHUwMDNlc2Vzc2lvbltzZXNzaW9uX25yXS5mbGFncyB8PSBJUENfTUVNX1dXQU5fTVVYO1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguYy00MzQtXFx0cmV0dXJuIGlwY19tdXhfc2NoZWR1bGUoaXBjX211eCwgXFx1MDAyNm11eF9tc2cpO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jPTQzNz1pbnQgaXBjX211eF9jbG9zZV9zZXNzaW9uKHN0cnVjdCBpb3NtX211eCAqaXBjX211eCwgaW50IHNlc3Npb25fbnIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmMtNDQ3LVxcdHJldF92YWwgPSBpcGNfbXV4X3NjaGVkdWxlKGlwY19tdXgsIFxcdTAwMjZtdXhfbXNnKTtcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfbXV4LmM6NDQ4OlxcdGlwY19tdXgtXFx1MDAzZXNlc3Npb25bc2Vzc2lvbl9ucl0uZmxhZ3MgXFx1MDAyNj0gfklQQ19NRU1fV1dBTl9NVVg7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5jLTQ0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguaC01OC0vKiBNVVggZm9yIHJvdXRlIGxpbmsgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19tdXguaDo1OTojZGVmaW5lIElQQ19NRU1fV1dBTl9NVVggQklUKDApXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX211eC5oLTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYz0xNz1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0xOC1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjE5Oi8qIFdXQU4gR1VJRCAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjAtc3RhdGljIGd1aWRfdCB3d2FuX2FjcGlfZ3VpZCA9IEdVSURfSU5JVCgweGJhZDAxYjc1LCAweDIyYTgsIDB4NGY0OCwgMHg4NywgMHg5MixcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmM9MjIwPXN0YXRpYyB2b2lkIGlwY19wY2llX2NvbmZpZ19pbml0KHN0cnVjdCBpb3NtX3BjaWUgKmlwY19wY2llKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYy0yMzEtXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BjaWUuYzoyMzI6LyogVGhpcyB3aWxsIHJlYWQgdGhlIEJJT1MgV1dBTiBSVEQzIHNldHRpbmdzOlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmMtMjMzLSAqIEQwTDEuMi9EM0wyL0Rpc2FibGVkXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jPTI2MD1zdGF0aWMgaW50IGlwY19wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jLTMwNS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jOjMwNjpcXHQvKiBSZWFkIFdXQU4gUlREMyBCSU9TIFNldHRpbmdcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5jLTMwNy1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wY2llLmg9Mzk9ZW51bSBpcGNfcGNpZV9zbGVlcF9zdGF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oLTYxLSAqIEBzdXNwZW5kOlxcdFxcdFxcdFMySURMRSBzbGVlcC9hY3RpdmVcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oOjYyOiAqIEBkM2wyX3N1cHBvcnQ6XFx0XFx0UmVhZCBXV0FOIFJURDMgQklPUyBzZXR0aW5nIGZvciBEM0wyIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfcGNpZS5oLTYzLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3BvcnQuaC0xOC0gKiBAcGNpZTpcXHRcXHRQQ0llIGNvbXBvbmVudFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wb3J0Lmg6MTk6ICogQHBvcnRfdHlwZTpcXHRcXHRXV0FOIHBvcnQgdHlwZVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY19wb3J0LmgtMjAtICogQGNoYW5uZWw6XFx0XFx0Q2hhbm5lbCBpbnN0YW5jZVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmg9Mzc9c3RydWN0IGlvc21fdHJhY2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmgtNDctXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3RyYWNlLmg6NDg6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfdHJhY2UuaC00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjEtLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYzoyMjogKiBzdHJ1Y3QgaW9zbV9uZXRkZXZfcHJpdiAtIG5ldGRldiBXV0FOIGRyaXZlciBzcGVjaWZpYyBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTIzLSAqIEBpcGNfd3dhbjpcXHRQb2ludGVyIHRvIGlvc21fd3dhbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg9c3RydWN0IGlvc21fbmV0ZGV2X3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNS0vKipcXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jOjM2OiAqIHN0cnVjdCBpb3NtX3d3YW4gLSBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBXV0FOIHJvb3QgZGV2aWNlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uYy0zNy0gKlxcdFxcdCAgICAgIGFuZCBpbnRlcmZhY2UgdG8gdGhlIElQQyBsYXllci5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM9Mjg5PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmMtMjk5LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmM6MzAwOlxcdC8qIFdXQU4gY29yZSB3aWxsIGNyZWF0ZSBhIG5ldGRldiBmb3IgdGhlIGRlZmF1bHQgSVAgTVVYIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5jLTMwMS1cXHRpZiAod3dhbl9yZWdpc3Rlcl9vcHMoaXBjX3d3YW4tXFx1MDAzZWRldiwgXFx1MDAyNmlvc21fd3dhbl9vcHMsIGlwY193d2FuLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC01LVxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NjojaWZuZGVmIElPU01fSVBDX1dXQU5fSFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6NzojZGVmaW5lIElPU01fSVBDX1dXQU5fSFxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtOC1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTktLyoqXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaDoxMDogKiBpcGNfd3dhbl9pbml0IC0gQWxsb2NhdGUsIEluaXQgYW5kIHJlZ2lzdGVyIFdXQU4gZGV2aWNlXFxuZHJpdmVycy9uZXQvd3dhbi9pb3NtL2lvc21faXBjX3d3YW4uaC0xMS0gKiBAaXBjX2ltZW06XFx0XFx0UG9pbnRlciB0byBpbWVtIGRhdGEtc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oPTE2PXN0cnVjdCBpb3NtX3d3YW4gKmlwY193d2FuX2luaXQoc3RydWN0IGlvc21faW1lbSAqaXBjX2ltZW0sIHN0cnVjdCBkZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL2lvc20vaW9zbV9pcGNfd3dhbi5oLTE4LS8qKlxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmg6MTk6ICogaXBjX3d3YW5fZGVpbml0IC0gVW5yZWdpc3RlciBhbmQgZnJlZSBXV0FOIGRldmljZSwgY2xlYXIgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3d3YW4vaW9zbS9pb3NtX2lwY193d2FuLmgtMjAtICogQGlwY193d2FuOlxcdFBvaW50ZXIgdG8gd3dhbiBpbnN0YW5jZSBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz05PWVudW0gbWhpX3d3YW5fZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEwOlxcdE1ISV9XV0FOX0RMX0NBUCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMTpcXHRNSElfV1dBTl9VTF9DQVAsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTI6XFx0TUhJX1dXQU5fUlhfUkVGSUxMLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzLX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTU6I2RlZmluZSBNSElfV1dBTl9NQVhfTVRVXFx0MHg4MDAwXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMTYtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz00MT1zdGF0aWMgdm9pZCBtaGlfd3dhbl9yeF9idWRnZXRfaW5jKHN0cnVjdCBtaGlfd3dhbl9kZXYgKm1oaXd3YW4pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy00Ni1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo0NzpcXHRpZiAodGVzdF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTQ4LVxcdFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X3JlZmlsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz01ND1zdGF0aWMgYm9vbCBtaGlfd3dhbl9yeF9idWRnZXRfZGVjKHN0cnVjdCBtaGlfd3dhbl9kZXYgKm1oaXd3YW4pXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy02MS1cXHRcXHRtaGl3d2FuLVxcdTAwM2VyeF9idWRnZXQtLTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo2MjpcXHRcXHRpZiAodGVzdF9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTYzLVxcdFxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz03Nz1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTkxLVxcdFxcdC8qIFRvIHByZXZlbnQgdW5saW1pdGVkIGJ1ZmZlciBhbGxvY2F0aW9uIGlmIG5vdGhpbmcgY29uc3VtZXNcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzo5MjpcXHRcXHQgKiB0aGUgUlggYnVmZmVycyAocGFzc2VkIHRvIFdXQU4gY29yZSksIHRyYWNrIHRoZWlyIGxpZmVzcGFuXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtOTMtXFx0XFx0ICogdG8gbm90IGFsbG9jYXRlIG1vcmUgdGhhbiBhbGxvd2VkIGJ1ZGdldC5cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEwNj1zdGF0aWMgaW50IG1oaV93d2FuX2N0cmxfc3RhcnQoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTExOS1cXHQvKiBBZGQgYnVmZmVycyB0byB0aGUgTUhJIGluYm91bmQgcXVldWUgKi9cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoxMjA6XFx0aWYgKHRlc3RfYml0KE1ISV9XV0FOX0RMX0NBUCwgXFx1MDAyNm1oaXd3YW4tXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEyMTpcXHRcXHRzZXRfYml0KE1ISV9XV0FOX1JYX1JFRklMTCwgXFx1MDAyNm1oaXd3YW4tXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xMjItXFx0XFx0bWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayhcXHUwMDI2bWhpd3dhbi1cXHUwMDNlcnhfcmVmaWxsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTEyOD1zdGF0aWMgdm9pZCBtaGlfd3dhbl9jdHJsX3N0b3Aoc3RydWN0IHd3YW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjEzMzpcXHRjbGVhcl9iaXQoTUhJX1dXQU5fUlhfUkVGSUxMLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTEzNC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2bWhpd3dhbi1cXHUwMDNlcnhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0xNDE9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3R4KHN0cnVjdCB3d2FuX3BvcnQgKnBvcnQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0xNDgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MTQ5OlxcdGlmICghdGVzdF9iaXQoTUhJX1dXQU5fVUxfQ0FQLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTE1MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYz0yMTM9c3RhdGljIGludCBtaGlfd3dhbl9jdHJsX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMjI0LVxcdG1oaXd3YW4tXFx1MDAzZW1oaV9kZXYgPSBtaGlfZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjIyNTpcXHRtaGl3d2FuLVxcdTAwM2VtdHUgPSBNSElfV1dBTl9NQVhfTVRVO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIyNi1cXHRJTklUX1dPUksoXFx1MDAyNm1oaXd3YW4tXFx1MDAzZXJ4X3JlZmlsbCwgbWhpX3d3YW5fY3RybF9yZWZpbGxfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yMzAtXFx0aWYgKG1oaV9kZXYtXFx1MDAzZWRsX2NoYW4pXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjMxOlxcdFxcdHNldF9iaXQoTUhJX1dXQU5fRExfQ0FQLCBcXHUwMDI2bWhpd3dhbi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTIzMi1cXHRpZiAobWhpX2Rldi1cXHUwMDNldWxfY2hhbilcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyMzM6XFx0XFx0c2V0X2JpdChNSElfV1dBTl9VTF9DQVAsIFxcdTAwMjZtaGl3d2FuLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmMtMjM0LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM9MjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCBtaGlfd3dhbl9jdHJsX21hdGNoX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjU5OlxcdHsgLmNoYW4gPSBcXFwiRFVOXFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6MjYwOlxcdHsgLmNoYW4gPSBcXFwiRFVOMlxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2MTpcXHR7IC5jaGFuID0gXFxcIk1CSU1cXFwiLCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfTUJJTSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2MjpcXHR7IC5jaGFuID0gXFxcIlFNSVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9RTUkgfSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjM6XFx0eyAuY2hhbiA9IFxcXCJESUFHXFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX1FDRE0gfSxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYzoyNjQ6XFx0eyAuY2hhbiA9IFxcXCJGSVJFSE9TRVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9GSVJFSE9TRSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jOjI2NTpcXHR7IC5jaGFuID0gXFxcIk5NRUFcXFwiLCAuZHJpdmVyX2RhdGEgPSBXV0FOX1BPUlRfTk1FQSB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jLTI2Ni1cXHR7fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fY3RybC5jPTI4Mz1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9jdHJsLmM6Mjg0Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiTUhJIFdXQU4gQ1RSTCBEcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX2N0cmwuYy0yODUtTU9EVUxFX0FVVEhPUihcXFwiTG9pYyBQb3VsYWluIFxcdTAwM2Nsb2ljLnBvdWxhaW5AbGluYXJvLm9yZ1xcdTAwM2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTYyMD1zdGF0aWMgaW50IG1oaV9tYmltX3Byb2JlKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LCBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NDQtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjQ1OlxcdC8qIFJlZ2lzdGVyIHd3YW4gbGluayBvcHMgd2l0aCBNSEkgY29udHJvbGxlciByZXByZXNlbnRpbmcgV1dBTiBpbnN0YW5jZSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0Ni1cXHRyZXR1cm4gd3dhbl9yZWdpc3Rlcl9vcHMoXFx1MDAyNmNudHJsLVxcdTAwM2VtaGlfZGV2LVxcdTAwM2VkZXYsIFxcdTAwMjZtaGlfbWJpbV93d2FuX29wcywgbWJpbSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Fjb21fYmFtX2RtdXguYy0yLS8qXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6MzogKiBRdWFsY29tbSBCQU0tRE1VWCBXV0FOIG5ldHdvcmsgZHJpdmVyXFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmMtNC0gKiBDb3B5cmlnaHQgKGMpIDIwMjAsIFN0ZXBoYW4gR2VyaG9sZCBcXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jPTkwNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi9xY29tX2JhbV9kbXV4LmM6OTA2Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gQkFNLURNVVggV1dBTiBOZXR3b3JrIERyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcWNvbV9iYW1fZG11eC5jLTkwNy1NT0RVTEVfQVVUSE9SKFxcXCJTdGVwaGFuIEdlcmhvbGQgXFx1MDAzY3N0ZXBoYW5AZ2VyaG9sZC5uZXRcXHUwMDNlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jPTk4PXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpycG1zZ193d2FuX2ZpbmRfcGFyZW50KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jLTk5LXtcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jOjEwMDpcXHQvKiBTZWxlY3QgZmlyc3QgcGxhdGZvcm0gZGV2aWNlIGFzIHBhcmVudCBmb3IgdGhlIFdXQU4gcG9ydHMuXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYy0xMDEtXFx0ICogT24gUXVhbGNvbW0gcGxhdGZvcm1zIHRoaXMgaXMgdXN1YWxseSB0aGUgcGxhdGZvcm0gZGV2aWNlIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM9MTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBtc2dfZGV2aWNlX2lkIHJwbXNnX3d3YW5fY3RybF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTQ4LVxcdC8qIFJQTVNHIGNoYW5uZWxzIGZvciBRdWFsY29tbSBTb0NzIHdpdGggaW50ZWdyYXRlZCBtb2RlbSAqL1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM6MTQ5OlxcdHsgLm5hbWUgPSBcXFwiREFUQTVfQ05UTFxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9RTUkgfSxcXG5kcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jOjE1MDpcXHR7IC5uYW1lID0gXFxcIkRBVEE0XFxcIiwgLmRyaXZlcl9kYXRhID0gV1dBTl9QT1JUX0FUIH0sXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYzoxNTE6XFx0eyAubmFtZSA9IFxcXCJEQVRBMVxcXCIsIC5kcml2ZXJfZGF0YSA9IFdXQU5fUE9SVF9BVCB9LFxcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTUyLVxcdHt9LFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9ycG1zZ193d2FuX2N0cmwuYz0xNjQ9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmM6MTY1Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiUlBNU0cgV1dBTiBDVFJMIERyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vcnBtc2dfd3dhbl9jdHJsLmMtMTY2LU1PRFVMRV9BVVRIT1IoXFxcIlN0ZXBoYW4gR2VyaG9sZCBcXHUwMDNjc3RlcGhhbkBnZXJob2xkLm5ldFxcdTAwM2VcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZT00PW10a190N3h4LXk6PVxcdHQ3eHhfcGNpLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L01ha2VmaWxlLTE5LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC9NYWtlZmlsZToyMDptdGtfdDd4eC0kKENPTkZJR19XV0FOX0RFQlVHRlMpICs9IFxcXFxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvTWFrZWZpbGUtMjEtXFx0XFx0dDd4eF9wb3J0X3RyYWNlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM9MzM4PXN0YXRpYyBpbnQgdDd4eF9jY21uaV9yZWdpc3Rlcl93d2FuKHN0cnVjdCB0N3h4X2NjbW5pX2N0cmwgKmN0bGIpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDUtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6MzQ2OlxcdC8qIFdXQU4gY29yZSB3aWxsIGNyZWF0ZSBhIG5ldGRldiBmb3IgdGhlIGRlZmF1bHQgSVAgTVVYIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYy0zNDctXFx0cmV0ID0gd3dhbl9yZWdpc3Rlcl9vcHMoZGV2LCBcXHUwMDI2Y2Ntbmlfd3dhbl9vcHMsIGN0bGIsIElQX01VWF9TRVNTSU9OX0RFRkFVTFQpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTM0OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jOjM0OTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlVuYWJsZSB0byByZWdpc3RlciBXV0FOIG9wcywgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtMzUwLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYz05NjI9TU9EVUxFX0FVVEhPUihcXFwiTWVkaWFUZWsgSW5jXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTYzOk1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIFQ3eHggZHJpdmVyXFxcIik7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmMtOTY0LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BjaS5oPTc0PXN0cnVjdCB0N3h4X3BjaV9kZXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmgtOTItXFx0c3RydWN0IGNvbXBsZXRpb25cXHRzbGVlcF9sb2NrX2FjcXVpcmU7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmg6OTM6I2lmZGVmIENPTkZJR19XV0FOX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuaC05NC1cXHRzdHJ1Y3QgZGVudHJ5XFx0XFx0KmRlYnVnZnNfZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jPTU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdDd4eF9wb3J0X2NvbmYgdDd4eF9wb3J0X2NvbmZbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy02NS1cXHRcXHQubmFtZSA9IFxcXCJBVFxcXCIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjY2OlxcdFxcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfQVQsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTY3LVxcdH0sIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy03NC1cXHRcXHQubmFtZSA9IFxcXCJNQklNXFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM6NzU6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9NQklNLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy03Ni1cXHR9LCB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jOjc3OiNpZmRlZiBDT05GSUdfV1dBTl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTc4LVxcdFxcdC50eF9jaCA9IFBPUlRfQ0hfTURfTE9HX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTExMS1cXHRcXHQubmFtZSA9IFxcXCJhZGJcXFwiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMTI6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9BREIsXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTExMy1cXHRcXHQuZGVidWcgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5jLTEyMS1cXHRcXHQubmFtZSA9IFxcXCJtaXBjXFxcIixcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM6MTIyOlxcdFxcdC5wb3J0X3R5cGUgPSBXV0FOX1BPUlRfTUlQQyxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTIzLVxcdFxcdC5kZWJ1ZyA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdDd4eF9wb3J0X2NvbmYgdDd4eF9lYXJseV9wb3J0X2NvbmZbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYy0xMzctXFx0XFx0Lm5hbWUgPSBcXFwiZmFzdGJvb3RcXFwiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuYzoxMzg6XFx0XFx0LnBvcnRfdHlwZSA9IFdXQU5fUE9SVF9GQVNUQk9PVCxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5LmMtMTM5LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3Byb3h5Lmg9OTU9ZXh0ZXJuIHN0cnVjdCBwb3J0X29wcyBjdGxfcG9ydF9vcHM7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF9wcm94eS5oLTk2LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaDo5NzojaWZkZWYgQ09ORklHX1dXQU5fREVCVUdGU1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfcHJveHkuaC05OC1leHRlcm4gc3RydWN0IHBvcnRfb3BzIHQ3eHhfdHJhY2VfcG9ydF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xMzA9c3RhdGljIGludCB0N3h4X3BvcnRfd3dhbl90eChzdHJ1Y3Qgd3dhbl9wb3J0ICpwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMTM4LVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjEzOTpcXHRpZiAocG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgIT0gV1dBTl9QT1JUX0ZBU1RCT09UKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE0MC1cXHRcXHRyZXQgPSB0N3h4X3BvcnRfY3RybF90eChwb3J0X3ByaXZhdGUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNTM9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fY3JlYXRlKHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNjUtXFx0XFx0aWYgKElTX0VSUihwb3J0LVxcdTAwM2V3d2FuLnd3YW5fcG9ydCkpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTY2OlxcdFxcdFxcdGRldl9lcnIocG9ydC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIGNyZWF0ZSBXV0FOIHBvcnQgJXNcXFwiLCBwb3J0X2NvbmYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE2Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0xNzA9c3RhdGljIGludCB0N3h4X3BvcnRfd3dhbl9pbml0KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYy0xNzMtXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmM6MTc0OlxcdGlmIChwb3J0X2NvbmYtXFx1MDAzZXBvcnRfdHlwZSA9PSBXV0FOX1BPUlRfRkFTVEJPT1QgfHxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxNzU6XFx0ICAgIHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9BREIgfHxcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoxNzY6XFx0ICAgIHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9NSVBDKVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTE3Ny1cXHRcXHR0N3h4X3BvcnRfd3dhbl9jcmVhdGUocG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYz0yMjc9c3RhdGljIHZvaWQgdDd4eF9wb3J0X3d3YW5fbWRfc3RhdGVfbm90aWZ5KHN0cnVjdCB0N3h4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jLTIzMC1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wb3J0X3d3YW4uYzoyMzE6XFx0aWYgKHBvcnRfY29uZi1cXHUwMDNlcG9ydF90eXBlID09IFdXQU5fUE9SVF9GQVNUQk9PVCB8fFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMjpcXHQgICAgcG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX0FEQiB8fFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X3BvcnRfd3dhbi5jOjIzMzpcXHQgICAgcG9ydF9jb25mLVxcdTAwM2Vwb3J0X3R5cGUgPT0gV1dBTl9QT1JUX01JUEMpXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcG9ydF93d2FuLmMtMjM0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vd3dhbl9jb3JlLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd3dhbi93d2FuX2NvcmUuYzoyOi8qIFdXQU4gRHJpdmVyIENvcmVcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MDcuNDM0NTMzMjM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY3OTQ4ODkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFdXQU4gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBXV0FOIGRyaXZlcnMgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiBgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmNgIGFuZCBgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmNgLiBJIGtub3cgdGhhdCBgbWhpX3d3YW5fbWJpbS5jYCBpcyByZWxhdGVkIHRvIFF1YWxjb21tIE1ISSBidXMgZGV2aWNlcyBiYXNlZCBvbiB0aGUgbmFtaW5nLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhbmQgdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaXQgaXMgY29tbXVuaWNhdGluZyB3aXRoLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIGBtaGlfd3dhbl9tYmltLmNgIGhhcyBgTUhJX1dXQU5fTUJJTWAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgTUhJX0JVU2AuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGF0ICppcyogYE1ISV9CVVNgPyBJcyBpdCBhIHBoeXNpY2FsIGJ1cywgcG90ZW50aWFsbHkgUENJZSwgb3IgaXMgaXQgYSB2aXJ0dWFsIGNvbnN0cnVjdCBsaWtlIGEgc2ltdWxhdGVkIGJ1cywgb3IgcGVyaGFwcyBhIFVTQiBnYWRnZXQgb3Igc29tZSBvdGhlciBraW5kIG9mIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIGxheWVyPyBUbyBmaWd1cmUgdGhhdCBvdXQsIEknbGwgbmVlZCB0byBsb2NhdGUgYE1ISV9CVVNgJ3MgZGVmaW5pdGlvbi4gTXkgZ3Vlc3MgaXMgaXQgd2lsbCBiZSBpbiBgZHJpdmVycy9idXMvbWhpL0tjb25maWdgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMsIGFzIGl0IGlzIHRoZSBjcnV4IG9mIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NTU1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjExLjExNDAyNTQwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA2MzY5MDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSElfQlVTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL21oaS9lcC9LY29uZmlnOjE6Y29uZmlnIE1ISV9CVVNfRVBcXG5kcml2ZXJzL2J1cy9taGkvZXAvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJNb2RlbSBIb3N0IEludGVyZmFjZSAoTUhJKSBidXMgRW5kcG9pbnQgaW1wbGVtZW50YXRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTctXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZzo4OmNvbmZpZyBNSElfQlVTXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNb2RlbSBIb3N0IEludGVyZmFjZSAoTUhJKSBidXNcXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTE1LVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MTY6Y29uZmlnIE1ISV9CVVNfREVCVUdcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIkRlYnVnZnMgc3VwcG9ydCBmb3IgdGhlIE1ISSBidXNcXFwiXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTIzLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L0tjb25maWc6MjQ6Y29uZmlnIE1ISV9CVVNfUENJX0dFTkVSSUNcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9LY29uZmlnLTI1LVxcdHRyaXN0YXRlIFxcXCJNSEkgUENJIGNvbnRyb2xsZXIgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxMi43MjAzOTg1MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTczMDI4OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTUhJL1dXQU4gU2l0dWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYE1ISV9CVVNfRVBgIGlzIGNsZWFybHkgYW4gTUhJIGJ1cyBFbmRwb2ludCBpbXBsZW1lbnRhdGlvbiwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyBgTUhJX1dXQU5fTUJJTWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGF0IGZpdHMgaW50byB0aGUgcGljdHVyZSwgc28gSSdsbCBjaGVjayBgbWhpX3d3YW5fbWJpbS5jYCB0byBzZWUgaG93IGl0J3MgaW50ZWdyYXRlZCwgbGlrZWx5IHRocm91Z2ggYW4gYG1oaV9kcml2ZXJgIGFuZCBgbWhpX2RyaXZlcl9yZWdpc3RlcmAuIEknbGwgYWxzbyB3YW50IHRvIHVuZGVyc3RhbmQgaG93IE1ISSBkZXZpY2VzIGFyZSBwcm9iZWQgaW4gZ2VuZXJhbC4gTG9va2luZyBiYWNrIGF0IHRoZSBiYXNlIGBNSElfQlVTX1BDSV9HRU5FUklDYCwgaXQgYXBwZWFycyB0byBoYW5kbGUgcmVnaXN0cmF0aW9uIG9mIFBDSSBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgRm94Y29ubiwgUXVlY3RlbCwgYW5kIFRlbGl0IFBDSWUgV1dBTiBtb2RlbXMuXG5cblRoZW4gdGhlcmUgaXMgdGhlIGBNVEtfVDdYWGAgZHJpdmVyIHRvIGNvbnNpZGVyLiBJdCdzIGEgUENJIGRyaXZlciAoYHQ3eHhfcGNpLmNgLCBgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ0N3h4X3BjaV9kcml2ZXIpYCkgdGhhdCBoYXMgc3BlY2lmaWMgTWVkaWFUZWsgUENJIGRldmljZSBJRHMgKGxpa2UgYFBDSV9ERVZJQ0VfSURfTUVESUFURUtfTVQ2ODU1YCkuIE9rYXksIHNvIHRoYXQncyBhIFBDSS1iYXNlZCBNZWRpYVRlayBzb2x1dGlvbiwgbGlrZWx5IHRhcmdldGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9uLlxuXG5Ib2xkIG9uLCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aG9zZSBjcnVjaWFsIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiByZWdhcmRpbmcgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBJdCBoaWdobGlnaHRzIHRoYXQgY2VydGFpbiBkcml2ZXJzLCBsaWtlIHRob3NlIGZvciB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIChlLmcuLCBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYGFtZGdwdWApLCBhcmUgdW5saWtlbHkgdG8gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgdGhlaXIgYXNzb2NpYXRlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBXV0FOIGRyaXZlcnMgKE1ISSwgTVRLX1Q3WFgsIE1ISV9XV0FOX01CSU0pIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IgZ2FkZ2V0LCBod3NpbSwgZXRjLikgb3IgaWYgdGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgbW9kZW0gZHJpdmVycy4gVGhpcyBpcyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uIElmIHRoZXkgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSwgSSdtIGdvaW5nIHRvIGhhdmUgYSBwcm9ibGVtLiBJIG1pZ2h0IG5lZWQgdG8gbG9vayBmb3IgZHJpdmVycyB0aGF0IHdvcmsgdGhyb3VnaCB2aXJ0dWFsIGJ1cyBpbXBsZW1lbnRhdGlvbnMsIGxpa2UgYHd3YW5faHdzaW1gLCB0byBwcm92aWRlIGEgcGF0aC4gTGV0J3Mgc2VlIGlmIHRoYXQncyBldmVuIGZlYXNpYmxlLlxuXG5MZXQncyBzZWUgaWYgYHd3YW5faHdzaW1gIGNvbm5lY3RzIHRvIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eGA/IEknbGwgY2hlY2sgYHd3YW5faHdzaW0uY2AgZm9yIHNvbWUgY2x1ZXMgb24gaXRzIGludGVybmFsIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI5MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxNy4yOTM0MzA0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5NTI0ODcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaXx0N3h4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoxNy4zNzQzODkxNTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDQ5MDc0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB3d2FuX2h3c2ltLmMgU291cmNlKipcblxuQWxyaWdodCwgbGV0J3MgY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvd3dhbi93d2FuX2h3c2ltLmNgLiBUaW1lIHRvIHNlZSB3aGF0IGtpbmQgb2Ygc2hlbmFuaWdhbnMgdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgdXAgdG8uIEknbSBlc3BlY2lhbGx5IGN1cmlvdXMgYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMg4oCTIGhvdyBhcmUgdGhleSBhYnN0cmFjdGluZyB0aGUgaGFyZHdhcmUgbGF5ZXI/IFdoYXQncyB0aGUgaW50ZXJmYWNlIGxpa2UgZm9yIGVtdWxhdGluZyBXV0FOIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWw/IEFyZSB0aGV5IHVzaW5nIGFueSBjbGV2ZXIgdHJpY2tzIHRvIGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIGNlbGx1bGFyIGNvbW11bmljYXRpb24/XG5cbkknbGwgYmUgbG9va2luZyBmb3IgdGhlIGNvcmUgc3RydWN0dXJlcywgdGhlIG1haW4gZW50cnkgcG9pbnRzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIChpZiBhbnkpLCBhbmQgaG93IHRoZXkncmUgc2ltdWxhdGluZyB0aGUgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaG93IHdlbGwgaXQgbWlycm9ycyByZWFsLXdvcmxkIFdXQU4gYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBzZWFyY2hpbmcgZm9yIGFueSBhcmVhcyB0aGF0IG1pZ2h0IGhhdmUgc3VidGxlIGJ1Z3Mgb3IgaW5lZmZpY2llbmNpZXMgdGhhdCBjb3VsZCBpbXBhY3QgdGVzdGluZyBvciBkZXZlbG9wbWVudC4gSXQgd291bGQgYmUgaW5zaWdodGZ1bCB0byByZXZpZXcgdGhlIGVycm9yIGhhbmRsaW5nLCB0b28gLSBob3cgcm9idXN0IGlzIHRoZSBzaW11bGF0aW9uP1xuXG5NeSBmb2N1cyBpcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gY2hvaWNlcyBoZXJlLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBhcmVhcyB0aGF0IG1pZ2h0IHJlcXVpcmUgb3B0aW1pemF0aW9uIG9yIGZ1cnRoZXIgcmVmaW5lbWVudC4gSXQncyB0aW1lIHRvIGJlY29tZSBpbnRpbWF0ZWx5IGFjcXVhaW50ZWQgd2l0aCB0aGUgc2ltdWxhdGVkIHdvcmxkIG9mIFdXQU4gd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MTkuODIzNDY2OTg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3d3YW4vd3dhbl9od3NpbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFdXQU4gZGV2aWNlIHNpbXVsYXRvciBmb3IgV1dBTiBmcmFtZXdvcmsgdGVzdGluZy5cXG4gICA0OlxcdCAqXFxuICAgNTpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMjEsIDIwMjUsIFNlcmdleSBSeWF6YW5vdiBcXHUwMDNjcnlhemFub3Yucy5hQGdtYWlsLmNvbVxcdTAwM2VcXG4gICA2OlxcdCAqL1xcbiAgIDc6XFx0XFxuICAgODpcXHQjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFxcXCI6IFxcXCIgZm10XFxuICAgOTpcXHRcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDEyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gIDE1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlzdC5oXFx1MDAzZVxcbiAgMTc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgMTg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVyLmhcXHUwMDNlXFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvd3dhbi5oXFx1MDAzZVxcbiAgMjE6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY25ldC9hcnAuaFxcdTAwM2VcXG4gIDI1OlxcdFxcbiAgMjY6XFx0c3RhdGljIGludCB3d2FuX2h3c2ltX2RldnNudW0gPSAyO1xcbiAgMjc6XFx0bW9kdWxlX3BhcmFtX25hbWVkKGRldmljZXMsIHd3YW5faHdzaW1fZGV2c251bSwgaW50LCAwNDQ0KTtcXG4gIDI4OlxcdE1PRFVMRV9QQVJNX0RFU0MoZGV2aWNlcywgXFxcIk51bWJlciBvZiBzaW11bGF0ZWQgZGV2aWNlc1xcXCIpO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIHd3YW5faHdzaW1fY2xhc3MgPSB7XFxuICAzMTpcXHRcXHQubmFtZSA9IFxcXCJ3d2FuX2h3c2ltXFxcIixcXG4gIDMyOlxcdH07XFxuICAzMzpcXHRcXG4gIDM0OlxcdHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICp3d2FuX2h3c2ltX2RlYnVnZnNfdG9wZGlyO1xcbiAgMzU6XFx0c3RhdGljIHN0cnVjdCBkZW50cnkgKnd3YW5faHdzaW1fZGVidWdmc19kZXZjcmVhdGU7XFxuICAzNjpcXHRcXG4gIDM3OlxcdHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sod3dhbl9od3NpbV9kZXZzX2xvY2spO1xcbiAgMzg6XFx0c3RhdGljIExJU1RfSEVBRCh3d2FuX2h3c2ltX2RldnMpO1xcbiAgMzk6XFx0c3RhdGljIHVuc2lnbmVkIGludCB3d2FuX2h3c2ltX2Rldl9pZHg7XFxuICA0MDpcXHRzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnd3YW5fd3E7XFxuICA0MTpcXHRcXG4gIDQyOlxcdHN0cnVjdCB3d2FuX2h3c2ltX2RldiB7XFxuICA0MzpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuICA0NDpcXHRcXHR1bnNpZ25lZCBpbnQgaWQ7XFxuICA0NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4gIDQ2OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCBkZWxfd29yaztcXG4gIDQ3OlxcdFxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdG9wZGlyO1xcbiAgNDg6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19wb3J0Y3JlYXRlO1xcbiAgNDk6XFx0XFx0c3BpbmxvY2tfdCBwb3J0c19sb2NrO1xcdC8qIFNlcmlhbGl6ZSBwb3J0cyBjcmVhdGlvbi9kZWxldGlvbiAqL1xcbiAgNTA6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfaWR4O1xcbiAgNTE6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBwb3J0cztcXG4gIDUyOlxcdH07XFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0cnVjdCB3d2FuX2h3c2ltX3BvcnQge1xcbiAgNTU6XFx0XFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbiAgNTY6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbiAgNTc6XFx0XFx0c3RydWN0IHd3YW5faHdzaW1fZGV2ICpkZXY7XFxuICA1ODpcXHRcXHRzdHJ1Y3Qgd3dhbl9wb3J0ICp3d2FuO1xcbiAgNTk6XFx0XFx0c3RydWN0IHdvcmtfc3RydWN0IGRlbF93b3JrO1xcbiAgNjA6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc190b3BkaXI7XFxuICA2MTpcXHRcXHR1bmlvbiB7XFxuICA2MjpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiAgNjM6XFx0XFx0XFx0XFx0ZW51bSB7XFx0LyogQVQgY29tbWFuZCBwYXJzZXIgc3RhdGUgKi9cXG4gIDY0OlxcdFxcdFxcdFxcdFxcdEFUX1BBUlNFUl9XQUlUX0EsXFxuICA2NTpcXHRcXHRcXHRcXHRcXHRBVF9QQVJTRVJfV0FJVF9ULFxcbiAgNjY6XFx0XFx0XFx0XFx0XFx0QVRfUEFSU0VSX1dBSVRfVEVSTSxcXG4gIDY3OlxcdFxcdFxcdFxcdFxcdEFUX1BBUlNFUl9TS0lQX0xJTkUsXFxuICA2ODpcXHRcXHRcXHRcXHR9IHBzdGF0ZTtcXG4gIDY5OlxcdFxcdFxcdH0gYXRfZW11bDtcXG4gIDcwOlxcdFxcdFxcdHN0cnVjdCB7XFxuICA3MTpcXHRcXHRcXHRcXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcXG4gIDcyOlxcdFxcdFxcdH0gbm1lYV9lbXVsO1xcbiAgNzM6XFx0XFx0fTtcXG4gIDc0OlxcdH07XFxuICA3NTpcXHRcXG4gIDc2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19wb3J0ZGVzdHJveV9mb3BzO1xcbiAgNzc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3dhbl9od3NpbV9kZWJ1Z2ZzX3BvcnRjcmVhdGVfZm9wcztcXG4gIDc4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHd3YW5faHdzaW1fZGVidWdmc19kZXZkZXN0cm95X2ZvcHM7XFxuICA3OTpcXHRzdGF0aWMgdm9pZCB3d2FuX2h3c2ltX3BvcnRfZGVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gIDgwOlxcdHN0YXRpYyB2b2lkIHd3YW5faHdzaW1fZGV2X2RlbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjE5LjgyMzU2NTIzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUwODUxNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgV1dBTiBEcml2ZXIgSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gaXQgc2VlbXMgYHd3YW5faHdzaW1gIGhhcyBnb25lIGl0cyBvd24gd2F5LCBpbXBsZW1lbnRpbmcgaXRzIG93biBXV0FOIHBvcnQgb3BlcmF0aW9ucyBhbmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucy4gVGhhdCdzIGdvb2QgdG8ga25vdy4gSXQgbWVhbnMgaXQncyBub3QgcmVseWluZyBvbiB0aGUgbW9yZSBnZW5lcmljIGBtaGlfd3dhbl9tYmltLmNgIG9yIGB0N3h4X25ldGRldi5jYCBkcml2ZXJzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgdGhvc2UgZmlsZXMsIGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eF9uZXRkZXYuY2AsIGFyZSBldmVuICpuZWVkZWQqIGluIG90aGVyIGFyZWFzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRob3NlIHNwZWNpZmljIG1vZHVsZXMgYXJlIGJlaW5nIHVzZWQsIGlmIGF0IGFsbC4gTXkgcGxhbiBpcyB0byBjb25kdWN0IGEgdGhvcm91Z2ggc2VhcmNoIGZvciBhbnkgcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gZWl0aGVyIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eGAgd2l0aGluIHRoZSBjb2RlYmFzZS4gSG9wZWZ1bGx5LCB0aGlzIHdpbGwgdGVsbCB1cyBob3cgbmVjZXNzYXJ5IHRoZXkgYWN0dWFsbHkgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjIxLjc3NDQyMDY0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2MDM4MTk2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfbWJpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0NjpzdHJ1Y3QgbWhpX21iaW1fbGluayB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDc6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDgtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTpzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjYtXFx0c3RydWN0IG1oaV9kZXZpY2UgKm1kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz03OD1zdHJ1Y3QgbWJpbV90eF9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODMtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6ODQ6c3RhdGljIHN0cnVjdCBtaGlfbWJpbV9saW5rICptaGlfbWJpbV9nZXRfbGlua19yY3Uoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNlc3Npb24pXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtODYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjg3OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtOTYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6OTc6c3RhdGljIGludCBtaGlfbWJpbV9nZXRfbGlua19tdXhfaWQoc3RydWN0IG1oaV9jb250cm9sbGVyICpjbnRybClcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy05OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYz0xMDc9c3RhdGljIHN0cnVjdCBza19idWZmICptYmltX3R4X2ZpeHVwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBzZXNzaW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1MTpzdGF0aWMgbmV0ZGV2X3R4X3QgbWhpX21iaW1fbmRvX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTUyLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzoxNTM6XFx0c3RydWN0IG1oaV9tYmltX2xpbmsgKmxpbmsgPSB3d2FuX25ldGRldl9kcnZwcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjE1NDpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGxpbmstXFx1MDAzZW1iaW07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTU1LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0xOTItXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MTkzOnN0YXRpYyBpbnQgbWJpbV9yeF92ZXJpZnlfbnRoMTYoc3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTIzMT1zdGF0aWMgaW50IG1iaW1fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbmRwMTYpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNTMtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6MjU0OnN0YXRpYyB2b2lkIG1oaV9tYmltX3J4KHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzYtXFx0XFx0c3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2IGRwZTE2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjI3NzpcXHRcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluaztcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0yNzgtXFx0XFx0aW50IG5mcmFtZXMsIG4sIGRwZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTMwNC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzozMDU6XFx0XFx0bGluayA9IG1oaV9tYmltX2dldF9saW5rX3JjdShtYmltLCBzZXNzaW9uKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zMDYtXFx0XFx0aWYgKCFsaW5rKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy0zNzgtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6Mzc5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWhpX25ldF9za2JfYWdnKHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTM4MC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jPTQwNT1zdGF0aWMgdm9pZCBtaGlfbmV0X3J4X3JlZmlsbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MDYte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQwNzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MDgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICByeF9yZWZpbGwud29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00MzUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NDM2OnN0YXRpYyB2b2lkIG1oaV9tYmltX2RsX2NhbGxiYWNrKHN0cnVjdCBtaGlfZGV2aWNlICptaGlfZGV2LFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQzNy1cXHRcXHRcXHRcXHQgc3RydWN0IG1oaV9yZXN1bHQgKm1oaV9yZXMpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDM4LXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Mzk6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1oaV9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDQwLVxcdHN0cnVjdCBza19idWZmICpza2IgPSBtaGlfcmVzLVxcdTAwM2VidWZfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ2OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0Njk6XFx0XFx0bWhpX21iaW1fcngobWJpbSwgc2tiKTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00NzAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc2LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ3NzpzdGF0aWMgdm9pZCBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDc4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy00Nzkte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjQ4MDpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNDgxLVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTQ5OC1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo0OTk6c3RhdGljIHZvaWQgbWhpX21iaW1fdWxfY2FsbGJhY2soc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTAwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbWhpX3Jlc3VsdCAqbWhpX3JlcylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDEte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwMjpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWhpX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MDMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IG1oaV9yZXMtXFx1MDAzZWJ1Zl9hZGRyO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUwNC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHNrYi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUwNTpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTMwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjUzMTpzdGF0aWMgaW50IG1oaV9tYmltX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTUzMi17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTMzOlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NDUtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTQ2OnN0YXRpYyBpbnQgbWhpX21iaW1fbmRvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU1My1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtaGlfbWJpbV9uZG8gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU1OlxcdC5uZG9fb3BlbiA9IG1oaV9tYmltX25kb19vcGVuLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU1NjpcXHQubmRvX3N0b3AgPSBtaGlfbWJpbV9uZG9fc3RvcCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1NTc6XFx0Lm5kb19zdGFydF94bWl0ID0gbWhpX21iaW1fbmRvX3htaXQsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTU4OlxcdC5uZG9fZ2V0X3N0YXRzNjQgPSBtaGlfbWJpbV9uZG9fZ2V0X3N0YXRzNjQsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTU5LX07XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTYwLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2MTpzdGF0aWMgaW50IG1oaV9tYmltX25ld2xpbmsodm9pZCAqY3R4dCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBpZl9pZCxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjItXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjMte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2NDpcXHRzdHJ1Y3QgbWhpX21iaW1fbGluayAqbGluayA9IHd3YW5fbmV0ZGV2X2RydnByaXYobmRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTY1OlxcdHN0cnVjdCBtaGlfbWJpbV9jb250ZXh0ICptYmltID0gY3R4dDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNTY3LVxcdGxpbmstXFx1MDAzZW1iaW0gPSBtYmltO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU2ODpcXHRsaW5rLVxcdTAwM2VzZXNzaW9uID0gbWhpX21iaW1fZ2V0X2xpbmtfbXV4X2lkKGxpbmstXFx1MDAzZW1iaW0tXFx1MDAzZW1kZXYtXFx1MDAzZW1oaV9jbnRybCkgKyBpZl9pZDtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NjktXFx0bGluay1cXHUwMDNlbmRldiA9IG5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01NzMtXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjU3NDpcXHRpZiAobWhpX21iaW1fZ2V0X2xpbmtfcmN1KG1iaW0sIGlmX2lkKSkge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU3NS1cXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4NS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo1ODY6c3RhdGljIHZvaWQgbWhpX21iaW1fZGVsbGluayh2b2lkICpjdHh0LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01ODctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU4OC17XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTg5OlxcdHN0cnVjdCBtaGlfbWJpbV9saW5rICpsaW5rID0gd3dhbl9uZXRkZXZfZHJ2cHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy01OTYtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NTk3OnN0YXRpYyB2b2lkIG1oaV9tYmltX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTU5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MDQtXFx0bmRldi1cXHUwMDNlZmxhZ3MgPSBJRkZfUE9JTlRPUE9JTlQgfCBJRkZfTk9BUlA7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjA1OlxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bWhpX21iaW1fbmRvO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYwNi1cXHRuZGV2LVxcdTAwM2VtdHUgPSBNSElfTUJJTV9ERUZBVUxUX01UVTtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYxMi1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTM6c3RhdGljIGNvbnN0IHN0cnVjdCB3d2FuX29wcyBtaGlfbWJpbV93d2FuX29wcyA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2MTQ6XFx0LnByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgbWhpX21iaW1fbGluayksXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE1OlxcdC5zZXR1cCA9IG1oaV9tYmltX3NldHVwLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYxNjpcXHQubmV3bGluayA9IG1oaV9tYmltX25ld2xpbmssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjE3OlxcdC5kZWxsaW5rID0gbWhpX21iaW1fZGVsbGluayxcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTgtfTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MTktXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjIwOnN0YXRpYyBpbnQgbWhpX21iaW1fcHJvYmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYsIGNvbnN0IHN0cnVjdCBtaGlfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjEte1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTYyMi1cXHRzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKmNudHJsID0gbWhpX2Rldi1cXHUwMDNlbWhpX2NudHJsO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjYyMzpcXHRzdHJ1Y3QgbWhpX21iaW1fY29udGV4dCAqbWJpbTtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02MjQtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0NS1cXHQvKiBSZWdpc3RlciB3d2FuIGxpbmsgb3BzIHdpdGggTUhJIGNvbnRyb2xsZXIgcmVwcmVzZW50aW5nIFdXQU4gaW5zdGFuY2UgKi9cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NDY6XFx0cmV0dXJuIHd3YW5fcmVnaXN0ZXJfb3BzKFxcdTAwMjZjbnRybC1cXHUwMDNlbWhpX2Rldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWhpX21iaW1fd3dhbl9vcHMsIG1iaW0sIDApO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY0Ny19XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjQ4LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY0OTpzdGF0aWMgdm9pZCBtaGlfbWJpbV9yZW1vdmUoc3RydWN0IG1oaV9kZXZpY2UgKm1oaV9kZXYpXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUwLXtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2NTE6XFx0c3RydWN0IG1oaV9tYmltX2NvbnRleHQgKm1iaW0gPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1oaV9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjUyLVxcdHN0cnVjdCBtaGlfY29udHJvbGxlciAqY250cmwgPSBtaGlfZGV2LVxcdTAwM2VtaGlfY250cmw7XFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYy02NjAtXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX2RldmljZV9pZCBtaGlfbWJpbV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Mi1cXHQvKiBIYXJkd2FyZSBhY2NlbGVyYXRlZCBkYXRhIFBBVEggKHRvIG1vZGVtIElQQSksIE1CSU0gcHJvdG9jb2wgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2NS19O1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY2NjpNT0RVTEVfREVWSUNFX1RBQkxFKG1oaSwgbWhpX21iaW1faWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY2Ny1cXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njg6c3RhdGljIHN0cnVjdCBtaGlfZHJpdmVyIG1oaV9tYmltX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYzo2Njk6XFx0LnByb2JlID0gbWhpX21iaW1fcHJvYmUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcwOlxcdC5yZW1vdmUgPSBtaGlfbWJpbV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcxOlxcdC5kbF94ZmVyX2NiID0gbWhpX21iaW1fZGxfY2FsbGJhY2ssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjcyOlxcdC51bF94ZmVyX2NiID0gbWhpX21iaW1fdWxfY2FsbGJhY2ssXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmM6NjczOlxcdC5pZF90YWJsZSA9IG1oaV9tYmltX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY3NC1cXHQuZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMtNjc4LVxcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jOjY3OTptb2R1bGVfbWhpX2RyaXZlcihtaGlfbWJpbV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3d3YW4vbWhpX3d3YW5fbWJpbS5jLTY4MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MjMuNDM0ODA2NzY5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDE0MTQyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQmVoYXZpb3IqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBzZWVpbmcgc29tZXRoaW5nIHVudXN1YWwgaW4gdGhlIG5ldHdvcmsgYmVoYXZpb3IuIE15IGZpcnN0IGluc3RpbmN0LCBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlLCBpcyB0byBjYXN0IGEgd2lkZXIgbmV0LiBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYHQ3eHhfbmV0ZGV2LmNgIGFzIHdlbGwuIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIGEga2V5IGNvbXBvbmVudCBhbmQgY291bGQgdmVyeSB3ZWxsIGJlIHRoZSByb290IGNhdXNlLCBvciBhdCBsZWFzdCBiZSBpbnZvbHZlZCBpbiB0aGUgY2FzY2FkZSBvZiBpc3N1ZXMgd2UgYXJlIGN1cnJlbnRseSBzZWVpbmcuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHN0YXJ0IGV4YW1pbmluZyBpdHMgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMuIExldCdzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGNsdWVzIGluIGl0cyBoYW5kbGluZyBvZiBwYWNrZXQgdHJhbnNtaXNzaW9uIG9yIHJlY2VwdGlvbiwgaW50ZXJydXB0IG1hbmFnZW1lbnQsIG9yIHJlc291cmNlIGFsbG9jYXRpb24uIFdlJ2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdCBhcmVhcyBhbmQgdGhlbiBkaWcgZGVlcGVyIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxOTcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoyNS4yNzYyMjM1NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjM0MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInQ3eHhfY2NtbmlfcmVjdl9za2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd3dhbi90N3h4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jPTM5OT1zdGF0aWMgdm9pZCBpbml0X21kX3N0YXR1c19ub3RpZmllcihzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYzo0MTI6c3RhdGljIHZvaWQgdDd4eF9jY21uaV9yZWN2X3NrYihzdHJ1Y3QgdDd4eF9jY21uaV9jdHJsICpjY21uaV9jdGxiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTQxMy1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYz00OTA9aW50IHQ3eHhfY2NtbmlfaW5pdChzdHJ1Y3QgdDd4eF9wY2lfZGV2ICp0N3h4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3d3YW4vdDd4eC90N3h4X25ldGRldi5jLTUwMi1cXHRjdGxiLVxcdTAwM2VjYWxsYmFja3Muc3RhdGVfbm90aWZ5ID0gdDd4eF9jY21uaV9xdWV1ZV9zdGF0ZV9ub3RpZnk7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmM6NTAzOlxcdGN0bGItXFx1MDAzZWNhbGxiYWNrcy5yZWN2X3NrYiA9IHQ3eHhfY2NtbmlfcmVjdl9za2I7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMtNTA0LVxcdGN0bGItXFx1MDAzZW5pY19kZXZfbnVtID0gTklDX0RFVl9ERUZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzoyNS4zMzc4NjE0ODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ5NDI3MjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTUhJIERyaXZlcnMgZm9yIFZ1bG5lcmFiaWxpdHkgUmVzZWFyY2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlc2UgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBhcmUgd2UgZGVhbGluZyB3aXRoIGRyaXZlcnMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBmdXp6aW5nIHRoZXNlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8gVGhhdCdzIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZXN0YWJsaXNoLlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgTUhJX1dXQU5fTUJJTWAuIFJpZ2h0LCBNSEkgc3RhbmRzIGZvciBNb2RlbSBIb3N0IEludGVyZmFjZSwgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoaXMgcG9pbnRzIHRvIFF1YWxjb21tIFBDSWUgbW9kZW1zIOKAkyB0aGluayBTbmFwZHJhZ29uIFg1NSwgWDYyLCBYNjUsIHRoZSBraW5kIHRoYXQgY29ubmVjdCBvdmVyIFBDSWUuIEdvb2QuIFRoYXQgaGVscHMgbmFycm93IHRoZSBzY29wZSBjb25zaWRlcmFibHkuXG5cblRvIHVuZGVyc3RhbmQgaG93IHRoZSBNSEkgY29udHJvbGxlciBpcyBwcm9iZWQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MjguODMyMTM2NDIzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY2MDQyMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9taGlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjI4Ljg4ODgwODM1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDcyOTY4MDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBkcml2ZXIgc2VhcmNoOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNSEkgRHJpdmVyIFNwYWNlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZSBQQ0kgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHdoYXQgSSdtIHdvcmtpbmcgb24sIGlzIHRvIGxvb2sgd2l0aGluIHRoZSBgZHJpdmVycy9idXMvbWhpYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHRoZSBnby10byBsb2NhdGlvbiBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgTW9iaWxlIEhvc3QgSW50ZXJmYWNlIChNSEkpIGJ1cy4gQ29uc2lkZXJpbmcgdGhhdCBJJ20gbG9va2luZyBmb3IgUENJIGRyaXZlcnMsIEknbSBob3BpbmcgSSBmaW5kIHNvbWUgZHJpdmVycyB0byBpbnRlcmZhY2Ugd2l0aCBNSEkgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSB0eXBpY2FsIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgYWJzdHJhY3Rpb24gbGF5ZXJzIHRoYXQgd291bGQgYmUgaGVscGZ1bCBhcyBhIHN0YXJ0aW5nIHBvaW50LiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gZGlnIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIHRvIHNlZSB3aGF0IFBDSSBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxOTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzozMS4zNjE3NzkxMDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTE0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYnVzL21oaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jPTE3Njc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1oaV9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNzc2LX07XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYzoxNzc3Om1vZHVsZV9wY2lfZHJpdmVyKG1oaV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjMxLjQyNTg5OTkzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDIyMzgyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWhpX3BjaV9kcml2ZXJgIGluIGBwY2lfZ2VuZXJpYy5jYCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBgcGNpX2dlbmVyaWMuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhlIGBtaGlfcGNpX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZ2VuZXJpYyBQQ0kgZnJhbWV3b3JrLiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwb3B1bGF0ZWQgdG8gbWFrZSB0aGUgTUhJIChwcmVzdW1hYmx5IE1vYmlsZSBIb3N0IEludGVyZmFjZSkgZGV2aWNlIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGJyb2FkZXIgUENJIGNvbnRleHQ/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlc291cmNlIGFsbG9jYXRpb24g4oCTIGFyZSB3ZSB1c2luZyBzdGFuZGFyZCBQQ0kgcmVzb3VyY2UgbWFuYWdlbWVudCwgb3IgYXJlIHRoZXJlIGN1c3RvbSBob29rcyBpbiBwbGFjZSB0byBkZWFsIHdpdGggdGhlIE1ISSdzIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgSS9PIG9yIGludGVycnVwdCByZXF1aXJlbWVudHM/IEFsc28sIGhvdyBkb2VzIHRoZSBkcml2ZXIgaW50ZXJhY3Qgd2l0aCB0aGUgUENJIGJ1cydzIGNvbmZpZ3VyYXRpb24gc3BhY2U/IEkgd2FudCB0byBzZWUgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRzIGNvcnJlY3RseS4gQXJlIHdlIHVzaW5nIHN0YW5kYXJkIFBDSSBpbnRlcnJ1cHQgbWVjaGFuaXNtcywgb3IgZG9lcyB0aGUgTUhJIGhhcmR3YXJlIG5lY2Vzc2l0YXRlIGEgbW9yZSBpbnRyaWNhdGUgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWd5PyBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIGNsdWVzIG9uIHRoZSBwbGF0Zm9ybSByZXF1aXJlbWVudHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHdpbGwgd29yayBvbiBhIG5ldyB0YXJnZXQuIEkgYWxzbyB3YW50IHRvIHNlZSBob3cgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkOyB3aGF0IGRvZXMgaXQgbG9vayBmb3IgaW4gdGhlIGRldmljZSBJRCB0YWJsZSwgYW5kIGhvdyBhcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBoYW5kbGVkIHRoZXJlPyBMYXN0bHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGluZGljYXRpb25zIG9mIGVycm9yIGhhbmRsaW5nIOKAkyBob3cgYXJlIFBDSSBidXMgZXJyb3JzLCBkZXZpY2Ugbm90IHByZXNlbnQgc2NlbmFyaW9zLCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIGZhaWx1cmVzIGRlYWx0IHdpdGggd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoaXMgTUhJIGRyaXZlcj8gSSBzaG91bGQgYWxzbyBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyIGNvbXBsaWVzIHdpdGggdGhlIGxhdGVzdCBQQ0kgc3BlY2lmaWNhdGlvbiB2ZXJzaW9ucyBhbmQgYW55IHJlbGV2YW50IHBsYXRmb3JtIHN0YW5kYXJkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzozMy44NDgyODUzNzhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTEwNTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1oaV9wY2lfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9idXMvbWhpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWhpX3BjaV9kZXZfaW5mbyBtaGlfbmV0cHJpc21hX2ZjdW42OV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy05NTEtLyogS2VlcCB0aGUgbGlzdCBzb3J0ZWQgYmFzZWQgb24gdGhlIFBJRC4gTmV3IFZJRCBzaG91bGQgYmUgYWRkZWQgYXMgdGhlIGxhc3QgZW50cnkgKi9cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jOjk1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWhpX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtOTUzLVxcdHtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUUNPTSwgMHgwMTE2KSxcXG4tLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTA4Ni19O1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTA4NzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbWhpX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xMDg4LVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xNzY3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtaGlfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9wY2lfZ2VuZXJpYy5jLTE3NjgtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJtaGktcGNpLWdlbmVyaWNcXFwiLFxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTc2OTpcXHQuaWRfdGFibGVcXHQ9IG1oaV9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNzcwLVxcdC5wcm9iZVxcdFxcdD0gbWhpX3BjaV9wcm9iZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MzMuODk5MjAxMThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgxNDAyMzkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgTUhJIEhvc3QgQ29udHJvbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGUgcHJpbWFyeSBNSEkgaG9zdCBjb250cm9sbGVyIHNpdHVhdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIHBvdGVudGlhbCBpbnN0YW5jZXMgb2YgTUhJIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBzeXN0ZW0uIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhlcmUgY291bGQgYmUgaGlkZGVuIE1ISSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25zOiBwZXJoYXBzIGEgdmlydHVhbCBvciBwbGF0Zm9ybS1sZXZlbCBjb250cm9sbGVyIGludGVyYWN0aW5nIHdpdGggdGhlIGhhcmR3YXJlLCBvciBldmVuIGFuIGVuZHBvaW50LXNwZWNpZmljIGNvbnRyb2xsZXIgdGhhdCB3ZSBoYXZlbid0IGlkZW50aWZpZWQgeWV0LiBJdCdzIGEgY3JpdGljYWwgbmV4dCBzdGVwLiBJIG5lZWQgdG8gY29tcHJlaGVuc2l2ZWx5IHZlcmlmeSB0aGF0IG91ciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBNSEkgYXJjaGl0ZWN0dXJlIGlzIGNvbXBsZXRlLiBJIGNhbid0IGFmZm9yZCB0byBtaXNzIGFueSBjb250cm9sbGVyIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXh0IHN0ZXAgaXMgYSBkZWVwIGRpdmUgaW50byB0aGUgZmlybXdhcmUgYW5kIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjM1LjcxMzIyNzQzOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTkyNTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaGlfcmVnaXN0ZXJfY29udHJvbGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3Q9MjA9QmVsb3cgYXJlIHRoZSByb2xlcyBvZiB0aGUgTUhJIGNvbnRyb2xsZXIgZHJpdmVyOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0LTI0LSogQWxsb2NhdGVzIHN0cnVjdCBtaGlfY29udHJvbGxlciBhbmQgcmVnaXN0ZXJzIHdpdGggdGhlIE1ISSBidXMgZnJhbWV3b3JrXFxuRG9jdW1lbnRhdGlvbi9taGkvdG9wb2xvZ3kucnN0OjI1OiAgd2l0aCBjaGFubmVsIGFuZCBldmVudCBjb25maWd1cmF0aW9ucyB1c2luZyBtaGlfcmVnaXN0ZXJfY29udHJvbGxlci5cXG5Eb2N1bWVudGF0aW9uL21oaS90b3BvbG9neS5yc3QtMjYtKiBJbml0aWF0ZXMgcG93ZXIgb24gYW5kIHNodXRkb3duIHNlcXVlbmNlXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYz04MDA9c3RhdGljIGludCBtaGlfcmVzZXRfYW5kX2FzeW5jX3Bvd2VyX3VwKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmMtODI2LVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jOjgyNzpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04MjgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBtaGlfaXJxLCBib29sIHNoYXJlZF9tc2ksIGludCBmYW1pbHkpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04NzUtXFx0bWhpX2NvbmZpZy50aW1lb3V0X21zID0gbWhpX3RpbWVvdXRfbXM7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc2OlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jbnRybCwgXFx1MDAyNm1oaV9jb25maWcpO1xcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5jLTg3Ny1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmM6ODc4OlxcdFxcdHBjaV9lcnIocGNpX2RldiwgXFxcIm1oaV9yZWdpc3Rlcl9jb250cm9sbGVyIGZhaWxlZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuYy04NzktXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9taGlfY29udHJvbGxlci5oLTgtXFxuZHJpdmVycy9hY2NlbC9xYWljL21oaV9jb250cm9sbGVyLmg6OTpzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKnFhaWNfbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIHZvaWQgX19pb21lbSAqbWhpX2JhcixcXG5kcml2ZXJzL2FjY2VsL3FhaWMvbWhpX2NvbnRyb2xsZXIuaC0xMC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW50IG1oaV9pcnEsIGJvb2wgc2hhcmVkX21zaSwgaW50IGZhbWlseSk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL3FhaWMvcWFpY19kcnYuYz01NzA9c3RhdGljIGludCBxYWljX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNTk2LVxcbmRyaXZlcnMvYWNjZWwvcWFpYy9xYWljX2Rydi5jOjU5NzpcXHRxZGV2LVxcdTAwM2VtaGlfY250cmwgPSBxYWljX21oaV9yZWdpc3Rlcl9jb250cm9sbGVyKHBkZXYsIHFkZXYtXFx1MDAzZWJhcl9taGksIG1oaV9pcnEsXFxuZHJpdmVycy9hY2NlbC9xYWljL3FhaWNfZHJ2LmMtNTk4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBxZGV2LVxcdTAwM2VzaW5nbGVfbXNpLCBjb25maWctXFx1MDAzZWZhbWlseSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM9ODgxPXN0YXRpYyBpbnQgcGFyc2VfY29uZmlnKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLFxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jLTkxOC1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmM6OTE5OmludCBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCxcXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtOTIwLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL2J1cy9taGkvaG9zdC9pbml0LmMtMTA1OC19XFxuZHJpdmVycy9idXMvbWhpL2hvc3QvaW5pdC5jOjEwNTk6RVhQT1JUX1NZTUJPTF9HUEwobWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIpO1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L2luaXQuYy0xMDYwLVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYz0xMzY1PXN0YXRpYyBpbnQgbWhpX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9idXMvbWhpL2hvc3QvcGNpX2dlbmVyaWMuYy0xNDQwLVxcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmM6MTQ0MTpcXHRlcnIgPSBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcihtaGlfY250cmwsIG1oaV9jbnRybF9jb25maWcpO1xcbmRyaXZlcnMvYnVzL21oaS9ob3N0L3BjaV9nZW5lcmljLmMtMTQ0Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYz0zMzU9aW50IGF0aDExa19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmMtNDA5LVxcdGFiX3BjaS1cXHUwMDNlbWhpX3ByZV9jYiA9IE1ISV9DQl9JTlZBTElEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWhpLmM6NDEwOlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsLCBhdGgxMWtfbWhpX2NvbmZpZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9taGkuYy00MTEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9taGkuYz0xODc9aW50IGF0aDEya19taGlfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19wY2kgKmFiX3BjaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmMtMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWhpLmM6MjY1OlxcdHJldCA9IG1oaV9yZWdpc3Rlcl9jb250cm9sbGVyKG1oaV9jdHJsLCBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtaGlfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21oaS5jLTI2Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oPTI5ND1zdHJ1Y3QgbWhpX2NvbnRyb2xsZXJfY29uZmlnIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWhpLmgtMzg1LSAqIEZpZWxkcyBtYXJrZWQgYXMgKHJlcXVpcmVkKSBuZWVkIHRvIGJlIHBvcHVsYXRlZCBieSB0aGUgY29udHJvbGxlciBkcml2ZXJcXG5pbmNsdWRlL2xpbnV4L21oaS5oOjM4NjogKiBiZWZvcmUgY2FsbGluZyBtaGlfcmVnaXN0ZXJfY29udHJvbGxlcigpLiBGb3IgdGhlIGZpZWxkcyBtYXJrZWQgYXMgKG9wdGlvbmFsKVxcbmluY2x1ZGUvbGludXgvbWhpLmgtMzg3LSAqIHRoZXkgY2FuIGJlIHBvcHVsYXRlZCBkZXBlbmRpbmcgb24gdGhlIHVzZWNhc2UuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oPTU1MD12b2lkIG1oaV9mcmVlX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taGkuaC01NTItLyoqXFxuaW5jbHVkZS9saW51eC9taGkuaDo1NTM6ICogbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIgLSBSZWdpc3RlciBNSEkgY29udHJvbGxlclxcbmluY2x1ZGUvbGludXgvbWhpLmgtNTU0LSAqIEBtaGlfY250cmw6IE1ISSBjb250cm9sbGVyIHRvIHJlZ2lzdGVyXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21oaS5oLTU1Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L21oaS5oOjU1NzppbnQgbWhpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsXFxuaW5jbHVkZS9saW51eC9taGkuaC01NTgtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG1oaV9jb250cm9sbGVyX2NvbmZpZyAqY29uZmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6Mzc6MzcuMTU5MTU3MTg2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExNDQwNjYzMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgV1dBTiBNb2RlbSBEcml2ZXJzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6eiBlaXRoZXIgdGhlIGBtaGlfd3dhbl9tYmltYCBvciBgdDd4eF9uZXRkZXZgIGRyaXZlcnMuIEJvdGggYXJlIGhhcmR3YXJlIGRyaXZlcnMgZm9yIHBoeXNpY2FsIFBDSWUgV1dBTiBtb2RlbXMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byByZWFjaCB0aGVtIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlLlxuXG5GaXJzdCwgbGV0J3MgcmV2aWV3IHRoZSBkcml2ZXJzIHRoZW1zZWx2ZXM6IGBtaGlfd3dhbl9tYmltLmNgIGhhbmRsZXMgUXVhbGNvbW0gUENJZSBtb2RlbXMsIGFuZCBgdDd4eF9uZXRkZXYuY2AgZGVhbHMgd2l0aCBNZWRpYVRlayBUN3h4IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSB0aGVpciByZXNwZWN0aXZlIHBoeXNpY2FsIFBDSSBtb2RlbXMuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgYmVjb21lcywgY2FuIHdlIHRyaWdnZXIgdGhlc2UgZHJpdmVycyBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCwgb3IgYXJlIHRoZXkgaW5oZXJlbnRseSB0aWVkIHRvIHRoZSBwcmVzZW5jZSBvZiBwaHlzaWNhbCBoYXJkd2FyZT8gU3BlY2lmaWNhbGx5LCBhcmUgdGhlc2UgZGV2aWNlcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGFjY29yZGluZyB0byB0aGUgZGVmaW5lZCBjcml0ZXJpYSwgbWVhbmluZyB0aGV5IG5lZWQgcmVhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVT8gVGhhdCdzIHRoZSBrZXkuXG5cbkxldCdzIGxvb2sgYXQgYG1oaV93d2FuX21iaW0uY2AgZmlyc3QuIFRoZSBgbWhpX21iaW1fcHJvYmVgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgdGhlIGVudHJ5IHBvaW50LiBJdCdzIHRyaWdnZXJlZCB3aGVuIGFuIE1ISSBkZXZpY2UgbWF0Y2hlcyBgbWhpX21iaW1faWRfdGFibGVgIG9uIHRoZSBNSEkgYnVzLiBUaGUgTUhJIGJ1cyBkZXZpY2VzIGFyZSBjcmVhdGVkIGJ5IE1ISSBjb250cm9sbGVycy4gVGhpcyBzZWVtcyB0byBoYXBwZW4gd2hlbiB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBQQ0llIGRldmljZSBpbml0aWFsaXplcyB0aGUgTUhJIGNoYW5uZWxzLiBQYWNrZXRzIGFyZSB0aGVuIGhhbmRsZWQgdGhyb3VnaCBgbWhpX21iaW1fcnhgIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSB0aGUgTUhJIGNvcmUgd2hlbiB0aGUgdHJhbnNmZXIgaGFzIGNvbXBsZXRlZCBmcm9tIHRoZSBoYXJkd2FyZS4gSXQncyBhIGNoYWluIG9mIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBtb2RlbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBNSEkgYnVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbk5vdywgbGV0J3MgZXhhbWluZSBgdDd4eF9uZXRkZXYuY2AuIFRoZSBgdDd4eF9jY21uaV9yZWN2X3NrYmAgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIE1USyBUN3h4IFBDSWUgZGV2aWNlIHJlY2VpdmVzIHBhY2tldHMgZnJvbSB0aGUgcGh5c2ljYWwgbW9kZW0uIFRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhIFBDSSBkcml2ZXIuIFRoaXMgYWxzbyBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgcHJlc2VuY2Ugb2YgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlLiBJIG5lZWQgdG8gY2hlY2sgdGhlIFBDSSBJRHMgd2l0aGluIGB0N3h4X3BjaS5jYCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hpY2ggaGFyZHdhcmUgdGhlIGRyaXZlciBpcyB0aWVkIHRvLlxuXG5CYXNlZCBvbiB0aGlzIHByZWxpbWluYXJ5IGludmVzdGlnYXRpb24sIHRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBib3RoIGRyaXZlcnMgYXJlIHN0cm9uZ2x5IGNvdXBsZWQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwaHlzaWNhbCBQQ0llIG1vZGVtcy4gUmVhY2hpbmcgdGhlbSBpbiBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudCBtYXkgYmUgY2hhbGxlbmdpbmcsIGFuZCBwZXJoYXBzIGltcG9zc2libGUsIGFzIHRoZXkgcmVseSBvbiB0aGUgTUhJIGJ1cyBvciBQQ0llIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIGJvdGggb2Ygd2hpY2ggcmVxdWlyZSBpbnRlcmFjdGlvbiB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLiBXZSdsbCBuZWVkIHRvIGNhcmVmdWxseSBpbnZlc3RpZ2F0ZSB0aGUgc2V0dXAgcHJvY2VzcyB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjg2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjQ4LjU5OTgyMjY4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM0MzM5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRS4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3d3YW4vdDd4eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYz05NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHQ3eHhfcGNpX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ0OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDRkNzUpIH0sXFxuZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfcGNpLmM6OTQ1OlxcdHsgUENJX0RFVklDRSgweDAzZjAsIDB4MDljOCkgfSwgLy8gSFAgRFJNUi1IMDFcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYzo5NDY6XFx0eyBQQ0lfREVWSUNFKDB4MTRjMCwgMHg0ZDc1KSB9LCAvLyBEZWxsIERXNTkzM2VcXG5kcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9wY2kuYy05NDctXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjQ4LjcyMzI2MDc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0MDU3ODU5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVmVuZG9yLVNwZWNpZmljIFBDSWUgTW9kZW0gRHJpdmVycyBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHRlbGxzIG1lIHRoYXQgdGhlIHByb3Bvc2VkIHBhdGNoIGFmZmVjdHMgdHdvIHNwZWNpZmljIHZlbmRvci1zcGVjaWZpYyBQQ0llIG1vZGVtIGRyaXZlcnM6IGBtaGlfd3dhbl9tYmltLmNgIGFuZCBgdDd4eC90N3h4X25ldGRldi5jYC4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBsb29raW5nIGF0IGEgUXVhbGNvbW0gUENJZSBtb2RlbSBNQklNIG5ldHdvcmsgZHJpdmVyIHV0aWxpemluZyB0aGUgTUhJIGJ1cyBhbmQgYSBNZWRpYVRlayBUN3h4IHNlcmllcyBQQ0llIDVHIFdXQU4gbW9kZW0gZHJpdmVyLCByZXNwZWN0aXZlbHkuXG5cblRoZSBjcml0aWNhbCBwb2ludCwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBkZXZpY2VzLCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kIHRoZSBjb21tb24gcHJhY3RpY2VzLCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGV5IHJlcXVpcmUgKmFjdHVhbCogcGh5c2ljYWwgaGFyZHdhcmUg4oCTIGEgUXVhbGNvbW0gU25hcGRyYWdvbiBQQ0llIG1vZGVtIGFuZCBhIE1lZGlhVGVrIFQ3eHggUENJZSBtb2RlbSwgcmVzcGVjdGl2ZWx5LiBUaGUgY29tbWl0IGRpZmYgY29uZmlybXMgdGhpcywgc2hvd2luZyBjaGFuZ2VzIHJlc3RyaWN0ZWQgdG8gdGhvc2UgdHdvIGZpbGVzLCBub3RoaW5nIGVsc2UuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGVzZSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIHVuYXZhaWxhYmxlIGluIGEgdHlwaWNhbCBzeXprYWxsZXIgdGVzdGluZyBzZXR1cCwgdGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciBTZWN0aW9uIDI6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFdlJ3JlIHRhbGtpbmcgYWJvdXQgZHJpdmVycyB0aGF0IGRlbWFuZCBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMuIFRoaXMgZXNzZW50aWFsbHkgY2xhc3NpZmllcyB0aGUgY29kZSBhcyB1bnJlYWNoYWJsZS5cblxuQ29uc2VxdWVudGx5LCBmcm9tIG15IHBlcnNwZWN0aXZlLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuIFNpbmNlIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSB3aXRob3V0IHRoZSByZXF1aXJlZCBoYXJkd2FyZSwgZnV6emluZyBlZmZvcnRzIHdvdWxkIGJlIHdhc3RlZC4gQW5kIHNvLCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBsaXN0cyBjYW4gc2FmZWx5IHJlbWFpbiBlbXB0eSwgYFtdYC4gSWYgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYCwgZW1wdHkgbGlzdHMgYXJlIHN0YW5kYXJkIHByYWN0aWNlLlxuXG5JbiBzaG9ydCwgSSdsbCBiZSBzZXR0aW5nIHRoaXMgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHN5c3RlbSB0byB1bmRlcnN0YW5kOiB0aGVzZSBjaGFuZ2VzLCB3aGlsZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZywgZG9uJ3QgcmVwcmVzZW50IGEgdmlhYmxlIHRhcmdldCBmb3IgaW1tZWRpYXRlIGZ1enppbmcgd2l0aG91dCBzcGVjaWFsaXplZCBoYXJkd2FyZS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzQ4LCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDozNzo1Ni4xMjkwNDkyNDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXJzL25ldC93d2FuL21oaV93d2FuX21iaW0uYyAoUXVhbGNvbW0gTUhJIFdXQU4gTUJJTSBkcml2ZXIpIGFuZCBkcml2ZXJzL25ldC93d2FuL3Q3eHgvdDd4eF9uZXRkZXYuYyAoTWVkaWFUZWsgUENJZSA1RyBXV0FOIG1vZGVtIGRyaXZlcikuIEJvdGggZHJpdmVycyByZXF1aXJlIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIFdXQU4gbW9kZW0gaGFyZHdhcmUgKFF1YWxjb21tIGFuZCBNZWRpYVRlayBUN3h4KSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycy9uZXQvd3dhbi9taGlfd3dhbl9tYmltLmMgKFF1YWxjb21tIE1ISSBXV0FOIE1CSU0gZHJpdmVyKSBhbmQgZHJpdmVycy9uZXQvd3dhbi90N3h4L3Q3eHhfbmV0ZGV2LmMgKE1lZGlhVGVrIFBDSWUgNUcgV1dBTiBtb2RlbSBkcml2ZXIpLiBCb3RoIGRyaXZlcnMgcmVxdWlyZSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBXV0FOIG1vZGVtIGhhcmR3YXJlIChRdWFsY29tbSBhbmQgTWVkaWFUZWsgVDd4eCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjM3OjU2LjEyOTA3MTM4MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqwmn2[1] Phase: Running StartedAt: 2026-09-10 04:38:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqwmn2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 04:38:07 +0000 UTC FinishedAt: 2026-09-10 04:38:12 +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,}