Name: series-workflow9c8kb Phase: Succeeded StartedAt: 2026-07-23 21:19:12 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[0] Phase: Succeeded StartedAt: 2026-07-23 21:19:12 +0000 UTC FinishedAt: 2026-07-23 21:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 21:19:12 +0000 UTC FinishedAt: 2026-07-23 21:33:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9c638ccb-c5cd-4168-a1f8-03d124bacfa6" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arm_pmu_v3_init", "kvm_arm_pmu_v3_set_pmu", "kvm_arm_pmu_v3_set_attr", "set_pmcr", "access_pmmir", "set_pmmir", "get_pmmir", "kvm_pmu_get_pmceid" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlkY2E4MGM0MGZiZWQyNzVjZDYwMzk0ZWY5YTY3MGRiOTFiYzEyNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAyMTozMzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0XG5AQCAtMzUxNSw2ICYjNDM7MzUxNSwxNyBAQCBQb3NzaWJsZSBmZWF0dXJlczpcbiBcdCAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QU0NJXzBfMi5cbiBcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WMzogRW11bGF0ZSBQTVV2MyBmb3IgdGhlIENQVS5cbiBcdCAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjMuXG4mIzQzO1x0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVDogRW5hYmxlIHN0cmljdCBQTVV2MyBVQVBJLlxuJiM0MztcdCAgUmVxdWlyZXMgS1ZNX0FSTV9WQ1BVX1BNVV9WMy4gRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNULlxuJiM0MztcdCAgV2hlbiBlbmFibGVkOlxuJiM0MztcbiYjNDM7XHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcbiYjNDM7XHQgICAgICBpbml0aWFsaXppbmcgdGhlIFBNVSBvciBjb25maWd1cmluZyBhIFBNVSBldmVudCBmaWx0ZXJcbiYjNDM7XG4mIzQzO1x0ICAgICogSWYgdGhlIFBNVSBpbXBsZW1lbnRzIEZFQVRfUE1VdjNwNCwgUE1NSVJfRUwxLlNMT1RTIHByb3ZpZGVzIHRoZVxuJiM0MztcdCAgICAgIGhhcmR3YXJlIHZhbHVlIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uXG4mIzQzO1xuJiM0MztcdCAgICAqIFdyaXRlcyB0byBQTUNSX0VMMC5OIHZpYSBLVk1fU0VUX09ORV9SRUcgYXJlIGlnbm9yZWRcbiBcbiBcdC0gS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfQUREUkVTUzogRW5hYmxlcyBBZGRyZXNzIFBvaW50ZXIgYXV0aGVudGljYXRpb25cbiBcdCAgZm9yIGFybTY0IG9ubHkuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0XG5pbmRleCA2NmU3MTRmMmZjZmE3Zi4uZGViNWM1MWJjMDBjODcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxuQEAgLTUzLDggJiM0Mzs1Myw5IEBAIFJldHVybnM6XG4gXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXHQgLUVFWElTVCAgSW50ZXJydXB0IG51bWJlciBhbHJlYWR5IHVzZWRcbiBcdCAtRU5PREVWICBQTVV2MyBub3Qgc3VwcG9ydGVkIG9yIEdJQyBub3QgaW5pdGlhbGl6ZWRcbi1cdCAtRU5YSU8gICBQTVV2MyBub3Qgc3VwcG9ydGVkLCBtaXNzaW5nIFZDUFUgZmVhdHVyZSBvciBpbnRlcnJ1cHRcbi1cdFx0ICBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1IGd1ZXN0cywgb25seSlcbiYjNDM7XHQgLUVOWElPICAgUE1VdjMgbm90IHN1cHBvcnRlZCwgbWlzc2luZyBWQ1BVIGZlYXR1cmUsIG1pc3NpbmdcbiYjNDM7ICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgUE1VLCBvciBpbnRlcnJ1cHQgbnVtYmVyIG5vdCBzZXQgKG5vbi1HSUN2NVxuJiM0MzsgICAgICAgICAgICAgICAgICBndWVzdHMsIG9ubHkpXG4gXHQgLUVCVVNZICAgUE1VdjMgYWxyZWFkeSBpbml0aWFsaXplZFxuIFx0ID09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIFxuQEAgLTYyLDYgJiM0Mzs2Myw5IEBAIFJlcXVlc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQTVV2My4gIElmIHVzaW5nIHRoZSBQTVV2MyB3aXRoIGFuIGluLWtlcm5lbFxuIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBpbml0aWFsaXppbmcgdGhlIGluLWtlcm5lbFxuIGlycWNoaXAuXG4gXG4mIzQzO1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4mIzQzO2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS5cbiYjNDM7XG4gMS4zIEFUVFJJQlVURTogS1ZNX0FSTV9WQ1BVX1BNVV9WM19GSUxURVJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuQEAgLTEwOCw2ICYjNDM7MTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XG4gaXNuJiMzOTt0IHN0cmljdGx5IHNwZWFraW5nIGFuIGV2ZW50LiBGaWx0ZXJpbmcgdGhlIGN5Y2xlIGNvdW50ZXIgaXMgcG9zc2libGVcbiB1c2luZyBldmVudCAweDExIChDUFVfQ1lDTEVTKS5cbiBcbiYjNDM7V2hlbiB0aGUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgdkNQVSBmZWF0dXJlIGlzIGVuYWJsZWQgdGhpcyBtdXN0IGJlIGRvbmVcbiYjNDM7YWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuJiM0MztcbiAxLjQgQVRUUklCVVRFOiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVVcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGJhZTJjNGY5MmVmNWMwLi4zOWY3ZmM3NDBkMDc5YiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzksNyAmIzQzOzM5LDcgQEBcbiBcbiAjZGVmaW5lIEtWTV9NQVhfVkNQVVMgVkdJQ19WM19NQVhfQ1BVU1xuIFxuLSNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDlcbiYjNDM7I2RlZmluZSBLVk1fVkNQVV9NQVhfRkVBVFVSRVMgMTBcbiAjZGVmaW5lIEtWTV9WQ1BVX1ZBTElEX0ZFQVRVUkVTXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxuIFxuICNkZWZpbmUgS1ZNX1JFUV9TTEVFUCBcXFxuQEAgLTM4Nyw2ICYjNDM7Mzg3LDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi9cbiBcdHU4IG5yX3BtdV9jb3VudGVycztcbiBcbiYjNDM7XHQvKiBQTU1JUl9FTDEuU0xPVFMgdmFsdWUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovXG4mIzQzO1x0dTggcG1taXJfc2xvdHM7XG4mIzQzO1xuIFx0LyogSHlwZXJjYWxsIGZlYXR1cmVzIGZpcm13YXJlIHJlZ2lzdGVycyYjMzk7IGRlc2NyaXB0b3IgKi9cbiBcdHN0cnVjdCBrdm1fc21jY2NfZmVhdHVyZXMgc21jY2NfZmVhdDtcbiBcdHN0cnVjdCBtYXBsZV90cmVlIHNtY2NjX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IDFjMTNiZmEyZDM4YWFkLi4wMTllNWUzZDg5MmU2ZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTA2LDYgJiM0MzsxMDYsNyBAQCBzdHJ1Y3Qga3ZtX3JlZ3Mge1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1x0NiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJcdFx0NyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJfRTJIMFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RcdDkgLyogTm8gZGVmYXVsdCBQTVUgY3JlYXRpb24gKi9cbiBcbiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7XG4gXHRfX3UzMiB0YXJnZXQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuaW5kZXggNTBhZGZmZjc1YmU4MmUuLjdkYmVmZGQ4NDZhYTcwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5AQCAtNDUyLDYgJiM0Mzs0NTIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxuIFx0XHRyID0gZ2V0X251bV93cnBzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjM6XG4mIzQzO1x0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxuIFx0XHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9JTkpFQ1RfU0VSUk9SX0VTUjpcbkBAIC0xNTYzLDggJiM0MzsxNTY0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHN5c3RlbV9zdXBwb3J0ZWRfdmNwdV9mZWF0dXJlcyh2b2lkKVxuIFx0aWYgKCFjcHVzX2hhdmVfZmluYWxfY2FwKEFSTTY0X0hBU18zMkJJVF9FTDEpKVxuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXHUwMDI2ZmVhdHVyZXMpO1xuIFxuLVx0aWYgKCFrdm1fc3VwcG9ydHNfZ3Vlc3RfcG11djMoKSlcbiYjNDM7XHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKSB7XG4gXHRcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcdTAwMjZmZWF0dXJlcyk7XG4mIzQzO1x0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoIXN5c3RlbV9zdXBwb3J0c19zdmUoKSlcbiBcdFx0Y2xlYXJfYml0KEtWTV9BUk1fVkNQVV9TVkUsIFx1MDAyNmZlYXR1cmVzKTtcbkBAIC0xNjA1LDYgJiM0MzsxNjA4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfaW5pdF9jaGVja19mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHQgICAgdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQywgXHUwMDI2ZmVhdHVyZXMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBTdHJpY3QgUE1VdjMgVUFQSSByZXF1aXJlcyBQTVV2My4gKi9cbiYjNDM7XHRpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXRlc3RfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjMsIFx1MDAyNmZlYXR1cmVzKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXHUwMDI2ZmVhdHVyZXMpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbkBAIC0xNjM0LDEwICYjNDM7MTY0MiwxMyBAQCBzdGF0aWMgaW50IGt2bV9zZXR1cF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0Lypcbi1cdCAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0XG4tXHQgKiB5ZXQsIHNldCB0aGUgZGVmYXVsdCBvbmUuXG4mIzQzO1x0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcbiYjNDM7XHQgKiB0aGUgZGVmYXVsdCBvbmUuIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgbm8gZGVmYXVsdFxuJiM0MztcdCAqIFBNVSBpcyBjcmVhdGVkLCBhbmQgdXNlcnNwYWNlIG11c3Qgc2VsZWN0IGEgUE1VIHZpYVxuJiM0MztcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cbiBcdCAqL1xuLVx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuJiM0MztcdGlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpIFx1MDAyNlx1MDAyNiAha3ZtLVx1MDAzZWFyY2guYXJtX3BtdSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4gXHRcdHJldCA9IGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11KGt2bSk7XG4gXG4gXHQvKiBQcmVwYXJlIGZvciBuZXN0ZWQgaWYgcmVxdWlyZWQgKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuaW5kZXggOTgzMDViYmZjMDk1YWIuLjViMWFmN2UyMTc2ZmFmIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuQEAgLTgzOCw5ICYjNDM7ODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcbiBcdHJldHVybiAoKHU2NCloaVtwbWNlaWQxXSBcdTAwM2NcdTAwM2MgMzIpIHwgbG9bcG1jZWlkMV07XG4gfVxuIFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4mIzQzO3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDApO1xuJiM0MztcdHU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guYXJtX3BtdSwgMCk7XG4gXG4gXHQvKiBhbHdheXMgc3VwcG9ydCBTV19JTkNSICovXG4gXHR2YWwgfD0gQklUKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1dfSU5DUik7XG5AQCAtODQ5LDMyICYjNDM7ODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3QgYXJtX3BtdSAqcG11KVxuJiM0MztzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAxKTtcbiYjNDM7XHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXUsIDEpO1xuIFxuIFx0Lypcbi1cdCAqIERvbiYjMzk7dCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXG4tXHQgKiBhcyBSQVpcbiYjNDM7XHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBub3Qgc2V0LCBQTU1JUl9FTDEgaXNcbiYjNDM7XHQgKiB1bmNvbmRpdGlvbmFsbHkgUkFaLCBzbyBkb24mIzM5O3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cbiBcdCAqL1xuLVx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTtcbiYjNDM7XHRpZiAoIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4mIzQzO1x0XHR2YWwgXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcbiYjNDM7XHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcbiYjNDM7XHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xuJiM0MztcbiBcdHJldHVybiB2YWw7XG4gfVxuIFxuIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXG4ge1xuLVx0c3RydWN0IGFybV9wbXUgKmNwdV9wbXUgPSB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXU7XG4gXHR1bnNpZ25lZCBsb25nICpibWFwID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5wbXVfZmlsdGVyO1xuIFx0dTY0IHZhbCwgbWFzayA9IDA7XG4gXHRpbnQgYmFzZSwgaSwgbnJfZXZlbnRzO1xuIFxuIFx0aWYgKCFwbWNlaWQxKSB7XG4tXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMChjcHVfcG11KTtcbiYjNDM7XHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMCh2Y3B1KTtcbiBcdFx0YmFzZSA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7XG4mIzQzO1x0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7XG4gXHRcdGJhc2UgPSAzMjtcbiBcdH1cbiBcbkBAIC05MzgsNiAmIzQzOzkzOSwxMCBAQCBpbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcbiBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHQvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi9cbiYjNDM7XHRpZiAoIXZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guYXJtX3BtdSlcbiYjNDM7XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1xuIFx0aWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtXHUwMDNla3ZtKSkge1xuIFx0XHRpbnQgcmV0O1xuIFxuQEAgLTEwMDgsNiAmIzQzOzEwMTMsMTQgQEAgdTgga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVycyhzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0c3RydWN0IGFybV9wbXUgKmFybV9wbXUgPSBrdm0tXHUwMDNlYXJjaC5hcm1fcG11O1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogVW5kZXIgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm8gUE1VIGV4aXN0cyB1bnRpbCB1c2Vyc3BhY2Ugc2V0c1xuJiM0MztcdCAqIG9uZSwgc28gdGhpcyBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgYXJtX3BtdSBpcyBzZXQuIFJlcG9ydCBub1xuJiM0MztcdCAqIGNvdW50ZXJzIGluIHRoYXQgY2FzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWFybV9wbXUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XG4gXHQgKiBldmVudCwgdGhvdWdoIHRoZSBzYW1lIG1heSBub3QgYmUgdHJ1ZSBvZiBub24tUE1VdjMgaGFyZHdhcmUuXG5AQCAtMTA0OSw3ICYjNDM7MTA2Miw4IEBAIHN0YXRpYyB2b2lkIGt2bV9hcm1fc2V0X3BtdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBhcm1fcG11ICphcm1fcG11KVxuIH1cbiBcbiAvKipcbi0gKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQsIGdldCB0aGUgZGVmYXVsdCBvbmUuXG4mIzQzOyAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCBhbmQgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm90XG4mIzQzOyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbiAgKiBAa3ZtOiBUaGUga3ZtIHBvaW50ZXJcbiAgKlxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXG5AQCAtMTA5Miw2ICYjNDM7MTEwNiwxNyBAQCBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgcG11X2lkKVxuIFxuIFx0XHRcdGt2bV9hcm1fc2V0X3BtdShrdm0sIGFybV9wbXUpO1xuIFx0XHRcdGNwdW1hc2tfY29weShrdm0tXHUwMDNlYXJjaC5zdXBwb3J0ZWRfY3B1cywgXHUwMDI2YXJtX3BtdS1cdTAwM2VzdXBwb3J0ZWRfY3B1cyk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLFxuJiM0MztcdFx0XHQgKiBQTU1JUl9FTDEuU0xPVFMgaXMgZGV0ZXJtaW5pc3RpYyB0byB0aGUgZ3Vlc3QuXG4mIzQzO1x0XHRcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcbiYjNDM7XHRcdFx0ICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4mIzQzO1x0XHRcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPVxuJiM0MztcdFx0XHRcdFx0RklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUyxcbiYjNDM7XHRcdFx0XHRcdFx0ICBhcm1fcG11LVx1MDAzZXJlZ19wbW1pcik7XG4gXHRcdFx0cmV0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExNzgsNiAmIzQzOzEyMDMsOSBAQCBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuIFx0XHRpZiAoa3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pKVxuIFx0XHRcdHJldHVybiAtRUJVU1k7XG4gXG4mIzQzO1x0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLmFybV9wbXUpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1xuIFx0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIpIHtcbiBcdFx0XHRrdm0tXHUwMDNlYXJjaC5wbXVfZmlsdGVyID0gYml0bWFwX2FsbG9jKG5yX2V2ZW50cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIpXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbmluZGV4IDVkNWM1NzlkNDU3OTAyLi5lOTNmMTFiOTA4MTNiMCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbkBAIC0xMzY3LDYgJiM0MzsxMzY3LDY0IEBAIHN0YXRpYyBib29sIGFjY2Vzc19wbWludGVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4mIzQzO1x0XHRcdCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHAtXHUwMDNlaXNfd3JpdGUpXG4mIzQzO1x0XHRyZXR1cm4gd3JpdGVfdG9fcmVhZF9vbmx5KHZjcHUsIHAsIHIpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCBhbmQgUE1VIHdhcyBleHBsaWNpdGx5XG4mIzQzO1x0ICogc2VsZWN0ZWQsIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIFNMT1RTIHZhbHVlIHdhcyByZWFkIGludG8gdGhpc1xuJiM0MztcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXG4mIzQzO1x0ICovXG4mIzQzO1x0cC1cdTAwM2VyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyk7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbiYjNDM7XHRcdCAgICAgdTY0ICp2YWwpXG4mIzQzO3tcbiYjNDM7XHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4mIzQzO1x0XHQgICAgIHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbiYjNDM7XHR1OCBzbG90cyA9IEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsIHZhbCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25seSB0aGUgU0xPVFMgZmllbGQgaXMgZXhwb3NlZCAoZ2V0X3BtbWlyIHJldHVybnMganVzdCB0aGF0IGZpZWxkKSxcbiYjNDM7XHQgKiBzbyByZWplY3QgYSB3cml0ZSB0aGF0IHNldHMgYW55IG90aGVyIGJpdCByYXRoZXIgdGhhbiBzaWxlbnRseVxuJiM0MztcdCAqIG1hc2tpbmcgaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHZhbCBcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jb25maWdfbG9jayk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25jZSB0aGUgVk0gaGFzIHN0YXJ0ZWQgUE1NSVJfRUwxIGlzIGltbXV0YWJsZS4gUmVqZWN0IGFueSB3cml0ZVxuJiM0MztcdCAqIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcbiYjNDM7XHRcdHJldHVybiBzbG90cyA9PSBrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA/IDAgOiAtRUJVU1k7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGVcbiYjNDM7XHQgKiBvbGQgUkFaIGJlaGF2aW9yLiBSZWplY3QgYW55IG5vbi16ZXJvIHdyaXRlIHRoYXQgZG9lcyBub3QgbWF0Y2hcbiYjNDM7XHQgKiB0aGUgY3VycmVudCB2YWx1ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXNsb3RzKVxuJiM0MztcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPSAwO1xuJiM0MztcdGVsc2UgaWYgKHNsb3RzICE9IGt2bS1cdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIGFjY2Vzc19wbW92cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbiB7XG5AQCAtMTQ0NCw2ICYjNDM7MTUwMiw3IEBAIHN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuIFx0ICovXG4gXHRpZiAoIWt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhdmNwdV9oYXNfbnYodmNwdSlcdCAgICAgIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSBcdTAwMjZcdTAwMjZcbiBcdCAgICBuZXdfbiBcdTAwM2M9IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoa3ZtKSlcbiBcdFx0a3ZtLVx1MDAzZWFyY2gubnJfcG11X2NvdW50ZXJzID0gbmV3X247XG4gXG5AQCAtMzQ0OCw3ICYjNDM7MzUwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIHN5c19yZWdfZGVzY3NbXSA9IHtcbiBcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxuIFx0ICAuYWNjZXNzID0gYWNjZXNzX3BtaW50ZW4sIC5yZWcgPSBQTUlOVEVOU0VUX0VMMSxcbiBcdCAgLmdldF91c2VyID0gZ2V0X3BtcmVnLCAuc2V0X3VzZXIgPSBzZXRfcG1yZWcgfSxcbi1cdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXG4mIzQzO1x0eyBQTVVfU1lTX1JFRyhQTU1JUl9FTDEpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyLCAucmVzZXQgPSBOVUxMLFxuJiM0MztcdCAgLmdldF91c2VyID0gZ2V0X3BtbWlyLCAuc2V0X3VzZXIgPSBzZXRfcG1taXIgfSxcbiBcbiBcdHsgU1lTX0RFU0MoU1lTX01BSVJfRUwxKSwgYWNjZXNzX3ZtX3JlZywgcmVzZXRfdW5rbm93biwgTUFJUl9FTDEgfSxcbiBcdHsgU1lTX0RFU0MoU1lTX1BJUkUwX0VMMSksIE5VTEwsIHJlc2V0X3Vua25vd24sIFBJUkUwX0VMMSxcbkBAIC00NTkzLDcgJiM0Mzs0NjUzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgY3AxNV9yZWdzW10gPSB7XG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHQvKiBQTU1JUiAqL1xuLVx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcbiYjNDM7XHR7IENQMTVfUE1VX1NZU19SRUcoRElSRUNULCAwLCA5LCAxNCwgNiksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1taXIgfSxcbiBcbiBcdC8qIFBSUlIvTUFJUjAgKi9cbiBcdHsgQUEzMihMTyksIE9wMSggMCksIENSbigxMCksIENSbSggMiksIE9wMiggMCksIGFjY2Vzc192bV9yZWcsIE5VTEwsIE1BSVJfRUwxIH0sXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9rdm0vYXJtX3BtdS5oIGIvaW5jbHVkZS9rdm0vYXJtX3BtdS5oXG5pbmRleCBiNWU1OTQyMjA0ZmM2OS4uNmI0YTExOGQxN2NhOTkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2t2bS9hcm1fcG11LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxuQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3luY19lbDAodm9pZCk7XG4gI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11KHZjcHUpXHRcdFx0XHRcdFxcXG4gXHQodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzKSlcbiBcbiYjNDM7I2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHRcdFx0XHRcXFxuJiM0MztcdCh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUKSlcbiYjNDM7XG4gLypcbiAgKiBVcGRhdGVzIHRoZSB2Y3B1JiMzOTtzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LlxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXG5AQCAtMTYwLDYgJiM0MzsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXG4gfVxuIFxuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVx0XHQoeyBmYWxzZTsgfSlcbiYjNDM7I2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHQoeyBmYWxzZTsgfSlcbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3BtdV91cGRhdGVfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9wbXVfcmVzdG9yZV9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9XG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjlmYzhkZmRmZDY1ZmZhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbkBAIC05OTcsNiAmIzQzOzk5Nyw3IEBAIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCB7XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX0hQQUdFXzJHIDI0OVxuJiM0MzsjZGVmaW5lIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QgMjUwXG4gXG4gc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHtcbiBcdF9fdTMyIGlycWNoaXA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXG5pbmRleCAwYTNhOTRjNGNjYTE2Zi4uY2ZhOTk5NzlkNTdjOGUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xuQEAgLTUzMiw2ICYjNDM7NTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0ge1xuIHN0YXRpYyBfX3U2NCBwbXVfcmVnc1tdID0ge1xuIFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksXHQvKiBQTUlOVEVOU0VUX0VMMSAqL1xuIFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksXHQvKiBQTUlOVEVOQ0xSX0VMMSAqL1xuJiM0MztcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLFx0LyogUE1NSVJfRUwxICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSxcdC8qIFBNQ1JfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSxcdC8qIFBNQ05URU5TRVRfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSxcdC8qIFBNQ05URU5DTFJfRUwwICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWRjYTgwYzQwZmJlZDI3NWNkNjAzOTRlZjlhNjcwZGI5MWJjMTI3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDIxOjMzOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0CmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdApAQCAtMzUxNSw2ICYjNDM7MzUxNSwxNyBAQCBQb3NzaWJsZSBmZWF0dXJlczoKIAkgIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUFNDSV8wXzIuCiAJLSBLVk1fQVJNX1ZDUFVfUE1VX1YzOiBFbXVsYXRlIFBNVXYzIGZvciB0aGUgQ1BVLgogCSAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjMuCiYjNDM7CS0gS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Q6IEVuYWJsZSBzdHJpY3QgUE1VdjMgVUFQSS4KJiM0MzsJICBSZXF1aXJlcyBLVk1fQVJNX1ZDUFVfUE1VX1YzLiBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QuCiYjNDM7CSAgV2hlbiBlbmFibGVkOgomIzQzOwomIzQzOwkgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmUKJiM0MzsJICAgICAgaW5pdGlhbGl6aW5nIHRoZSBQTVUgb3IgY29uZmlndXJpbmcgYSBQTVUgZXZlbnQgZmlsdGVyCiYjNDM7CiYjNDM7CSAgICAqIElmIHRoZSBQTVUgaW1wbGVtZW50cyBGRUFUX1BNVXYzcDQsIFBNTUlSX0VMMS5TTE9UUyBwcm92aWRlcyB0aGUKJiM0MzsJICAgICAgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24KJiM0MzsKJiM0MzsJICAgICogV3JpdGVzIHRvIFBNQ1JfRUwwLk4gdmlhIEtWTV9TRVRfT05FX1JFRyBhcmUgaWdub3JlZAogCiAJLSBLVk1fQVJNX1ZDUFVfUFRSQVVUSF9BRERSRVNTOiBFbmFibGVzIEFkZHJlc3MgUG9pbnRlciBhdXRoZW50aWNhdGlvbgogCSAgZm9yIGFybTY0IG9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QKaW5kZXggNjZlNzE0ZjJmY2ZhN2YuLmRlYjVjNTFiYzAwYzg3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0CkBAIC01Myw4ICYjNDM7NTMsOSBAQCBSZXR1cm5zOgogCSA9PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkgLUVFWElTVCAgSW50ZXJydXB0IG51bWJlciBhbHJlYWR5IHVzZWQKIAkgLUVOT0RFViAgUE1VdjMgbm90IHN1cHBvcnRlZCBvciBHSUMgbm90IGluaXRpYWxpemVkCi0JIC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlIG9yIGludGVycnVwdAotCQkgIG51bWJlciBub3Qgc2V0IChub24tR0lDdjUgZ3Vlc3RzLCBvbmx5KQomIzQzOwkgLUVOWElPICAgUE1VdjMgbm90IHN1cHBvcnRlZCwgbWlzc2luZyBWQ1BVIGZlYXR1cmUsIG1pc3NpbmcKJiM0MzsgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBQTVUsIG9yIGludGVycnVwdCBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1CiYjNDM7ICAgICAgICAgICAgICAgICAgZ3Vlc3RzLCBvbmx5KQogCSAtRUJVU1kgICBQTVV2MyBhbHJlYWR5IGluaXRpYWxpemVkCiAJID09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC02Miw2ICYjNDM7NjMsOSBAQCBSZXF1ZXN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgUE1VdjMuICBJZiB1c2luZyB0aGUgUE1VdjMgd2l0aCBhbiBpbi1rZXJuZWwKIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBpbml0aWFsaXppbmcgdGhlIGluLWtlcm5lbAogaXJxY2hpcC4KIAomIzQzO1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lCiYjNDM7YWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLgomIzQzOwogMS4zIEFUVFJJQlVURTogS1ZNX0FSTV9WQ1BVX1BNVV9WM19GSUxURVIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEwOCw2ICYjNDM7MTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0CiBpc24mIzM5O3Qgc3RyaWN0bHkgc3BlYWtpbmcgYW4gZXZlbnQuIEZpbHRlcmluZyB0aGUgY3ljbGUgY291bnRlciBpcyBwb3NzaWJsZQogdXNpbmcgZXZlbnQgMHgxMSAoQ1BVX0NZQ0xFUykuCiAKJiM0MztXaGVuIHRoZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCB2Q1BVIGZlYXR1cmUgaXMgZW5hYmxlZCB0aGlzIG11c3QgYmUgZG9uZQomIzQzO2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS4KJiM0MzsKIDEuNCBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCBiYWUyYzRmOTJlZjVjMC4uMzlmN2ZjNzQwZDA3OWIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTM5LDcgJiM0MzszOSw3IEBACiAKICNkZWZpbmUgS1ZNX01BWF9WQ1BVUyBWR0lDX1YzX01BWF9DUFVTCiAKLSNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDkKJiM0MzsjZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyAxMAogI2RlZmluZSBLVk1fVkNQVV9WQUxJRF9GRUFUVVJFUwkoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKQogCiAjZGVmaW5lIEtWTV9SRVFfU0xFRVAgXApAQCAtMzg3LDYgJiM0MzszODcsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCS8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi8KIAl1OCBucl9wbXVfY291bnRlcnM7CiAKJiM0MzsJLyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqLwomIzQzOwl1OCBwbW1pcl9zbG90czsKJiM0MzsKIAkvKiBIeXBlcmNhbGwgZmVhdHVyZXMgZmlybXdhcmUgcmVnaXN0ZXJzJiMzOTsgZGVzY3JpcHRvciAqLwogCXN0cnVjdCBrdm1fc21jY2NfZmVhdHVyZXMgc21jY2NfZmVhdDsKIAlzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKaW5kZXggMWMxM2JmYTJkMzhhYWQuLjAxOWU1ZTNkODkyZTZkIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oCkBAIC0xMDYsNiAmIzQzOzEwNiw3IEBAIHN0cnVjdCBrdm1fcmVncyB7CiAjZGVmaW5lIEtWTV9BUk1fVkNQVV9QVFJBVVRIX0dFTkVSSUMJNiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqLwogI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMgkJNyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqLwogI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMl9FMkgwCTggLyogTGltaXQgTlYgc3VwcG9ydCB0byBFMkggUkVTMCAqLwomIzQzOyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QJOSAvKiBObyBkZWZhdWx0IFBNVSBjcmVhdGlvbiAqLwogCiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7CiAJX191MzIgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA1MGFkZmZmNzViZTgyZS4uN2RiZWZkZDg0NmFhNzAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jCkBAIC00NTIsNiAmIzQzOzQ1Miw3IEBAIGludCBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uKHN0cnVjdCBrdm0gKmt2bSwgbG9uZyBleHQpCiAJCXIgPSBnZXRfbnVtX3dycHMoKTsKIAkJYnJlYWs7CiAJY2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjM6CiYjNDM7CWNhc2UgS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVDoKIAkJciA9IGt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpOwogCQlicmVhazsKIAljYXNlIEtWTV9DQVBfQVJNX0lOSkVDVF9TRVJST1JfRVNSOgpAQCAtMTU2Myw4ICYjNDM7MTU2NCwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzeXN0ZW1fc3VwcG9ydGVkX3ZjcHVfZmVhdHVyZXModm9pZCkKIAlpZiAoIWNwdXNfaGF2ZV9maW5hbF9jYXAoQVJNNjRfSEFTXzMyQklUX0VMMSkpCiAJCWNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCAmYW1wO2ZlYXR1cmVzKTsKIAotCWlmICgha3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCkpCiYjNDM7CWlmICgha3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCkpIHsKIAkJY2xlYXJfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjMsICZhbXA7ZmVhdHVyZXMpOwomIzQzOwkJY2xlYXJfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNULCAmYW1wO2ZlYXR1cmVzKTsKJiM0MzsJfQogCiAJaWYgKCFzeXN0ZW1fc3VwcG9ydHNfc3ZlKCkpCiAJCWNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfU1ZFLCAmYW1wO2ZlYXR1cmVzKTsKQEAgLTE2MDUsNiAmIzQzOzE2MDgsMTEgQEAgc3RhdGljIGludCBrdm1fdmNwdV9pbml0X2NoZWNrX2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkgICAgdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQywgJmFtcDtmZWF0dXJlcykpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFN0cmljdCBQTVV2MyBVQVBJIHJlcXVpcmVzIFBNVXYzLiAqLwomIzQzOwlpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsICZhbXA7ZmVhdHVyZXMpICZhbXA7JmFtcDsKJiM0MzsJICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCAmYW1wO2ZlYXR1cmVzKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgJmFtcDtmZWF0dXJlcykpCiAJCXJldHVybiAwOwogCkBAIC0xNjM0LDEwICYjNDM7MTY0MiwxMyBAQCBzdGF0aWMgaW50IGt2bV9zZXR1cF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpbnQgcmV0ID0gMDsKIAogCS8qCi0JICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QKLQkgKiB5ZXQsIHNldCB0aGUgZGVmYXVsdCBvbmUuCiYjNDM7CSAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0IHlldCwgc2V0CiYjNDM7CSAqIHRoZSBkZWZhdWx0IG9uZS4gSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0LCBubyBkZWZhdWx0CiYjNDM7CSAqIFBNVSBpcyBjcmVhdGVkLCBhbmQgdXNlcnNwYWNlIG11c3Qgc2VsZWN0IGEgUE1VIHZpYQomIzQzOwkgKiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVUuCiAJICovCi0JaWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgJmFtcDsmYW1wOyAha3ZtLSZndDthcmNoLmFybV9wbXUpCiYjNDM7CWlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpICZhbXA7JmFtcDsgIWt2bS0mZ3Q7YXJjaC5hcm1fcG11ICZhbXA7JmFtcDsKJiM0MzsJICAgICFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQogCQlyZXQgPSBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShrdm0pOwogCiAJLyogUHJlcGFyZSBmb3IgbmVzdGVkIGlmIHJlcXVpcmVkICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYwppbmRleCA5ODMwNWJiZmMwOTVhYi4uNWIxYWY3ZTIxNzZmYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYwpAQCAtODM4LDkgJiM0Mzs4MzgsOSBAQCBzdGF0aWMgdTY0IF9fY29tcHV0ZV9wbWNlaWQoc3RydWN0IGFybV9wbXUgKnBtdSwgYm9vbCBwbWNlaWQxKQogCXJldHVybiAoKHU2NCloaVtwbWNlaWQxXSAmbHQ7Jmx0OyAzMikgfCBsb1twbWNlaWQxXTsKIH0KIAotc3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDAoc3RydWN0IGFybV9wbXUgKnBtdSkKJiM0MztzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JdTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAwKTsKJiM0MzsJdTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmFybV9wbXUsIDApOwogCiAJLyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqLwogCXZhbCB8PSBCSVQoQVJNVjhfUE1VVjNfUEVSRkNUUl9TV19JTkNSKTsKQEAgLTg0OSwzMiAmIzQzOzg0OSwzMyBAQCBzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3QgYXJtX3BtdSAqcG11KQogCXJldHVybiB2YWw7CiB9CiAKLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBhcm1fcG11ICpwbXUpCiYjNDM7c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHBtdSwgMSk7CiYjNDM7CXU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5hcm1fcG11LCAxKTsKIAogCS8qCi0JICogRG9uJiMzOTt0IGFkdmVydGlzZSBTVEFMTF9TTE9UKiwgYXMgUE1NSVJfRUwwIGlzIGhhbmRsZWQKLQkgKiBhcyBSQVoKJiM0MzsJICogSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgbm90IHNldCwgUE1NSVJfRUwxIGlzCiYjNDM7CSAqIHVuY29uZGl0aW9uYWxseSBSQVosIHNvIGRvbiYjMzk7dCBhZHZlcnRpc2UgU1RBTExfU0xPVCogZXZlbnRzLgogCSAqLwotCXZhbCAmYW1wOz0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8Ci0JCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8Ci0JCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTsKJiM0MzsJaWYgKCFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQomIzQzOwkJdmFsICZhbXA7PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHwKJiM0MzsJCQkgQklUX1VMTChBUk1WOF9QTVVWM19QRVJGQ1RSX1NUQUxMX1NMT1RfRlJPTlRFTkQgLSAzMikgfAomIzQzOwkJCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTsKJiM0MzsKIAlyZXR1cm4gdmFsOwogfQogCiB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKQogewotCXN0cnVjdCBhcm1fcG11ICpjcHVfcG11ID0gdmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmFybV9wbXU7CiAJdW5zaWduZWQgbG9uZyAqYm1hcCA9IHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyOwogCXU2NCB2YWwsIG1hc2sgPSAwOwogCWludCBiYXNlLCBpLCBucl9ldmVudHM7CiAKIAlpZiAoIXBtY2VpZDEpIHsKLQkJdmFsID0gY29tcHV0ZV9wbWNlaWQwKGNwdV9wbXUpOwomIzQzOwkJdmFsID0gY29tcHV0ZV9wbWNlaWQwKHZjcHUpOwogCQliYXNlID0gMDsKIAl9IGVsc2UgewotCQl2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7CiYjNDM7CQl2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7CiAJCWJhc2UgPSAzMjsKIAl9CiAKQEAgLTkzOCw2ICYjNDM7OTM5LDEwIEBAIGludCBrdm1fYXJtX3BtdV92M19lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwkvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi8KJiM0MzsJaWYgKCF2Y3B1LSZndDtrdm0tJmd0O2FyY2guYXJtX3BtdSkKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CiAJaWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtJmd0O2t2bSkpIHsKIAkJaW50IHJldDsKIApAQCAtMTAwOCw2ICYjNDM7MTAxMywxNCBAQCB1OCBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKHN0cnVjdCBrdm0gKmt2bSkKIHsKIAlzdHJ1Y3QgYXJtX3BtdSAqYXJtX3BtdSA9IGt2bS0mZ3Q7YXJjaC5hcm1fcG11OwogCiYjNDM7CS8qCiYjNDM7CSAqIFVuZGVyIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vIFBNVSBleGlzdHMgdW50aWwgdXNlcnNwYWNlIHNldHMKJiM0MzsJICogb25lLCBzbyB0aGlzIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBhcm1fcG11IGlzIHNldC4gUmVwb3J0IG5vCiYjNDM7CSAqIGNvdW50ZXJzIGluIHRoYXQgY2FzZS4KJiM0MzsJICovCiYjNDM7CWlmICghYXJtX3BtdSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCS8qCiAJICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55CiAJICogZXZlbnQsIHRob3VnaCB0aGUgc2FtZSBtYXkgbm90IGJlIHRydWUgb2Ygbm9uLVBNVXYzIGhhcmR3YXJlLgpAQCAtMTA0OSw3ICYjNDM7MTA2Miw4IEBAIHN0YXRpYyB2b2lkIGt2bV9hcm1fc2V0X3BtdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBhcm1fcG11ICphcm1fcG11KQogfQogCiAvKioKLSAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS4KJiM0MzsgKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQgYW5kIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vdAomIzQzOyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS4KICAqIEBrdm06IFRoZSBrdm0gcG9pbnRlcgogICoKICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzCkBAIC0xMDkyLDYgJiM0MzsxMTA2LDE3IEBAIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpCiAKIAkJCWt2bV9hcm1fc2V0X3BtdShrdm0sIGFybV9wbXUpOwogCQkJY3B1bWFza19jb3B5KGt2bS0mZ3Q7YXJjaC5zdXBwb3J0ZWRfY3B1cywgJmFtcDthcm1fcG11LSZndDtzdXBwb3J0ZWRfY3B1cyk7CiYjNDM7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLAomIzQzOwkJCSAqIFBNTUlSX0VMMS5TTE9UUyBpcyBkZXRlcm1pbmlzdGljIHRvIHRoZSBndWVzdC4KJiM0MzsJCQkgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQsIHNuYXBzaG90CiYjNDM7CQkJICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQomIzQzOwkJCQlrdm0tJmd0O2FyY2gucG1taXJfc2xvdHMgPQomIzQzOwkJCQkJRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywKJiM0MzsJCQkJCQkgIGFybV9wbXUtJmd0O3JlZ19wbW1pcik7CiAJCQlyZXQgPSAwOwogCQkJYnJlYWs7CiAJCX0KQEAgLTExNzgsNiAmIzQzOzEyMDMsOSBAQCBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKQogCQlpZiAoa3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pKQogCQkJcmV0dXJuIC1FQlVTWTsKIAomIzQzOwkJaWYgKCFrdm0tJmd0O2FyY2guYXJtX3BtdSkKJiM0MzsJCQlyZXR1cm4gLUVOWElPOwomIzQzOwogCQlpZiAoIWt2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyKSB7CiAJCQlrdm0tJmd0O2FyY2gucG11X2ZpbHRlciA9IGJpdG1hcF9hbGxvYyhucl9ldmVudHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCQlpZiAoIWt2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKaW5kZXggNWQ1YzU3OWQ0NTc5MDIuLmU5M2YxMWI5MDgxM2IwIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKQEAgLTEzNjcsNiAmIzQzOzEzNjcsNjQgQEAgc3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiYjNDM7CQkJIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpCiYjNDM7ewomIzQzOwlpZiAocC0mZ3Q7aXNfd3JpdGUpCiYjNDM7CQlyZXR1cm4gd3JpdGVfdG9fcmVhZF9vbmx5KHZjcHUsIHAsIHIpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQgYW5kIFBNVSB3YXMgZXhwbGljaXRseQomIzQzOwkgKiBzZWxlY3RlZCwgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgU0xPVFMgdmFsdWUgd2FzIHJlYWQgaW50byB0aGlzCiYjNDM7CSAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouCiYjNDM7CSAqLwomIzQzOwlwLSZndDtyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnBtbWlyX3Nsb3RzKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqciwKJiM0MzsJCSAgICAgdTY0ICp2YWwpCiYjNDM7ewomIzQzOwkqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsCiYjNDM7CQkgICAgIHU2NCB2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LSZndDtrdm07CiYjNDM7CXU4IHNsb3RzID0gRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywgdmFsKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogT25seSB0aGUgU0xPVFMgZmllbGQgaXMgZXhwb3NlZCAoZ2V0X3BtbWlyIHJldHVybnMganVzdCB0aGF0IGZpZWxkKSwKJiM0MzsJICogc28gcmVqZWN0IGEgd3JpdGUgdGhhdCBzZXRzIGFueSBvdGhlciBiaXQgcmF0aGVyIHRoYW4gc2lsZW50bHkKJiM0MzsJICogbWFza2luZyBpdC4KJiM0MzsJICovCiYjNDM7CWlmICh2YWwgJmFtcDsgfih1NjQpQVJNVjhfUE1VX1NMT1RTKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2t2bS0mZ3Q7YXJjaC5jb25maWdfbG9jayk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE9uY2UgdGhlIFZNIGhhcyBzdGFydGVkIFBNTUlSX0VMMSBpcyBpbW11dGFibGUuIFJlamVjdCBhbnkgd3JpdGUKJiM0MzsJICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS4KJiM0MzsJICovCiYjNDM7CWlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpCiYjNDM7CQlyZXR1cm4gc2xvdHMgPT0ga3ZtLSZndDthcmNoLnBtbWlyX3Nsb3RzID8gMCA6IC1FQlVTWTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKJiM0MzsJICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoCiYjNDM7CSAqIHRoZSBjdXJyZW50IHZhbHVlLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFzbG90cykKJiM0MzsJCWt2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cyA9IDA7CiYjNDM7CWVsc2UgaWYgKHNsb3RzICE9IGt2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1vdnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiAJCQkgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcikKIHsKQEAgLTE0NDQsNiAmIzQzOzE1MDIsNyBAQCBzdGF0aWMgaW50IHNldF9wbWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqciwKIAkgKi8KIAlpZiAoIWt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSAmYW1wOyZhbXA7CiAJICAgICF2Y3B1X2hhc19udih2Y3B1KQkgICAgICAmYW1wOyZhbXA7CiYjNDM7CSAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSAmYW1wOyZhbXA7CiAJICAgIG5ld19uICZsdDs9IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoa3ZtKSkKIAkJa3ZtLSZndDthcmNoLm5yX3BtdV9jb3VudGVycyA9IG5ld19uOwogCkBAIC0zNDQ4LDcgJiM0MzszNTA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2Mgc3lzX3JlZ19kZXNjc1tdID0gewogCXsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLAogCSAgLmFjY2VzcyA9IGFjY2Vzc19wbWludGVuLCAucmVnID0gUE1JTlRFTlNFVF9FTDEsCiAJICAuZ2V0X3VzZXIgPSBnZXRfcG1yZWcsIC5zZXRfdXNlciA9IHNldF9wbXJlZyB9LAotCXsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sCiYjNDM7CXsgUE1VX1NZU19SRUcoUE1NSVJfRUwxKSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciwgLnJlc2V0ID0gTlVMTCwKJiM0MzsJICAuZ2V0X3VzZXIgPSBnZXRfcG1taXIsIC5zZXRfdXNlciA9IHNldF9wbW1pciB9LAogCiAJeyBTWVNfREVTQyhTWVNfTUFJUl9FTDEpLCBhY2Nlc3Nfdm1fcmVnLCByZXNldF91bmtub3duLCBNQUlSX0VMMSB9LAogCXsgU1lTX0RFU0MoU1lTX1BJUkUwX0VMMSksIE5VTEwsIHJlc2V0X3Vua25vd24sIFBJUkUwX0VMMSwKQEAgLTQ1OTMsNyAmIzQzOzQ2NTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyBjcDE1X3JlZ3NbXSA9IHsKIAl7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sCiAJeyBDUDE1X1BNVV9TWVNfUkVHKEhJLCAgICAgMCwgOSwgMTQsIDUpLCAuYWNjZXNzID0gYWNjZXNzX3BtY2VpZCB9LAogCS8qIFBNTUlSICovCi0JeyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSwKJiM0MzsJeyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyIH0sCiAKIAkvKiBQUlJSL01BSVIwICovCiAJeyBBQTMyKExPKSwgT3AxKCAwKSwgQ1JuKDEwKSwgQ1JtKCAyKSwgT3AyKCAwKSwgYWNjZXNzX3ZtX3JlZywgTlVMTCwgTUFJUl9FTDEgfSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaCBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaAppbmRleCBiNWU1OTQyMjA0ZmM2OS4uNmI0YTExOGQxN2NhOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2t2bS9hcm1fcG11LmgKQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3luY19lbDAodm9pZCk7CiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSkJCQkJCVwKIAkodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzKSkKIAomIzQzOyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KQkJCQlcCiYjNDM7CSh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUKSkKJiM0MzsKIC8qCiAgKiBVcGRhdGVzIHRoZSB2Y3B1JiMzOTtzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LgogICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGV2ZXJ5IHZjcHUgcnVuIGFmdGVyIGRpc2FibGluZyBpbnRlcnJ1cHRzLCB0byBlbnN1cmUKQEAgLTE2MCw2ICYjNDM7MTYzLDcgQEAgc3RhdGljIGlubGluZSB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKQogfQogCiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSkJCSh7IGZhbHNlOyB9KQomIzQzOyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KQkoeyBmYWxzZTsgfSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fcG11X3VwZGF0ZV92Y3B1X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3RvcmVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQogc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCmluZGV4IDQxOTAxMTA5N2ZhOGUyLi45ZmM4ZGZkZmQ2NWZmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApAQCAtOTk3LDYgJiM0Mzs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgewogI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDkKJiM0MzsjZGVmaW5lIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QgMjUwCiAKIHN0cnVjdCBrdm1faXJxX3JvdXRpbmdfaXJxY2hpcCB7CiAJX191MzIgaXJxY2hpcDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYwppbmRleCAwYTNhOTRjNGNjYTE2Zi4uY2ZhOTk5NzlkNTdjOGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmMKQEAgLTUzMiw2ICYjNDM7NTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0gewogc3RhdGljIF9fdTY0IHBtdV9yZWdzW10gPSB7CiAJQVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksCS8qIFBNSU5URU5TRVRfRUwxICovCiAJQVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksCS8qIFBNSU5URU5DTFJfRUwxICovCiYjNDM7CUFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLAkvKiBQTU1JUl9FTDEgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSwJLyogUE1DUl9FTDAgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSwJLyogUE1DTlRFTlNFVF9FTDAgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSwJLyogUE1DTlRFTkNMUl9FTDAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXcgS1ZNIHZDUFUgRmVhdHVyZSoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggcHJvcG9zaW5nIGEgbmV3IEtWTSB2Q1BVIGZlYXR1cmUgZm9yIEFSTTY0LCBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgLiBJdCBzb3VuZHMgbGlrZSBpdCBlbmZvcmNlcyBzdHJpY3RlciBiZWhhdmlvciBmb3IgdGhlIFBNVXYzIFVBUEksIHNwZWNpZmljYWxseSBhcm91bmQgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdC4gVGhpcyBpbnZvbHZlcyBleHBsaWNpdCBzZWxlY3Rpb24gb2YgYSBQTVUgaW1wbGVtZW50YXRpb24gYmVmb3JlIGluaXRpYWxpemF0aW9uIG9yIGZpbHRlciBjb25maWd1cmF0aW9uLCBhbmQgdGFraW5nIGBQTU1JUl9FTDEuU0xPVFNgIGludG8gYWNjb3VudCBpZiBGRUFUX1BNVXYzcDQgaXMgc3VwcG9ydGVkLiBUaGUgcGF0Y2ggYWxzbyBpZ25vcmVzIHdyaXRlcyB0byBgUE1DUl9FTDAuTmAgdmlhIGBLVk1fU0VUX09ORV9SRUdgLCB3aGljaCBzZWVtcyBsaWtlIGEgc2Vuc2libGUgaGFyZGVuaW5nIG1lYXN1cmUuCgpJJiMzOTttIHNlZWluZyB0aGF0IHRoaXMgdG91Y2hlcyBxdWl0ZSBhIGZldyBrZXkgcGFydHMgb2YgdGhlIGNvcmUgS1ZNIEFSTTY0IFBNVSBlbXVsYXRpb24sIG5hbWVseSBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBhbmQgYGdldF9wbW1pcmAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggZnV6emluZz8gQ29uc2lkZXJpbmcgdGhhdCBpdCYjMzk7cyBhIG5ldyBLVk0gZmVhdHVyZSB0aGF0IGNhbiBiZSBlbmFibGVkIHZpYSBgS1ZNX0VOQUJMRV9DQVBgIG9yIGBLVk1fQVJNX1ZDUFVfSU5JVGAsIGFic29sdXRlbHksIHllcy4gQW55IG5ldyBmZWF0dXJlIGlzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIGNoYW5nZXMgbGlzdGVkIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBBUk02NCBLVk0sIHNvIEkmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb24gdGhhdC4KClRpbWUgdG8gbG9vayBmb3IgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBgQ09ORklHX0tWTWAgaXMgb2J2aW91c2x5IGEgcHJlcmVxdWlzaXRlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBmZWF0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGxvb2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZWxldmFudC4gSSBzaG91bGQgY2hlY2sgdGhyb3VnaCBgYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgZmluZXIgZGV0YWlscyBhcmUgaW1wbGVtZW50ZWQuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGdpdmUgbWUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0hXX1BFUkZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICYjNDM7PSBhcm0ubyBtbXUubyBtbWlvLm8gcHNjaS5vIGh5cGVyY2FsbHMubyBwdnRpbWUubyBcXFxuLS1cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI4LVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX0hXX1BFUkZfRVZFTlRTKSAgJiM0Mzs9IHBtdS1lbXVsLm8gcG11Lm9cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTMwLWt2bS0kKENPTkZJR19BUk02NF9QVFJfQVVUSCkgICYjNDM7PSBwYXV0aC5vXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM9MTI5PXN0YXRpYyB2b2lkIF9faHlwX3ZnaWNfcmVzdG9yZV9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ1LSAqL1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MTQ2OiNpZmRlZiBDT05GSUdfSFdfUEVSRl9FVkVOVFNcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTE0Ny1zdGF0aWMgYm9vbCBfX3BtdV9zd2l0Y2hfdG9fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTI3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgRGVwZW5kZW5jeSBvZiBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIENvbXBvbmVudHMqKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgSSBuZWVkIGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIGBwbXUtZW11bC5vYCBhbmQgYHBtdS5vYC4gVGhhdCYjMzk7cyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgYnV0IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIGhlcmUuIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZmlndXJlIG91dCBob3cgYENPTkZJR19IV19QRVJGX0VWRU5UU2AgaXMgaGFuZGxlZC4gSXMgdGhpcyBhIGRlZmF1bHQgb3B0aW9uLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgc3BlY2lmaWMga2VybmVsIGZlYXR1cmUgb3IgaGFyZHdhcmUgc3VwcG9ydD8gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsLiBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhlc2UgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjb21wb25lbnRzIHdpbGwgYWN0dWFsbHkgZ2V0IGJ1aWx0LiBUaGUgZ29hbCBpcyB0byBlaXRoZXIgdmVyaWZ5IHRoaXMgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9yIGlzb2xhdGUgdGhlIHZhcmlhYmxlIGRlcGVuZGVuY2llcyBhdCBwbGF5LCBzbyB0aGF0IEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBteSBvd24gdGFyZ2V0IGJ1aWxkcyBhbmQgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhXX1BFUkZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9LY29uZmlnPTE2MDY9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA5LVxuYXJjaC9hcm02NC9LY29uZmlnOjE2MTA6Y29uZmlnIEhXX1BFUkZfRVZFTlRTXG5hcmNoL2FybTY0L0tjb25maWctMTYxMS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFSTTY0IEtWTSBhbmQgQm9vbGVhbiBEZWZpbml0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGFuIGBhcm02NGAgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIEtWTS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZGVmX2Jvb2wgeWAsIHdoaWNoIEkmIzM5O20gdGFraW5nIHRvIG1lYW4gYSBib29sZWFuIGRlZmluaXRpb24gc2V0IHRvICYjMzQ7eWVzJiMzNDsgb3IgcG90ZW50aWFsbHkgZW5hYmxlZC4gVGhpcyBzdWdnZXN0cyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgbGlrZWx5IGltcGFjdGluZyBzb21lIGFzcGVjdCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgLiBUaGlzIGZpbGUgc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzeXN0ZW0gcmVnaXN0ZXJzIHdpdGhpbiB0aGUgQVJNNjQgS1ZNIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgZnVydGhlciBkZWZpbml0aW9ucywgY29uZGl0aW9uYWwgYmxvY2tzLCBvciBtYWNyb3MgdGllZCB0byB0aGlzIGJvb2xlYW4uIEkmIzM5O20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgYm9vbGVhbiBzZXR0aW5nIGluIHRlcm1zIG9mIHJlZ2lzdGVyIGFjY2VzcyBvciB2aXJ0dWFsaXphdGlvbiBiZWhhdmlvci4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBgZGVmX2Jvb2wgeWAgdmFsdWUgaXMgdXNlZCwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIEtWTSBmZWF0dXJlcywgYW5kIGl0cyBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3lzdGVtJiMzOTtzIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eSBwcm9maWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQWJzZW5jZSBvZiBDb25maWd1cmF0aW9uIERpcmVjdGl2ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzeXNfcmVncy5jYCwgYW5kIEkmIzM5O20gYSBiaXQgdGhyb3duLiBJIGV4cGVjdGVkIHRvIGZpbmQgc29tZSBgQ09ORklHX2AgZGlyZWN0aXZlcyBpbiB0aGlzIGZpbGUuIEJ1dCB3YWl0LCB0aGVyZSBhcmVuJiMzOTt0IGFueT8gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIGV4cGVjdGVkIHBhdHRlcm4uIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIGluIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbGFjayBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gb3JkZXIgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGlzIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzNAoJCQkJCQkJb3V0cHV0OiAxMjMKCQkJCQkJCXRob3VnaHRzOiA0NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIEtWTSBwYXRjaC4gVGhlIGNlbnRyYWwgZWxlbWVudCwgYXMgZXhwZWN0ZWQsIGlzIGBDT05GSUdfS1ZNYC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB0aGlzIHBhdGNoIHRvdWNoZXMuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGhlc2UgZnVuY3Rpb25zOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYGt2bV9wbXVfZ2V0X3BtY2VpZGAsIGBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzYCwgYW5kIGBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdWAuIE9rYXksIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdC4KCk5vdywgYSBxdWljayBhc3Nlc3NtZW50IG9mIGFjY2Vzc2liaWxpdHkgYW5kIHBvdGVudGlhbCBob3RzcG90cyBpcyBpbiBvcmRlci4gSXQgc2VlbXMgYGt2bV9hcm1fcG11X3YzX2luaXRgLCBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAsIGFuZCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgIGFyZSB0cmlnZ2VyZWQgYnkgaW9jdGxzIOKAkyBzcGVjaWZpY2FsbHksIGBLVk1fU0VUX0RFVklDRV9BVFRSYC4gVGhhdCYjMzk7cyByZWFzb25hYmxlLCBpbXBseWluZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuIGBzZXRfcG1jcmAsIGBhY2Nlc3NfcG1taXJgLCBgc2V0X3BtbWlyYCwgYW5kIGBnZXRfcG1taXJgIGFyZSBsaW5rZWQgdG8gZWl0aGVyIEtWTSByZWdpc3RlciBhY2Nlc3MgKGBLVk1fU0VUX09ORV9SRUdgL2BLVk1fR0VUX09ORV9SRUdgKSBvciBndWVzdCB0cmFwcyDigJMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gaG9zdCBhbmQgZ3Vlc3QuIGBrdm1fcG11X2dldF9wbWNlaWRgIGlzIGNsZWFybHkgaGFuZGxpbmcgZ3Vlc3QgYWNjZXNzIHRvIHRoZSBQTUNFSUQgcmVnaXN0ZXIsIGFuZCBga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVyc2AgaXMgYSBoZWxwZXIgZnVuY3Rpb24sIHdoaWNoIG1heSBiZSBjYWxsZWQgZnJvbSBvdGhlciBmdW5jdGlvbnMuCgpMZXQmIzM5O3MgY29uc29saWRhdGUgdGhlIGNvcmUgc3ltYm9sczogYGt2bV9hcm1fcG11X3YzX2luaXRgLCBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAsIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAsIGBzZXRfcG1jcmAsIGBhY2Nlc3NfcG1taXJgLCBgc2V0X3BtbWlyYCwgYGdldF9wbW1pcmAsIGFuZCBga3ZtX3BtdV9nZXRfcG1jZWlkYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIGtlZXAgYSBjbG9zZSBleWUgb24uCgpJIHNob3VsZCB2ZXJpZnkgdGhlIG5hbWVzIGluIHRoZSBzb3VyY2UgY29kZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHxib29sfHU4fHU2NHx2b2lkKSAoa3ZtX2FybV9wbXVfdjNfaW5pdHxrdm1fYXJtX3BtdV92M19zZXRfcG11fGt2bV9hcm1fcG11X3YzX3NldF9hdHRyfHNldF9wbWNyfGFjY2Vzc19wbW1pcnxzZXRfcG1taXJ8Z2V0X3BtbWlyfGt2bV9wbXVfZ2V0X3BtY2VpZCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz04NTI9c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtODY3LVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo4Njg6dTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtODY5LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jPTkxMj1pbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTkzOS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6OTQwOnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTk0MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0xMDc3PWludCBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMDg3LVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzoxMDg4OnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTEwODkte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9MTEyOT1zdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9ucl9jb3VudGVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBuKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtMTE0Mi1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6MTE0MzppbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMTQ0LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTEzNDY9c3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4tLVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xMzY5LVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzcwOnN0YXRpYyBib29sIGFjY2Vzc19wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM3MS1cdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODQtXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jOjEzODU6c3RhdGljIGludCBnZXRfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xMzg2LVx0XHQgICAgIHU2NCAqdmFsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5MS1cbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmM6MTM5MjpzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzOTMtXHRcdCAgICAgdTY0IHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTE0ODM9c3RhdGljIGludCBnZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4tLVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xNDg5LVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxNDkwOnN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xNDkxLVx0XHQgICAgdTY0IHZhbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNTEKCQkJCQkJCW91dHB1dDogMjMwCgkJCQkJCQl0aG91Z2h0czogNTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEtWTSBBUk02NCBQTVV2MyBFbXVsYXRpb24gQ29kZSBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHNwb3Qgb246IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGBnZXRfcG1taXJgLCBhbmQgYGt2bV9wbXVfZ2V0X3BtY2VpZGAg4oCTIHRoZXNlIGFyZSBhbGwgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgUE1VdjMgZW11bGF0aW9uLgoKV2FpdCwgbG9va2luZyBjbG9zZXIgYXQgdGhlIGNhbGwgZ3JhcGgsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCBiZWluZyBzdGF0aWMgYnV0IGNhbGxlZCBmcm9tIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAgaXMgaW50ZXJlc3RpbmcuIEFuZCB0aGVuIGBzZXRfcG1jcmAgaXMgc3RhdGljIHRvbywgY2FsbGVkIGZyb20gYHNldF9wbXJlZ2AgLSB0aGF0IHdpbGwgYmUgZnVuIHRvIGV4cGxvcmUuIFNhbWUgZ29lcyBmb3IgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBhbmQgYGdldF9wbW1pcmAgLSBzdGF0aWMsIGJ1dCB1c2VkIHdpdGhpbiB0aGUgYHN5c19yZWdfZGVzY3NgIHRhYmxlLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19LVk1gIGlzIHRoZSBwcmltYXJ5IGRlcGVuZGVuY3kuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIG1vZGlmaWVkIGZpbGVzIChgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY2AsIGFuZCBgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY2ApIGNvbmZpcm1zIHRoYXQgYENPTkZJR19LVk1gIHB1bGxzIGV2ZXJ5dGhpbmcgaW4uIEFuZCBgcG11LWVtdWwuY2AgYWRkaXRpb25hbGx5IGRlcGVuZHMgb24gYENPTkZJR19IV19QRVJGX0VWRU5UU2AsIHdoaWNoIGlzIHN0YXRpY2FsbHkgZW5hYmxlZCBmb3IgQVJNNjQuIFNvLCB5ZXMsIGBDT05GSUdfS1ZNYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYSBmdXp6aW5nIGJ1aWxkLiBFeGNlbGxlbnQuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIGZlYXR1cmUgZm9yIHN0cmljdCBQTVV2MyBVQVBJIGNvbXBsaWFuY2UuIFRoYXQgbWVhbnMgdGhpcyBpcyB0b3VjaGluZyBjcml0aWNhbCBlbXVsYXRpb24gbG9naWMg4oCTIGluaXRpYWxpemF0aW9uLCBhdHRyaWJ1dGUgc2V0dGluZywgYW5kIHN5c3RlbSByZWdpc3RlciBoYW5kbGluZyAoUE1NSVIsIFBNQ1IpLiBBbmQgdGhlIGtpY2tlcjogdGhpcyBsb2dpYyBpcyBkaXJlY3RseSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbi4gVGhpcyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSBjYW4gYWJzb2x1dGVseSBzZWUgaG93IGZ1enppbmcgY2FuIHJldmVhbCBpbnRlcmVzdGluZyBidWdzIGhlcmUuCgpTbywgdG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKipGb2N1cyBTeW1ib2xzOioqCgoqICAgYGt2bV9hcm1fcG11X3YzX2luaXRgCiogICBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAKKiAgIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAKKiAgIGBzZXRfcG1jcmAKKiAgIGBhY2Nlc3NfcG1taXJgCiogICBgc2V0X3BtbWlyYAoqICAgYGdldF9wbW1pcmAKKiAgIGBrdm1fcG11X2dldF9wbWNlaWRgCgoqKkNvbmZpZ3VyYXRpb246KioKCiogICBgS1ZNYAoKSSYjMzk7bSByZWFkeSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJtX3BtdV92M19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX3NldF9wbXUmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7c2V0X3BtY3ImIzM0OywKICAgICYjMzQ7YWNjZXNzX3BtbWlyJiMzNDssCiAgICAmIzM0O3NldF9wbW1pciYjMzQ7LAogICAgJiMzNDtnZXRfcG1taXImIzM0OywKICAgICYjMzQ7a3ZtX3BtdV9nZXRfcG1jZWlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS1ZNIHZDUFUgZmVhdHVyZSBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIHdoaWNoIGVuZm9yY2VzIHN0cmljdCBQTVV2MyBVQVBJIGJlaGF2aW9yLiBJdCBtb2RpZmllcyBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiBsb2dpYywgaW5jbHVkaW5nIFBNVSBpbml0aWFsaXphdGlvbiwgc2V0dGluZyBQTVUgYXR0cmlidXRlcywgYW5kIGhhbmRsaW5nIFBNVSBzeXN0ZW0gcmVnaXN0ZXJzIChQTU1JUiwgUE1DUikuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjA4LjAzNzA5NTY2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTc2NTc0MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcm1fcG11X3YzX2luaXRcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9wbXVcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9hdHRyXCIsXG4gICAgXCJzZXRfcG1jclwiLFxuICAgIFwiYWNjZXNzX3BtbWlyXCIsXG4gICAgXCJzZXRfcG1taXJcIixcbiAgICBcImdldF9wbW1pclwiLFxuICAgIFwia3ZtX3BtdV9nZXRfcG1jZWlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MDguMDM3MTAxMzE4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkxMDc2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZGNhODBjNDBmYmVkMjc1Y2Q2MDM5NGVmOWE2NzBkYjkxYmMxMjc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDIxOjMzOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcXG5AQCAtMzUxNSw2ICszNTE1LDE3IEBAIFBvc3NpYmxlIGZlYXR1cmVzOlxcbiBcXHQgIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUFNDSV8wXzIuXFxuIFxcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WMzogRW11bGF0ZSBQTVV2MyBmb3IgdGhlIENQVS5cXG4gXFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WMy5cXG4rXFx0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVDogRW5hYmxlIHN0cmljdCBQTVV2MyBVQVBJLlxcbitcXHQgIFJlcXVpcmVzIEtWTV9BUk1fVkNQVV9QTVVfVjMuIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVC5cXG4rXFx0ICBXaGVuIGVuYWJsZWQ6XFxuK1xcbitcXHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcXG4rXFx0ICAgICAgaW5pdGlhbGl6aW5nIHRoZSBQTVUgb3IgY29uZmlndXJpbmcgYSBQTVUgZXZlbnQgZmlsdGVyXFxuK1xcbitcXHQgICAgKiBJZiB0aGUgUE1VIGltcGxlbWVudHMgRkVBVF9QTVV2M3A0LCBQTU1JUl9FTDEuU0xPVFMgcHJvdmlkZXMgdGhlXFxuK1xcdCAgICAgIGhhcmR3YXJlIHZhbHVlIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uXFxuK1xcbitcXHQgICAgKiBXcml0ZXMgdG8gUE1DUl9FTDAuTiB2aWEgS1ZNX1NFVF9PTkVfUkVHIGFyZSBpZ25vcmVkXFxuIFxcbiBcXHQtIEtWTV9BUk1fVkNQVV9QVFJBVVRIX0FERFJFU1M6IEVuYWJsZXMgQWRkcmVzcyBQb2ludGVyIGF1dGhlbnRpY2F0aW9uXFxuIFxcdCAgZm9yIGFybTY0IG9ubHkuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdCBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxcbmluZGV4IDY2ZTcxNGYyZmNmYTdmLi5kZWI1YzUxYmMwMGM4NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcXG5AQCAtNTMsOCArNTMsOSBAQCBSZXR1cm5zOlxcbiBcXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcdCAtRUVYSVNUICBJbnRlcnJ1cHQgbnVtYmVyIGFscmVhZHkgdXNlZFxcbiBcXHQgLUVOT0RFViAgUE1VdjMgbm90IHN1cHBvcnRlZCBvciBHSUMgbm90IGluaXRpYWxpemVkXFxuLVxcdCAtRU5YSU8gICBQTVV2MyBub3Qgc3VwcG9ydGVkLCBtaXNzaW5nIFZDUFUgZmVhdHVyZSBvciBpbnRlcnJ1cHRcXG4tXFx0XFx0ICBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1IGd1ZXN0cywgb25seSlcXG4rXFx0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlLCBtaXNzaW5nXFxuKyAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIFBNVSwgb3IgaW50ZXJydXB0IG51bWJlciBub3Qgc2V0IChub24tR0lDdjVcXG4rICAgICAgICAgICAgICAgICAgZ3Vlc3RzLCBvbmx5KVxcbiBcXHQgLUVCVVNZICAgUE1VdjMgYWxyZWFkeSBpbml0aWFsaXplZFxcbiBcXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcbkBAIC02Miw2ICs2Myw5IEBAIFJlcXVlc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQTVV2My4gIElmIHVzaW5nIHRoZSBQTVV2MyB3aXRoIGFuIGluLWtlcm5lbFxcbiB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBpbi1rZXJuZWxcXG4gaXJxY2hpcC5cXG4gXFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXFxuK2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS5cXG4rXFxuIDEuMyBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfRklMVEVSXFxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbkBAIC0xMDgsNiArMTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XFxuIGlzbid0IHN0cmljdGx5IHNwZWFraW5nIGFuIGV2ZW50LiBGaWx0ZXJpbmcgdGhlIGN5Y2xlIGNvdW50ZXIgaXMgcG9zc2libGVcXG4gdXNpbmcgZXZlbnQgMHgxMSAoQ1BVX0NZQ0xFUykuXFxuIFxcbitXaGVuIHRoZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCB2Q1BVIGZlYXR1cmUgaXMgZW5hYmxlZCB0aGlzIG11c3QgYmUgZG9uZVxcbithZnRlciBzZWxlY3RpbmcgYSBoYXJkd2FyZSBQTVUuXFxuK1xcbiAxLjQgQVRUUklCVVRFOiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVVcXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCBiYWUyYzRmOTJlZjVjMC4uMzlmN2ZjNzQwZDA3OWIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTM5LDcgKzM5LDcgQEBcXG4gXFxuICNkZWZpbmUgS1ZNX01BWF9WQ1BVUyBWR0lDX1YzX01BWF9DUFVTXFxuIFxcbi0jZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyA5XFxuKyNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDEwXFxuICNkZWZpbmUgS1ZNX1ZDUFVfVkFMSURfRkVBVFVSRVNcXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxcbiBcXG4gI2RlZmluZSBLVk1fUkVRX1NMRUVQIFxcXFxcXG5AQCAtMzg3LDYgKzM4Nyw5IEBAIHN0cnVjdCBrdm1fYXJjaCB7XFxuIFxcdC8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi9cXG4gXFx0dTggbnJfcG11X2NvdW50ZXJzO1xcbiBcXG4rXFx0LyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqL1xcbitcXHR1OCBwbW1pcl9zbG90cztcXG4rXFxuIFxcdC8qIEh5cGVyY2FsbCBmZWF0dXJlcyBmaXJtd2FyZSByZWdpc3RlcnMnIGRlc2NyaXB0b3IgKi9cXG4gXFx0c3RydWN0IGt2bV9zbWNjY19mZWF0dXJlcyBzbWNjY19mZWF0O1xcbiBcXHRzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxcbmluZGV4IDFjMTNiZmEyZDM4YWFkLi4wMTllNWUzZDg5MmU2ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5AQCAtMTA2LDYgKzEwNiw3IEBAIHN0cnVjdCBrdm1fcmVncyB7XFxuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1xcdDYgLyogVkNQVSB1c2VzIGdlbmVyaWMgYXV0aGVudGljYXRpb24gKi9cXG4gI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMlxcdFxcdDcgLyogU3VwcG9ydCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKi9cXG4gI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMl9FMkgwXFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXFxuKyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RcXHQ5IC8qIE5vIGRlZmF1bHQgUE1VIGNyZWF0aW9uICovXFxuIFxcbiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7XFxuIFxcdF9fdTMyIHRhcmdldDtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbmluZGV4IDUwYWRmZmY3NWJlODJlLi43ZGJlZmRkODQ2YWE3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuQEAgLTQ1Miw2ICs0NTIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxcbiBcXHRcXHRyID0gZ2V0X251bV93cnBzKCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEtWTV9DQVBfQVJNX1BNVV9WMzpcXG4rXFx0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxcbiBcXHRcXHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEtWTV9DQVBfQVJNX0lOSkVDVF9TRVJST1JfRVNSOlxcbkBAIC0xNTYzLDggKzE1NjQsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc3lzdGVtX3N1cHBvcnRlZF92Y3B1X2ZlYXR1cmVzKHZvaWQpXFxuIFxcdGlmICghY3B1c19oYXZlX2ZpbmFsX2NhcChBUk02NF9IQVNfMzJCSVRfRUwxKSlcXG4gXFx0XFx0Y2xlYXJfYml0KEtWTV9BUk1fVkNQVV9FTDFfMzJCSVQsIFxcdTAwMjZmZWF0dXJlcyk7XFxuIFxcbi1cXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKVxcbitcXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKSB7XFxuIFxcdFxcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcXHUwMDI2ZmVhdHVyZXMpO1xcbitcXHRcXHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFxcdTAwMjZmZWF0dXJlcyk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKVxcbiBcXHRcXHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1NWRSwgXFx1MDAyNmZlYXR1cmVzKTtcXG5AQCAtMTYwNSw2ICsxNjA4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfaW5pdF9jaGVja19mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdCAgICB0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUFRSQVVUSF9HRU5FUklDLCBcXHUwMDI2ZmVhdHVyZXMpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdC8qIFN0cmljdCBQTVV2MyBVQVBJIHJlcXVpcmVzIFBNVXYzLiAqL1xcbitcXHRpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFxcdTAwMjZmZWF0dXJlcykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcXHUwMDI2ZmVhdHVyZXMpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXFx1MDAyNmZlYXR1cmVzKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNjM0LDEwICsxNjQyLDEzIEBAIHN0YXRpYyBpbnQga3ZtX3NldHVwX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0XFxuLVxcdCAqIHlldCwgc2V0IHRoZSBkZWZhdWx0IG9uZS5cXG4rXFx0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcXG4rXFx0ICogdGhlIGRlZmF1bHQgb25lLiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQsIG5vIGRlZmF1bHRcXG4rXFx0ICogUE1VIGlzIGNyZWF0ZWQsIGFuZCB1c2Vyc3BhY2UgbXVzdCBzZWxlY3QgYSBQTVUgdmlhXFxuK1xcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cXG4gXFx0ICovXFxuLVxcdGlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpIFxcdTAwMjZcXHUwMDI2ICFrdm0tXFx1MDAzZWFyY2guYXJtX3BtdSlcXG4rXFx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXFx1MDAyNlxcdTAwMjYgIWt2bS1cXHUwMDNlYXJjaC5hcm1fcG11IFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSlcXG4gXFx0XFx0cmV0ID0ga3ZtX2FybV9zZXRfZGVmYXVsdF9wbXUoa3ZtKTtcXG4gXFxuIFxcdC8qIFByZXBhcmUgZm9yIG5lc3RlZCBpZiByZXF1aXJlZCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xcbmluZGV4IDk4MzA1YmJmYzA5NWFiLi41YjFhZjdlMjE3NmZhZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xcbkBAIC04MzgsOSArODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcXG4gXFx0cmV0dXJuICgodTY0KWhpW3BtY2VpZDFdIFxcdTAwM2NcXHUwMDNjIDMyKSB8IGxvW3BtY2VpZDFdO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3QgYXJtX3BtdSAqcG11KVxcbitzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAwKTtcXG4rXFx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUsIDApO1xcbiBcXG4gXFx0LyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqL1xcbiBcXHR2YWwgfD0gQklUKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1dfSU5DUik7XFxuQEAgLTg0OSwzMiArODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXFxuIFxcdHJldHVybiB2YWw7XFxuIH1cXG4gXFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBhcm1fcG11ICpwbXUpXFxuK3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDEpO1xcbitcXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guYXJtX3BtdSwgMSk7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBEb24ndCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXFxuLVxcdCAqIGFzIFJBWlxcbitcXHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBub3Qgc2V0LCBQTU1JUl9FTDEgaXNcXG4rXFx0ICogdW5jb25kaXRpb25hbGx5IFJBWiwgc28gZG9uJ3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cXG4gXFx0ICovXFxuLVxcdHZhbCBcXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcXG4tXFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcXG4tXFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xcbitcXHRpZiAoIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXFxuK1xcdFxcdHZhbCBcXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcXG4rXFx0XFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcXG4rXFx0XFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xcbitcXG4gXFx0cmV0dXJuIHZhbDtcXG4gfVxcbiBcXG4gdTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcXG4ge1xcbi1cXHRzdHJ1Y3QgYXJtX3BtdSAqY3B1X3BtdSA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5hcm1fcG11O1xcbiBcXHR1bnNpZ25lZCBsb25nICpibWFwID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBtdV9maWx0ZXI7XFxuIFxcdHU2NCB2YWwsIG1hc2sgPSAwO1xcbiBcXHRpbnQgYmFzZSwgaSwgbnJfZXZlbnRzO1xcbiBcXG4gXFx0aWYgKCFwbWNlaWQxKSB7XFxuLVxcdFxcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMChjcHVfcG11KTtcXG4rXFx0XFx0dmFsID0gY29tcHV0ZV9wbWNlaWQwKHZjcHUpO1xcbiBcXHRcXHRiYXNlID0gMDtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0dmFsID0gY29tcHV0ZV9wbWNlaWQxKGNwdV9wbXUpO1xcbitcXHRcXHR2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7XFxuIFxcdFxcdGJhc2UgPSAzMjtcXG4gXFx0fVxcbiBcXG5AQCAtOTM4LDYgKzkzOSwxMCBAQCBpbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFxuIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4rXFx0LyogT25seSBwb3NzaWJsZSB3aGVuIHVzaW5nIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUICovXFxuK1xcdGlmICghdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUpXFxuK1xcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcbiBcXHRpZiAoaXJxY2hpcF9pbl9rZXJuZWwodmNwdS1cXHUwMDNla3ZtKSkge1xcbiBcXHRcXHRpbnQgcmV0O1xcbiBcXG5AQCAtMTAwOCw2ICsxMDEzLDE0IEBAIHU4IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdHN0cnVjdCBhcm1fcG11ICphcm1fcG11ID0ga3ZtLVxcdTAwM2VhcmNoLmFybV9wbXU7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBVbmRlciBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBubyBQTVUgZXhpc3RzIHVudGlsIHVzZXJzcGFjZSBzZXRzXFxuK1xcdCAqIG9uZSwgc28gdGhpcyBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgYXJtX3BtdSBpcyBzZXQuIFJlcG9ydCBub1xcbitcXHQgKiBjb3VudGVycyBpbiB0aGF0IGNhc2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWFybV9wbXUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0LypcXG4gXFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XFxuIFxcdCAqIGV2ZW50LCB0aG91Z2ggdGhlIHNhbWUgbWF5IG5vdCBiZSB0cnVlIG9mIG5vbi1QTVV2MyBoYXJkd2FyZS5cXG5AQCAtMTA0OSw3ICsxMDYyLDggQEAgc3RhdGljIHZvaWQga3ZtX2FybV9zZXRfcG11KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGFybV9wbXUgKmFybV9wbXUpXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQsIGdldCB0aGUgZGVmYXVsdCBvbmUuXFxuKyAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCBhbmQgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm90XFxuKyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cXG4gICogQGt2bTogVGhlIGt2bSBwb2ludGVyXFxuICAqXFxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXFxuQEAgLTEwOTIsNiArMTEwNiwxNyBAQCBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgcG11X2lkKVxcbiBcXG4gXFx0XFx0XFx0a3ZtX2FybV9zZXRfcG11KGt2bSwgYXJtX3BtdSk7XFxuIFxcdFxcdFxcdGNwdW1hc2tfY29weShrdm0tXFx1MDAzZWFyY2guc3VwcG9ydGVkX2NwdXMsIFxcdTAwMjZhcm1fcG11LVxcdTAwM2VzdXBwb3J0ZWRfY3B1cyk7XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLFxcbitcXHRcXHRcXHQgKiBQTU1JUl9FTDEuU0xPVFMgaXMgZGV0ZXJtaW5pc3RpYyB0byB0aGUgZ3Vlc3QuXFxuK1xcdFxcdFxcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcXG4rXFx0XFx0XFx0ICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXFxuK1xcdFxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA9XFxuK1xcdFxcdFxcdFxcdFxcdEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgYXJtX3BtdS1cXHUwMDNlcmVnX3BtbWlyKTtcXG4gXFx0XFx0XFx0cmV0ID0gMDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5AQCAtMTE3OCw2ICsxMjAzLDkgQEAgaW50IGt2bV9hcm1fcG11X3YzX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4gXFx0XFx0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gXFxuK1xcdFxcdGlmICgha3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcbiBcXHRcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5wbXVfZmlsdGVyKSB7XFxuIFxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wbXVfZmlsdGVyID0gYml0bWFwX2FsbG9jKG5yX2V2ZW50cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0XFx0aWYgKCFrdm0tXFx1MDAzZWFyY2gucG11X2ZpbHRlcilcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcXG5pbmRleCA1ZDVjNTc5ZDQ1NzkwMi4uZTkzZjExYjkwODEzYjAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcXG5AQCAtMTM2Nyw2ICsxMzY3LDY0IEBAIHN0YXRpYyBib29sIGFjY2Vzc19wbWludGVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYWNjZXNzX3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxcbitcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcXG4re1xcbitcXHRpZiAocC1cXHUwMDNlaXNfd3JpdGUpXFxuK1xcdFxcdHJldHVybiB3cml0ZV90b19yZWFkX29ubHkodmNwdSwgcCwgcik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQgYW5kIFBNVSB3YXMgZXhwbGljaXRseVxcbitcXHQgKiBzZWxlY3RlZCwgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgU0xPVFMgdmFsdWUgd2FzIHJlYWQgaW50byB0aGlzXFxuK1xcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXFxuK1xcdCAqL1xcbitcXHRwLVxcdTAwM2VyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcXG4rXFx0XFx0ICAgICB1NjQgKnZhbClcXG4re1xcbitcXHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5wbW1pcl9zbG90cyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXFxuK1xcdFxcdCAgICAgdTY0IHZhbClcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuK1xcdHU4IHNsb3RzID0gRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywgdmFsKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9ubHkgdGhlIFNMT1RTIGZpZWxkIGlzIGV4cG9zZWQgKGdldF9wbW1pciByZXR1cm5zIGp1c3QgdGhhdCBmaWVsZCksXFxuK1xcdCAqIHNvIHJlamVjdCBhIHdyaXRlIHRoYXQgc2V0cyBhbnkgb3RoZXIgYml0IHJhdGhlciB0aGFuIHNpbGVudGx5XFxuK1xcdCAqIG1hc2tpbmcgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAodmFsIFxcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmNvbmZpZ19sb2NrKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9uY2UgdGhlIFZNIGhhcyBzdGFydGVkIFBNTUlSX0VMMSBpcyBpbW11dGFibGUuIFJlamVjdCBhbnkgd3JpdGVcXG4rXFx0ICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS5cXG4rXFx0ICovXFxuK1xcdGlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpXFxuK1xcdFxcdHJldHVybiBzbG90cyA9PSBrdm0tXFx1MDAzZWFyY2gucG1taXJfc2xvdHMgPyAwIDogLUVCVVNZO1xcbitcXG4rXFx0LypcXG4rXFx0ICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGVcXG4rXFx0ICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoXFxuK1xcdCAqIHRoZSBjdXJyZW50IHZhbHVlLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFzbG90cylcXG4rXFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzID0gMDtcXG4rXFx0ZWxzZSBpZiAoc2xvdHMgIT0ga3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1vdnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXFxuIFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyKVxcbiB7XFxuQEAgLTE0NDQsNiArMTUwMiw3IEBAIHN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbiBcXHQgKi9cXG4gXFx0aWYgKCFrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF2Y3B1X2hhc19udih2Y3B1KVxcdCAgICAgIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgbmV3X24gXFx1MDAzYz0ga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVycyhrdm0pKVxcbiBcXHRcXHRrdm0tXFx1MDAzZWFyY2gubnJfcG11X2NvdW50ZXJzID0gbmV3X247XFxuIFxcbkBAIC0zNDQ4LDcgKzM1MDcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyBzeXNfcmVnX2Rlc2NzW10gPSB7XFxuIFxcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxcbiBcXHQgIC5hY2Nlc3MgPSBhY2Nlc3NfcG1pbnRlbiwgLnJlZyA9IFBNSU5URU5TRVRfRUwxLFxcbiBcXHQgIC5nZXRfdXNlciA9IGdldF9wbXJlZywgLnNldF91c2VyID0gc2V0X3BtcmVnIH0sXFxuLVxcdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXFxuK1xcdHsgUE1VX1NZU19SRUcoUE1NSVJfRUwxKSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciwgLnJlc2V0ID0gTlVMTCxcXG4rXFx0ICAuZ2V0X3VzZXIgPSBnZXRfcG1taXIsIC5zZXRfdXNlciA9IHNldF9wbW1pciB9LFxcbiBcXG4gXFx0eyBTWVNfREVTQyhTWVNfTUFJUl9FTDEpLCBhY2Nlc3Nfdm1fcmVnLCByZXNldF91bmtub3duLCBNQUlSX0VMMSB9LFxcbiBcXHR7IFNZU19ERVNDKFNZU19QSVJFMF9FTDEpLCBOVUxMLCByZXNldF91bmtub3duLCBQSVJFMF9FTDEsXFxuQEAgLTQ1OTMsNyArNDY1Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIGNwMTVfcmVnc1tdID0ge1xcbiBcXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXFxuIFxcdHsgQ1AxNV9QTVVfU1lTX1JFRyhISSwgICAgIDAsIDksIDE0LCA1KSwgLmFjY2VzcyA9IGFjY2Vzc19wbWNlaWQgfSxcXG4gXFx0LyogUE1NSVIgKi9cXG4tXFx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcXG4rXFx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyIH0sXFxuIFxcbiBcXHQvKiBQUlJSL01BSVIwICovXFxuIFxcdHsgQUEzMihMTyksIE9wMSggMCksIENSbigxMCksIENSbSggMiksIE9wMiggMCksIGFjY2Vzc192bV9yZWcsIE5VTEwsIE1BSVJfRUwxIH0sXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaCBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxcbmluZGV4IGI1ZTU5NDIyMDRmYzY5Li42YjRhMTE4ZDE3Y2E5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2t2bS9hcm1fcG11LmhcXG4rKysgYi9pbmNsdWRlL2t2bS9hcm1fcG11LmhcXG5AQCAtNzUsNiArNzUsOSBAQCB2b2lkIGt2bV92Y3B1X3BtdV9yZXN5bmNfZWwwKHZvaWQpO1xcbiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjMpKVxcbiBcXG4rI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCkpXFxuK1xcbiAvKlxcbiAgKiBVcGRhdGVzIHRoZSB2Y3B1J3MgdmlldyBvZiB0aGUgcG11IGV2ZW50cyBmb3IgdGhpcyBjcHUuXFxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXFxuQEAgLTE2MCw2ICsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXFxuIH1cXG4gXFxuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVxcdFxcdCh7IGZhbHNlOyB9KVxcbisjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSlcXHQoeyBmYWxzZTsgfSlcXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9wbXVfdXBkYXRlX3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uOWZjOGRmZGZkNjVmZmEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuQEAgLTk5Nyw2ICs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAge1xcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDlcXG4rI2RlZmluZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUIDI1MFxcbiBcXG4gc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHtcXG4gXFx0X191MzIgaXJxY2hpcDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXFxuaW5kZXggMGEzYTk0YzRjY2ExNmYuLmNmYTk5OTc5ZDU3YzhlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xcbkBAIC01MzIsNiArNTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0ge1xcbiBzdGF0aWMgX191NjQgcG11X3JlZ3NbXSA9IHtcXG4gXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksXFx0LyogUE1JTlRFTlNFVF9FTDEgKi9cXG4gXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksXFx0LyogUE1JTlRFTkNMUl9FTDEgKi9cXG4rXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgNiksXFx0LyogUE1NSVJfRUwxICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDApLFxcdC8qIFBNQ1JfRUwwICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDEpLFxcdC8qIFBNQ05URU5TRVRfRUwwICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDIpLFxcdC8qIFBNQ05URU5DTFJfRUwwICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjA4LjUxNjgzODI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM2NDk2ODIzOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcm1fcG11X3YzX2luaXRcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9wbXVcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9hdHRyXCIsXG4gICAgXCJzZXRfcG1jclwiLFxuICAgIFwiYWNjZXNzX3BtbWlyXCIsXG4gICAgXCJzZXRfcG1taXJcIixcbiAgICBcImdldF9wbW1pclwiLFxuICAgIFwia3ZtX3BtdV9nZXRfcG1jZWlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZGNhODBjNDBmYmVkMjc1Y2Q2MDM5NGVmOWE2NzBkYjkxYmMxMjc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMjE6MzM6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0XG5AQCAtMzUxNSw2ICszNTE1LDE3IEBAIFBvc3NpYmxlIGZlYXR1cmVzOlxuIFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BTQ0lfMF8yLlxuIFx0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzOiBFbXVsYXRlIFBNVXYzIGZvciB0aGUgQ1BVLlxuIFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WMy5cbitcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Q6IEVuYWJsZSBzdHJpY3QgUE1VdjMgVUFQSS5cbitcdCAgUmVxdWlyZXMgS1ZNX0FSTV9WQ1BVX1BNVV9WMy4gRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNULlxuK1x0ICBXaGVuIGVuYWJsZWQ6XG4rXG4rXHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcbitcdCAgICAgIGluaXRpYWxpemluZyB0aGUgUE1VIG9yIGNvbmZpZ3VyaW5nIGEgUE1VIGV2ZW50IGZpbHRlclxuK1xuK1x0ICAgICogSWYgdGhlIFBNVSBpbXBsZW1lbnRzIEZFQVRfUE1VdjNwNCwgUE1NSVJfRUwxLlNMT1RTIHByb3ZpZGVzIHRoZVxuK1x0ICAgICAgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb25cbitcbitcdCAgICAqIFdyaXRlcyB0byBQTUNSX0VMMC5OIHZpYSBLVk1fU0VUX09ORV9SRUcgYXJlIGlnbm9yZWRcbiBcbiBcdC0gS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfQUREUkVTUzogRW5hYmxlcyBBZGRyZXNzIFBvaW50ZXIgYXV0aGVudGljYXRpb25cbiBcdCAgZm9yIGFybTY0IG9ubHkuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0XG5pbmRleCA2NmU3MTRmMmZjZmE3Zi4uZGViNWM1MWJjMDBjODcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxuQEAgLTUzLDggKzUzLDkgQEAgUmV0dXJuczpcbiBcdCA9PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiBcdCAtRUVYSVNUICBJbnRlcnJ1cHQgbnVtYmVyIGFscmVhZHkgdXNlZFxuIFx0IC1FTk9ERVYgIFBNVXYzIG5vdCBzdXBwb3J0ZWQgb3IgR0lDIG5vdCBpbml0aWFsaXplZFxuLVx0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlIG9yIGludGVycnVwdFxuLVx0XHQgIG51bWJlciBub3Qgc2V0IChub24tR0lDdjUgZ3Vlc3RzLCBvbmx5KVxuK1x0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlLCBtaXNzaW5nXG4rICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgUE1VLCBvciBpbnRlcnJ1cHQgbnVtYmVyIG5vdCBzZXQgKG5vbi1HSUN2NVxuKyAgICAgICAgICAgICAgICAgIGd1ZXN0cywgb25seSlcbiBcdCAtRUJVU1kgICBQTVV2MyBhbHJlYWR5IGluaXRpYWxpemVkXG4gXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG5AQCAtNjIsNiArNjMsOSBAQCBSZXF1ZXN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgUE1VdjMuICBJZiB1c2luZyB0aGUgUE1VdjMgd2l0aCBhbiBpbi1rZXJuZWxcbiB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBpbi1rZXJuZWxcbiBpcnFjaGlwLlxuIFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4rYWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuK1xuIDEuMyBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfRklMVEVSXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbkBAIC0xMDgsNiArMTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XG4gaXNuJ3Qgc3RyaWN0bHkgc3BlYWtpbmcgYW4gZXZlbnQuIEZpbHRlcmluZyB0aGUgY3ljbGUgY291bnRlciBpcyBwb3NzaWJsZVxuIHVzaW5nIGV2ZW50IDB4MTEgKENQVV9DWUNMRVMpLlxuIFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4rYWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuK1xuIDEuNCBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVVxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYmFlMmM0ZjkyZWY1YzAuLjM5ZjdmYzc0MGQwNzliIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0zOSw3ICszOSw3IEBAXG4gXG4gI2RlZmluZSBLVk1fTUFYX1ZDUFVTIFZHSUNfVjNfTUFYX0NQVVNcbiBcbi0jZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyA5XG4rI2RlZmluZSBLVk1fVkNQVV9NQVhfRkVBVFVSRVMgMTBcbiAjZGVmaW5lIEtWTV9WQ1BVX1ZBTElEX0ZFQVRVUkVTXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxuIFxuICNkZWZpbmUgS1ZNX1JFUV9TTEVFUCBcXFxuQEAgLTM4Nyw2ICszODcsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xuIFx0LyogTWF4aW11bSBudW1iZXIgb2YgY291bnRlcnMgZm9yIHRoZSBndWVzdCAqL1xuIFx0dTggbnJfcG11X2NvdW50ZXJzO1xuIFxuK1x0LyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqL1xuK1x0dTggcG1taXJfc2xvdHM7XG4rXG4gXHQvKiBIeXBlcmNhbGwgZmVhdHVyZXMgZmlybXdhcmUgcmVnaXN0ZXJzJyBkZXNjcmlwdG9yICovXG4gXHRzdHJ1Y3Qga3ZtX3NtY2NjX2ZlYXR1cmVzIHNtY2NjX2ZlYXQ7XG4gXHRzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCAxYzEzYmZhMmQzOGFhZC4uMDE5ZTVlM2Q4OTJlNmQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEwNiw2ICsxMDYsNyBAQCBzdHJ1Y3Qga3ZtX3JlZ3Mge1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1x0NiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJcdFx0NyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJfRTJIMFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXG4rI2RlZmluZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVFx0OSAvKiBObyBkZWZhdWx0IFBNVSBjcmVhdGlvbiAqL1xuIFxuIHN0cnVjdCBrdm1fdmNwdV9pbml0IHtcbiBcdF9fdTMyIHRhcmdldDtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5pbmRleCA1MGFkZmZmNzViZTgyZS4uN2RiZWZkZDg0NmFhNzAgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC00NTIsNiArNDUyLDcgQEAgaW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbiBcdFx0ciA9IGdldF9udW1fd3JwcygpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgS1ZNX0NBUF9BUk1fUE1VX1YzOlxuK1x0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxuIFx0XHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9JTkpFQ1RfU0VSUk9SX0VTUjpcbkBAIC0xNTYzLDggKzE1NjQsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc3lzdGVtX3N1cHBvcnRlZF92Y3B1X2ZlYXR1cmVzKHZvaWQpXG4gXHRpZiAoIWNwdXNfaGF2ZV9maW5hbF9jYXAoQVJNNjRfSEFTXzMyQklUX0VMMSkpXG4gXHRcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCBcdTAwMjZmZWF0dXJlcyk7XG4gXG4tXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKVxuK1x0aWYgKCFrdm1fc3VwcG9ydHNfZ3Vlc3RfcG11djMoKSkge1xuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WMywgXHUwMDI2ZmVhdHVyZXMpO1xuK1x0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKTtcbitcdH1cbiBcbiBcdGlmICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKVxuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1NWRSwgXHUwMDI2ZmVhdHVyZXMpO1xuQEAgLTE2MDUsNiArMTYwOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X2luaXRfY2hlY2tfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0ICAgIHRlc3RfYml0KEtWTV9BUk1fVkNQVV9QVFJBVVRIX0dFTkVSSUMsIFx1MDAyNmZlYXR1cmVzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBTdHJpY3QgUE1VdjMgVUFQSSByZXF1aXJlcyBQTVV2My4gKi9cbitcdGlmICh0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCwgXHUwMDI2ZmVhdHVyZXMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcdTAwMjZmZWF0dXJlcykpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKCF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCBcdTAwMjZmZWF0dXJlcykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTE2MzQsMTAgKzE2NDIsMTMgQEAgc3RhdGljIGludCBrdm1fc2V0dXBfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdC8qXG4tXHQgKiBXaGVuIHRoZSB2Q1BVIGhhcyBhIFBNVSwgYnV0IG5vIFBNVSBpcyBzZXQgZm9yIHRoZSBndWVzdFxuLVx0ICogeWV0LCBzZXQgdGhlIGRlZmF1bHQgb25lLlxuK1x0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcbitcdCAqIHRoZSBkZWZhdWx0IG9uZS4gSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0LCBubyBkZWZhdWx0XG4rXHQgKiBQTVUgaXMgY3JlYXRlZCwgYW5kIHVzZXJzcGFjZSBtdXN0IHNlbGVjdCBhIFBNVSB2aWFcbitcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cbiBcdCAqL1xuLVx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11IFx1MDAyNlx1MDAyNlxuK1x0ICAgICFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKVxuIFx0XHRyZXQgPSBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShrdm0pO1xuIFxuIFx0LyogUHJlcGFyZSBmb3IgbmVzdGVkIGlmIHJlcXVpcmVkICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYyBiL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbmluZGV4IDk4MzA1YmJmYzA5NWFiLi41YjFhZjdlMjE3NmZhZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbkBAIC04MzgsOSArODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcbiBcdHJldHVybiAoKHU2NCloaVtwbWNlaWQxXSBcdTAwM2NcdTAwM2MgMzIpIHwgbG9bcG1jZWlkMV07XG4gfVxuIFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4rc3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHBtdSwgMCk7XG4rXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXUsIDApO1xuIFxuIFx0LyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqL1xuIFx0dmFsIHw9IEJJVChBUk1WOF9QTVVWM19QRVJGQ1RSX1NXX0lOQ1IpO1xuQEAgLTg0OSwzMiArODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3QgYXJtX3BtdSAqcG11KVxuK3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDEpO1xuK1x0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11LCAxKTtcbiBcbiBcdC8qXG4tXHQgKiBEb24ndCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXG4tXHQgKiBhcyBSQVpcbitcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIG5vdCBzZXQsIFBNTUlSX0VMMSBpc1xuK1x0ICogdW5jb25kaXRpb25hbGx5IFJBWiwgc28gZG9uJ3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cbiBcdCAqL1xuLVx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTtcbitcdGlmICgha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSlcbitcdFx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4rXHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcbitcdFx0XHQgQklUX1VMTChBUk1WOF9QTVVWM19QRVJGQ1RSX1NUQUxMX1NMT1RfQkFDS0VORCAtIDMyKSk7XG4rXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbiB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKVxuIHtcbi1cdHN0cnVjdCBhcm1fcG11ICpjcHVfcG11ID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11O1xuIFx0dW5zaWduZWQgbG9uZyAqYm1hcCA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcjtcbiBcdHU2NCB2YWwsIG1hc2sgPSAwO1xuIFx0aW50IGJhc2UsIGksIG5yX2V2ZW50cztcbiBcbiBcdGlmICghcG1jZWlkMSkge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDAoY3B1X3BtdSk7XG4rXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMCh2Y3B1KTtcbiBcdFx0YmFzZSA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7XG4rXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMSh2Y3B1KTtcbiBcdFx0YmFzZSA9IDMyO1xuIFx0fVxuIFxuQEAgLTkzOCw2ICs5MzksMTAgQEAgaW50IGt2bV9hcm1fcG11X3YzX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gc3RhdGljIGludCBrdm1fYXJtX3BtdV92M19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4rXHQvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi9cbitcdGlmICghdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1xuIFx0aWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtXHUwMDNla3ZtKSkge1xuIFx0XHRpbnQgcmV0O1xuIFxuQEAgLTEwMDgsNiArMTAxMywxNCBAQCB1OCBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgYXJtX3BtdSAqYXJtX3BtdSA9IGt2bS1cdTAwM2VhcmNoLmFybV9wbXU7XG4gXG4rXHQvKlxuK1x0ICogVW5kZXIgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm8gUE1VIGV4aXN0cyB1bnRpbCB1c2Vyc3BhY2Ugc2V0c1xuK1x0ICogb25lLCBzbyB0aGlzIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBhcm1fcG11IGlzIHNldC4gUmVwb3J0IG5vXG4rXHQgKiBjb3VudGVycyBpbiB0aGF0IGNhc2UuXG4rXHQgKi9cbitcdGlmICghYXJtX3BtdSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHQvKlxuIFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XG4gXHQgKiBldmVudCwgdGhvdWdoIHRoZSBzYW1lIG1heSBub3QgYmUgdHJ1ZSBvZiBub24tUE1VdjMgaGFyZHdhcmUuXG5AQCAtMTA0OSw3ICsxMDYyLDggQEAgc3RhdGljIHZvaWQga3ZtX2FybV9zZXRfcG11KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGFybV9wbXUgKmFybV9wbXUpXG4gfVxuIFxuIC8qKlxuLSAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbisgKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQgYW5kIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vdFxuKyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbiAgKiBAa3ZtOiBUaGUga3ZtIHBvaW50ZXJcbiAgKlxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXG5AQCAtMTA5Miw2ICsxMTA2LDE3IEBAIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXG4gXG4gXHRcdFx0a3ZtX2FybV9zZXRfcG11KGt2bSwgYXJtX3BtdSk7XG4gXHRcdFx0Y3B1bWFza19jb3B5KGt2bS1cdTAwM2VhcmNoLnN1cHBvcnRlZF9jcHVzLCBcdTAwMjZhcm1fcG11LVx1MDAzZXN1cHBvcnRlZF9jcHVzKTtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFNpbmNlIGEgc3BlY2lmaWMgUE1VIGlzIGV4cGxpY2l0bHkgc2VsZWN0ZWQsXG4rXHRcdFx0ICogUE1NSVJfRUwxLlNMT1RTIGlzIGRldGVybWluaXN0aWMgdG8gdGhlIGd1ZXN0LlxuK1x0XHRcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcbitcdFx0XHQgKiB0aGUgdmFsdWUgdG8gYWxsb3cgdGhlIGd1ZXN0IHRvIHJlYWQgaXQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4rXHRcdFx0XHRrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA9XG4rXHRcdFx0XHRcdEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsXG4rXHRcdFx0XHRcdFx0ICBhcm1fcG11LVx1MDAzZXJlZ19wbW1pcik7XG4gXHRcdFx0cmV0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExNzgsNiArMTIwMyw5IEBAIGludCBrdm1fYXJtX3BtdV92M19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4gXHRcdGlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcbitcdFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0XHRcdHJldHVybiAtRU5YSU87XG4rXG4gXHRcdGlmICgha3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcikge1xuIFx0XHRcdGt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIgPSBiaXRtYXBfYWxsb2MobnJfZXZlbnRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRcdGlmICgha3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcilcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jIGIvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuaW5kZXggNWQ1YzU3OWQ0NTc5MDIuLmU5M2YxMWI5MDgxM2IwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuQEAgLTEzNjcsNiArMTM2Nyw2NCBAQCBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1pbnRlbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4rXHRcdFx0IGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpXG4re1xuK1x0aWYgKHAtXHUwMDNlaXNfd3JpdGUpXG4rXHRcdHJldHVybiB3cml0ZV90b19yZWFkX29ubHkodmNwdSwgcCwgcik7XG4rXG4rXHQvKlxuK1x0ICogSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0IGFuZCBQTVUgd2FzIGV4cGxpY2l0bHlcbitcdCAqIHNlbGVjdGVkLCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBTTE9UUyB2YWx1ZSB3YXMgcmVhZCBpbnRvIHRoaXNcbitcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXG4rXHQgKi9cbitcdHAtXHUwMDNlcmVndmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbitcdFx0ICAgICB1NjQgKnZhbClcbit7XG4rXHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgc2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbitcdFx0ICAgICB1NjQgdmFsKVxuK3tcbitcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuK1x0dTggc2xvdHMgPSBGSUVMRF9HRVQoQVJNVjhfUE1VX1NMT1RTLCB2YWwpO1xuK1xuK1x0LypcbitcdCAqIE9ubHkgdGhlIFNMT1RTIGZpZWxkIGlzIGV4cG9zZWQgKGdldF9wbW1pciByZXR1cm5zIGp1c3QgdGhhdCBmaWVsZCksXG4rXHQgKiBzbyByZWplY3QgYSB3cml0ZSB0aGF0IHNldHMgYW55IG90aGVyIGJpdCByYXRoZXIgdGhhbiBzaWxlbnRseVxuK1x0ICogbWFza2luZyBpdC5cbitcdCAqL1xuK1x0aWYgKHZhbCBcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jb25maWdfbG9jayk7XG4rXG4rXHQvKlxuK1x0ICogT25jZSB0aGUgVk0gaGFzIHN0YXJ0ZWQgUE1NSVJfRUwxIGlzIGltbXV0YWJsZS4gUmVqZWN0IGFueSB3cml0ZVxuK1x0ICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS5cbitcdCAqL1xuK1x0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcbitcdFx0cmV0dXJuIHNsb3RzID09IGt2bS1cdTAwM2VhcmNoLnBtbWlyX3Nsb3RzID8gMCA6IC1FQlVTWTtcbitcbitcdC8qXG4rXHQgKiBPbmx5IFNMT1RTID0gMCBpcyBob25vcmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZVxuK1x0ICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoXG4rXHQgKiB0aGUgY3VycmVudCB2YWx1ZS5cbitcdCAqL1xuK1x0aWYgKCFzbG90cylcbitcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPSAwO1xuK1x0ZWxzZSBpZiAoc2xvdHMgIT0ga3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBib29sIGFjY2Vzc19wbW92cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbiB7XG5AQCAtMTQ0NCw2ICsxNTAyLDcgQEAgc3RhdGljIGludCBzZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4gXHQgKi9cbiBcdGlmICgha3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF2Y3B1X2hhc19udih2Y3B1KVx0ICAgICAgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgbmV3X24gXHUwMDNjPSBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKGt2bSkpXG4gXHRcdGt2bS1cdTAwM2VhcmNoLm5yX3BtdV9jb3VudGVycyA9IG5ld19uO1xuIFxuQEAgLTM0NDgsNyArMzUwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIHN5c19yZWdfZGVzY3NbXSA9IHtcbiBcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxuIFx0ICAuYWNjZXNzID0gYWNjZXNzX3BtaW50ZW4sIC5yZWcgPSBQTUlOVEVOU0VUX0VMMSxcbiBcdCAgLmdldF91c2VyID0gZ2V0X3BtcmVnLCAuc2V0X3VzZXIgPSBzZXRfcG1yZWcgfSxcbi1cdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXG4rXHR7IFBNVV9TWVNfUkVHKFBNTUlSX0VMMSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1taXIsIC5yZXNldCA9IE5VTEwsXG4rXHQgIC5nZXRfdXNlciA9IGdldF9wbW1pciwgLnNldF91c2VyID0gc2V0X3BtbWlyIH0sXG4gXG4gXHR7IFNZU19ERVNDKFNZU19NQUlSX0VMMSksIGFjY2Vzc192bV9yZWcsIHJlc2V0X3Vua25vd24sIE1BSVJfRUwxIH0sXG4gXHR7IFNZU19ERVNDKFNZU19QSVJFMF9FTDEpLCBOVUxMLCByZXNldF91bmtub3duLCBQSVJFMF9FTDEsXG5AQCAtNDU5Myw3ICs0NjUzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgY3AxNV9yZWdzW10gPSB7XG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHQvKiBQTU1JUiAqL1xuLVx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcbitcdHsgQ1AxNV9QTVVfU1lTX1JFRyhESVJFQ1QsIDAsIDksIDE0LCA2KSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciB9LFxuIFxuIFx0LyogUFJSUi9NQUlSMCAqL1xuIFx0eyBBQTMyKExPKSwgT3AxKCAwKSwgQ1JuKDEwKSwgQ1JtKCAyKSwgT3AyKCAwKSwgYWNjZXNzX3ZtX3JlZywgTlVMTCwgTUFJUl9FTDEgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2t2bS9hcm1fcG11LmggYi9pbmNsdWRlL2t2bS9hcm1fcG11LmhcbmluZGV4IGI1ZTU5NDIyMDRmYzY5Li42YjRhMTE4ZDE3Y2E5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxuKysrIGIvaW5jbHVkZS9rdm0vYXJtX3BtdS5oXG5AQCAtNzUsNiArNzUsOSBAQCB2b2lkIGt2bV92Y3B1X3BtdV9yZXN5bmNfZWwwKHZvaWQpO1xuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVx0XHRcdFx0XHRcXFxuIFx0KHZjcHVfaGFzX2ZlYXR1cmUodmNwdSwgS1ZNX0FSTV9WQ1BVX1BNVV9WMykpXG4gXG4rI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHRcdFx0XHRcXFxuK1x0KHZjcHVfaGFzX2ZlYXR1cmUodmNwdSwgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QpKVxuK1xuIC8qXG4gICogVXBkYXRlcyB0aGUgdmNwdSdzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LlxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXG5AQCAtMTYwLDYgKzE2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcbiB9XG4gXG4gI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11KHZjcHUpXHRcdCh7IGZhbHNlOyB9KVxuKyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KVx0KHsgZmFsc2U7IH0pXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9wbXVfdXBkYXRlX3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3RvcmVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9wbXVfcmVzdG9yZV9ob3N0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbmluZGV4IDQxOTAxMTA5N2ZhOGUyLi45ZmM4ZGZkZmQ2NWZmYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5AQCAtOTk3LDYgKzk5Nyw3IEBAIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCB7XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX0hQQUdFXzJHIDI0OVxuKyNkZWZpbmUgS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVCAyNTBcbiBcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xuIFx0X191MzIgaXJxY2hpcDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmNcbmluZGV4IDBhM2E5NGM0Y2NhMTZmLi5jZmE5OTk3OWQ1N2M4ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXG5AQCAtNTMyLDYgKzUzMiw3IEBAIHN0YXRpYyBfX3U2NCBiYXNlX3JlZ3NbXSA9IHtcbiBzdGF0aWMgX191NjQgcG11X3JlZ3NbXSA9IHtcbiBcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDEpLFx0LyogUE1JTlRFTlNFVF9FTDEgKi9cbiBcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDIpLFx0LyogUE1JTlRFTkNMUl9FTDEgKi9cbitcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLFx0LyogUE1NSVJfRUwxICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSxcdC8qIFBNQ1JfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSxcdC8qIFBNQ05URU5TRVRfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSxcdC8qIFBNQ05URU5DTFJfRUwwICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QyMTozMzowOC41MTY4NDU5OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ0Nzc0MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBLVk0gdkNQVSBGZWF0dXJlKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIHByb3Bvc2luZyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGZvciBBUk02NCwgYEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUYC4gSXQgc291bmRzIGxpa2UgaXQgZW5mb3JjZXMgc3RyaWN0ZXIgYmVoYXZpb3IgZm9yIHRoZSBQTVV2MyBVQVBJLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaW52b2x2ZXMgZXhwbGljaXQgc2VsZWN0aW9uIG9mIGEgUE1VIGltcGxlbWVudGF0aW9uIGJlZm9yZSBpbml0aWFsaXphdGlvbiBvciBmaWx0ZXIgY29uZmlndXJhdGlvbiwgYW5kIHRha2luZyBgUE1NSVJfRUwxLlNMT1RTYCBpbnRvIGFjY291bnQgaWYgRkVBVF9QTVV2M3A0IGlzIHN1cHBvcnRlZC4gVGhlIHBhdGNoIGFsc28gaWdub3JlcyB3cml0ZXMgdG8gYFBNQ1JfRUwwLk5gIHZpYSBgS1ZNX1NFVF9PTkVfUkVHYCwgd2hpY2ggc2VlbXMgbGlrZSBhIHNlbnNpYmxlIGhhcmRlbmluZyBtZWFzdXJlLlxuXG5JJ20gc2VlaW5nIHRoYXQgdGhpcyB0b3VjaGVzIHF1aXRlIGEgZmV3IGtleSBwYXJ0cyBvZiB0aGUgY29yZSBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiwgbmFtZWx5IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IENvbnNpZGVyaW5nIHRoYXQgaXQncyBhIG5ldyBLVk0gZmVhdHVyZSB0aGF0IGNhbiBiZSBlbmFibGVkIHZpYSBgS1ZNX0VOQUJMRV9DQVBgIG9yIGBLVk1fQVJNX1ZDUFVfSU5JVGAsIGFic29sdXRlbHksIHllcy4gQW55IG5ldyBmZWF0dXJlIGlzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIGNoYW5nZXMgbGlzdGVkIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBBUk02NCBLVk0sIHNvIEknbGwgd2FudCB0byBmb2N1cyBvbiB0aGF0LlxuXG5UaW1lIHRvIGxvb2sgZm9yIHRoZSByZWxldmFudCBDT05GSUcgb3B0aW9ucy4gYENPTkZJR19LVk1gIGlzIG9idmlvdXNseSBhIHByZXJlcXVpc2l0ZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MTQuNDYxNjIyMDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjY3ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjE0LjU0Mjg5NDI0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODAwNTAyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQ09ORklHX0tWTWAuIFRoYXQncyB0aGUgcHJpbWFyeSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gSSdtIGludGVyZXN0ZWQgaW4gaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuXG5cbk15IG5leHQgc3RlcCBpcyB0byBjYXN0IGEgd2lkZXIgbmV0IGFuZCBsb29rIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRocm91Z2ggYGFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNgIGFuZCBgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGZpbmVyIGRldGFpbHMgYXJlIGltcGxlbWVudGVkLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjAxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MTcuNDIyOTQ2NDk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1ODYxOTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19IV19QRVJGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgKz0gYXJtLm8gbW11Lm8gbW1pby5vIHBzY2kubyBoeXBlcmNhbGxzLm8gcHZ0aW1lLm8gXFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjgtXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX0hXX1BFUkZfRVZFTlRTKSAgKz0gcG11LWVtdWwubyBwbXUub1xcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTMwLWt2bS0kKENPTkZJR19BUk02NF9QVFJfQVVUSCkgICs9IHBhdXRoLm9cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jPTEyOT1zdGF0aWMgdm9pZCBfX2h5cF92Z2ljX3Jlc3RvcmVfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ1LSAqL1xcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jOjE0NjojaWZkZWYgQ09ORklHX0hXX1BFUkZfRVZFTlRTXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ3LXN0YXRpYyBib29sIF9fcG11X3N3aXRjaF90b19ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjE3LjQ4ODgxMjY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3ODE1ODQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgRGVwZW5kZW5jeSBvZiBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIENvbXBvbmVudHMqKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBJIG5lZWQgYENPTkZJR19IV19QRVJGX0VWRU5UU2AgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgYHBtdS1lbXVsLm9gIGFuZCBgcG11Lm9gLiBUaGF0J3Mgbm90IGVudGlyZWx5IHN1cnByaXNpbmcsIGJ1dCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIGZpZ3VyZSBvdXQgaG93IGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgIGlzIGhhbmRsZWQuIElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgY29udGluZ2VudCBvbiBzb21lIG90aGVyIHNwZWNpZmljIGtlcm5lbCBmZWF0dXJlIG9yIGhhcmR3YXJlIHN1cHBvcnQ/IFVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgY29tcG9uZW50cyB3aWxsIGFjdHVhbGx5IGdldCBidWlsdC4gVGhlIGdvYWwgaXMgdG8gZWl0aGVyIHZlcmlmeSB0aGlzIGlzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvciBpc29sYXRlIHRoZSB2YXJpYWJsZSBkZXBlbmRlbmNpZXMgYXQgcGxheSwgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIGhvdyB0aGlzIGltcGFjdHMgbXkgb3duIHRhcmdldCBidWlsZHMgYW5kIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjIwLjk2Njk3Mjk3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MTQxNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhXX1BFUkZfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvS2NvbmZpZz0xNjA2PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA5LVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoxNjEwOmNvbmZpZyBIV19QRVJGX0VWRU5UU1xcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjExLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MjEuMDcxMzkxMTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUwNjYwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBUk02NCBLVk0gYW5kIEJvb2xlYW4gRGVmaW5pdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gYW4gYGFybTY0YCBzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggS1ZNLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aXRoIGBkZWZfYm9vbCB5YCwgd2hpY2ggSSdtIHRha2luZyB0byBtZWFuIGEgYm9vbGVhbiBkZWZpbml0aW9uIHNldCB0byBcInllc1wiIG9yIHBvdGVudGlhbGx5IGVuYWJsZWQuIFRoaXMgc3VnZ2VzdHMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzZXQsIGxpa2VseSBpbXBhY3Rpbmcgc29tZSBhc3BlY3Qgb2YgdGhlIEtWTSBpbXBsZW1lbnRhdGlvbiBvbiB0aGlzIGFyY2hpdGVjdHVyZS5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgLiBUaGlzIGZpbGUgc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzeXN0ZW0gcmVnaXN0ZXJzIHdpdGhpbiB0aGUgQVJNNjQgS1ZNIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgZnVydGhlciBkZWZpbml0aW9ucywgY29uZGl0aW9uYWwgYmxvY2tzLCBvciBtYWNyb3MgdGllZCB0byB0aGlzIGJvb2xlYW4uIEknbSBob3BpbmcgdG8gZGlzY292ZXIgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBib29sZWFuIHNldHRpbmcgaW4gdGVybXMgb2YgcmVnaXN0ZXIgYWNjZXNzIG9yIHZpcnR1YWxpemF0aW9uIGJlaGF2aW9yLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgYGRlZl9ib29sIHlgIHZhbHVlIGlzIHVzZWQsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBLVk0gZmVhdHVyZXMsIGFuZCBpdHMgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eSBwcm9maWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI0LjUyMjA1NDYwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNjcwNTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MjQuNTgxMTQ0NTI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjM2NTA0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBYnNlbmNlIG9mIENvbmZpZ3VyYXRpb24gRGlyZWN0aXZlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBzeXNfcmVncy5jYCwgYW5kIEknbSBhIGJpdCB0aHJvd24uIEkgZXhwZWN0ZWQgdG8gZmluZCBzb21lIGBDT05GSUdfYCBkaXJlY3RpdmVzIGluIHRoaXMgZmlsZS4gQnV0IHdhaXQsIHRoZXJlIGFyZW4ndCBhbnk/IFRoYXQncyB1bnVzdWFsLiBJdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIGV4cGVjdGVkIHBhdHRlcm4uIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBsYWNrIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBvcmRlciB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgzMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI3Ljk0NDc5Nzk4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MDY1ODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZiBDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI4LjAwMTIxMDA2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDc4NTk5Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBQZXJmb3JtYW5jZSBNb25pdG9yaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgS1ZNIHBhdGNoLiBUaGUgY2VudHJhbCBlbGVtZW50LCBhcyBleHBlY3RlZCwgaXMgYENPTkZJR19LVk1gLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIGFuZCB0aGVpciBpbXBhY3Qgb24gcGVyZm9ybWFuY2UgbW9uaXRvcmluZy5cblxuRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGhlc2UgZnVuY3Rpb25zOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYGt2bV9wbXVfZ2V0X3BtY2VpZGAsIGBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzYCwgYW5kIGBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdWAuIE9rYXksIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdC5cblxuTm93LCBhIHF1aWNrIGFzc2Vzc21lbnQgb2YgYWNjZXNzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGhvdHNwb3RzIGlzIGluIG9yZGVyLiBJdCBzZWVtcyBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYW5kIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAgYXJlIHRyaWdnZXJlZCBieSBpb2N0bHMg4oCTIHNwZWNpZmljYWxseSwgYEtWTV9TRVRfREVWSUNFX0FUVFJgLiBUaGF0J3MgcmVhc29uYWJsZSwgaW1wbHlpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYCBhcmUgbGlua2VkIHRvIGVpdGhlciBLVk0gcmVnaXN0ZXIgYWNjZXNzIChgS1ZNX1NFVF9PTkVfUkVHYC9gS1ZNX0dFVF9PTkVfUkVHYCkgb3IgZ3Vlc3QgdHJhcHMg4oCTIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGhvc3QgYW5kIGd1ZXN0LiBga3ZtX3BtdV9nZXRfcG1jZWlkYCBpcyBjbGVhcmx5IGhhbmRsaW5nIGd1ZXN0IGFjY2VzcyB0byB0aGUgUE1DRUlEIHJlZ2lzdGVyLCBhbmQgYGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnNgIGlzIGEgaGVscGVyIGZ1bmN0aW9uLCB3aGljaCBtYXkgYmUgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zLlxuXG5MZXQncyBjb25zb2xpZGF0ZSB0aGUgY29yZSBzeW1ib2xzOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYW5kIGBrdm1fcG11X2dldF9wbWNlaWRgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbi5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBuYW1lcyBpbiB0aGUgc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzNCwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MzUuNDc5ODEyMTU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxOTE5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fGJvb2x8dTh8dTY0fHZvaWQpIChrdm1fYXJtX3BtdV92M19pbml0fGt2bV9hcm1fcG11X3YzX3NldF9wbXV8a3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJ8c2V0X3BtY3J8YWNjZXNzX3BtbWlyfHNldF9wbW1pcnxnZXRfcG1taXJ8a3ZtX3BtdV9nZXRfcG1jZWlkKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz04NTI9c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy04NjctXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo4Njg6dTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTg2OS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jPTkxMj1pbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtOTM5LVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6OTQwOnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy05NDEte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0xMDc3PWludCBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTEwODctXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzoxMDg4OnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMDg5LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9MTEyOT1zdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9ucl9jb3VudGVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMTQyLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6MTE0MzppbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtMTE0NC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTEzNDY9c3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzNjktXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzcwOnN0YXRpYyBib29sIGFjY2Vzc19wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzNzEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODQtXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzg1OnN0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODYtXFx0XFx0ICAgICB1NjQgKnZhbClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5MS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jOjEzOTI6c3RhdGljIGludCBzZXRfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5My1cXHRcXHQgICAgIHU2NCB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTE0ODM9c3RhdGljIGludCBnZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTE0ODktXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxNDkwOnN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTQ5MS1cXHRcXHQgICAgdTY0IHZhbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MzUuNjMzMDA4MTE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDAwNDY2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgS1ZNIEFSTTY0IFBNVXYzIEVtdWxhdGlvbiBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHNwb3Qgb246IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGBnZXRfcG1taXJgLCBhbmQgYGt2bV9wbXVfZ2V0X3BtY2VpZGAg4oCTIHRoZXNlIGFyZSBhbGwgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgUE1VdjMgZW11bGF0aW9uLlxuXG5XYWl0LCBsb29raW5nIGNsb3NlciBhdCB0aGUgY2FsbCBncmFwaCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgIGJlaW5nIHN0YXRpYyBidXQgY2FsbGVkIGZyb20gYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYHNldF9wbWNyYCBpcyBzdGF0aWMgdG9vLCBjYWxsZWQgZnJvbSBgc2V0X3BtcmVnYCAtIHRoYXQgd2lsbCBiZSBmdW4gdG8gZXhwbG9yZS4gU2FtZSBnb2VzIGZvciBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYCAtIHN0YXRpYywgYnV0IHVzZWQgd2l0aGluIHRoZSBgc3lzX3JlZ19kZXNjc2AgdGFibGUuXG5cbk5vdywgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJdCBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBkZXBlbmRlbmN5LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBtb2RpZmllZCBmaWxlcyAoYGFyY2gvYXJtNjQva3ZtL2FybS5jYCwgYGFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNgLCBhbmQgYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgKSBjb25maXJtcyB0aGF0IGBDT05GSUdfS1ZNYCBwdWxscyBldmVyeXRoaW5nIGluLiBBbmQgYHBtdS1lbXVsLmNgIGFkZGl0aW9uYWxseSBkZXBlbmRzIG9uIGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgLCB3aGljaCBpcyBzdGF0aWNhbGx5IGVuYWJsZWQgZm9yIEFSTTY0LiBTbywgeWVzLCBgQ09ORklHX0tWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGEgZnV6emluZyBidWlsZC4gRXhjZWxsZW50LlxuXG5MZXQncyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgZmVhdHVyZSBmb3Igc3RyaWN0IFBNVXYzIFVBUEkgY29tcGxpYW5jZS4gVGhhdCBtZWFucyB0aGlzIGlzIHRvdWNoaW5nIGNyaXRpY2FsIGVtdWxhdGlvbiBsb2dpYyDigJMgaW5pdGlhbGl6YXRpb24sIGF0dHJpYnV0ZSBzZXR0aW5nLCBhbmQgc3lzdGVtIHJlZ2lzdGVyIGhhbmRsaW5nIChQTU1JUiwgUE1DUikuIEFuZCB0aGUga2lja2VyOiB0aGlzIGxvZ2ljIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIGNhbiBhYnNvbHV0ZWx5IHNlZSBob3cgZnV6emluZyBjYW4gcmV2ZWFsIGludGVyZXN0aW5nIGJ1Z3MgaGVyZS5cblxuU28sIHRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKipGb2N1cyBTeW1ib2xzOioqXG5cbiogICBga3ZtX2FybV9wbXVfdjNfaW5pdGBcbiogICBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWBcbiogICBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgXG4qICAgYHNldF9wbWNyYFxuKiAgIGBhY2Nlc3NfcG1taXJgXG4qICAgYHNldF9wbW1pcmBcbiogICBgZ2V0X3BtbWlyYFxuKiAgIGBrdm1fcG11X2dldF9wbWNlaWRgXG5cbioqQ29uZmlndXJhdGlvbjoqKlxuXG4qICAgYEtWTWBcblxuSSdtIHJlYWR5IHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTEsIk91dHB1dFRva2VucyI6MjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjQ0LjkzMzA1ODQ1N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjAxMTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJtX3BtdV92M19pbml0XCIsXG4gICAgXCJrdm1fYXJtX3BtdV92M19zZXRfcG11XCIsXG4gICAgXCJrdm1fYXJtX3BtdV92M19zZXRfYXR0clwiLFxuICAgIFwic2V0X3BtY3JcIixcbiAgICBcImFjY2Vzc19wbW1pclwiLFxuICAgIFwic2V0X3BtbWlyXCIsXG4gICAgXCJnZXRfcG1taXJcIixcbiAgICBcImt2bV9wbXVfZ2V0X3BtY2VpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS1ZNIHZDUFUgZmVhdHVyZSBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIHdoaWNoIGVuZm9yY2VzIHN0cmljdCBQTVV2MyBVQVBJIGJlaGF2aW9yLiBJdCBtb2RpZmllcyBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiBsb2dpYywgaW5jbHVkaW5nIFBNVSBpbml0aWFsaXphdGlvbiwgc2V0dGluZyBQTVUgYXR0cmlidXRlcywgYW5kIGhhbmRsaW5nIFBNVSBzeXN0ZW0gcmVnaXN0ZXJzIChQTU1JUiwgUE1DUikuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FybV9wbXVfdjNfaW5pdFwiLFxuICAgIFwia3ZtX2FybV9wbXVfdjNfc2V0X3BtdVwiLFxuICAgIFwia3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJcIixcbiAgICBcInNldF9wbWNyXCIsXG4gICAgXCJhY2Nlc3NfcG1taXJcIixcbiAgICBcInNldF9wbW1pclwiLFxuICAgIFwiZ2V0X3BtbWlyXCIsXG4gICAgXCJrdm1fcG11X2dldF9wbWNlaWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEtWTSB2Q1BVIGZlYXR1cmUgYEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUYCB3aGljaCBlbmZvcmNlcyBzdHJpY3QgUE1VdjMgVUFQSSBiZWhhdmlvci4gSXQgbW9kaWZpZXMgS1ZNIEFSTTY0IFBNVSBlbXVsYXRpb24gbG9naWMsIGluY2x1ZGluZyBQTVUgaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgUE1VIGF0dHJpYnV0ZXMsIGFuZCBoYW5kbGluZyBQTVUgc3lzdGVtIHJlZ2lzdGVycyAoUE1NSVIsIFBNQ1IpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBleGVjdXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow9c8kb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 21:19:12 +0000 UTC FinishedAt: 2026-07-23 21:33:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9c638ccb-c5cd-4168-a1f8-03d124bacfa6" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arm_pmu_v3_init", "kvm_arm_pmu_v3_set_pmu", "kvm_arm_pmu_v3_set_attr", "set_pmcr", "access_pmmir", "set_pmmir", "get_pmmir", "kvm_pmu_get_pmceid" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlkY2E4MGM0MGZiZWQyNzVjZDYwMzk0ZWY5YTY3MGRiOTFiYzEyNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAyMTozMzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0XG5AQCAtMzUxNSw2ICYjNDM7MzUxNSwxNyBAQCBQb3NzaWJsZSBmZWF0dXJlczpcbiBcdCAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QU0NJXzBfMi5cbiBcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WMzogRW11bGF0ZSBQTVV2MyBmb3IgdGhlIENQVS5cbiBcdCAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjMuXG4mIzQzO1x0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVDogRW5hYmxlIHN0cmljdCBQTVV2MyBVQVBJLlxuJiM0MztcdCAgUmVxdWlyZXMgS1ZNX0FSTV9WQ1BVX1BNVV9WMy4gRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNULlxuJiM0MztcdCAgV2hlbiBlbmFibGVkOlxuJiM0MztcbiYjNDM7XHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcbiYjNDM7XHQgICAgICBpbml0aWFsaXppbmcgdGhlIFBNVSBvciBjb25maWd1cmluZyBhIFBNVSBldmVudCBmaWx0ZXJcbiYjNDM7XG4mIzQzO1x0ICAgICogSWYgdGhlIFBNVSBpbXBsZW1lbnRzIEZFQVRfUE1VdjNwNCwgUE1NSVJfRUwxLlNMT1RTIHByb3ZpZGVzIHRoZVxuJiM0MztcdCAgICAgIGhhcmR3YXJlIHZhbHVlIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uXG4mIzQzO1xuJiM0MztcdCAgICAqIFdyaXRlcyB0byBQTUNSX0VMMC5OIHZpYSBLVk1fU0VUX09ORV9SRUcgYXJlIGlnbm9yZWRcbiBcbiBcdC0gS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfQUREUkVTUzogRW5hYmxlcyBBZGRyZXNzIFBvaW50ZXIgYXV0aGVudGljYXRpb25cbiBcdCAgZm9yIGFybTY0IG9ubHkuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0XG5pbmRleCA2NmU3MTRmMmZjZmE3Zi4uZGViNWM1MWJjMDBjODcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxuQEAgLTUzLDggJiM0Mzs1Myw5IEBAIFJldHVybnM6XG4gXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXHQgLUVFWElTVCAgSW50ZXJydXB0IG51bWJlciBhbHJlYWR5IHVzZWRcbiBcdCAtRU5PREVWICBQTVV2MyBub3Qgc3VwcG9ydGVkIG9yIEdJQyBub3QgaW5pdGlhbGl6ZWRcbi1cdCAtRU5YSU8gICBQTVV2MyBub3Qgc3VwcG9ydGVkLCBtaXNzaW5nIFZDUFUgZmVhdHVyZSBvciBpbnRlcnJ1cHRcbi1cdFx0ICBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1IGd1ZXN0cywgb25seSlcbiYjNDM7XHQgLUVOWElPICAgUE1VdjMgbm90IHN1cHBvcnRlZCwgbWlzc2luZyBWQ1BVIGZlYXR1cmUsIG1pc3NpbmdcbiYjNDM7ICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgUE1VLCBvciBpbnRlcnJ1cHQgbnVtYmVyIG5vdCBzZXQgKG5vbi1HSUN2NVxuJiM0MzsgICAgICAgICAgICAgICAgICBndWVzdHMsIG9ubHkpXG4gXHQgLUVCVVNZICAgUE1VdjMgYWxyZWFkeSBpbml0aWFsaXplZFxuIFx0ID09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIFxuQEAgLTYyLDYgJiM0Mzs2Myw5IEBAIFJlcXVlc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQTVV2My4gIElmIHVzaW5nIHRoZSBQTVV2MyB3aXRoIGFuIGluLWtlcm5lbFxuIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBpbml0aWFsaXppbmcgdGhlIGluLWtlcm5lbFxuIGlycWNoaXAuXG4gXG4mIzQzO1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4mIzQzO2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS5cbiYjNDM7XG4gMS4zIEFUVFJJQlVURTogS1ZNX0FSTV9WQ1BVX1BNVV9WM19GSUxURVJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuQEAgLTEwOCw2ICYjNDM7MTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XG4gaXNuJiMzOTt0IHN0cmljdGx5IHNwZWFraW5nIGFuIGV2ZW50LiBGaWx0ZXJpbmcgdGhlIGN5Y2xlIGNvdW50ZXIgaXMgcG9zc2libGVcbiB1c2luZyBldmVudCAweDExIChDUFVfQ1lDTEVTKS5cbiBcbiYjNDM7V2hlbiB0aGUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgdkNQVSBmZWF0dXJlIGlzIGVuYWJsZWQgdGhpcyBtdXN0IGJlIGRvbmVcbiYjNDM7YWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuJiM0MztcbiAxLjQgQVRUUklCVVRFOiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVVcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGJhZTJjNGY5MmVmNWMwLi4zOWY3ZmM3NDBkMDc5YiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMzksNyAmIzQzOzM5LDcgQEBcbiBcbiAjZGVmaW5lIEtWTV9NQVhfVkNQVVMgVkdJQ19WM19NQVhfQ1BVU1xuIFxuLSNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDlcbiYjNDM7I2RlZmluZSBLVk1fVkNQVV9NQVhfRkVBVFVSRVMgMTBcbiAjZGVmaW5lIEtWTV9WQ1BVX1ZBTElEX0ZFQVRVUkVTXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxuIFxuICNkZWZpbmUgS1ZNX1JFUV9TTEVFUCBcXFxuQEAgLTM4Nyw2ICYjNDM7Mzg3LDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi9cbiBcdHU4IG5yX3BtdV9jb3VudGVycztcbiBcbiYjNDM7XHQvKiBQTU1JUl9FTDEuU0xPVFMgdmFsdWUgZXhwb3NlZCB0byB0aGUgZ3Vlc3QuICovXG4mIzQzO1x0dTggcG1taXJfc2xvdHM7XG4mIzQzO1xuIFx0LyogSHlwZXJjYWxsIGZlYXR1cmVzIGZpcm13YXJlIHJlZ2lzdGVycyYjMzk7IGRlc2NyaXB0b3IgKi9cbiBcdHN0cnVjdCBrdm1fc21jY2NfZmVhdHVyZXMgc21jY2NfZmVhdDtcbiBcdHN0cnVjdCBtYXBsZV90cmVlIHNtY2NjX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbmluZGV4IDFjMTNiZmEyZDM4YWFkLi4wMTllNWUzZDg5MmU2ZCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5AQCAtMTA2LDYgJiM0MzsxMDYsNyBAQCBzdHJ1Y3Qga3ZtX3JlZ3Mge1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1x0NiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJcdFx0NyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJfRTJIMFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RcdDkgLyogTm8gZGVmYXVsdCBQTVUgY3JlYXRpb24gKi9cbiBcbiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7XG4gXHRfX3UzMiB0YXJnZXQ7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xuaW5kZXggNTBhZGZmZjc1YmU4MmUuLjdkYmVmZGQ4NDZhYTcwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5AQCAtNDUyLDYgJiM0Mzs0NTIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxuIFx0XHRyID0gZ2V0X251bV93cnBzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjM6XG4mIzQzO1x0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxuIFx0XHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9JTkpFQ1RfU0VSUk9SX0VTUjpcbkBAIC0xNTYzLDggJiM0MzsxNTY0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHN5c3RlbV9zdXBwb3J0ZWRfdmNwdV9mZWF0dXJlcyh2b2lkKVxuIFx0aWYgKCFjcHVzX2hhdmVfZmluYWxfY2FwKEFSTTY0X0hBU18zMkJJVF9FTDEpKVxuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXHUwMDI2ZmVhdHVyZXMpO1xuIFxuLVx0aWYgKCFrdm1fc3VwcG9ydHNfZ3Vlc3RfcG11djMoKSlcbiYjNDM7XHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKSB7XG4gXHRcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcdTAwMjZmZWF0dXJlcyk7XG4mIzQzO1x0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoIXN5c3RlbV9zdXBwb3J0c19zdmUoKSlcbiBcdFx0Y2xlYXJfYml0KEtWTV9BUk1fVkNQVV9TVkUsIFx1MDAyNmZlYXR1cmVzKTtcbkBAIC0xNjA1LDYgJiM0MzsxNjA4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfaW5pdF9jaGVja19mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHQgICAgdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQywgXHUwMDI2ZmVhdHVyZXMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBTdHJpY3QgUE1VdjMgVUFQSSByZXF1aXJlcyBQTVV2My4gKi9cbiYjNDM7XHRpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIXRlc3RfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjMsIFx1MDAyNmZlYXR1cmVzKSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXHUwMDI2ZmVhdHVyZXMpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbkBAIC0xNjM0LDEwICYjNDM7MTY0MiwxMyBAQCBzdGF0aWMgaW50IGt2bV9zZXR1cF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0Lypcbi1cdCAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0XG4tXHQgKiB5ZXQsIHNldCB0aGUgZGVmYXVsdCBvbmUuXG4mIzQzO1x0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcbiYjNDM7XHQgKiB0aGUgZGVmYXVsdCBvbmUuIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgbm8gZGVmYXVsdFxuJiM0MztcdCAqIFBNVSBpcyBjcmVhdGVkLCBhbmQgdXNlcnNwYWNlIG11c3Qgc2VsZWN0IGEgUE1VIHZpYVxuJiM0MztcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cbiBcdCAqL1xuLVx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuJiM0MztcdGlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpIFx1MDAyNlx1MDAyNiAha3ZtLVx1MDAzZWFyY2guYXJtX3BtdSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4gXHRcdHJldCA9IGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11KGt2bSk7XG4gXG4gXHQvKiBQcmVwYXJlIGZvciBuZXN0ZWQgaWYgcmVxdWlyZWQgKi9cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuaW5kZXggOTgzMDViYmZjMDk1YWIuLjViMWFmN2UyMTc2ZmFmIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xuQEAgLTgzOCw5ICYjNDM7ODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcbiBcdHJldHVybiAoKHU2NCloaVtwbWNlaWQxXSBcdTAwM2NcdTAwM2MgMzIpIHwgbG9bcG1jZWlkMV07XG4gfVxuIFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4mIzQzO3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDApO1xuJiM0MztcdHU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guYXJtX3BtdSwgMCk7XG4gXG4gXHQvKiBhbHdheXMgc3VwcG9ydCBTV19JTkNSICovXG4gXHR2YWwgfD0gQklUKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1dfSU5DUik7XG5AQCAtODQ5LDMyICYjNDM7ODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3QgYXJtX3BtdSAqcG11KVxuJiM0MztzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAxKTtcbiYjNDM7XHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXUsIDEpO1xuIFxuIFx0Lypcbi1cdCAqIERvbiYjMzk7dCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXG4tXHQgKiBhcyBSQVpcbiYjNDM7XHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBub3Qgc2V0LCBQTU1JUl9FTDEgaXNcbiYjNDM7XHQgKiB1bmNvbmRpdGlvbmFsbHkgUkFaLCBzbyBkb24mIzM5O3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cbiBcdCAqL1xuLVx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTtcbiYjNDM7XHRpZiAoIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4mIzQzO1x0XHR2YWwgXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcbiYjNDM7XHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcbiYjNDM7XHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xuJiM0MztcbiBcdHJldHVybiB2YWw7XG4gfVxuIFxuIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXG4ge1xuLVx0c3RydWN0IGFybV9wbXUgKmNwdV9wbXUgPSB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXU7XG4gXHR1bnNpZ25lZCBsb25nICpibWFwID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5wbXVfZmlsdGVyO1xuIFx0dTY0IHZhbCwgbWFzayA9IDA7XG4gXHRpbnQgYmFzZSwgaSwgbnJfZXZlbnRzO1xuIFxuIFx0aWYgKCFwbWNlaWQxKSB7XG4tXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMChjcHVfcG11KTtcbiYjNDM7XHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMCh2Y3B1KTtcbiBcdFx0YmFzZSA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7XG4mIzQzO1x0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7XG4gXHRcdGJhc2UgPSAzMjtcbiBcdH1cbiBcbkBAIC05MzgsNiAmIzQzOzkzOSwxMCBAQCBpbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcbiBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHQvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi9cbiYjNDM7XHRpZiAoIXZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guYXJtX3BtdSlcbiYjNDM7XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1xuIFx0aWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtXHUwMDNla3ZtKSkge1xuIFx0XHRpbnQgcmV0O1xuIFxuQEAgLTEwMDgsNiAmIzQzOzEwMTMsMTQgQEAgdTgga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVycyhzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0c3RydWN0IGFybV9wbXUgKmFybV9wbXUgPSBrdm0tXHUwMDNlYXJjaC5hcm1fcG11O1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogVW5kZXIgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm8gUE1VIGV4aXN0cyB1bnRpbCB1c2Vyc3BhY2Ugc2V0c1xuJiM0MztcdCAqIG9uZSwgc28gdGhpcyBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgYXJtX3BtdSBpcyBzZXQuIFJlcG9ydCBub1xuJiM0MztcdCAqIGNvdW50ZXJzIGluIHRoYXQgY2FzZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWFybV9wbXUpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHQvKlxuIFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XG4gXHQgKiBldmVudCwgdGhvdWdoIHRoZSBzYW1lIG1heSBub3QgYmUgdHJ1ZSBvZiBub24tUE1VdjMgaGFyZHdhcmUuXG5AQCAtMTA0OSw3ICYjNDM7MTA2Miw4IEBAIHN0YXRpYyB2b2lkIGt2bV9hcm1fc2V0X3BtdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBhcm1fcG11ICphcm1fcG11KVxuIH1cbiBcbiAvKipcbi0gKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQsIGdldCB0aGUgZGVmYXVsdCBvbmUuXG4mIzQzOyAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCBhbmQgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm90XG4mIzQzOyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbiAgKiBAa3ZtOiBUaGUga3ZtIHBvaW50ZXJcbiAgKlxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXG5AQCAtMTA5Miw2ICYjNDM7MTEwNiwxNyBAQCBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgcG11X2lkKVxuIFxuIFx0XHRcdGt2bV9hcm1fc2V0X3BtdShrdm0sIGFybV9wbXUpO1xuIFx0XHRcdGNwdW1hc2tfY29weShrdm0tXHUwMDNlYXJjaC5zdXBwb3J0ZWRfY3B1cywgXHUwMDI2YXJtX3BtdS1cdTAwM2VzdXBwb3J0ZWRfY3B1cyk7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLFxuJiM0MztcdFx0XHQgKiBQTU1JUl9FTDEuU0xPVFMgaXMgZGV0ZXJtaW5pc3RpYyB0byB0aGUgZ3Vlc3QuXG4mIzQzO1x0XHRcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcbiYjNDM7XHRcdFx0ICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4mIzQzO1x0XHRcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPVxuJiM0MztcdFx0XHRcdFx0RklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUyxcbiYjNDM7XHRcdFx0XHRcdFx0ICBhcm1fcG11LVx1MDAzZXJlZ19wbW1pcik7XG4gXHRcdFx0cmV0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExNzgsNiAmIzQzOzEyMDMsOSBAQCBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuIFx0XHRpZiAoa3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pKVxuIFx0XHRcdHJldHVybiAtRUJVU1k7XG4gXG4mIzQzO1x0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLmFybV9wbXUpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5YSU87XG4mIzQzO1xuIFx0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIpIHtcbiBcdFx0XHRrdm0tXHUwMDNlYXJjaC5wbXVfZmlsdGVyID0gYml0bWFwX2FsbG9jKG5yX2V2ZW50cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0XHRpZiAoIWt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIpXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbmluZGV4IDVkNWM1NzlkNDU3OTAyLi5lOTNmMTFiOTA4MTNiMCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcbkBAIC0xMzY3LDYgJiM0MzsxMzY3LDY0IEBAIHN0YXRpYyBib29sIGFjY2Vzc19wbWludGVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4mIzQzO1x0XHRcdCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHAtXHUwMDNlaXNfd3JpdGUpXG4mIzQzO1x0XHRyZXR1cm4gd3JpdGVfdG9fcmVhZF9vbmx5KHZjcHUsIHAsIHIpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCBhbmQgUE1VIHdhcyBleHBsaWNpdGx5XG4mIzQzO1x0ICogc2VsZWN0ZWQsIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIFNMT1RTIHZhbHVlIHdhcyByZWFkIGludG8gdGhpc1xuJiM0MztcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXG4mIzQzO1x0ICovXG4mIzQzO1x0cC1cdTAwM2VyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyk7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbiYjNDM7XHRcdCAgICAgdTY0ICp2YWwpXG4mIzQzO3tcbiYjNDM7XHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4mIzQzO1x0XHQgICAgIHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVx1MDAzZWt2bTtcbiYjNDM7XHR1OCBzbG90cyA9IEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsIHZhbCk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25seSB0aGUgU0xPVFMgZmllbGQgaXMgZXhwb3NlZCAoZ2V0X3BtbWlyIHJldHVybnMganVzdCB0aGF0IGZpZWxkKSxcbiYjNDM7XHQgKiBzbyByZWplY3QgYSB3cml0ZSB0aGF0IHNldHMgYW55IG90aGVyIGJpdCByYXRoZXIgdGhhbiBzaWxlbnRseVxuJiM0MztcdCAqIG1hc2tpbmcgaXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHZhbCBcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jb25maWdfbG9jayk7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25jZSB0aGUgVk0gaGFzIHN0YXJ0ZWQgUE1NSVJfRUwxIGlzIGltbXV0YWJsZS4gUmVqZWN0IGFueSB3cml0ZVxuJiM0MztcdCAqIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcbiYjNDM7XHRcdHJldHVybiBzbG90cyA9PSBrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA/IDAgOiAtRUJVU1k7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGVcbiYjNDM7XHQgKiBvbGQgUkFaIGJlaGF2aW9yLiBSZWplY3QgYW55IG5vbi16ZXJvIHdyaXRlIHRoYXQgZG9lcyBub3QgbWF0Y2hcbiYjNDM7XHQgKiB0aGUgY3VycmVudCB2YWx1ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIXNsb3RzKVxuJiM0MztcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPSAwO1xuJiM0MztcdGVsc2UgaWYgKHNsb3RzICE9IGt2bS1cdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIGFjY2Vzc19wbW92cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbiB7XG5AQCAtMTQ0NCw2ICYjNDM7MTUwMiw3IEBAIHN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuIFx0ICovXG4gXHRpZiAoIWt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhdmNwdV9oYXNfbnYodmNwdSlcdCAgICAgIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSBcdTAwMjZcdTAwMjZcbiBcdCAgICBuZXdfbiBcdTAwM2M9IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoa3ZtKSlcbiBcdFx0a3ZtLVx1MDAzZWFyY2gubnJfcG11X2NvdW50ZXJzID0gbmV3X247XG4gXG5AQCAtMzQ0OCw3ICYjNDM7MzUwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIHN5c19yZWdfZGVzY3NbXSA9IHtcbiBcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxuIFx0ICAuYWNjZXNzID0gYWNjZXNzX3BtaW50ZW4sIC5yZWcgPSBQTUlOVEVOU0VUX0VMMSxcbiBcdCAgLmdldF91c2VyID0gZ2V0X3BtcmVnLCAuc2V0X3VzZXIgPSBzZXRfcG1yZWcgfSxcbi1cdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXG4mIzQzO1x0eyBQTVVfU1lTX1JFRyhQTU1JUl9FTDEpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyLCAucmVzZXQgPSBOVUxMLFxuJiM0MztcdCAgLmdldF91c2VyID0gZ2V0X3BtbWlyLCAuc2V0X3VzZXIgPSBzZXRfcG1taXIgfSxcbiBcbiBcdHsgU1lTX0RFU0MoU1lTX01BSVJfRUwxKSwgYWNjZXNzX3ZtX3JlZywgcmVzZXRfdW5rbm93biwgTUFJUl9FTDEgfSxcbiBcdHsgU1lTX0RFU0MoU1lTX1BJUkUwX0VMMSksIE5VTEwsIHJlc2V0X3Vua25vd24sIFBJUkUwX0VMMSxcbkBAIC00NTkzLDcgJiM0Mzs0NjUzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgY3AxNV9yZWdzW10gPSB7XG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHQvKiBQTU1JUiAqL1xuLVx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcbiYjNDM7XHR7IENQMTVfUE1VX1NZU19SRUcoRElSRUNULCAwLCA5LCAxNCwgNiksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1taXIgfSxcbiBcbiBcdC8qIFBSUlIvTUFJUjAgKi9cbiBcdHsgQUEzMihMTyksIE9wMSggMCksIENSbigxMCksIENSbSggMiksIE9wMiggMCksIGFjY2Vzc192bV9yZWcsIE5VTEwsIE1BSVJfRUwxIH0sXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9rdm0vYXJtX3BtdS5oIGIvaW5jbHVkZS9rdm0vYXJtX3BtdS5oXG5pbmRleCBiNWU1OTQyMjA0ZmM2OS4uNmI0YTExOGQxN2NhOTkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2t2bS9hcm1fcG11LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxuQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3luY19lbDAodm9pZCk7XG4gI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11KHZjcHUpXHRcdFx0XHRcdFxcXG4gXHQodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzKSlcbiBcbiYjNDM7I2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHRcdFx0XHRcXFxuJiM0MztcdCh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUKSlcbiYjNDM7XG4gLypcbiAgKiBVcGRhdGVzIHRoZSB2Y3B1JiMzOTtzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LlxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXG5AQCAtMTYwLDYgJiM0MzsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXG4gfVxuIFxuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVx0XHQoeyBmYWxzZTsgfSlcbiYjNDM7I2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHQoeyBmYWxzZTsgfSlcbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3BtdV91cGRhdGVfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9wbXVfcmVzdG9yZV9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9XG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuaW5kZXggNDE5MDExMDk3ZmE4ZTIuLjlmYzhkZmRmZDY1ZmZhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbkBAIC05OTcsNiAmIzQzOzk5Nyw3IEBAIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCB7XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX0hQQUdFXzJHIDI0OVxuJiM0MzsjZGVmaW5lIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QgMjUwXG4gXG4gc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHtcbiBcdF9fdTMyIGlycWNoaXA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXG5pbmRleCAwYTNhOTRjNGNjYTE2Zi4uY2ZhOTk5NzlkNTdjOGUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xuQEAgLTUzMiw2ICYjNDM7NTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0ge1xuIHN0YXRpYyBfX3U2NCBwbXVfcmVnc1tdID0ge1xuIFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksXHQvKiBQTUlOVEVOU0VUX0VMMSAqL1xuIFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksXHQvKiBQTUlOVEVOQ0xSX0VMMSAqL1xuJiM0MztcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLFx0LyogUE1NSVJfRUwxICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSxcdC8qIFBNQ1JfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSxcdC8qIFBNQ05URU5TRVRfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSxcdC8qIFBNQ05URU5DTFJfRUwwICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWRjYTgwYzQwZmJlZDI3NWNkNjAzOTRlZjlhNjcwZGI5MWJjMTI3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDIxOjMzOjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0CmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdApAQCAtMzUxNSw2ICYjNDM7MzUxNSwxNyBAQCBQb3NzaWJsZSBmZWF0dXJlczoKIAkgIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUFNDSV8wXzIuCiAJLSBLVk1fQVJNX1ZDUFVfUE1VX1YzOiBFbXVsYXRlIFBNVXYzIGZvciB0aGUgQ1BVLgogCSAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjMuCiYjNDM7CS0gS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Q6IEVuYWJsZSBzdHJpY3QgUE1VdjMgVUFQSS4KJiM0MzsJICBSZXF1aXJlcyBLVk1fQVJNX1ZDUFVfUE1VX1YzLiBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QuCiYjNDM7CSAgV2hlbiBlbmFibGVkOgomIzQzOwomIzQzOwkgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmUKJiM0MzsJICAgICAgaW5pdGlhbGl6aW5nIHRoZSBQTVUgb3IgY29uZmlndXJpbmcgYSBQTVUgZXZlbnQgZmlsdGVyCiYjNDM7CiYjNDM7CSAgICAqIElmIHRoZSBQTVUgaW1wbGVtZW50cyBGRUFUX1BNVXYzcDQsIFBNTUlSX0VMMS5TTE9UUyBwcm92aWRlcyB0aGUKJiM0MzsJICAgICAgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24KJiM0MzsKJiM0MzsJICAgICogV3JpdGVzIHRvIFBNQ1JfRUwwLk4gdmlhIEtWTV9TRVRfT05FX1JFRyBhcmUgaWdub3JlZAogCiAJLSBLVk1fQVJNX1ZDUFVfUFRSQVVUSF9BRERSRVNTOiBFbmFibGVzIEFkZHJlc3MgUG9pbnRlciBhdXRoZW50aWNhdGlvbgogCSAgZm9yIGFybTY0IG9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QKaW5kZXggNjZlNzE0ZjJmY2ZhN2YuLmRlYjVjNTFiYzAwYzg3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0CkBAIC01Myw4ICYjNDM7NTMsOSBAQCBSZXR1cm5zOgogCSA9PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkgLUVFWElTVCAgSW50ZXJydXB0IG51bWJlciBhbHJlYWR5IHVzZWQKIAkgLUVOT0RFViAgUE1VdjMgbm90IHN1cHBvcnRlZCBvciBHSUMgbm90IGluaXRpYWxpemVkCi0JIC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlIG9yIGludGVycnVwdAotCQkgIG51bWJlciBub3Qgc2V0IChub24tR0lDdjUgZ3Vlc3RzLCBvbmx5KQomIzQzOwkgLUVOWElPICAgUE1VdjMgbm90IHN1cHBvcnRlZCwgbWlzc2luZyBWQ1BVIGZlYXR1cmUsIG1pc3NpbmcKJiM0MzsgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBQTVUsIG9yIGludGVycnVwdCBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1CiYjNDM7ICAgICAgICAgICAgICAgICAgZ3Vlc3RzLCBvbmx5KQogCSAtRUJVU1kgICBQTVV2MyBhbHJlYWR5IGluaXRpYWxpemVkCiAJID09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC02Miw2ICYjNDM7NjMsOSBAQCBSZXF1ZXN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgUE1VdjMuICBJZiB1c2luZyB0aGUgUE1VdjMgd2l0aCBhbiBpbi1rZXJuZWwKIHZpcnR1YWwgR0lDIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBpbml0aWFsaXppbmcgdGhlIGluLWtlcm5lbAogaXJxY2hpcC4KIAomIzQzO1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lCiYjNDM7YWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLgomIzQzOwogMS4zIEFUVFJJQlVURTogS1ZNX0FSTV9WQ1BVX1BNVV9WM19GSUxURVIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEwOCw2ICYjNDM7MTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0CiBpc24mIzM5O3Qgc3RyaWN0bHkgc3BlYWtpbmcgYW4gZXZlbnQuIEZpbHRlcmluZyB0aGUgY3ljbGUgY291bnRlciBpcyBwb3NzaWJsZQogdXNpbmcgZXZlbnQgMHgxMSAoQ1BVX0NZQ0xFUykuCiAKJiM0MztXaGVuIHRoZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCB2Q1BVIGZlYXR1cmUgaXMgZW5hYmxlZCB0aGlzIG11c3QgYmUgZG9uZQomIzQzO2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS4KJiM0MzsKIDEuNCBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCBiYWUyYzRmOTJlZjVjMC4uMzlmN2ZjNzQwZDA3OWIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTM5LDcgJiM0MzszOSw3IEBACiAKICNkZWZpbmUgS1ZNX01BWF9WQ1BVUyBWR0lDX1YzX01BWF9DUFVTCiAKLSNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDkKJiM0MzsjZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyAxMAogI2RlZmluZSBLVk1fVkNQVV9WQUxJRF9GRUFUVVJFUwkoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKQogCiAjZGVmaW5lIEtWTV9SRVFfU0xFRVAgXApAQCAtMzg3LDYgJiM0MzszODcsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCS8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi8KIAl1OCBucl9wbXVfY291bnRlcnM7CiAKJiM0MzsJLyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqLwomIzQzOwl1OCBwbW1pcl9zbG90czsKJiM0MzsKIAkvKiBIeXBlcmNhbGwgZmVhdHVyZXMgZmlybXdhcmUgcmVnaXN0ZXJzJiMzOTsgZGVzY3JpcHRvciAqLwogCXN0cnVjdCBrdm1fc21jY2NfZmVhdHVyZXMgc21jY2NfZmVhdDsKIAlzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKaW5kZXggMWMxM2JmYTJkMzhhYWQuLjAxOWU1ZTNkODkyZTZkIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oCkBAIC0xMDYsNiAmIzQzOzEwNiw3IEBAIHN0cnVjdCBrdm1fcmVncyB7CiAjZGVmaW5lIEtWTV9BUk1fVkNQVV9QVFJBVVRIX0dFTkVSSUMJNiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqLwogI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMgkJNyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqLwogI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMl9FMkgwCTggLyogTGltaXQgTlYgc3VwcG9ydCB0byBFMkggUkVTMCAqLwomIzQzOyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QJOSAvKiBObyBkZWZhdWx0IFBNVSBjcmVhdGlvbiAqLwogCiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7CiAJX191MzIgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwppbmRleCA1MGFkZmZmNzViZTgyZS4uN2RiZWZkZDg0NmFhNzAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jCkBAIC00NTIsNiAmIzQzOzQ1Miw3IEBAIGludCBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uKHN0cnVjdCBrdm0gKmt2bSwgbG9uZyBleHQpCiAJCXIgPSBnZXRfbnVtX3dycHMoKTsKIAkJYnJlYWs7CiAJY2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjM6CiYjNDM7CWNhc2UgS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVDoKIAkJciA9IGt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpOwogCQlicmVhazsKIAljYXNlIEtWTV9DQVBfQVJNX0lOSkVDVF9TRVJST1JfRVNSOgpAQCAtMTU2Myw4ICYjNDM7MTU2NCwxMCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzeXN0ZW1fc3VwcG9ydGVkX3ZjcHVfZmVhdHVyZXModm9pZCkKIAlpZiAoIWNwdXNfaGF2ZV9maW5hbF9jYXAoQVJNNjRfSEFTXzMyQklUX0VMMSkpCiAJCWNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCAmYW1wO2ZlYXR1cmVzKTsKIAotCWlmICgha3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCkpCiYjNDM7CWlmICgha3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCkpIHsKIAkJY2xlYXJfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjMsICZhbXA7ZmVhdHVyZXMpOwomIzQzOwkJY2xlYXJfYml0KEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNULCAmYW1wO2ZlYXR1cmVzKTsKJiM0MzsJfQogCiAJaWYgKCFzeXN0ZW1fc3VwcG9ydHNfc3ZlKCkpCiAJCWNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfU1ZFLCAmYW1wO2ZlYXR1cmVzKTsKQEAgLTE2MDUsNiAmIzQzOzE2MDgsMTEgQEAgc3RhdGljIGludCBrdm1fdmNwdV9pbml0X2NoZWNrX2ZlYXR1cmVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkgICAgdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQywgJmFtcDtmZWF0dXJlcykpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFN0cmljdCBQTVV2MyBVQVBJIHJlcXVpcmVzIFBNVXYzLiAqLwomIzQzOwlpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsICZhbXA7ZmVhdHVyZXMpICZhbXA7JmFtcDsKJiM0MzsJICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCAmYW1wO2ZlYXR1cmVzKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgJmFtcDtmZWF0dXJlcykpCiAJCXJldHVybiAwOwogCkBAIC0xNjM0LDEwICYjNDM7MTY0MiwxMyBAQCBzdGF0aWMgaW50IGt2bV9zZXR1cF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpbnQgcmV0ID0gMDsKIAogCS8qCi0JICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QKLQkgKiB5ZXQsIHNldCB0aGUgZGVmYXVsdCBvbmUuCiYjNDM7CSAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0IHlldCwgc2V0CiYjNDM7CSAqIHRoZSBkZWZhdWx0IG9uZS4gSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0LCBubyBkZWZhdWx0CiYjNDM7CSAqIFBNVSBpcyBjcmVhdGVkLCBhbmQgdXNlcnNwYWNlIG11c3Qgc2VsZWN0IGEgUE1VIHZpYQomIzQzOwkgKiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVUuCiAJICovCi0JaWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgJmFtcDsmYW1wOyAha3ZtLSZndDthcmNoLmFybV9wbXUpCiYjNDM7CWlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpICZhbXA7JmFtcDsgIWt2bS0mZ3Q7YXJjaC5hcm1fcG11ICZhbXA7JmFtcDsKJiM0MzsJICAgICFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQogCQlyZXQgPSBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShrdm0pOwogCiAJLyogUHJlcGFyZSBmb3IgbmVzdGVkIGlmIHJlcXVpcmVkICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYwppbmRleCA5ODMwNWJiZmMwOTVhYi4uNWIxYWY3ZTIxNzZmYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYwpAQCAtODM4LDkgJiM0Mzs4MzgsOSBAQCBzdGF0aWMgdTY0IF9fY29tcHV0ZV9wbWNlaWQoc3RydWN0IGFybV9wbXUgKnBtdSwgYm9vbCBwbWNlaWQxKQogCXJldHVybiAoKHU2NCloaVtwbWNlaWQxXSAmbHQ7Jmx0OyAzMikgfCBsb1twbWNlaWQxXTsKIH0KIAotc3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDAoc3RydWN0IGFybV9wbXUgKnBtdSkKJiM0MztzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JdTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAwKTsKJiM0MzsJdTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmFybV9wbXUsIDApOwogCiAJLyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqLwogCXZhbCB8PSBCSVQoQVJNVjhfUE1VVjNfUEVSRkNUUl9TV19JTkNSKTsKQEAgLTg0OSwzMiAmIzQzOzg0OSwzMyBAQCBzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3QgYXJtX3BtdSAqcG11KQogCXJldHVybiB2YWw7CiB9CiAKLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBhcm1fcG11ICpwbXUpCiYjNDM7c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHBtdSwgMSk7CiYjNDM7CXU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5hcm1fcG11LCAxKTsKIAogCS8qCi0JICogRG9uJiMzOTt0IGFkdmVydGlzZSBTVEFMTF9TTE9UKiwgYXMgUE1NSVJfRUwwIGlzIGhhbmRsZWQKLQkgKiBhcyBSQVoKJiM0MzsJICogSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgbm90IHNldCwgUE1NSVJfRUwxIGlzCiYjNDM7CSAqIHVuY29uZGl0aW9uYWxseSBSQVosIHNvIGRvbiYjMzk7dCBhZHZlcnRpc2UgU1RBTExfU0xPVCogZXZlbnRzLgogCSAqLwotCXZhbCAmYW1wOz0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8Ci0JCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8Ci0JCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTsKJiM0MzsJaWYgKCFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQomIzQzOwkJdmFsICZhbXA7PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHwKJiM0MzsJCQkgQklUX1VMTChBUk1WOF9QTVVWM19QRVJGQ1RSX1NUQUxMX1NMT1RfRlJPTlRFTkQgLSAzMikgfAomIzQzOwkJCSBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTsKJiM0MzsKIAlyZXR1cm4gdmFsOwogfQogCiB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKQogewotCXN0cnVjdCBhcm1fcG11ICpjcHVfcG11ID0gdmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmFybV9wbXU7CiAJdW5zaWduZWQgbG9uZyAqYm1hcCA9IHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyOwogCXU2NCB2YWwsIG1hc2sgPSAwOwogCWludCBiYXNlLCBpLCBucl9ldmVudHM7CiAKIAlpZiAoIXBtY2VpZDEpIHsKLQkJdmFsID0gY29tcHV0ZV9wbWNlaWQwKGNwdV9wbXUpOwomIzQzOwkJdmFsID0gY29tcHV0ZV9wbWNlaWQwKHZjcHUpOwogCQliYXNlID0gMDsKIAl9IGVsc2UgewotCQl2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7CiYjNDM7CQl2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7CiAJCWJhc2UgPSAzMjsKIAl9CiAKQEAgLTkzOCw2ICYjNDM7OTM5LDEwIEBAIGludCBrdm1fYXJtX3BtdV92M19lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwkvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi8KJiM0MzsJaWYgKCF2Y3B1LSZndDtrdm0tJmd0O2FyY2guYXJtX3BtdSkKJiM0MzsJCXJldHVybiAtRU5YSU87CiYjNDM7CiAJaWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtJmd0O2t2bSkpIHsKIAkJaW50IHJldDsKIApAQCAtMTAwOCw2ICYjNDM7MTAxMywxNCBAQCB1OCBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKHN0cnVjdCBrdm0gKmt2bSkKIHsKIAlzdHJ1Y3QgYXJtX3BtdSAqYXJtX3BtdSA9IGt2bS0mZ3Q7YXJjaC5hcm1fcG11OwogCiYjNDM7CS8qCiYjNDM7CSAqIFVuZGVyIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vIFBNVSBleGlzdHMgdW50aWwgdXNlcnNwYWNlIHNldHMKJiM0MzsJICogb25lLCBzbyB0aGlzIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBhcm1fcG11IGlzIHNldC4gUmVwb3J0IG5vCiYjNDM7CSAqIGNvdW50ZXJzIGluIHRoYXQgY2FzZS4KJiM0MzsJICovCiYjNDM7CWlmICghYXJtX3BtdSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCS8qCiAJICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55CiAJICogZXZlbnQsIHRob3VnaCB0aGUgc2FtZSBtYXkgbm90IGJlIHRydWUgb2Ygbm9uLVBNVXYzIGhhcmR3YXJlLgpAQCAtMTA0OSw3ICYjNDM7MTA2Miw4IEBAIHN0YXRpYyB2b2lkIGt2bV9hcm1fc2V0X3BtdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBhcm1fcG11ICphcm1fcG11KQogfQogCiAvKioKLSAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS4KJiM0MzsgKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQgYW5kIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vdAomIzQzOyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS4KICAqIEBrdm06IFRoZSBrdm0gcG9pbnRlcgogICoKICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzCkBAIC0xMDkyLDYgJiM0MzsxMTA2LDE3IEBAIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpCiAKIAkJCWt2bV9hcm1fc2V0X3BtdShrdm0sIGFybV9wbXUpOwogCQkJY3B1bWFza19jb3B5KGt2bS0mZ3Q7YXJjaC5zdXBwb3J0ZWRfY3B1cywgJmFtcDthcm1fcG11LSZndDtzdXBwb3J0ZWRfY3B1cyk7CiYjNDM7CiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLAomIzQzOwkJCSAqIFBNTUlSX0VMMS5TTE9UUyBpcyBkZXRlcm1pbmlzdGljIHRvIHRoZSBndWVzdC4KJiM0MzsJCQkgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQsIHNuYXBzaG90CiYjNDM7CQkJICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKQomIzQzOwkJCQlrdm0tJmd0O2FyY2gucG1taXJfc2xvdHMgPQomIzQzOwkJCQkJRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywKJiM0MzsJCQkJCQkgIGFybV9wbXUtJmd0O3JlZ19wbW1pcik7CiAJCQlyZXQgPSAwOwogCQkJYnJlYWs7CiAJCX0KQEAgLTExNzgsNiAmIzQzOzEyMDMsOSBAQCBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKQogCQlpZiAoa3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pKQogCQkJcmV0dXJuIC1FQlVTWTsKIAomIzQzOwkJaWYgKCFrdm0tJmd0O2FyY2guYXJtX3BtdSkKJiM0MzsJCQlyZXR1cm4gLUVOWElPOwomIzQzOwogCQlpZiAoIWt2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyKSB7CiAJCQlrdm0tJmd0O2FyY2gucG11X2ZpbHRlciA9IGJpdG1hcF9hbGxvYyhucl9ldmVudHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCQlpZiAoIWt2bS0mZ3Q7YXJjaC5wbXVfZmlsdGVyKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKaW5kZXggNWQ1YzU3OWQ0NTc5MDIuLmU5M2YxMWI5MDgxM2IwIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKQEAgLTEzNjcsNiAmIzQzOzEzNjcsNjQgQEAgc3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiYjNDM7CQkJIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpCiYjNDM7ewomIzQzOwlpZiAocC0mZ3Q7aXNfd3JpdGUpCiYjNDM7CQlyZXR1cm4gd3JpdGVfdG9fcmVhZF9vbmx5KHZjcHUsIHAsIHIpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQgYW5kIFBNVSB3YXMgZXhwbGljaXRseQomIzQzOwkgKiBzZWxlY3RlZCwgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgU0xPVFMgdmFsdWUgd2FzIHJlYWQgaW50byB0aGlzCiYjNDM7CSAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouCiYjNDM7CSAqLwomIzQzOwlwLSZndDtyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnBtbWlyX3Nsb3RzKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqciwKJiM0MzsJCSAgICAgdTY0ICp2YWwpCiYjNDM7ewomIzQzOwkqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsCiYjNDM7CQkgICAgIHU2NCB2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LSZndDtrdm07CiYjNDM7CXU4IHNsb3RzID0gRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywgdmFsKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogT25seSB0aGUgU0xPVFMgZmllbGQgaXMgZXhwb3NlZCAoZ2V0X3BtbWlyIHJldHVybnMganVzdCB0aGF0IGZpZWxkKSwKJiM0MzsJICogc28gcmVqZWN0IGEgd3JpdGUgdGhhdCBzZXRzIGFueSBvdGhlciBiaXQgcmF0aGVyIHRoYW4gc2lsZW50bHkKJiM0MzsJICogbWFza2luZyBpdC4KJiM0MzsJICovCiYjNDM7CWlmICh2YWwgJmFtcDsgfih1NjQpQVJNVjhfUE1VX1NMT1RTKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CWd1YXJkKG11dGV4KSgmYW1wO2t2bS0mZ3Q7YXJjaC5jb25maWdfbG9jayk7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE9uY2UgdGhlIFZNIGhhcyBzdGFydGVkIFBNTUlSX0VMMSBpcyBpbW11dGFibGUuIFJlamVjdCBhbnkgd3JpdGUKJiM0MzsJICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS4KJiM0MzsJICovCiYjNDM7CWlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpCiYjNDM7CQlyZXR1cm4gc2xvdHMgPT0ga3ZtLSZndDthcmNoLnBtbWlyX3Nsb3RzID8gMCA6IC1FQlVTWTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKJiM0MzsJICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoCiYjNDM7CSAqIHRoZSBjdXJyZW50IHZhbHVlLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFzbG90cykKJiM0MzsJCWt2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cyA9IDA7CiYjNDM7CWVsc2UgaWYgKHNsb3RzICE9IGt2bS0mZ3Q7YXJjaC5wbW1pcl9zbG90cykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1vdnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCiAJCQkgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcikKIHsKQEAgLTE0NDQsNiAmIzQzOzE1MDIsNyBAQCBzdGF0aWMgaW50IHNldF9wbWNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqciwKIAkgKi8KIAlpZiAoIWt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSAmYW1wOyZhbXA7CiAJICAgICF2Y3B1X2hhc19udih2Y3B1KQkgICAgICAmYW1wOyZhbXA7CiYjNDM7CSAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSAmYW1wOyZhbXA7CiAJICAgIG5ld19uICZsdDs9IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoa3ZtKSkKIAkJa3ZtLSZndDthcmNoLm5yX3BtdV9jb3VudGVycyA9IG5ld19uOwogCkBAIC0zNDQ4LDcgJiM0MzszNTA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2Mgc3lzX3JlZ19kZXNjc1tdID0gewogCXsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLAogCSAgLmFjY2VzcyA9IGFjY2Vzc19wbWludGVuLCAucmVnID0gUE1JTlRFTlNFVF9FTDEsCiAJICAuZ2V0X3VzZXIgPSBnZXRfcG1yZWcsIC5zZXRfdXNlciA9IHNldF9wbXJlZyB9LAotCXsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sCiYjNDM7CXsgUE1VX1NZU19SRUcoUE1NSVJfRUwxKSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciwgLnJlc2V0ID0gTlVMTCwKJiM0MzsJICAuZ2V0X3VzZXIgPSBnZXRfcG1taXIsIC5zZXRfdXNlciA9IHNldF9wbW1pciB9LAogCiAJeyBTWVNfREVTQyhTWVNfTUFJUl9FTDEpLCBhY2Nlc3Nfdm1fcmVnLCByZXNldF91bmtub3duLCBNQUlSX0VMMSB9LAogCXsgU1lTX0RFU0MoU1lTX1BJUkUwX0VMMSksIE5VTEwsIHJlc2V0X3Vua25vd24sIFBJUkUwX0VMMSwKQEAgLTQ1OTMsNyAmIzQzOzQ2NTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyBjcDE1X3JlZ3NbXSA9IHsKIAl7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sCiAJeyBDUDE1X1BNVV9TWVNfUkVHKEhJLCAgICAgMCwgOSwgMTQsIDUpLCAuYWNjZXNzID0gYWNjZXNzX3BtY2VpZCB9LAogCS8qIFBNTUlSICovCi0JeyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSwKJiM0MzsJeyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyIH0sCiAKIAkvKiBQUlJSL01BSVIwICovCiAJeyBBQTMyKExPKSwgT3AxKCAwKSwgQ1JuKDEwKSwgQ1JtKCAyKSwgT3AyKCAwKSwgYWNjZXNzX3ZtX3JlZywgTlVMTCwgTUFJUl9FTDEgfSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaCBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaAppbmRleCBiNWU1OTQyMjA0ZmM2OS4uNmI0YTExOGQxN2NhOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2t2bS9hcm1fcG11LmgKQEAgLTc1LDYgJiM0Mzs3NSw5IEBAIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3luY19lbDAodm9pZCk7CiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSkJCQkJCVwKIAkodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzKSkKIAomIzQzOyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KQkJCQlcCiYjNDM7CSh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUKSkKJiM0MzsKIC8qCiAgKiBVcGRhdGVzIHRoZSB2Y3B1JiMzOTtzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LgogICogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGV2ZXJ5IHZjcHUgcnVuIGFmdGVyIGRpc2FibGluZyBpbnRlcnJ1cHRzLCB0byBlbnN1cmUKQEAgLTE2MCw2ICYjNDM7MTYzLDcgQEAgc3RhdGljIGlubGluZSB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKQogfQogCiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSkJCSh7IGZhbHNlOyB9KQomIzQzOyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KQkoeyBmYWxzZTsgfSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fcG11X3VwZGF0ZV92Y3B1X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3RvcmVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQogc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCmluZGV4IDQxOTAxMTA5N2ZhOGUyLi45ZmM4ZGZkZmQ2NWZmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApAQCAtOTk3LDYgJiM0Mzs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgewogI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9WU0lFX0VTQU1PREUgMjQ4CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDkKJiM0MzsjZGVmaW5lIEtWTV9DQVBfQVJNX1BNVV9WM19TVFJJQ1QgMjUwCiAKIHN0cnVjdCBrdm1faXJxX3JvdXRpbmdfaXJxY2hpcCB7CiAJX191MzIgaXJxY2hpcDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYwppbmRleCAwYTNhOTRjNGNjYTE2Zi4uY2ZhOTk5NzlkNTdjOGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmMKQEAgLTUzMiw2ICYjNDM7NTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0gewogc3RhdGljIF9fdTY0IHBtdV9yZWdzW10gPSB7CiAJQVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksCS8qIFBNSU5URU5TRVRfRUwxICovCiAJQVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksCS8qIFBNSU5URU5DTFJfRUwxICovCiYjNDM7CUFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLAkvKiBQTU1JUl9FTDEgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSwJLyogUE1DUl9FTDAgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSwJLyogUE1DTlRFTlNFVF9FTDAgKi8KIAlBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSwJLyogUE1DTlRFTkNMUl9FTDAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXcgS1ZNIHZDUFUgRmVhdHVyZSoqCgpPa2F5LCBzbyB3ZSBoYXZlIHRoaXMgcGF0Y2ggcHJvcG9zaW5nIGEgbmV3IEtWTSB2Q1BVIGZlYXR1cmUgZm9yIEFSTTY0LCBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgLiBJdCBzb3VuZHMgbGlrZSBpdCBlbmZvcmNlcyBzdHJpY3RlciBiZWhhdmlvciBmb3IgdGhlIFBNVXYzIFVBUEksIHNwZWNpZmljYWxseSBhcm91bmQgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdC4gVGhpcyBpbnZvbHZlcyBleHBsaWNpdCBzZWxlY3Rpb24gb2YgYSBQTVUgaW1wbGVtZW50YXRpb24gYmVmb3JlIGluaXRpYWxpemF0aW9uIG9yIGZpbHRlciBjb25maWd1cmF0aW9uLCBhbmQgdGFraW5nIGBQTU1JUl9FTDEuU0xPVFNgIGludG8gYWNjb3VudCBpZiBGRUFUX1BNVXYzcDQgaXMgc3VwcG9ydGVkLiBUaGUgcGF0Y2ggYWxzbyBpZ25vcmVzIHdyaXRlcyB0byBgUE1DUl9FTDAuTmAgdmlhIGBLVk1fU0VUX09ORV9SRUdgLCB3aGljaCBzZWVtcyBsaWtlIGEgc2Vuc2libGUgaGFyZGVuaW5nIG1lYXN1cmUuCgpJJiMzOTttIHNlZWluZyB0aGF0IHRoaXMgdG91Y2hlcyBxdWl0ZSBhIGZldyBrZXkgcGFydHMgb2YgdGhlIGNvcmUgS1ZNIEFSTTY0IFBNVSBlbXVsYXRpb24sIG5hbWVseSBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBhbmQgYGdldF9wbW1pcmAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggZnV6emluZz8gQ29uc2lkZXJpbmcgdGhhdCBpdCYjMzk7cyBhIG5ldyBLVk0gZmVhdHVyZSB0aGF0IGNhbiBiZSBlbmFibGVkIHZpYSBgS1ZNX0VOQUJMRV9DQVBgIG9yIGBLVk1fQVJNX1ZDUFVfSU5JVGAsIGFic29sdXRlbHksIHllcy4gQW55IG5ldyBmZWF0dXJlIGlzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIGNoYW5nZXMgbGlzdGVkIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBBUk02NCBLVk0sIHNvIEkmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb24gdGhhdC4KClRpbWUgdG8gbG9vayBmb3IgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBgQ09ORklHX0tWTWAgaXMgb2J2aW91c2x5IGEgcHJlcmVxdWlzaXRlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBmZWF0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGxvb2sgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZWxldmFudC4gSSBzaG91bGQgY2hlY2sgdGhyb3VnaCBgYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY2AgYW5kIGBhcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgZmluZXIgZGV0YWlscyBhcmUgaW1wbGVtZW50ZWQuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGdpdmUgbWUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0hXX1BFUkZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICYjNDM7PSBhcm0ubyBtbXUubyBtbWlvLm8gcHNjaS5vIGh5cGVyY2FsbHMubyBwdnRpbWUubyBcXFxuLS1cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI4LVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX0hXX1BFUkZfRVZFTlRTKSAgJiM0Mzs9IHBtdS1lbXVsLm8gcG11Lm9cbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTMwLWt2bS0kKENPTkZJR19BUk02NF9QVFJfQVVUSCkgICYjNDM7PSBwYXV0aC5vXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM9MTI5PXN0YXRpYyB2b2lkIF9faHlwX3ZnaWNfcmVzdG9yZV9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ1LSAqL1xuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MTQ2OiNpZmRlZiBDT05GSUdfSFdfUEVSRl9FVkVOVFNcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTE0Ny1zdGF0aWMgYm9vbCBfX3BtdV9zd2l0Y2hfdG9fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTI3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgRGVwZW5kZW5jeSBvZiBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIENvbXBvbmVudHMqKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgSSBuZWVkIGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIGBwbXUtZW11bC5vYCBhbmQgYHBtdS5vYC4gVGhhdCYjMzk7cyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgYnV0IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIGhlcmUuIE15IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZmlndXJlIG91dCBob3cgYENPTkZJR19IV19QRVJGX0VWRU5UU2AgaXMgaGFuZGxlZC4gSXMgdGhpcyBhIGRlZmF1bHQgb3B0aW9uLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgc3BlY2lmaWMga2VybmVsIGZlYXR1cmUgb3IgaGFyZHdhcmUgc3VwcG9ydD8gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIGNyaXRpY2FsLiBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhlc2UgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjb21wb25lbnRzIHdpbGwgYWN0dWFsbHkgZ2V0IGJ1aWx0LiBUaGUgZ29hbCBpcyB0byBlaXRoZXIgdmVyaWZ5IHRoaXMgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9yIGlzb2xhdGUgdGhlIHZhcmlhYmxlIGRlcGVuZGVuY2llcyBhdCBwbGF5LCBzbyB0aGF0IEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBteSBvd24gdGFyZ2V0IGJ1aWxkcyBhbmQgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhXX1BFUkZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9LY29uZmlnPTE2MDY9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA5LVxuYXJjaC9hcm02NC9LY29uZmlnOjE2MTA6Y29uZmlnIEhXX1BFUkZfRVZFTlRTXG5hcmNoL2FybTY0L0tjb25maWctMTYxMS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFSTTY0IEtWTSBhbmQgQm9vbGVhbiBEZWZpbml0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGFuIGBhcm02NGAgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIEtWTS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZGVmX2Jvb2wgeWAsIHdoaWNoIEkmIzM5O20gdGFraW5nIHRvIG1lYW4gYSBib29sZWFuIGRlZmluaXRpb24gc2V0IHRvICYjMzQ7eWVzJiMzNDsgb3IgcG90ZW50aWFsbHkgZW5hYmxlZC4gVGhpcyBzdWdnZXN0cyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldCwgbGlrZWx5IGltcGFjdGluZyBzb21lIGFzcGVjdCBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgoKTXkgbmV4dCBtb3ZlIGlzIHRvIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgLiBUaGlzIGZpbGUgc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzeXN0ZW0gcmVnaXN0ZXJzIHdpdGhpbiB0aGUgQVJNNjQgS1ZNIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgZnVydGhlciBkZWZpbml0aW9ucywgY29uZGl0aW9uYWwgYmxvY2tzLCBvciBtYWNyb3MgdGllZCB0byB0aGlzIGJvb2xlYW4uIEkmIzM5O20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgYm9vbGVhbiBzZXR0aW5nIGluIHRlcm1zIG9mIHJlZ2lzdGVyIGFjY2VzcyBvciB2aXJ0dWFsaXphdGlvbiBiZWhhdmlvci4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBgZGVmX2Jvb2wgeWAgdmFsdWUgaXMgdXNlZCwgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIEtWTSBmZWF0dXJlcywgYW5kIGl0cyBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3lzdGVtJiMzOTtzIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eSBwcm9maWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MzIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQWJzZW5jZSBvZiBDb25maWd1cmF0aW9uIERpcmVjdGl2ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzeXNfcmVncy5jYCwgYW5kIEkmIzM5O20gYSBiaXQgdGhyb3duLiBJIGV4cGVjdGVkIHRvIGZpbmQgc29tZSBgQ09ORklHX2AgZGlyZWN0aXZlcyBpbiB0aGlzIGZpbGUuIEJ1dCB3YWl0LCB0aGVyZSBhcmVuJiMzOTt0IGFueT8gVGhhdCYjMzk7cyB1bnVzdWFsLiBJdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIGV4cGVjdGVkIHBhdHRlcm4uIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uIGluIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbGFjayBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gb3JkZXIgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGlzIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaWZkZWYgQ09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAyMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzNAoJCQkJCQkJb3V0cHV0OiAxMjMKCQkJCQkJCXRob3VnaHRzOiA0NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIEtWTSBwYXRjaC4gVGhlIGNlbnRyYWwgZWxlbWVudCwgYXMgZXhwZWN0ZWQsIGlzIGBDT05GSUdfS1ZNYC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgbW9kaWZpY2F0aW9ucyBhbmQgdGhlaXIgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcuCgpGaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB0aGlzIHBhdGNoIHRvdWNoZXMuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGhlc2UgZnVuY3Rpb25zOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYGt2bV9wbXVfZ2V0X3BtY2VpZGAsIGBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzYCwgYW5kIGBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdWAuIE9rYXksIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdC4KCk5vdywgYSBxdWljayBhc3Nlc3NtZW50IG9mIGFjY2Vzc2liaWxpdHkgYW5kIHBvdGVudGlhbCBob3RzcG90cyBpcyBpbiBvcmRlci4gSXQgc2VlbXMgYGt2bV9hcm1fcG11X3YzX2luaXRgLCBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAsIGFuZCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgIGFyZSB0cmlnZ2VyZWQgYnkgaW9jdGxzIOKAkyBzcGVjaWZpY2FsbHksIGBLVk1fU0VUX0RFVklDRV9BVFRSYC4gVGhhdCYjMzk7cyByZWFzb25hYmxlLCBpbXBseWluZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuIGBzZXRfcG1jcmAsIGBhY2Nlc3NfcG1taXJgLCBgc2V0X3BtbWlyYCwgYW5kIGBnZXRfcG1taXJgIGFyZSBsaW5rZWQgdG8gZWl0aGVyIEtWTSByZWdpc3RlciBhY2Nlc3MgKGBLVk1fU0VUX09ORV9SRUdgL2BLVk1fR0VUX09ORV9SRUdgKSBvciBndWVzdCB0cmFwcyDigJMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gaG9zdCBhbmQgZ3Vlc3QuIGBrdm1fcG11X2dldF9wbWNlaWRgIGlzIGNsZWFybHkgaGFuZGxpbmcgZ3Vlc3QgYWNjZXNzIHRvIHRoZSBQTUNFSUQgcmVnaXN0ZXIsIGFuZCBga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVyc2AgaXMgYSBoZWxwZXIgZnVuY3Rpb24sIHdoaWNoIG1heSBiZSBjYWxsZWQgZnJvbSBvdGhlciBmdW5jdGlvbnMuCgpMZXQmIzM5O3MgY29uc29saWRhdGUgdGhlIGNvcmUgc3ltYm9sczogYGt2bV9hcm1fcG11X3YzX2luaXRgLCBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAsIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAsIGBzZXRfcG1jcmAsIGBhY2Nlc3NfcG1taXJgLCBgc2V0X3BtbWlyYCwgYGdldF9wbW1pcmAsIGFuZCBga3ZtX3BtdV9nZXRfcG1jZWlkYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIGtlZXAgYSBjbG9zZSBleWUgb24uCgpJIHNob3VsZCB2ZXJpZnkgdGhlIG5hbWVzIGluIHRoZSBzb3VyY2UgY29kZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHxib29sfHU4fHU2NHx2b2lkKSAoa3ZtX2FybV9wbXVfdjNfaW5pdHxrdm1fYXJtX3BtdV92M19zZXRfcG11fGt2bV9hcm1fcG11X3YzX3NldF9hdHRyfHNldF9wbWNyfGFjY2Vzc19wbW1pcnxzZXRfcG1taXJ8Z2V0X3BtbWlyfGt2bV9wbXVfZ2V0X3BtY2VpZCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz04NTI9c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtODY3LVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo4Njg6dTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtODY5LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jPTkxMj1pbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTkzOS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6OTQwOnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTk0MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0xMDc3PWludCBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMDg3LVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzoxMDg4OnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTEwODkte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9MTEyOT1zdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9ucl9jb3VudGVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBuKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtMTE0Mi1cbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6MTE0MzppbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMTQ0LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTEzNDY9c3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4tLVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xMzY5LVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzcwOnN0YXRpYyBib29sIGFjY2Vzc19wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM3MS1cdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODQtXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jOjEzODU6c3RhdGljIGludCBnZXRfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xMzg2LVx0XHQgICAgIHU2NCAqdmFsKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5MS1cbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmM6MTM5MjpzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzOTMtXHRcdCAgICAgdTY0IHZhbClcbi0tXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTE0ODM9c3RhdGljIGludCBnZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4tLVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xNDg5LVxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxNDkwOnN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYy0xNDkxLVx0XHQgICAgdTY0IHZhbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMjE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNTEKCQkJCQkJCW91dHB1dDogMjMwCgkJCQkJCQl0aG91Z2h0czogNTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEtWTSBBUk02NCBQTVV2MyBFbXVsYXRpb24gQ29kZSBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHNwb3Qgb246IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGBnZXRfcG1taXJgLCBhbmQgYGt2bV9wbXVfZ2V0X3BtY2VpZGAg4oCTIHRoZXNlIGFyZSBhbGwgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgUE1VdjMgZW11bGF0aW9uLgoKV2FpdCwgbG9va2luZyBjbG9zZXIgYXQgdGhlIGNhbGwgZ3JhcGgsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCBiZWluZyBzdGF0aWMgYnV0IGNhbGxlZCBmcm9tIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAgaXMgaW50ZXJlc3RpbmcuIEFuZCB0aGVuIGBzZXRfcG1jcmAgaXMgc3RhdGljIHRvbywgY2FsbGVkIGZyb20gYHNldF9wbXJlZ2AgLSB0aGF0IHdpbGwgYmUgZnVuIHRvIGV4cGxvcmUuIFNhbWUgZ29lcyBmb3IgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBhbmQgYGdldF9wbW1pcmAgLSBzdGF0aWMsIGJ1dCB1c2VkIHdpdGhpbiB0aGUgYHN5c19yZWdfZGVzY3NgIHRhYmxlLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19LVk1gIGlzIHRoZSBwcmltYXJ5IGRlcGVuZGVuY3kuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIG1vZGlmaWVkIGZpbGVzIChgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY2AsIGFuZCBgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY2ApIGNvbmZpcm1zIHRoYXQgYENPTkZJR19LVk1gIHB1bGxzIGV2ZXJ5dGhpbmcgaW4uIEFuZCBgcG11LWVtdWwuY2AgYWRkaXRpb25hbGx5IGRlcGVuZHMgb24gYENPTkZJR19IV19QRVJGX0VWRU5UU2AsIHdoaWNoIGlzIHN0YXRpY2FsbHkgZW5hYmxlZCBmb3IgQVJNNjQuIFNvLCB5ZXMsIGBDT05GSUdfS1ZNYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYSBmdXp6aW5nIGJ1aWxkLiBFeGNlbGxlbnQuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIGZlYXR1cmUgZm9yIHN0cmljdCBQTVV2MyBVQVBJIGNvbXBsaWFuY2UuIFRoYXQgbWVhbnMgdGhpcyBpcyB0b3VjaGluZyBjcml0aWNhbCBlbXVsYXRpb24gbG9naWMg4oCTIGluaXRpYWxpemF0aW9uLCBhdHRyaWJ1dGUgc2V0dGluZywgYW5kIHN5c3RlbSByZWdpc3RlciBoYW5kbGluZyAoUE1NSVIsIFBNQ1IpLiBBbmQgdGhlIGtpY2tlcjogdGhpcyBsb2dpYyBpcyBkaXJlY3RseSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbi4gVGhpcyBtYWtlcyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSBjYW4gYWJzb2x1dGVseSBzZWUgaG93IGZ1enppbmcgY2FuIHJldmVhbCBpbnRlcmVzdGluZyBidWdzIGhlcmUuCgpTbywgdG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKipGb2N1cyBTeW1ib2xzOioqCgoqICAgYGt2bV9hcm1fcG11X3YzX2luaXRgCiogICBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWAKKiAgIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAKKiAgIGBzZXRfcG1jcmAKKiAgIGBhY2Nlc3NfcG1taXJgCiogICBgc2V0X3BtbWlyYAoqICAgYGdldF9wbW1pcmAKKiAgIGBrdm1fcG11X2dldF9wbWNlaWRgCgoqKkNvbmZpZ3VyYXRpb246KioKCiogICBgS1ZNYAoKSSYjMzk7bSByZWFkeSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDIxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJtX3BtdV92M19pbml0JiMzNDssCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX3NldF9wbXUmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X2F0dHImIzM0OywKICAgICYjMzQ7c2V0X3BtY3ImIzM0OywKICAgICYjMzQ7YWNjZXNzX3BtbWlyJiMzNDssCiAgICAmIzM0O3NldF9wbW1pciYjMzQ7LAogICAgJiMzNDtnZXRfcG1taXImIzM0OywKICAgICYjMzQ7a3ZtX3BtdV9nZXRfcG1jZWlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS1ZNIHZDUFUgZmVhdHVyZSBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIHdoaWNoIGVuZm9yY2VzIHN0cmljdCBQTVV2MyBVQVBJIGJlaGF2aW9yLiBJdCBtb2RpZmllcyBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiBsb2dpYywgaW5jbHVkaW5nIFBNVSBpbml0aWFsaXphdGlvbiwgc2V0dGluZyBQTVUgYXR0cmlidXRlcywgYW5kIGhhbmRsaW5nIFBNVSBzeXN0ZW0gcmVnaXN0ZXJzIChQTU1JUiwgUE1DUikuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcm1fcG11X3YzX2luaXQmIzM0OywKICAgICYjMzQ7a3ZtX2FybV9wbXVfdjNfc2V0X3BtdSYjMzQ7LAogICAgJiMzNDtrdm1fYXJtX3BtdV92M19zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtzZXRfcG1jciYjMzQ7LAogICAgJiMzNDthY2Nlc3NfcG1taXImIzM0OywKICAgICYjMzQ7c2V0X3BtbWlyJiMzNDssCiAgICAmIzM0O2dldF9wbW1pciYjMzQ7LAogICAgJiMzNDtrdm1fcG11X2dldF9wbWNlaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjA4LjAzNzA5NTY2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2OTc2NTc0MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcm1fcG11X3YzX2luaXRcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9wbXVcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9hdHRyXCIsXG4gICAgXCJzZXRfcG1jclwiLFxuICAgIFwiYWNjZXNzX3BtbWlyXCIsXG4gICAgXCJzZXRfcG1taXJcIixcbiAgICBcImdldF9wbW1pclwiLFxuICAgIFwia3ZtX3BtdV9nZXRfcG1jZWlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MDguMDM3MTAxMzE4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkxMDc2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZGNhODBjNDBmYmVkMjc1Y2Q2MDM5NGVmOWE2NzBkYjkxYmMxMjc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIzIDIxOjMzOjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcXG5AQCAtMzUxNSw2ICszNTE1LDE3IEBAIFBvc3NpYmxlIGZlYXR1cmVzOlxcbiBcXHQgIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUFNDSV8wXzIuXFxuIFxcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WMzogRW11bGF0ZSBQTVV2MyBmb3IgdGhlIENQVS5cXG4gXFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WMy5cXG4rXFx0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVDogRW5hYmxlIHN0cmljdCBQTVV2MyBVQVBJLlxcbitcXHQgIFJlcXVpcmVzIEtWTV9BUk1fVkNQVV9QTVVfVjMuIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVC5cXG4rXFx0ICBXaGVuIGVuYWJsZWQ6XFxuK1xcbitcXHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcXG4rXFx0ICAgICAgaW5pdGlhbGl6aW5nIHRoZSBQTVUgb3IgY29uZmlndXJpbmcgYSBQTVUgZXZlbnQgZmlsdGVyXFxuK1xcbitcXHQgICAgKiBJZiB0aGUgUE1VIGltcGxlbWVudHMgRkVBVF9QTVV2M3A0LCBQTU1JUl9FTDEuU0xPVFMgcHJvdmlkZXMgdGhlXFxuK1xcdCAgICAgIGhhcmR3YXJlIHZhbHVlIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uXFxuK1xcbitcXHQgICAgKiBXcml0ZXMgdG8gUE1DUl9FTDAuTiB2aWEgS1ZNX1NFVF9PTkVfUkVHIGFyZSBpZ25vcmVkXFxuIFxcbiBcXHQtIEtWTV9BUk1fVkNQVV9QVFJBVVRIX0FERFJFU1M6IEVuYWJsZXMgQWRkcmVzcyBQb2ludGVyIGF1dGhlbnRpY2F0aW9uXFxuIFxcdCAgZm9yIGFybTY0IG9ubHkuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdCBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxcbmluZGV4IDY2ZTcxNGYyZmNmYTdmLi5kZWI1YzUxYmMwMGM4NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcXG5AQCAtNTMsOCArNTMsOSBAQCBSZXR1cm5zOlxcbiBcXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcdCAtRUVYSVNUICBJbnRlcnJ1cHQgbnVtYmVyIGFscmVhZHkgdXNlZFxcbiBcXHQgLUVOT0RFViAgUE1VdjMgbm90IHN1cHBvcnRlZCBvciBHSUMgbm90IGluaXRpYWxpemVkXFxuLVxcdCAtRU5YSU8gICBQTVV2MyBub3Qgc3VwcG9ydGVkLCBtaXNzaW5nIFZDUFUgZmVhdHVyZSBvciBpbnRlcnJ1cHRcXG4tXFx0XFx0ICBudW1iZXIgbm90IHNldCAobm9uLUdJQ3Y1IGd1ZXN0cywgb25seSlcXG4rXFx0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlLCBtaXNzaW5nXFxuKyAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIFBNVSwgb3IgaW50ZXJydXB0IG51bWJlciBub3Qgc2V0IChub24tR0lDdjVcXG4rICAgICAgICAgICAgICAgICAgZ3Vlc3RzLCBvbmx5KVxcbiBcXHQgLUVCVVNZICAgUE1VdjMgYWxyZWFkeSBpbml0aWFsaXplZFxcbiBcXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuIFxcbkBAIC02Miw2ICs2Myw5IEBAIFJlcXVlc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQTVV2My4gIElmIHVzaW5nIHRoZSBQTVV2MyB3aXRoIGFuIGluLWtlcm5lbFxcbiB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBpbi1rZXJuZWxcXG4gaXJxY2hpcC5cXG4gXFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXFxuK2FmdGVyIHNlbGVjdGluZyBhIGhhcmR3YXJlIFBNVS5cXG4rXFxuIDEuMyBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfRklMVEVSXFxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbkBAIC0xMDgsNiArMTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XFxuIGlzbid0IHN0cmljdGx5IHNwZWFraW5nIGFuIGV2ZW50LiBGaWx0ZXJpbmcgdGhlIGN5Y2xlIGNvdW50ZXIgaXMgcG9zc2libGVcXG4gdXNpbmcgZXZlbnQgMHgxMSAoQ1BVX0NZQ0xFUykuXFxuIFxcbitXaGVuIHRoZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCB2Q1BVIGZlYXR1cmUgaXMgZW5hYmxlZCB0aGlzIG11c3QgYmUgZG9uZVxcbithZnRlciBzZWxlY3RpbmcgYSBoYXJkd2FyZSBQTVUuXFxuK1xcbiAxLjQgQVRUUklCVVRFOiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NFVF9QTVVcXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCBiYWUyYzRmOTJlZjVjMC4uMzlmN2ZjNzQwZDA3OWIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTM5LDcgKzM5LDcgQEBcXG4gXFxuICNkZWZpbmUgS1ZNX01BWF9WQ1BVUyBWR0lDX1YzX01BWF9DUFVTXFxuIFxcbi0jZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyA5XFxuKyNkZWZpbmUgS1ZNX1ZDUFVfTUFYX0ZFQVRVUkVTIDEwXFxuICNkZWZpbmUgS1ZNX1ZDUFVfVkFMSURfRkVBVFVSRVNcXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxcbiBcXG4gI2RlZmluZSBLVk1fUkVRX1NMRUVQIFxcXFxcXG5AQCAtMzg3LDYgKzM4Nyw5IEBAIHN0cnVjdCBrdm1fYXJjaCB7XFxuIFxcdC8qIE1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzIGZvciB0aGUgZ3Vlc3QgKi9cXG4gXFx0dTggbnJfcG11X2NvdW50ZXJzO1xcbiBcXG4rXFx0LyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqL1xcbitcXHR1OCBwbW1pcl9zbG90cztcXG4rXFxuIFxcdC8qIEh5cGVyY2FsbCBmZWF0dXJlcyBmaXJtd2FyZSByZWdpc3RlcnMnIGRlc2NyaXB0b3IgKi9cXG4gXFx0c3RydWN0IGt2bV9zbWNjY19mZWF0dXJlcyBzbWNjY19mZWF0O1xcbiBcXHRzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7XFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxcbmluZGV4IDFjMTNiZmEyZDM4YWFkLi4wMTllNWUzZDg5MmU2ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcXG5AQCAtMTA2LDYgKzEwNiw3IEBAIHN0cnVjdCBrdm1fcmVncyB7XFxuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1xcdDYgLyogVkNQVSB1c2VzIGdlbmVyaWMgYXV0aGVudGljYXRpb24gKi9cXG4gI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMlxcdFxcdDcgLyogU3VwcG9ydCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKi9cXG4gI2RlZmluZSBLVk1fQVJNX1ZDUFVfSEFTX0VMMl9FMkgwXFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXFxuKyNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RcXHQ5IC8qIE5vIGRlZmF1bHQgUE1VIGNyZWF0aW9uICovXFxuIFxcbiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCB7XFxuIFxcdF9fdTMyIHRhcmdldDtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vYXJtLmMgYi9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbmluZGV4IDUwYWRmZmY3NWJlODJlLi43ZGJlZmRkODQ2YWE3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuQEAgLTQ1Miw2ICs0NTIsNyBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcgZXh0KVxcbiBcXHRcXHRyID0gZ2V0X251bV93cnBzKCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEtWTV9DQVBfQVJNX1BNVV9WMzpcXG4rXFx0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxcbiBcXHRcXHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEtWTV9DQVBfQVJNX0lOSkVDVF9TRVJST1JfRVNSOlxcbkBAIC0xNTYzLDggKzE1NjQsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc3lzdGVtX3N1cHBvcnRlZF92Y3B1X2ZlYXR1cmVzKHZvaWQpXFxuIFxcdGlmICghY3B1c19oYXZlX2ZpbmFsX2NhcChBUk02NF9IQVNfMzJCSVRfRUwxKSlcXG4gXFx0XFx0Y2xlYXJfYml0KEtWTV9BUk1fVkNQVV9FTDFfMzJCSVQsIFxcdTAwMjZmZWF0dXJlcyk7XFxuIFxcbi1cXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKVxcbitcXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKSB7XFxuIFxcdFxcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcXHUwMDI2ZmVhdHVyZXMpO1xcbitcXHRcXHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFxcdTAwMjZmZWF0dXJlcyk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKVxcbiBcXHRcXHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1NWRSwgXFx1MDAyNmZlYXR1cmVzKTtcXG5AQCAtMTYwNSw2ICsxNjA4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfaW5pdF9jaGVja19mZWF0dXJlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdCAgICB0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUFRSQVVUSF9HRU5FUklDLCBcXHUwMDI2ZmVhdHVyZXMpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdC8qIFN0cmljdCBQTVV2MyBVQVBJIHJlcXVpcmVzIFBNVXYzLiAqL1xcbitcXHRpZiAodGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFxcdTAwMjZmZWF0dXJlcykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcXHUwMDI2ZmVhdHVyZXMpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICghdGVzdF9iaXQoS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVCwgXFx1MDAyNmZlYXR1cmVzKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNjM0LDEwICsxNjQyLDEzIEBAIHN0YXRpYyBpbnQga3ZtX3NldHVwX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuIFxcdC8qXFxuLVxcdCAqIFdoZW4gdGhlIHZDUFUgaGFzIGEgUE1VLCBidXQgbm8gUE1VIGlzIHNldCBmb3IgdGhlIGd1ZXN0XFxuLVxcdCAqIHlldCwgc2V0IHRoZSBkZWZhdWx0IG9uZS5cXG4rXFx0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcXG4rXFx0ICogdGhlIGRlZmF1bHQgb25lLiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQsIG5vIGRlZmF1bHRcXG4rXFx0ICogUE1VIGlzIGNyZWF0ZWQsIGFuZCB1c2Vyc3BhY2UgbXVzdCBzZWxlY3QgYSBQTVUgdmlhXFxuK1xcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cXG4gXFx0ICovXFxuLVxcdGlmIChrdm1fdmNwdV9oYXNfcG11KHZjcHUpIFxcdTAwMjZcXHUwMDI2ICFrdm0tXFx1MDAzZWFyY2guYXJtX3BtdSlcXG4rXFx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXFx1MDAyNlxcdTAwMjYgIWt2bS1cXHUwMDNlYXJjaC5hcm1fcG11IFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSlcXG4gXFx0XFx0cmV0ID0ga3ZtX2FybV9zZXRfZGVmYXVsdF9wbXUoa3ZtKTtcXG4gXFxuIFxcdC8qIFByZXBhcmUgZm9yIG5lc3RlZCBpZiByZXF1aXJlZCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xcbmluZGV4IDk4MzA1YmJmYzA5NWFiLi41YjFhZjdlMjE3NmZhZiAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuY1xcbkBAIC04MzgsOSArODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcXG4gXFx0cmV0dXJuICgodTY0KWhpW3BtY2VpZDFdIFxcdTAwM2NcXHUwMDNjIDMyKSB8IGxvW3BtY2VpZDFdO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3QgYXJtX3BtdSAqcG11KVxcbitzdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQocG11LCAwKTtcXG4rXFx0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUsIDApO1xcbiBcXG4gXFx0LyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqL1xcbiBcXHR2YWwgfD0gQklUKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1dfSU5DUik7XFxuQEAgLTg0OSwzMiArODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXFxuIFxcdHJldHVybiB2YWw7XFxuIH1cXG4gXFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBhcm1fcG11ICpwbXUpXFxuK3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDEpO1xcbitcXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guYXJtX3BtdSwgMSk7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBEb24ndCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXFxuLVxcdCAqIGFzIFJBWlxcbitcXHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBub3Qgc2V0LCBQTU1JUl9FTDEgaXNcXG4rXFx0ICogdW5jb25kaXRpb25hbGx5IFJBWiwgc28gZG9uJ3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cXG4gXFx0ICovXFxuLVxcdHZhbCBcXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcXG4tXFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcXG4tXFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xcbitcXHRpZiAoIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXFxuK1xcdFxcdHZhbCBcXHUwMDI2PSB+KEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UIC0gMzIpIHxcXG4rXFx0XFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcXG4rXFx0XFx0XFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0JBQ0tFTkQgLSAzMikpO1xcbitcXG4gXFx0cmV0dXJuIHZhbDtcXG4gfVxcbiBcXG4gdTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcXG4ge1xcbi1cXHRzdHJ1Y3QgYXJtX3BtdSAqY3B1X3BtdSA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5hcm1fcG11O1xcbiBcXHR1bnNpZ25lZCBsb25nICpibWFwID0gdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBtdV9maWx0ZXI7XFxuIFxcdHU2NCB2YWwsIG1hc2sgPSAwO1xcbiBcXHRpbnQgYmFzZSwgaSwgbnJfZXZlbnRzO1xcbiBcXG4gXFx0aWYgKCFwbWNlaWQxKSB7XFxuLVxcdFxcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMChjcHVfcG11KTtcXG4rXFx0XFx0dmFsID0gY29tcHV0ZV9wbWNlaWQwKHZjcHUpO1xcbiBcXHRcXHRiYXNlID0gMDtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0dmFsID0gY29tcHV0ZV9wbWNlaWQxKGNwdV9wbXUpO1xcbitcXHRcXHR2YWwgPSBjb21wdXRlX3BtY2VpZDEodmNwdSk7XFxuIFxcdFxcdGJhc2UgPSAzMjtcXG4gXFx0fVxcbiBcXG5AQCAtOTM4LDYgKzkzOSwxMCBAQCBpbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFxuIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4rXFx0LyogT25seSBwb3NzaWJsZSB3aGVuIHVzaW5nIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUICovXFxuK1xcdGlmICghdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUpXFxuK1xcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcbiBcXHRpZiAoaXJxY2hpcF9pbl9rZXJuZWwodmNwdS1cXHUwMDNla3ZtKSkge1xcbiBcXHRcXHRpbnQgcmV0O1xcbiBcXG5AQCAtMTAwOCw2ICsxMDEzLDE0IEBAIHU4IGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdHN0cnVjdCBhcm1fcG11ICphcm1fcG11ID0ga3ZtLVxcdTAwM2VhcmNoLmFybV9wbXU7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBVbmRlciBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBubyBQTVUgZXhpc3RzIHVudGlsIHVzZXJzcGFjZSBzZXRzXFxuK1xcdCAqIG9uZSwgc28gdGhpcyBjYW4gYmUgcmVhY2hlZCBiZWZvcmUgYXJtX3BtdSBpcyBzZXQuIFJlcG9ydCBub1xcbitcXHQgKiBjb3VudGVycyBpbiB0aGF0IGNhc2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoIWFybV9wbXUpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0LypcXG4gXFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XFxuIFxcdCAqIGV2ZW50LCB0aG91Z2ggdGhlIHNhbWUgbWF5IG5vdCBiZSB0cnVlIG9mIG5vbi1QTVV2MyBoYXJkd2FyZS5cXG5AQCAtMTA0OSw3ICsxMDYyLDggQEAgc3RhdGljIHZvaWQga3ZtX2FybV9zZXRfcG11KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGFybV9wbXUgKmFybV9wbXUpXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQsIGdldCB0aGUgZGVmYXVsdCBvbmUuXFxuKyAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCBhbmQgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm90XFxuKyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cXG4gICogQGt2bTogVGhlIGt2bSBwb2ludGVyXFxuICAqXFxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXFxuQEAgLTEwOTIsNiArMTEwNiwxNyBAQCBzdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgcG11X2lkKVxcbiBcXG4gXFx0XFx0XFx0a3ZtX2FybV9zZXRfcG11KGt2bSwgYXJtX3BtdSk7XFxuIFxcdFxcdFxcdGNwdW1hc2tfY29weShrdm0tXFx1MDAzZWFyY2guc3VwcG9ydGVkX2NwdXMsIFxcdTAwMjZhcm1fcG11LVxcdTAwM2VzdXBwb3J0ZWRfY3B1cyk7XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBTaW5jZSBhIHNwZWNpZmljIFBNVSBpcyBleHBsaWNpdGx5IHNlbGVjdGVkLFxcbitcXHRcXHRcXHQgKiBQTU1JUl9FTDEuU0xPVFMgaXMgZGV0ZXJtaW5pc3RpYyB0byB0aGUgZ3Vlc3QuXFxuK1xcdFxcdFxcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcXG4rXFx0XFx0XFx0ICogdGhlIHZhbHVlIHRvIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGl0LlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXFxuK1xcdFxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA9XFxuK1xcdFxcdFxcdFxcdFxcdEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgYXJtX3BtdS1cXHUwMDNlcmVnX3BtbWlyKTtcXG4gXFx0XFx0XFx0cmV0ID0gMDtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5AQCAtMTE3OCw2ICsxMjAzLDkgQEAgaW50IGt2bV9hcm1fcG11X3YzX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4gXFx0XFx0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gXFxuK1xcdFxcdGlmICgha3ZtLVxcdTAwM2VhcmNoLmFybV9wbXUpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5YSU87XFxuK1xcbiBcXHRcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5wbXVfZmlsdGVyKSB7XFxuIFxcdFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wbXVfZmlsdGVyID0gYml0bWFwX2FsbG9jKG5yX2V2ZW50cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0XFx0aWYgKCFrdm0tXFx1MDAzZWFyY2gucG11X2ZpbHRlcilcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcXG5pbmRleCA1ZDVjNTc5ZDQ1NzkwMi4uZTkzZjExYjkwODEzYjAgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcXG5AQCAtMTM2Nyw2ICsxMzY3LDY0IEBAIHN0YXRpYyBib29sIGFjY2Vzc19wbWludGVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYWNjZXNzX3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLFxcbitcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcXG4re1xcbitcXHRpZiAocC1cXHUwMDNlaXNfd3JpdGUpXFxuK1xcdFxcdHJldHVybiB3cml0ZV90b19yZWFkX29ubHkodmNwdSwgcCwgcik7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJZiBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCBpcyBzZXQgYW5kIFBNVSB3YXMgZXhwbGljaXRseVxcbitcXHQgKiBzZWxlY3RlZCwgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgU0xPVFMgdmFsdWUgd2FzIHJlYWQgaW50byB0aGlzXFxuK1xcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXFxuK1xcdCAqL1xcbitcXHRwLVxcdTAwM2VyZWd2YWwgPSBGSUVMRF9QUkVQKEFSTVY4X1BNVV9TTE9UUywgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcXG4rXFx0XFx0ICAgICB1NjQgKnZhbClcXG4re1xcbitcXHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5wbW1pcl9zbG90cyk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IHNldF9wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXFxuK1xcdFxcdCAgICAgdTY0IHZhbClcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuK1xcdHU4IHNsb3RzID0gRklFTERfR0VUKEFSTVY4X1BNVV9TTE9UUywgdmFsKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9ubHkgdGhlIFNMT1RTIGZpZWxkIGlzIGV4cG9zZWQgKGdldF9wbW1pciByZXR1cm5zIGp1c3QgdGhhdCBmaWVsZCksXFxuK1xcdCAqIHNvIHJlamVjdCBhIHdyaXRlIHRoYXQgc2V0cyBhbnkgb3RoZXIgYml0IHJhdGhlciB0aGFuIHNpbGVudGx5XFxuK1xcdCAqIG1hc2tpbmcgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAodmFsIFxcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdGd1YXJkKG11dGV4KShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmNvbmZpZ19sb2NrKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9uY2UgdGhlIFZNIGhhcyBzdGFydGVkIFBNTUlSX0VMMSBpcyBpbW11dGFibGUuIFJlamVjdCBhbnkgd3JpdGVcXG4rXFx0ICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS5cXG4rXFx0ICovXFxuK1xcdGlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpXFxuK1xcdFxcdHJldHVybiBzbG90cyA9PSBrdm0tXFx1MDAzZWFyY2gucG1taXJfc2xvdHMgPyAwIDogLUVCVVNZO1xcbitcXG4rXFx0LypcXG4rXFx0ICogT25seSBTTE9UUyA9IDAgaXMgaG9ub3JlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGVcXG4rXFx0ICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoXFxuK1xcdCAqIHRoZSBjdXJyZW50IHZhbHVlLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFzbG90cylcXG4rXFx0XFx0a3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzID0gMDtcXG4rXFx0ZWxzZSBpZiAoc2xvdHMgIT0ga3ZtLVxcdTAwM2VhcmNoLnBtbWlyX3Nsb3RzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1vdnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXFxuIFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyKVxcbiB7XFxuQEAgLTE0NDQsNiArMTUwMiw3IEBAIHN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbiBcXHQgKi9cXG4gXFx0aWYgKCFrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF2Y3B1X2hhc19udih2Y3B1KVxcdCAgICAgIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgbmV3X24gXFx1MDAzYz0ga3ZtX2FybV9wbXVfZ2V0X21heF9jb3VudGVycyhrdm0pKVxcbiBcXHRcXHRrdm0tXFx1MDAzZWFyY2gubnJfcG11X2NvdW50ZXJzID0gbmV3X247XFxuIFxcbkBAIC0zNDQ4LDcgKzM1MDcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyBzeXNfcmVnX2Rlc2NzW10gPSB7XFxuIFxcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxcbiBcXHQgIC5hY2Nlc3MgPSBhY2Nlc3NfcG1pbnRlbiwgLnJlZyA9IFBNSU5URU5TRVRfRUwxLFxcbiBcXHQgIC5nZXRfdXNlciA9IGdldF9wbXJlZywgLnNldF91c2VyID0gc2V0X3BtcmVnIH0sXFxuLVxcdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXFxuK1xcdHsgUE1VX1NZU19SRUcoUE1NSVJfRUwxKSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciwgLnJlc2V0ID0gTlVMTCxcXG4rXFx0ICAuZ2V0X3VzZXIgPSBnZXRfcG1taXIsIC5zZXRfdXNlciA9IHNldF9wbW1pciB9LFxcbiBcXG4gXFx0eyBTWVNfREVTQyhTWVNfTUFJUl9FTDEpLCBhY2Nlc3Nfdm1fcmVnLCByZXNldF91bmtub3duLCBNQUlSX0VMMSB9LFxcbiBcXHR7IFNZU19ERVNDKFNZU19QSVJFMF9FTDEpLCBOVUxMLCByZXNldF91bmtub3duLCBQSVJFMF9FTDEsXFxuQEAgLTQ1OTMsNyArNDY1Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIGNwMTVfcmVnc1tdID0ge1xcbiBcXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXFxuIFxcdHsgQ1AxNV9QTVVfU1lTX1JFRyhISSwgICAgIDAsIDksIDE0LCA1KSwgLmFjY2VzcyA9IGFjY2Vzc19wbWNlaWQgfSxcXG4gXFx0LyogUE1NSVIgKi9cXG4tXFx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcXG4rXFx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gYWNjZXNzX3BtbWlyIH0sXFxuIFxcbiBcXHQvKiBQUlJSL01BSVIwICovXFxuIFxcdHsgQUEzMihMTyksIE9wMSggMCksIENSbigxMCksIENSbSggMiksIE9wMiggMCksIGFjY2Vzc192bV9yZWcsIE5VTEwsIE1BSVJfRUwxIH0sXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaCBiL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxcbmluZGV4IGI1ZTU5NDIyMDRmYzY5Li42YjRhMTE4ZDE3Y2E5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2t2bS9hcm1fcG11LmhcXG4rKysgYi9pbmNsdWRlL2t2bS9hcm1fcG11LmhcXG5AQCAtNzUsNiArNzUsOSBAQCB2b2lkIGt2bV92Y3B1X3BtdV9yZXN5bmNfZWwwKHZvaWQpO1xcbiAjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXUodmNwdSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCh2Y3B1X2hhc19mZWF0dXJlKHZjcHUsIEtWTV9BUk1fVkNQVV9QTVVfVjMpKVxcbiBcXG4rI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQodmNwdV9oYXNfZmVhdHVyZSh2Y3B1LCBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCkpXFxuK1xcbiAvKlxcbiAgKiBVcGRhdGVzIHRoZSB2Y3B1J3MgdmlldyBvZiB0aGUgcG11IGV2ZW50cyBmb3IgdGhpcyBjcHUuXFxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXFxuQEAgLTE2MCw2ICsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIHU2NCBrdm1fcG11X2dldF9wbWNlaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHBtY2VpZDEpXFxuIH1cXG4gXFxuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVxcdFxcdCh7IGZhbHNlOyB9KVxcbisjZGVmaW5lIGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSlcXHQoeyBmYWxzZTsgfSlcXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9wbXVfdXBkYXRlX3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X3BtdV9yZXN0b3JlX2hvc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcXG5pbmRleCA0MTkwMTEwOTdmYThlMi4uOWZjOGRmZGZkNjVmZmEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXFxuQEAgLTk5Nyw2ICs5OTcsNyBAQCBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAge1xcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9LRVlPUCAyNDdcXG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxcbiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9IUEFHRV8yRyAyNDlcXG4rI2RlZmluZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUIDI1MFxcbiBcXG4gc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHtcXG4gXFx0X191MzIgaXJxY2hpcDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXFxuaW5kZXggMGEzYTk0YzRjY2ExNmYuLmNmYTk5OTc5ZDU3YzhlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xcbkBAIC01MzIsNiArNTMyLDcgQEAgc3RhdGljIF9fdTY0IGJhc2VfcmVnc1tdID0ge1xcbiBzdGF0aWMgX191NjQgcG11X3JlZ3NbXSA9IHtcXG4gXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMSksXFx0LyogUE1JTlRFTlNFVF9FTDEgKi9cXG4gXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgMiksXFx0LyogUE1JTlRFTkNMUl9FTDEgKi9cXG4rXFx0QVJNNjRfU1lTX1JFRygzLCAwLCA5LCAxNCwgNiksXFx0LyogUE1NSVJfRUwxICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDApLFxcdC8qIFBNQ1JfRUwwICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDEpLFxcdC8qIFBNQ05URU5TRVRfRUwwICovXFxuIFxcdEFSTTY0X1NZU19SRUcoMywgMywgOSwgMTIsIDIpLFxcdC8qIFBNQ05URU5DTFJfRUwwICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjA4LjUxNjgzODI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM2NDk2ODIzOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcm1fcG11X3YzX2luaXRcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9wbXVcIixcbiAgICBcImt2bV9hcm1fcG11X3YzX3NldF9hdHRyXCIsXG4gICAgXCJzZXRfcG1jclwiLFxuICAgIFwiYWNjZXNzX3BtbWlyXCIsXG4gICAgXCJzZXRfcG1taXJcIixcbiAgICBcImdldF9wbW1pclwiLFxuICAgIFwia3ZtX3BtdV9nZXRfcG1jZWlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgd2hpY2ggZW5mb3JjZXMgc3RyaWN0IFBNVXYzIFVBUEkgYmVoYXZpb3IuIEl0IG1vZGlmaWVzIEtWTSBBUk02NCBQTVUgZW11bGF0aW9uIGxvZ2ljLCBpbmNsdWRpbmcgUE1VIGluaXRpYWxpemF0aW9uLCBzZXR0aW5nIFBNVSBhdHRyaWJ1dGVzLCBhbmQgaGFuZGxpbmcgUE1VIHN5c3RlbSByZWdpc3RlcnMgKFBNTUlSLCBQTUNSKS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZGNhODBjNDBmYmVkMjc1Y2Q2MDM5NGVmOWE2NzBkYjkxYmMxMjc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMjE6MzM6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2FwaS5yc3RcbmluZGV4IGE1ZjllZTkyZjQzZThkLi40OTg4YzMyZGY0YmY4MSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vYXBpLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9hcGkucnN0XG5AQCAtMzUxNSw2ICszNTE1LDE3IEBAIFBvc3NpYmxlIGZlYXR1cmVzOlxuIFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BTQ0lfMF8yLlxuIFx0LSBLVk1fQVJNX1ZDUFVfUE1VX1YzOiBFbXVsYXRlIFBNVXYzIGZvciB0aGUgQ1BVLlxuIFx0ICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BNVV9WMy5cbitcdC0gS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Q6IEVuYWJsZSBzdHJpY3QgUE1VdjMgVUFQSS5cbitcdCAgUmVxdWlyZXMgS1ZNX0FSTV9WQ1BVX1BNVV9WMy4gRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNULlxuK1x0ICBXaGVuIGVuYWJsZWQ6XG4rXG4rXHQgICAgKiBVc2Vyc3BhY2UgbXVzdCBleHBsaWNpdGx5IHNlbGVjdCBhIFBNVSBpbXBsZW1lbnRhdGlvbiBiZWZvcmVcbitcdCAgICAgIGluaXRpYWxpemluZyB0aGUgUE1VIG9yIGNvbmZpZ3VyaW5nIGEgUE1VIGV2ZW50IGZpbHRlclxuK1xuK1x0ICAgICogSWYgdGhlIFBNVSBpbXBsZW1lbnRzIEZFQVRfUE1VdjNwNCwgUE1NSVJfRUwxLlNMT1RTIHByb3ZpZGVzIHRoZVxuK1x0ICAgICAgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb25cbitcbitcdCAgICAqIFdyaXRlcyB0byBQTUNSX0VMMC5OIHZpYSBLVk1fU0VUX09ORV9SRUcgYXJlIGlnbm9yZWRcbiBcbiBcdC0gS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfQUREUkVTUzogRW5hYmxlcyBBZGRyZXNzIFBvaW50ZXIgYXV0aGVudGljYXRpb25cbiBcdCAgZm9yIGFybTY0IG9ubHkuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3ZjcHUucnN0XG5pbmRleCA2NmU3MTRmMmZjZmE3Zi4uZGViNWM1MWJjMDBjODcgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvdmNwdS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy92Y3B1LnJzdFxuQEAgLTUzLDggKzUzLDkgQEAgUmV0dXJuczpcbiBcdCA9PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiBcdCAtRUVYSVNUICBJbnRlcnJ1cHQgbnVtYmVyIGFscmVhZHkgdXNlZFxuIFx0IC1FTk9ERVYgIFBNVXYzIG5vdCBzdXBwb3J0ZWQgb3IgR0lDIG5vdCBpbml0aWFsaXplZFxuLVx0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlIG9yIGludGVycnVwdFxuLVx0XHQgIG51bWJlciBub3Qgc2V0IChub24tR0lDdjUgZ3Vlc3RzLCBvbmx5KVxuK1x0IC1FTlhJTyAgIFBNVXYzIG5vdCBzdXBwb3J0ZWQsIG1pc3NpbmcgVkNQVSBmZWF0dXJlLCBtaXNzaW5nXG4rICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgUE1VLCBvciBpbnRlcnJ1cHQgbnVtYmVyIG5vdCBzZXQgKG5vbi1HSUN2NVxuKyAgICAgICAgICAgICAgICAgIGd1ZXN0cywgb25seSlcbiBcdCAtRUJVU1kgICBQTVV2MyBhbHJlYWR5IGluaXRpYWxpemVkXG4gXHQgPT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gXG5AQCAtNjIsNiArNjMsOSBAQCBSZXF1ZXN0IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgUE1VdjMuICBJZiB1c2luZyB0aGUgUE1VdjMgd2l0aCBhbiBpbi1rZXJuZWxcbiB2aXJ0dWFsIEdJQyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgaW5pdGlhbGl6aW5nIHRoZSBpbi1rZXJuZWxcbiBpcnFjaGlwLlxuIFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4rYWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuK1xuIDEuMyBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfRklMVEVSXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbkBAIC0xMDgsNiArMTEyLDkgQEAgaGFyZHdhcmUgZXZlbnQuIEZpbHRlcmluZyBldmVudCAweDFFIChDSEFJTikgaGFzIG5vIGVmZmVjdCBlaXRoZXIsIGFzIGl0XG4gaXNuJ3Qgc3RyaWN0bHkgc3BlYWtpbmcgYW4gZXZlbnQuIEZpbHRlcmluZyB0aGUgY3ljbGUgY291bnRlciBpcyBwb3NzaWJsZVxuIHVzaW5nIGV2ZW50IDB4MTEgKENQVV9DWUNMRVMpLlxuIFxuK1doZW4gdGhlIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIHZDUFUgZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgbXVzdCBiZSBkb25lXG4rYWZ0ZXIgc2VsZWN0aW5nIGEgaGFyZHdhcmUgUE1VLlxuK1xuIDEuNCBBVFRSSUJVVEU6IEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVVxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYmFlMmM0ZjkyZWY1YzAuLjM5ZjdmYzc0MGQwNzliIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0zOSw3ICszOSw3IEBAXG4gXG4gI2RlZmluZSBLVk1fTUFYX1ZDUFVTIFZHSUNfVjNfTUFYX0NQVVNcbiBcbi0jZGVmaW5lIEtWTV9WQ1BVX01BWF9GRUFUVVJFUyA5XG4rI2RlZmluZSBLVk1fVkNQVV9NQVhfRkVBVFVSRVMgMTBcbiAjZGVmaW5lIEtWTV9WQ1BVX1ZBTElEX0ZFQVRVUkVTXHQoQklUKEtWTV9WQ1BVX01BWF9GRUFUVVJFUykgLSAxKVxuIFxuICNkZWZpbmUgS1ZNX1JFUV9TTEVFUCBcXFxuQEAgLTM4Nyw2ICszODcsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xuIFx0LyogTWF4aW11bSBudW1iZXIgb2YgY291bnRlcnMgZm9yIHRoZSBndWVzdCAqL1xuIFx0dTggbnJfcG11X2NvdW50ZXJzO1xuIFxuK1x0LyogUE1NSVJfRUwxLlNMT1RTIHZhbHVlIGV4cG9zZWQgdG8gdGhlIGd1ZXN0LiAqL1xuK1x0dTggcG1taXJfc2xvdHM7XG4rXG4gXHQvKiBIeXBlcmNhbGwgZmVhdHVyZXMgZmlybXdhcmUgcmVnaXN0ZXJzJyBkZXNjcmlwdG9yICovXG4gXHRzdHJ1Y3Qga3ZtX3NtY2NjX2ZlYXR1cmVzIHNtY2NjX2ZlYXQ7XG4gXHRzdHJ1Y3QgbWFwbGVfdHJlZSBzbWNjY19maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oXG5pbmRleCAxYzEzYmZhMmQzOGFhZC4uMDE5ZTVlM2Q4OTJlNmQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3ZtLmhcbisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaFxuQEAgLTEwNiw2ICsxMDYsNyBAQCBzdHJ1Y3Qga3ZtX3JlZ3Mge1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX1BUUkFVVEhfR0VORVJJQ1x0NiAvKiBWQ1BVIHVzZXMgZ2VuZXJpYyBhdXRoZW50aWNhdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJcdFx0NyAvKiBTdXBwb3J0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAqL1xuICNkZWZpbmUgS1ZNX0FSTV9WQ1BVX0hBU19FTDJfRTJIMFx0OCAvKiBMaW1pdCBOViBzdXBwb3J0IHRvIEUySCBSRVMwICovXG4rI2RlZmluZSBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVFx0OSAvKiBObyBkZWZhdWx0IFBNVSBjcmVhdGlvbiAqL1xuIFxuIHN0cnVjdCBrdm1fdmNwdV9pbml0IHtcbiBcdF9fdTMyIHRhcmdldDtcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5pbmRleCA1MGFkZmZmNzViZTgyZS4uN2RiZWZkZDg0NmFhNzAgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC00NTIsNiArNDUyLDcgQEAgaW50IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dClcbiBcdFx0ciA9IGdldF9udW1fd3JwcygpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgS1ZNX0NBUF9BUk1fUE1VX1YzOlxuK1x0Y2FzZSBLVk1fQ0FQX0FSTV9QTVVfVjNfU1RSSUNUOlxuIFx0XHRyID0ga3ZtX3N1cHBvcnRzX2d1ZXN0X3BtdXYzKCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBLVk1fQ0FQX0FSTV9JTkpFQ1RfU0VSUk9SX0VTUjpcbkBAIC0xNTYzLDggKzE1NjQsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc3lzdGVtX3N1cHBvcnRlZF92Y3B1X2ZlYXR1cmVzKHZvaWQpXG4gXHRpZiAoIWNwdXNfaGF2ZV9maW5hbF9jYXAoQVJNNjRfSEFTXzMyQklUX0VMMSkpXG4gXHRcdGNsZWFyX2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCBcdTAwMjZmZWF0dXJlcyk7XG4gXG4tXHRpZiAoIWt2bV9zdXBwb3J0c19ndWVzdF9wbXV2MygpKVxuK1x0aWYgKCFrdm1fc3VwcG9ydHNfZ3Vlc3RfcG11djMoKSkge1xuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WMywgXHUwMDI2ZmVhdHVyZXMpO1xuK1x0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QsIFx1MDAyNmZlYXR1cmVzKTtcbitcdH1cbiBcbiBcdGlmICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKVxuIFx0XHRjbGVhcl9iaXQoS1ZNX0FSTV9WQ1BVX1NWRSwgXHUwMDI2ZmVhdHVyZXMpO1xuQEAgLTE2MDUsNiArMTYwOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X2luaXRfY2hlY2tfZmVhdHVyZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0ICAgIHRlc3RfYml0KEtWTV9BUk1fVkNQVV9QVFJBVVRIX0dFTkVSSUMsIFx1MDAyNmZlYXR1cmVzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBTdHJpY3QgUE1VdjMgVUFQSSByZXF1aXJlcyBQTVV2My4gKi9cbitcdGlmICh0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVCwgXHUwMDI2ZmVhdHVyZXMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfUE1VX1YzLCBcdTAwMjZmZWF0dXJlcykpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKCF0ZXN0X2JpdChLVk1fQVJNX1ZDUFVfRUwxXzMyQklULCBcdTAwMjZmZWF0dXJlcykpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTE2MzQsMTAgKzE2NDIsMTMgQEAgc3RhdGljIGludCBrdm1fc2V0dXBfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdC8qXG4tXHQgKiBXaGVuIHRoZSB2Q1BVIGhhcyBhIFBNVSwgYnV0IG5vIFBNVSBpcyBzZXQgZm9yIHRoZSBndWVzdFxuLVx0ICogeWV0LCBzZXQgdGhlIGRlZmF1bHQgb25lLlxuK1x0ICogV2hlbiB0aGUgdkNQVSBoYXMgYSBQTVUsIGJ1dCBubyBQTVUgaXMgc2V0IGZvciB0aGUgZ3Vlc3QgeWV0LCBzZXRcbitcdCAqIHRoZSBkZWZhdWx0IG9uZS4gSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0LCBubyBkZWZhdWx0XG4rXHQgKiBQTVUgaXMgY3JlYXRlZCwgYW5kIHVzZXJzcGFjZSBtdXN0IHNlbGVjdCBhIFBNVSB2aWFcbitcdCAqIEtWTV9BUk1fVkNQVV9QTVVfVjNfU0VUX1BNVS5cbiBcdCAqL1xuLVx0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0aWYgKGt2bV92Y3B1X2hhc19wbXUodmNwdSkgXHUwMDI2XHUwMDI2ICFrdm0tXHUwMDNlYXJjaC5hcm1fcG11IFx1MDAyNlx1MDAyNlxuK1x0ICAgICFrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpKVxuIFx0XHRyZXQgPSBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShrdm0pO1xuIFxuIFx0LyogUHJlcGFyZSBmb3IgbmVzdGVkIGlmIHJlcXVpcmVkICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYyBiL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbmluZGV4IDk4MzA1YmJmYzA5NWFiLi41YjFhZjdlMjE3NmZhZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbisrKyBiL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNcbkBAIC04MzgsOSArODM4LDkgQEAgc3RhdGljIHU2NCBfX2NvbXB1dGVfcG1jZWlkKHN0cnVjdCBhcm1fcG11ICpwbXUsIGJvb2wgcG1jZWlkMSlcbiBcdHJldHVybiAoKHU2NCloaVtwbWNlaWQxXSBcdTAwM2NcdTAwM2MgMzIpIHwgbG9bcG1jZWlkMV07XG4gfVxuIFxuLXN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4rc3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCB2YWwgPSBfX2NvbXB1dGVfcG1jZWlkKHBtdSwgMCk7XG4rXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZCh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmFybV9wbXUsIDApO1xuIFxuIFx0LyogYWx3YXlzIHN1cHBvcnQgU1dfSU5DUiAqL1xuIFx0dmFsIHw9IEJJVChBUk1WOF9QTVVWM19QRVJGQ1RSX1NXX0lOQ1IpO1xuQEAgLTg0OSwzMiArODQ5LDMzIEBAIHN0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQwKHN0cnVjdCBhcm1fcG11ICpwbXUpXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbi1zdGF0aWMgdTY0IGNvbXB1dGVfcG1jZWlkMShzdHJ1Y3QgYXJtX3BtdSAqcG11KVxuK3N0YXRpYyB1NjQgY29tcHV0ZV9wbWNlaWQxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR1NjQgdmFsID0gX19jb21wdXRlX3BtY2VpZChwbXUsIDEpO1xuK1x0dTY0IHZhbCA9IF9fY29tcHV0ZV9wbWNlaWQodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11LCAxKTtcbiBcbiBcdC8qXG4tXHQgKiBEb24ndCBhZHZlcnRpc2UgU1RBTExfU0xPVCosIGFzIFBNTUlSX0VMMCBpcyBoYW5kbGVkXG4tXHQgKiBhcyBSQVpcbitcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIG5vdCBzZXQsIFBNTUlSX0VMMSBpc1xuK1x0ICogdW5jb25kaXRpb25hbGx5IFJBWiwgc28gZG9uJ3QgYWR2ZXJ0aXNlIFNUQUxMX1NMT1QqIGV2ZW50cy5cbiBcdCAqL1xuLVx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9GUk9OVEVORCAtIDMyKSB8XG4tXHRcdCBCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVF9CQUNLRU5EIC0gMzIpKTtcbitcdGlmICgha3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KSlcbitcdFx0dmFsIFx1MDAyNj0gfihCSVRfVUxMKEFSTVY4X1BNVVYzX1BFUkZDVFJfU1RBTExfU0xPVCAtIDMyKSB8XG4rXHRcdFx0IEJJVF9VTEwoQVJNVjhfUE1VVjNfUEVSRkNUUl9TVEFMTF9TTE9UX0ZST05URU5EIC0gMzIpIHxcbitcdFx0XHQgQklUX1VMTChBUk1WOF9QTVVWM19QRVJGQ1RSX1NUQUxMX1NMT1RfQkFDS0VORCAtIDMyKSk7XG4rXG4gXHRyZXR1cm4gdmFsO1xuIH1cbiBcbiB1NjQga3ZtX3BtdV9nZXRfcG1jZWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBwbWNlaWQxKVxuIHtcbi1cdHN0cnVjdCBhcm1fcG11ICpjcHVfcG11ID0gdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11O1xuIFx0dW5zaWduZWQgbG9uZyAqYm1hcCA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcjtcbiBcdHU2NCB2YWwsIG1hc2sgPSAwO1xuIFx0aW50IGJhc2UsIGksIG5yX2V2ZW50cztcbiBcbiBcdGlmICghcG1jZWlkMSkge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDAoY3B1X3BtdSk7XG4rXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMCh2Y3B1KTtcbiBcdFx0YmFzZSA9IDA7XG4gXHR9IGVsc2Uge1xuLVx0XHR2YWwgPSBjb21wdXRlX3BtY2VpZDEoY3B1X3BtdSk7XG4rXHRcdHZhbCA9IGNvbXB1dGVfcG1jZWlkMSh2Y3B1KTtcbiBcdFx0YmFzZSA9IDMyO1xuIFx0fVxuIFxuQEAgLTkzOCw2ICs5MzksMTAgQEAgaW50IGt2bV9hcm1fcG11X3YzX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gc3RhdGljIGludCBrdm1fYXJtX3BtdV92M19pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4rXHQvKiBPbmx5IHBvc3NpYmxlIHdoZW4gdXNpbmcgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgKi9cbitcdGlmICghdmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0XHRyZXR1cm4gLUVOWElPO1xuK1xuIFx0aWYgKGlycWNoaXBfaW5fa2VybmVsKHZjcHUtXHUwMDNla3ZtKSkge1xuIFx0XHRpbnQgcmV0O1xuIFxuQEAgLTEwMDgsNiArMTAxMywxNCBAQCB1OCBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgYXJtX3BtdSAqYXJtX3BtdSA9IGt2bS1cdTAwM2VhcmNoLmFybV9wbXU7XG4gXG4rXHQvKlxuK1x0ICogVW5kZXIgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1Qgbm8gUE1VIGV4aXN0cyB1bnRpbCB1c2Vyc3BhY2Ugc2V0c1xuK1x0ICogb25lLCBzbyB0aGlzIGNhbiBiZSByZWFjaGVkIGJlZm9yZSBhcm1fcG11IGlzIHNldC4gUmVwb3J0IG5vXG4rXHQgKiBjb3VudGVycyBpbiB0aGF0IGNhc2UuXG4rXHQgKi9cbitcdGlmICghYXJtX3BtdSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHQvKlxuIFx0ICogUE1VdjMgcmVxdWlyZXMgdGhhdCBhbGwgZXZlbnQgY291bnRlcnMgYXJlIGNhcGFibGUgb2YgY291bnRpbmcgYW55XG4gXHQgKiBldmVudCwgdGhvdWdoIHRoZSBzYW1lIG1heSBub3QgYmUgdHJ1ZSBvZiBub24tUE1VdjMgaGFyZHdhcmUuXG5AQCAtMTA0OSw3ICsxMDYyLDggQEAgc3RhdGljIHZvaWQga3ZtX2FybV9zZXRfcG11KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGFybV9wbXUgKmFybV9wbXUpXG4gfVxuIFxuIC8qKlxuLSAqIGt2bV9hcm1fc2V0X2RlZmF1bHRfcG11IC0gTm8gUE1VIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbisgKiBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdSAtIE5vIFBNVSBzZXQgYW5kIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIG5vdFxuKyAqIHNldCwgZ2V0IHRoZSBkZWZhdWx0IG9uZS5cbiAgKiBAa3ZtOiBUaGUga3ZtIHBvaW50ZXJcbiAgKlxuICAqIFRoZSBvYnNlcnZhbnQgYW1vbmcgeW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIHN1cHBvcnRlZF9jcHVzXG5AQCAtMTA5Miw2ICsxMTA2LDE3IEBAIHN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXG4gXG4gXHRcdFx0a3ZtX2FybV9zZXRfcG11KGt2bSwgYXJtX3BtdSk7XG4gXHRcdFx0Y3B1bWFza19jb3B5KGt2bS1cdTAwM2VhcmNoLnN1cHBvcnRlZF9jcHVzLCBcdTAwMjZhcm1fcG11LVx1MDAzZXN1cHBvcnRlZF9jcHVzKTtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFNpbmNlIGEgc3BlY2lmaWMgUE1VIGlzIGV4cGxpY2l0bHkgc2VsZWN0ZWQsXG4rXHRcdFx0ICogUE1NSVJfRUwxLlNMT1RTIGlzIGRldGVybWluaXN0aWMgdG8gdGhlIGd1ZXN0LlxuK1x0XHRcdCAqIElmIEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUIGlzIHNldCwgc25hcHNob3RcbitcdFx0XHQgKiB0aGUgdmFsdWUgdG8gYWxsb3cgdGhlIGd1ZXN0IHRvIHJlYWQgaXQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKGt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkpXG4rXHRcdFx0XHRrdm0tXHUwMDNlYXJjaC5wbW1pcl9zbG90cyA9XG4rXHRcdFx0XHRcdEZJRUxEX0dFVChBUk1WOF9QTVVfU0xPVFMsXG4rXHRcdFx0XHRcdFx0ICBhcm1fcG11LVx1MDAzZXJlZ19wbW1pcik7XG4gXHRcdFx0cmV0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTExNzgsNiArMTIwMyw5IEBAIGludCBrdm1fYXJtX3BtdV92M19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4gXHRcdGlmIChrdm1fdm1faGFzX3Jhbl9vbmNlKGt2bSkpXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcbitcdFx0aWYgKCFrdm0tXHUwMDNlYXJjaC5hcm1fcG11KVxuK1x0XHRcdHJldHVybiAtRU5YSU87XG4rXG4gXHRcdGlmICgha3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcikge1xuIFx0XHRcdGt2bS1cdTAwM2VhcmNoLnBtdV9maWx0ZXIgPSBiaXRtYXBfYWxsb2MobnJfZXZlbnRzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRcdGlmICgha3ZtLVx1MDAzZWFyY2gucG11X2ZpbHRlcilcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jIGIvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuaW5kZXggNWQ1YzU3OWQ0NTc5MDIuLmU5M2YxMWI5MDgxM2IwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1xuQEAgLTEzNjcsNiArMTM2Nyw2NCBAQCBzdGF0aWMgYm9vbCBhY2Nlc3NfcG1pbnRlbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBhY2Nlc3NfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXG4rXHRcdFx0IGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpXG4re1xuK1x0aWYgKHAtXHUwMDNlaXNfd3JpdGUpXG4rXHRcdHJldHVybiB3cml0ZV90b19yZWFkX29ubHkodmNwdSwgcCwgcik7XG4rXG4rXHQvKlxuK1x0ICogSWYgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QgaXMgc2V0IGFuZCBQTVUgd2FzIGV4cGxpY2l0bHlcbitcdCAqIHNlbGVjdGVkLCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBTTE9UUyB2YWx1ZSB3YXMgcmVhZCBpbnRvIHRoaXNcbitcdCAqIGZpZWxkLiBPdGhlcndpc2UsIGl0IHN0YXlzIDAuIEFsbCBvdGhlciBQTU1JUl9FTDEgZmllbGRzIGFyZSBSQVouXG4rXHQgKi9cbitcdHAtXHUwMDNlcmVndmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuK3N0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbitcdFx0ICAgICB1NjQgKnZhbClcbit7XG4rXHQqdmFsID0gRklFTERfUFJFUChBUk1WOF9QTVVfU0xPVFMsIHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBpbnQgc2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcbitcdFx0ICAgICB1NjQgdmFsKVxuK3tcbitcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuK1x0dTggc2xvdHMgPSBGSUVMRF9HRVQoQVJNVjhfUE1VX1NMT1RTLCB2YWwpO1xuK1xuK1x0LypcbitcdCAqIE9ubHkgdGhlIFNMT1RTIGZpZWxkIGlzIGV4cG9zZWQgKGdldF9wbW1pciByZXR1cm5zIGp1c3QgdGhhdCBmaWVsZCksXG4rXHQgKiBzbyByZWplY3QgYSB3cml0ZSB0aGF0IHNldHMgYW55IG90aGVyIGJpdCByYXRoZXIgdGhhbiBzaWxlbnRseVxuK1x0ICogbWFza2luZyBpdC5cbitcdCAqL1xuK1x0aWYgKHZhbCBcdTAwMjYgfih1NjQpQVJNVjhfUE1VX1NMT1RTKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdGd1YXJkKG11dGV4KShcdTAwMjZrdm0tXHUwMDNlYXJjaC5jb25maWdfbG9jayk7XG4rXG4rXHQvKlxuK1x0ICogT25jZSB0aGUgVk0gaGFzIHN0YXJ0ZWQgUE1NSVJfRUwxIGlzIGltbXV0YWJsZS4gUmVqZWN0IGFueSB3cml0ZVxuK1x0ICogdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZS5cbitcdCAqL1xuK1x0aWYgKGt2bV92bV9oYXNfcmFuX29uY2Uoa3ZtKSlcbitcdFx0cmV0dXJuIHNsb3RzID09IGt2bS1cdTAwM2VhcmNoLnBtbWlyX3Nsb3RzID8gMCA6IC1FQlVTWTtcbitcbitcdC8qXG4rXHQgKiBPbmx5IFNMT1RTID0gMCBpcyBob25vcmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZVxuK1x0ICogb2xkIFJBWiBiZWhhdmlvci4gUmVqZWN0IGFueSBub24temVybyB3cml0ZSB0aGF0IGRvZXMgbm90IG1hdGNoXG4rXHQgKiB0aGUgY3VycmVudCB2YWx1ZS5cbitcdCAqL1xuK1x0aWYgKCFzbG90cylcbitcdFx0a3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMgPSAwO1xuK1x0ZWxzZSBpZiAoc2xvdHMgIT0ga3ZtLVx1MDAzZWFyY2gucG1taXJfc2xvdHMpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBib29sIGFjY2Vzc19wbW92cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcbiBcdFx0XHQgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcilcbiB7XG5AQCAtMTQ0NCw2ICsxNTAyLDcgQEAgc3RhdGljIGludCBzZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXG4gXHQgKi9cbiBcdGlmICgha3ZtX3ZtX2hhc19yYW5fb25jZShrdm0pIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF2Y3B1X2hhc19udih2Y3B1KVx0ICAgICAgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWt2bV92Y3B1X2hhc19wbXV2M19zdHJpY3QodmNwdSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgbmV3X24gXHUwMDNjPSBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzKGt2bSkpXG4gXHRcdGt2bS1cdTAwM2VhcmNoLm5yX3BtdV9jb3VudGVycyA9IG5ld19uO1xuIFxuQEAgLTM0NDgsNyArMzUwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIHN5c19yZWdfZGVzY3NbXSA9IHtcbiBcdHsgUE1VX1NZU19SRUcoUE1JTlRFTkNMUl9FTDEpLFxuIFx0ICAuYWNjZXNzID0gYWNjZXNzX3BtaW50ZW4sIC5yZWcgPSBQTUlOVEVOU0VUX0VMMSxcbiBcdCAgLmdldF91c2VyID0gZ2V0X3BtcmVnLCAuc2V0X3VzZXIgPSBzZXRfcG1yZWcgfSxcbi1cdHsgU1lTX0RFU0MoU1lTX1BNTUlSX0VMMSksIHRyYXBfcmF6X3dpIH0sXG4rXHR7IFBNVV9TWVNfUkVHKFBNTUlSX0VMMSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1taXIsIC5yZXNldCA9IE5VTEwsXG4rXHQgIC5nZXRfdXNlciA9IGdldF9wbW1pciwgLnNldF91c2VyID0gc2V0X3BtbWlyIH0sXG4gXG4gXHR7IFNZU19ERVNDKFNZU19NQUlSX0VMMSksIGFjY2Vzc192bV9yZWcsIHJlc2V0X3Vua25vd24sIE1BSVJfRUwxIH0sXG4gXHR7IFNZU19ERVNDKFNZU19QSVJFMF9FTDEpLCBOVUxMLCByZXNldF91bmtub3duLCBQSVJFMF9FTDEsXG5AQCAtNDU5Myw3ICs0NjUzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgY3AxNV9yZWdzW10gPSB7XG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNCksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHR7IENQMTVfUE1VX1NZU19SRUcoSEksICAgICAwLCA5LCAxNCwgNSksIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jZWlkIH0sXG4gXHQvKiBQTU1JUiAqL1xuLVx0eyBDUDE1X1BNVV9TWVNfUkVHKERJUkVDVCwgMCwgOSwgMTQsIDYpLCAuYWNjZXNzID0gdHJhcF9yYXpfd2kgfSxcbitcdHsgQ1AxNV9QTVVfU1lTX1JFRyhESVJFQ1QsIDAsIDksIDE0LCA2KSwgLmFjY2VzcyA9IGFjY2Vzc19wbW1pciB9LFxuIFxuIFx0LyogUFJSUi9NQUlSMCAqL1xuIFx0eyBBQTMyKExPKSwgT3AxKCAwKSwgQ1JuKDEwKSwgQ1JtKCAyKSwgT3AyKCAwKSwgYWNjZXNzX3ZtX3JlZywgTlVMTCwgTUFJUl9FTDEgfSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2t2bS9hcm1fcG11LmggYi9pbmNsdWRlL2t2bS9hcm1fcG11LmhcbmluZGV4IGI1ZTU5NDIyMDRmYzY5Li42YjRhMTE4ZDE3Y2E5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUva3ZtL2FybV9wbXUuaFxuKysrIGIvaW5jbHVkZS9rdm0vYXJtX3BtdS5oXG5AQCAtNzUsNiArNzUsOSBAQCB2b2lkIGt2bV92Y3B1X3BtdV9yZXN5bmNfZWwwKHZvaWQpO1xuICNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdSh2Y3B1KVx0XHRcdFx0XHRcXFxuIFx0KHZjcHVfaGFzX2ZlYXR1cmUodmNwdSwgS1ZNX0FSTV9WQ1BVX1BNVV9WMykpXG4gXG4rI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11djNfc3RyaWN0KHZjcHUpXHRcdFx0XHRcXFxuK1x0KHZjcHVfaGFzX2ZlYXR1cmUodmNwdSwgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1QpKVxuK1xuIC8qXG4gICogVXBkYXRlcyB0aGUgdmNwdSdzIHZpZXcgb2YgdGhlIHBtdSBldmVudHMgZm9yIHRoaXMgY3B1LlxuICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBldmVyeSB2Y3B1IHJ1biBhZnRlciBkaXNhYmxpbmcgaW50ZXJydXB0cywgdG8gZW5zdXJlXG5AQCAtMTYwLDYgKzE2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcbiB9XG4gXG4gI2RlZmluZSBrdm1fdmNwdV9oYXNfcG11KHZjcHUpXHRcdCh7IGZhbHNlOyB9KVxuKyNkZWZpbmUga3ZtX3ZjcHVfaGFzX3BtdXYzX3N0cmljdCh2Y3B1KVx0KHsgZmFsc2U7IH0pXG4gc3RhdGljIGlubGluZSB2b2lkIGt2bV9wbXVfdXBkYXRlX3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cbiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfcG11X3Jlc3RvcmVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9wbXVfcmVzdG9yZV9ob3N0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmhcbmluZGV4IDQxOTAxMTA5N2ZhOGUyLi45ZmM4ZGZkZmQ2NWZmYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oXG5AQCAtOTk3LDYgKzk5Nyw3IEBAIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCB7XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfS0VZT1AgMjQ3XG4gI2RlZmluZSBLVk1fQ0FQX1MzOTBfVlNJRV9FU0FNT0RFIDI0OFxuICNkZWZpbmUgS1ZNX0NBUF9TMzkwX0hQQUdFXzJHIDI0OVxuKyNkZWZpbmUgS1ZNX0NBUF9BUk1fUE1VX1YzX1NUUklDVCAyNTBcbiBcbiBzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2lycWNoaXAge1xuIFx0X191MzIgaXJxY2hpcDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvZ2V0LXJlZy1saXN0LmNcbmluZGV4IDBhM2E5NGM0Y2NhMTZmLi5jZmE5OTk3OWQ1N2M4ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9nZXQtcmVnLWxpc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2dldC1yZWctbGlzdC5jXG5AQCAtNTMyLDYgKzUzMiw3IEBAIHN0YXRpYyBfX3U2NCBiYXNlX3JlZ3NbXSA9IHtcbiBzdGF0aWMgX191NjQgcG11X3JlZ3NbXSA9IHtcbiBcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDEpLFx0LyogUE1JTlRFTlNFVF9FTDEgKi9cbiBcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDIpLFx0LyogUE1JTlRFTkNMUl9FTDEgKi9cbitcdEFSTTY0X1NZU19SRUcoMywgMCwgOSwgMTQsIDYpLFx0LyogUE1NSVJfRUwxICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAwKSxcdC8qIFBNQ1JfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAxKSxcdC8qIFBNQ05URU5TRVRfRUwwICovXG4gXHRBUk02NF9TWVNfUkVHKDMsIDMsIDksIDEyLCAyKSxcdC8qIFBNQ05URU5DTFJfRUwwICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QyMTozMzowOC41MTY4NDU5OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ0Nzc0MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBLVk0gdkNQVSBGZWF0dXJlKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIHByb3Bvc2luZyBhIG5ldyBLVk0gdkNQVSBmZWF0dXJlIGZvciBBUk02NCwgYEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUYC4gSXQgc291bmRzIGxpa2UgaXQgZW5mb3JjZXMgc3RyaWN0ZXIgYmVoYXZpb3IgZm9yIHRoZSBQTVV2MyBVQVBJLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaW52b2x2ZXMgZXhwbGljaXQgc2VsZWN0aW9uIG9mIGEgUE1VIGltcGxlbWVudGF0aW9uIGJlZm9yZSBpbml0aWFsaXphdGlvbiBvciBmaWx0ZXIgY29uZmlndXJhdGlvbiwgYW5kIHRha2luZyBgUE1NSVJfRUwxLlNMT1RTYCBpbnRvIGFjY291bnQgaWYgRkVBVF9QTVV2M3A0IGlzIHN1cHBvcnRlZC4gVGhlIHBhdGNoIGFsc28gaWdub3JlcyB3cml0ZXMgdG8gYFBNQ1JfRUwwLk5gIHZpYSBgS1ZNX1NFVF9PTkVfUkVHYCwgd2hpY2ggc2VlbXMgbGlrZSBhIHNlbnNpYmxlIGhhcmRlbmluZyBtZWFzdXJlLlxuXG5JJ20gc2VlaW5nIHRoYXQgdGhpcyB0b3VjaGVzIHF1aXRlIGEgZmV3IGtleSBwYXJ0cyBvZiB0aGUgY29yZSBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiwgbmFtZWx5IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IENvbnNpZGVyaW5nIHRoYXQgaXQncyBhIG5ldyBLVk0gZmVhdHVyZSB0aGF0IGNhbiBiZSBlbmFibGVkIHZpYSBgS1ZNX0VOQUJMRV9DQVBgIG9yIGBLVk1fQVJNX1ZDUFVfSU5JVGAsIGFic29sdXRlbHksIHllcy4gQW55IG5ldyBmZWF0dXJlIGlzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLCBhbmQgdGhlIGNoYW5nZXMgbGlzdGVkIGFyZSBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gc2NydXRpbml6ZSBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciBBUk02NCBLVk0sIHNvIEknbGwgd2FudCB0byBmb2N1cyBvbiB0aGF0LlxuXG5UaW1lIHRvIGxvb2sgZm9yIHRoZSByZWxldmFudCBDT05GSUcgb3B0aW9ucy4gYENPTkZJR19LVk1gIGlzIG9idmlvdXNseSBhIHByZXJlcXVpc2l0ZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzIHRvIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBmZWF0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MTQuNDYxNjIyMDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjY3ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjE0LjU0Mjg5NDI0NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODAwNTAyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgQ09ORklHX0tWTWAuIFRoYXQncyB0aGUgcHJpbWFyeSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gSSdtIGludGVyZXN0ZWQgaW4gaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuXG5cbk15IG5leHQgc3RlcCBpcyB0byBjYXN0IGEgd2lkZXIgbmV0IGFuZCBsb29rIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRocm91Z2ggYGFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNgIGFuZCBgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGZpbmVyIGRldGFpbHMgYXJlIGltcGxlbWVudGVkLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjAxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MTcuNDIyOTQ2NDk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1ODYxOTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19IV19QRVJGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgKz0gYXJtLm8gbW11Lm8gbW1pby5vIHBzY2kubyBoeXBlcmNhbGxzLm8gcHZ0aW1lLm8gXFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjgtXFxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGU6Mjk6a3ZtLSQoQ09ORklHX0hXX1BFUkZfRVZFTlRTKSAgKz0gcG11LWVtdWwubyBwbXUub1xcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTMwLWt2bS0kKENPTkZJR19BUk02NF9QVFJfQVVUSCkgICs9IHBhdXRoLm9cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jPTEyOT1zdGF0aWMgdm9pZCBfX2h5cF92Z2ljX3Jlc3RvcmVfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ1LSAqL1xcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jOjE0NjojaWZkZWYgQ09ORklHX0hXX1BFUkZfRVZFTlRTXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMTQ3LXN0YXRpYyBib29sIF9fcG11X3N3aXRjaF90b19ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjE3LjQ4ODgxMjY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3ODE1ODQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgRGVwZW5kZW5jeSBvZiBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIENvbXBvbmVudHMqKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBJIG5lZWQgYENPTkZJR19IV19QRVJGX0VWRU5UU2AgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgYHBtdS1lbXVsLm9gIGFuZCBgcG11Lm9gLiBUaGF0J3Mgbm90IGVudGlyZWx5IHN1cnByaXNpbmcsIGJ1dCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBoZXJlLiBNeSBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byBkaWcgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIGZpZ3VyZSBvdXQgaG93IGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgIGlzIGhhbmRsZWQuIElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgY29udGluZ2VudCBvbiBzb21lIG90aGVyIHNwZWNpZmljIGtlcm5lbCBmZWF0dXJlIG9yIGhhcmR3YXJlIHN1cHBvcnQ/IFVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgY29tcG9uZW50cyB3aWxsIGFjdHVhbGx5IGdldCBidWlsdC4gVGhlIGdvYWwgaXMgdG8gZWl0aGVyIHZlcmlmeSB0aGlzIGlzIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvciBpc29sYXRlIHRoZSB2YXJpYWJsZSBkZXBlbmRlbmNpZXMgYXQgcGxheSwgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIGhvdyB0aGlzIGltcGFjdHMgbXkgb3duIHRhcmdldCBidWlsZHMgYW5kIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDEyNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjIwLjk2Njk3Mjk3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MTQxNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhXX1BFUkZfRVZFTlRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvS2NvbmZpZz0xNjA2PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjA5LVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoxNjEwOmNvbmZpZyBIV19QRVJGX0VWRU5UU1xcbmFyY2gvYXJtNjQvS2NvbmZpZy0xNjExLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MjEuMDcxMzkxMTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUwNjYwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBUk02NCBLVk0gYW5kIEJvb2xlYW4gRGVmaW5pdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gYW4gYGFybTY0YCBzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggS1ZNLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aXRoIGBkZWZfYm9vbCB5YCwgd2hpY2ggSSdtIHRha2luZyB0byBtZWFuIGEgYm9vbGVhbiBkZWZpbml0aW9uIHNldCB0byBcInllc1wiIG9yIHBvdGVudGlhbGx5IGVuYWJsZWQuIFRoaXMgc3VnZ2VzdHMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBzZXQsIGxpa2VseSBpbXBhY3Rpbmcgc29tZSBhc3BlY3Qgb2YgdGhlIEtWTSBpbXBsZW1lbnRhdGlvbiBvbiB0aGlzIGFyY2hpdGVjdHVyZS5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgLiBUaGlzIGZpbGUgc2VlbXMgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBzeXN0ZW0gcmVnaXN0ZXJzIHdpdGhpbiB0aGUgQVJNNjQgS1ZNIGNvbnRleHQuIEkgZXhwZWN0IHRvIGZpbmQgZnVydGhlciBkZWZpbml0aW9ucywgY29uZGl0aW9uYWwgYmxvY2tzLCBvciBtYWNyb3MgdGllZCB0byB0aGlzIGJvb2xlYW4uIEknbSBob3BpbmcgdG8gZGlzY292ZXIgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBib29sZWFuIHNldHRpbmcgaW4gdGVybXMgb2YgcmVnaXN0ZXIgYWNjZXNzIG9yIHZpcnR1YWxpemF0aW9uIGJlaGF2aW9yLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgYGRlZl9ib29sIHlgIHZhbHVlIGlzIHVzZWQsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBLVk0gZmVhdHVyZXMsIGFuZCBpdHMgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIHN5c3RlbSdzIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eSBwcm9maWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUxMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI0LjUyMjA1NDYwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNjcwNTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MjQuNTgxMTQ0NTI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjM2NTA0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBYnNlbmNlIG9mIENvbmZpZ3VyYXRpb24gRGlyZWN0aXZlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBzeXNfcmVncy5jYCwgYW5kIEknbSBhIGJpdCB0aHJvd24uIEkgZXhwZWN0ZWQgdG8gZmluZCBzb21lIGBDT05GSUdfYCBkaXJlY3RpdmVzIGluIHRoaXMgZmlsZS4gQnV0IHdhaXQsIHRoZXJlIGFyZW4ndCBhbnk/IFRoYXQncyB1bnVzdWFsLiBJdCB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIGV4cGVjdGVkIHBhdHRlcm4uIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBsYWNrIG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBvcmRlciB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDgzMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI3Ljk0NDc5Nzk4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MDY1ODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIiNpZmRlZiBDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjI4LjAwMTIxMDA2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDc4NTk5Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBQZXJmb3JtYW5jZSBNb25pdG9yaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgS1ZNIHBhdGNoLiBUaGUgY2VudHJhbCBlbGVtZW50LCBhcyBleHBlY3RlZCwgaXMgYENPTkZJR19LVk1gLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIGFuZCB0aGVpciBpbXBhY3Qgb24gcGVyZm9ybWFuY2UgbW9uaXRvcmluZy5cblxuRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdGhpcyBwYXRjaCB0b3VjaGVzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGhlc2UgZnVuY3Rpb25zOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYGt2bV9wbXVfZ2V0X3BtY2VpZGAsIGBrdm1fYXJtX3BtdV9nZXRfbWF4X2NvdW50ZXJzYCwgYW5kIGBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdWAuIE9rYXksIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdC5cblxuTm93LCBhIHF1aWNrIGFzc2Vzc21lbnQgb2YgYWNjZXNzaWJpbGl0eSBhbmQgcG90ZW50aWFsIGhvdHNwb3RzIGlzIGluIG9yZGVyLiBJdCBzZWVtcyBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYW5kIGBrdm1fYXJtX3BtdV92M19zZXRfYXR0cmAgYXJlIHRyaWdnZXJlZCBieSBpb2N0bHMg4oCTIHNwZWNpZmljYWxseSwgYEtWTV9TRVRfREVWSUNFX0FUVFJgLiBUaGF0J3MgcmVhc29uYWJsZSwgaW1wbHlpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYCBhcmUgbGlua2VkIHRvIGVpdGhlciBLVk0gcmVnaXN0ZXIgYWNjZXNzIChgS1ZNX1NFVF9PTkVfUkVHYC9gS1ZNX0dFVF9PTkVfUkVHYCkgb3IgZ3Vlc3QgdHJhcHMg4oCTIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGhvc3QgYW5kIGd1ZXN0LiBga3ZtX3BtdV9nZXRfcG1jZWlkYCBpcyBjbGVhcmx5IGhhbmRsaW5nIGd1ZXN0IGFjY2VzcyB0byB0aGUgUE1DRUlEIHJlZ2lzdGVyLCBhbmQgYGt2bV9hcm1fcG11X2dldF9tYXhfY291bnRlcnNgIGlzIGEgaGVscGVyIGZ1bmN0aW9uLCB3aGljaCBtYXkgYmUgY2FsbGVkIGZyb20gb3RoZXIgZnVuY3Rpb25zLlxuXG5MZXQncyBjb25zb2xpZGF0ZSB0aGUgY29yZSBzeW1ib2xzOiBga3ZtX2FybV9wbXVfdjNfaW5pdGAsIGBrdm1fYXJtX3BtdV92M19zZXRfcG11YCwgYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCwgYHNldF9wbWNyYCwgYGFjY2Vzc19wbW1pcmAsIGBzZXRfcG1taXJgLCBgZ2V0X3BtbWlyYCwgYW5kIGBrdm1fcG11X2dldF9wbWNlaWRgLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8ga2VlcCBhIGNsb3NlIGV5ZSBvbi5cblxuSSBzaG91bGQgdmVyaWZ5IHRoZSBuYW1lcyBpbiB0aGUgc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzNCwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MzUuNDc5ODEyMTU2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxOTE5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fGJvb2x8dTh8dTY0fHZvaWQpIChrdm1fYXJtX3BtdV92M19pbml0fGt2bV9hcm1fcG11X3YzX3NldF9wbXV8a3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJ8c2V0X3BtY3J8YWNjZXNzX3BtbWlyfHNldF9wbW1pcnxnZXRfcG1taXJ8a3ZtX3BtdV9nZXRfcG1jZWlkKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz04NTI9c3RhdGljIHU2NCBjb21wdXRlX3BtY2VpZDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy04NjctXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzo4Njg6dTY0IGt2bV9wbXVfZ2V0X3BtY2VpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgcG1jZWlkMSlcXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTg2OS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jPTkxMj1pbnQga3ZtX2FybV9wbXVfdjNfZW5hYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtOTM5LVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6OTQwOnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy05NDEte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYz0xMDc3PWludCBrdm1fYXJtX3NldF9kZWZhdWx0X3BtdShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wbXUtZW11bC5jLTEwODctXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYzoxMDg4OnN0YXRpYyBpbnQga3ZtX2FybV9wbXVfdjNfc2V0X3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBwbXVfaWQpXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMDg5LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM9MTEyOT1zdGF0aWMgaW50IGt2bV9hcm1fcG11X3YzX3NldF9ucl9jb3VudGVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYy0xMTQyLVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmM6MTE0MzppbnQga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbmFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMtMTE0NC17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTEzNDY9c3RhdGljIGJvb2wgYWNjZXNzX3BtaW50ZW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzNjktXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzcwOnN0YXRpYyBib29sIGFjY2Vzc19wbW1pcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCxcXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzNzEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODQtXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxMzg1OnN0YXRpYyBpbnQgZ2V0X3BtbWlyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcixcXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTEzODYtXFx0XFx0ICAgICB1NjQgKnZhbClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5MS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jOjEzOTI6c3RhdGljIGludCBzZXRfcG1taXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTM5My1cXHRcXHQgICAgIHU2NCB2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jPTE0ODM9c3RhdGljIGludCBnZXRfcG1jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jLTE0ODktXFxuYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYzoxNDkwOnN0YXRpYyBpbnQgc2V0X3BtY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLFxcbmFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMtMTQ5MS1cXHRcXHQgICAgdTY0IHZhbClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMjE6MzM6MzUuNjMzMDA4MTE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDAwNDY2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgS1ZNIEFSTTY0IFBNVXYzIEVtdWxhdGlvbiBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHNwb3Qgb246IGBrdm1fYXJtX3BtdV92M19pbml0YCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgLCBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgLCBgc2V0X3BtY3JgLCBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGBnZXRfcG1taXJgLCBhbmQgYGt2bV9wbXVfZ2V0X3BtY2VpZGAg4oCTIHRoZXNlIGFyZSBhbGwgZXhjZWxsZW50IHN0YXJ0aW5nIHBvaW50cyBmb3IgZnV6emluZy4gVGhleSByZXByZXNlbnQga2V5IGVudHJ5IHBvaW50cyBhbmQgY29yZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgUE1VdjMgZW11bGF0aW9uLlxuXG5XYWl0LCBsb29raW5nIGNsb3NlciBhdCB0aGUgY2FsbCBncmFwaCwgYGt2bV9hcm1fcG11X3YzX3NldF9wbXVgIGJlaW5nIHN0YXRpYyBidXQgY2FsbGVkIGZyb20gYGt2bV9hcm1fcG11X3YzX3NldF9hdHRyYCBpcyBpbnRlcmVzdGluZy4gQW5kIHRoZW4gYHNldF9wbWNyYCBpcyBzdGF0aWMgdG9vLCBjYWxsZWQgZnJvbSBgc2V0X3BtcmVnYCAtIHRoYXQgd2lsbCBiZSBmdW4gdG8gZXhwbG9yZS4gU2FtZSBnb2VzIGZvciBgYWNjZXNzX3BtbWlyYCwgYHNldF9wbW1pcmAsIGFuZCBgZ2V0X3BtbWlyYCAtIHN0YXRpYywgYnV0IHVzZWQgd2l0aGluIHRoZSBgc3lzX3JlZ19kZXNjc2AgdGFibGUuXG5cbk5vdywgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBJdCBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBkZXBlbmRlbmN5LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBtb2RpZmllZCBmaWxlcyAoYGFyY2gvYXJtNjQva3ZtL2FybS5jYCwgYGFyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmNgLCBhbmQgYGFyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmNgKSBjb25maXJtcyB0aGF0IGBDT05GSUdfS1ZNYCBwdWxscyBldmVyeXRoaW5nIGluLiBBbmQgYHBtdS1lbXVsLmNgIGFkZGl0aW9uYWxseSBkZXBlbmRzIG9uIGBDT05GSUdfSFdfUEVSRl9FVkVOVFNgLCB3aGljaCBpcyBzdGF0aWNhbGx5IGVuYWJsZWQgZm9yIEFSTTY0LiBTbywgeWVzLCBgQ09ORklHX0tWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGEgZnV6emluZyBidWlsZC4gRXhjZWxsZW50LlxuXG5MZXQncyByZXZpZXcgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGBLVk1fQVJNX1ZDUFVfUE1VX1YzX1NUUklDVGAgZmVhdHVyZSBmb3Igc3RyaWN0IFBNVXYzIFVBUEkgY29tcGxpYW5jZS4gVGhhdCBtZWFucyB0aGlzIGlzIHRvdWNoaW5nIGNyaXRpY2FsIGVtdWxhdGlvbiBsb2dpYyDigJMgaW5pdGlhbGl6YXRpb24sIGF0dHJpYnV0ZSBzZXR0aW5nLCBhbmQgc3lzdGVtIHJlZ2lzdGVyIGhhbmRsaW5nIChQTU1JUiwgUE1DUikuIEFuZCB0aGUga2lja2VyOiB0aGlzIGxvZ2ljIGlzIGRpcmVjdGx5IHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgZXhlY3V0aW9uLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIGNhbiBhYnNvbHV0ZWx5IHNlZSBob3cgZnV6emluZyBjYW4gcmV2ZWFsIGludGVyZXN0aW5nIGJ1Z3MgaGVyZS5cblxuU28sIHRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKipGb2N1cyBTeW1ib2xzOioqXG5cbiogICBga3ZtX2FybV9wbXVfdjNfaW5pdGBcbiogICBga3ZtX2FybV9wbXVfdjNfc2V0X3BtdWBcbiogICBga3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJgXG4qICAgYHNldF9wbWNyYFxuKiAgIGBhY2Nlc3NfcG1taXJgXG4qICAgYHNldF9wbW1pcmBcbiogICBgZ2V0X3BtbWlyYFxuKiAgIGBrdm1fcG11X2dldF9wbWNlaWRgXG5cbioqQ29uZmlndXJhdGlvbjoqKlxuXG4qICAgYEtWTWBcblxuSSdtIHJlYWR5IHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTEsIk91dHB1dFRva2VucyI6MjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDIxOjMzOjQ0LjkzMzA1ODQ1N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjAxMTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJtX3BtdV92M19pbml0XCIsXG4gICAgXCJrdm1fYXJtX3BtdV92M19zZXRfcG11XCIsXG4gICAgXCJrdm1fYXJtX3BtdV92M19zZXRfYXR0clwiLFxuICAgIFwic2V0X3BtY3JcIixcbiAgICBcImFjY2Vzc19wbW1pclwiLFxuICAgIFwic2V0X3BtbWlyXCIsXG4gICAgXCJnZXRfcG1taXJcIixcbiAgICBcImt2bV9wbXVfZ2V0X3BtY2VpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgS1ZNIHZDUFUgZmVhdHVyZSBgS1ZNX0FSTV9WQ1BVX1BNVV9WM19TVFJJQ1RgIHdoaWNoIGVuZm9yY2VzIHN0cmljdCBQTVV2MyBVQVBJIGJlaGF2aW9yLiBJdCBtb2RpZmllcyBLVk0gQVJNNjQgUE1VIGVtdWxhdGlvbiBsb2dpYywgaW5jbHVkaW5nIFBNVSBpbml0aWFsaXphdGlvbiwgc2V0dGluZyBQTVUgYXR0cmlidXRlcywgYW5kIGhhbmRsaW5nIFBNVSBzeXN0ZW0gcmVnaXN0ZXJzIChQTU1JUiwgUE1DUikuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IGV4ZWN1dGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FybV9wbXVfdjNfaW5pdFwiLFxuICAgIFwia3ZtX2FybV9wbXVfdjNfc2V0X3BtdVwiLFxuICAgIFwia3ZtX2FybV9wbXVfdjNfc2V0X2F0dHJcIixcbiAgICBcInNldF9wbWNyXCIsXG4gICAgXCJhY2Nlc3NfcG1taXJcIixcbiAgICBcInNldF9wbW1pclwiLFxuICAgIFwiZ2V0X3BtbWlyXCIsXG4gICAgXCJrdm1fcG11X2dldF9wbWNlaWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEtWTSB2Q1BVIGZlYXR1cmUgYEtWTV9BUk1fVkNQVV9QTVVfVjNfU1RSSUNUYCB3aGljaCBlbmZvcmNlcyBzdHJpY3QgUE1VdjMgVUFQSSBiZWhhdmlvci4gSXQgbW9kaWZpZXMgS1ZNIEFSTTY0IFBNVSBlbXVsYXRpb24gbG9naWMsIGluY2x1ZGluZyBQTVUgaW5pdGlhbGl6YXRpb24sIHNldHRpbmcgUE1VIGF0dHJpYnV0ZXMsIGFuZCBoYW5kbGluZyBQTVUgc3lzdGVtIHJlZ2lzdGVycyAoUE1NSVIsIFBNQ1IpLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBleGVjdXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow9c8kb[1] Phase: Succeeded StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 21:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 21:33:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2] Phase: Succeeded StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 21:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 21:33:57 +0000 UTC FinishedAt: 2026-07-23 21:34:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3577003364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 21:34:07 +0000 UTC FinishedAt: 2026-07-23 22:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 21:34:07 +0000 UTC FinishedAt: 2026-07-23 22:17:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9f50cf54-2b63-4f0a-9f35-ebb253fb3244,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3577003364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a4502ecb-0976-4b98-811a-4fd616faf895", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-6315426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 21:34:07 +0000 UTC FinishedAt: 2026-07-23 22:17:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9f50cf54-2b63-4f0a-9f35-ebb253fb3244,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3577003364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a4502ecb-0976-4b98-811a-4fd616faf895", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-6315426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 22:17:46 +0000 UTC FinishedAt: 2026-07-23 22:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 22:17:46 +0000 UTC FinishedAt: 2026-07-23 22:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 22:17:46 +0000 UTC FinishedAt: 2026-07-23 22:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 22:17:46 +0000 UTC FinishedAt: 2026-07-23 22:18:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3008759907/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 22:18:18 +0000 UTC FinishedAt: 2026-07-23 22:20:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 22:18:18 +0000 UTC FinishedAt: 2026-07-23 22:20:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4502ecb-0976-4b98-811a-4fd616faf895,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-6315426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 22:20:38 +0000 UTC FinishedAt: 2026-07-23 22:20:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 22:20:38 +0000 UTC FinishedAt: 2026-07-23 22:20:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 22:20:38 +0000 UTC FinishedAt: 2026-07-23 23:11:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 22:20:38 +0000 UTC FinishedAt: 2026-07-23 23:11:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9f50cf54-2b63-4f0a-9f35-ebb253fb3244,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3008759907/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fb89fe56-e5c1-4785-a99c-b6928c7d1a0b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-1097553175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 22:20:38 +0000 UTC FinishedAt: 2026-07-23 23:11:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9f50cf54-2b63-4f0a-9f35-ebb253fb3244,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-3008759907/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fb89fe56-e5c1-4785-a99c-b6928c7d1a0b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-1097553175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 23:11:59 +0000 UTC FinishedAt: 2026-07-23 23:11:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 23:11:59 +0000 UTC FinishedAt: 2026-07-23 23:11:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 23:11:59 +0000 UTC FinishedAt: 2026-07-23 23:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 23:11:59 +0000 UTC FinishedAt: 2026-07-23 23:13:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb89fe56-e5c1-4785-a99c-b6928c7d1a0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-1097553175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a4502ecb-0976-4b98-811a-4fd616faf895,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb89fe56-e5c1-4785-a99c-b6928c7d1a0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-6315426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-1097553175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:14:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:14:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-2225957244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 23:13:49 +0000 UTC FinishedAt: 2026-07-23 23:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 23:13:50 +0000 UTC FinishedAt: 2026-07-23 23:13:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 23:14:45 +0000 UTC FinishedAt: 2026-07-23 23:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9c8kb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arm_pmu_v3_init","kvm_arm_pmu_v3_set_pmu","kvm_arm_pmu_v3_set_attr","set_pmcr","access_pmmir","set_pmmir","get_pmmir","kvm_pmu_get_pmceid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9c638ccb-c5cd-4168-a1f8-03d124bacfa6","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 23:14:45 +0000 UTC FinishedAt: 2026-07-23 23:16:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a4502ecb-0976-4b98-811a-4fd616faf895,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb89fe56-e5c1-4785-a99c-b6928c7d1a0b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-6315426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-build-action-1097553175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9c8kb/series-workflow9c8kb-convert-artifact-2225957244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}