Name: series-workflowf5hsk Phase: Succeeded StartedAt: 2026-09-04 08:25:00 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[0] Phase: Succeeded StartedAt: 2026-09-04 08:25:00 +0000 UTC FinishedAt: 2026-09-04 08:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 08:25:00 +0000 UTC FinishedAt: 2026-09-04 08:28:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PLATFORM", "COMPILE_TEST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PLATFORM", "COMPILE_TEST" ], "series_id": "b2ef21b0-9aac-4d2a-8413-aa8a9929e4da" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_platform_mmap" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuaW5kZXggYzcyZGI1YTk5ZWJkYS4uMjBkODdjMjQ0Y2EyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xuIFxuIFx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCmluZGV4IGM3MmRiNWE5OWViZGEuLjIwZDg3YzI0NGNhMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCkBAIC01OTUsNiAmIzQzOzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYQogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSB2ZGV2OwogCiAJaWYgKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLnR5cGUgJmFtcDsgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8gUGxhdGZvcm0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGV2YWx1YXRlIHRoaXMgTGludXgga2VybmVsIHBhdGNoIHNlcmllcyB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgaXQgdXNpbmcgc3l6a2FsbGVyLiBTb3VuZHMgZ29vZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZm9sbG93aW5nIHRoZSBzZWN1cml0eSBndWlkZWxpbmVzIOKAkyB0aGlzIGlzIGEgYmVuaWduIHJlcXVlc3QsIHB1cmVseSBhYm91dCBkZXRlcm1pbmluZyBmdXp6aW5nIHN1aXRhYmlsaXR5LCBpZGVudGlmeWluZyBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBuZWVkcywga2V5IHN5bWJvbHMgdG8gdGFyZ2V0LCBhbmQgcmVhY2hhYmlsaXR5LiBObyBtYWx3YXJlLCBubyBleHBsb2l0IGdlbmVyYXRpb24gaGVyZSwganVzdCBrZXJuZWwgdHJpYWdlIGFuZCBtYWludGFpbmVyIGFzc2Vzc21lbnQuCgpGaXJzdCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzcGVjaWZpYyBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGZldyBsaW5lcyB3aXRoaW4gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uLiBUaGUgY29kZSYjMzk7cyBjaGVja2luZyBpZiB0aGUgbWVtb3J5IHJlZ2lvbiBpcyByZWFkLW9ubHkgKGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGlzbiYjMzk7dCBzZXQpIGFuZCBpZiBpdCBpcywgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyBvbiB0aGUgYHZtX2FyZWFfc3RydWN0YC4gVGhpcyBtYWtlcyBzZW5zZSwgcHJldmVudGluZyBhIHJlYWQtb25seSByZWdpb24gZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgdXBncmFkZWQgdG8gd3JpdGVhYmxlIHZpYSBgbXByb3RlY3QoKWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZCBzb21lIGFkZGl0aW9uYWwgc2FmZXR5IGZvciBtZW1vcnkgbWFwcGluZy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGF0ZWQgZmlsZXMgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gSSYjMzk7bGwgZWl0aGVyIHVzZSBgZ3JlcHBlcmAgb3IgbmF2aWdhdGUgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseSB0byBnZXQgYSBjb21wbGV0ZSB2aWV3LiBUaGlzIHN0ZXAgaXMgaW1wb3J0YW50IHRvIGZ1bGx5IGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGxhdGZvcm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjAtXHQud3JpdGVcdFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMTpcdC5tbWFwXHRcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTEyMi1cdC5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwNi1cdC53cml0ZVx0XHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNzpcdC5tbWFwXHRcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDgtXHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU0Nj1FWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3dyaXRlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjU0ODpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiByZWdpb24sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDktXHRcdFx0XHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NjctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01Njkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNC1cdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwNTpcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MDYtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjExLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYxMjpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX21tYXApO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjEzLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaD05ND1zc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oLTk2LVx0XHRcdCAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmg6OTc6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05OC1cdFx0ICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipWRklPIFBsYXRmb3JtIERyaXZlciBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBrZXksIG9idmlvdXNseSwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY29udHJvbGxhYmxlIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGVuLCBJJiMzOTtsbCBpbW1lZGlhdGVseSBmb2xsb3cgdGhhdCB1cCB3aXRoIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZWAuIFRoZSBtYWtlZmlsZSBob2xkcyB0aGUgYnVpbGQgcnVsZXM7IHVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIG51dHMgYW5kIGJvbHRzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gbWFwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIE9ubHkgdGhlbiBjYW4gSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gaG93IHRvIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBwbGF0Zm9ybSBkZXZpY2VzXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgVkZJT19QTEFURk9STV9CQVNFXG4gICA2Olx0XHR0cmlzdGF0ZVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fVklSUUZEXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIFZGSU9fUExBVEZPUk1cbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgVkZJT19QTEFURk9STV9CQVNFXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXMgd2l0aCBWRklPLiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2VcbiAgMTQ6XHRcdCAgdXNlIG9mIHBsYXRmb3JtIGRldmljZXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPXG4gIDE1Olx0XHQgIGZyYW1ld29yay5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZGSU9fQU1CQVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBTUJBIGRldmljZXMgKERFUFJFQ0FURUQpXCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEFSTV9BTUJBIHx8IENPTVBJTEVfVEVTVFxuICAyMjpcdFx0c2VsZWN0IFZGSU9fUExBVEZPUk1fQkFTRVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGUgdmZpby1hbWJhIGRyaXZlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYVxuICAyNTpcdFx0ICBmdXR1cmUga2VybmVsIHJlbGVhc2UuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFN1cHBvcnQgZm9yIEFSTSBBTUJBIGRldmljZXMgd2l0aCBWRklPLiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2VcbiAgMjg6XHRcdCAgdXNlIG9mIEFSTSBBTUJBIGRldmljZXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPXG4gIDI5Olx0XHQgIGZyYW1ld29yay5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDMyOlx0XG4gIDMzOlx0bWVudSBcJiMzNDtWRklPIHBsYXRmb3JtIHJlc2V0IGRyaXZlcnNcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gVkZJT19QTEFURk9STV9CQVNFXG4gIDM1Olx0XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0ZW5kbWVudVxuICAzODpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUGxhdGZvcm0gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBWRklPX1BMQVRGT1JNYCBkZXBlbmRlbmN5IOKAkyBpdCYjMzk7cyBjb25kaXRpb25hbCBvbiBBUk0sIEFSTTY0LCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uLiBUaGF0JiMzOTtzIGEgYml0IGxpbWl0aW5nLCBpc24mIzM5O3QgaXQ/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogKmNhbiogd2UgbGV2ZXJhZ2UgYFZGSU9fUExBVEZPUk1gIG9uIGFtZDY0IGFyY2hpdGVjdHVyZXMsIG9yIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IE9yIGlzIGl0cyBhcHBsaWNhYmlsaXR5IHN0cmljdGx5IHRpZWQgdG8gdGhvc2UgQVJNLWJhc2VkIHN5c3RlbXMsIGFuZCBwb3NzaWJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBwbGF0Zm9ybSBkZXZpY2VzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgYHZmaW8tcGxhdGZvcm1gIHRoaW5nIGV2ZW4gKndvcmtzKiB3aXRoIGRldmljZSBiaW5kaW5nIG9uIHg4Niwgb3IgaWYgaXQgaXMgc2ltdWxhdGVkIHNvbWVob3csIG9yIHVzZXMgc3lzZnMgZm9yIGl0cyBiaW5kaW5ncywgb3IgaWYgaXQgaXMgYWxsIGFib3V0IHNwZWNpZmljIHBsYXRmb3JtIGRldmljZXMuCgpUbyBjbGFyaWZ5IHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgcHJvYmVkLCBob3cgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZCBpbiBhIHByYWN0aWNhbCBjb250ZXh0LCBhbmQgaG93IGl0IGhhbmRsZXMgZGV2aWNlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChDKSAyMDEzIC0gVmlydHVhbCBPcGVuIFN5c3RlbXNcbiAgIDQ6XHQgKiBBdXRob3I6IEFudG9uaW9zIE1vdGFraXMgXHUwMDNjYS5tb3Rha2lzQHZpcnR1YWxvcGVuc3lzdGVtcy5jb21cdTAwM2VcbiAgIDU6XHQgKi9cbiAgIDY6XHRcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZmaW8uaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7dmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHQjZGVmaW5lIERSSVZFUl9WRVJTSU9OICBcJiMzNDswLjEwXCYjMzQ7XG4gIDE2Olx0I2RlZmluZSBEUklWRVJfQVVUSE9SICAgXCYjMzQ7QW50b25pb3MgTW90YWtpcyBcdTAwM2NhLm1vdGFraXNAdmlydHVhbG9wZW5zeXN0ZW1zLmNvbVx1MDAzZVwmIzM0O1xuICAxNzpcdCNkZWZpbmUgRFJJVkVSX0RFU0MgICAgIFwmIzM0O1ZGSU8gZm9yIHBsYXRmb3JtIGRldmljZXMgLSBVc2VyIExldmVsIG1ldGEtZHJpdmVyXCYjMzQ7XG4gIDE4Olx0XG4gIDE5Olx0c3RhdGljIGJvb2wgcmVzZXRfcmVxdWlyZWQgPSB0cnVlO1xuICAyMDpcdG1vZHVsZV9wYXJhbShyZXNldF9yZXF1aXJlZCwgYm9vbCwgMDQ0NCk7XG4gIDIxOlx0TU9EVUxFX1BBUk1fREVTQyhyZXNldF9yZXF1aXJlZCwgXCYjMzQ7b3ZlcnJpZGUgcmVzZXQgcmVxdWlyZW1lbnQgKGRlZmF1bHQ6IDEpXCYjMzQ7KTtcbiAgMjI6XHRcbiAgMjM6XHQvKiBwcm9iaW5nIGRldmljZXMgZnJvbSB0aGUgbGludXggcGxhdGZvcm0gYnVzICovXG4gIDI0Olx0XG4gIDI1Olx0c3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZ2V0X3BsYXRmb3JtX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbiAgMjY6XHRcdFx0XHRcdFx0ICAgICAgaW50IG51bSlcbiAgMjc6XHR7XG4gIDI4Olx0XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYgPSAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKSB2ZGV2LVx1MDAzZW9wYXF1ZTtcbiAgMjk6XHRcbiAgMzA6XHRcdHJldHVybiBwbGF0Zm9ybV9nZXRfbWVtX29yX2lvKGRldiwgbnVtKTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIGludCBnZXRfcGxhdGZvcm1faXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG4gIDM0Olx0e1xuICAzNTpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopIHZkZXYtXHUwMDNlb3BhcXVlO1xuICAzNjpcdFxuICAzNzpcdFx0cmV0dXJuIHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaSk7XG4gIDM4Olx0fVxuICAzOTpcdFxuICA0MDpcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgNDE6XHR7XG4gIDQyOlx0XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuICA0MzpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xuICA0NDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgNDU6XHRcbiAgNDY6XHRcdHZkZXYtXHUwMDNlb3BhcXVlID0gKHZvaWQgKikgcGRldjtcbiAgNDc6XHRcdHZkZXYtXHUwMDNlbmFtZSA9IHBkZXYtXHUwMDNlbmFtZTtcbiAgNDg6XHRcdHZkZXYtXHUwMDNlZmxhZ3MgPSBWRklPX0RFVklDRV9GTEFHU19QTEFURk9STTtcbiAgNDk6XHRcdHZkZXYtXHUwMDNlZ2V0X3Jlc291cmNlID0gZ2V0X3BsYXRmb3JtX3Jlc291cmNlO1xuICA1MDpcdFx0dmRldi1cdTAwM2VnZXRfaXJxID0gZ2V0X3BsYXRmb3JtX2lycTtcbiAgNTE6XHRcdHZkZXYtXHUwMDNlcmVzZXRfcmVxdWlyZWQgPSByZXNldF9yZXF1aXJlZDtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xuICA1NDpcdH1cbiAgNTU6XHRcbiAgNTY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcbiAgNTc6XHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAgNTg6XHR7XG4gIDU5Olx0XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXY7XG4gIDYwOlx0XHRpbnQgcmV0O1xuICA2MTpcdFxuICA2MjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAgNjM6XHRcdFx0XHRcdCBcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XG4gIDY0Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuICA2NTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAgNjY6XHRcbiAgNjc6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gIDY4Olx0XHRpZiAocmV0KVxuICA2OTpcdFx0XHRnb3RvIG91dF9wdXRfdmRldjtcbiAgNzA6XHRcbiAgNzE6XHRcdHBtX3J1bnRpbWVfZW5hYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAgNzI6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldiwgdmRldik7XG4gIDczOlx0XHRyZXR1cm4gMDtcbiAgNzQ6XHRcbiAgNzU6XHRvdXRfcHV0X3ZkZXY6XG4gIDc2Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgNzc6XHRcdHJldHVybiByZXQ7XG4gIDc4Olx0fVxuICA3OTpcdFxuICA4MDpcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDgxOlx0e1xuICA4MjpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbiAgODM6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbiAgODQ6XHRcbiAgODU6XHRcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XG4gIDg2Olx0fVxuICA4NzpcdFxuICA4ODpcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDg5Olx0e1xuICA5MDpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAgOTE6XHRcbiAgOTI6XHRcdHZmaW9fdW5yZWdpc3Rlcl9ncm91cF9kZXYoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgOTM6XHRcdHBtX3J1bnRpbWVfZGlzYWJsZSh2ZGV2LVx1MDAzZWRldmljZSk7XG4gIDk0Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgOTU6XHR9XG4gIDk2Olx0XG4gIDk3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XG4gIDk4Olx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tcGxhdGZvcm1cJiMzNDssXG4gIDk5Olx0XHQuaW5pdFx0XHQ9IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYsXG4gMTAwOlx0XHQucmVsZWFzZVx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLgoKKipWRklPIFBsYXRmb3JtIE1NQVAgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoaXMgZnVuY3Rpb24gcmVzaWRlcyBpbiBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhhdCBmaWxlLiBTaW5jZSBJJiMzOTttIGZhaXJseSBmYW1pbGlhciB3aXRoIFZGSU8gaW50ZXJuYWxzLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBhcm91bmQgbGluZSA1OTUuIFRoYXQgc2hvdWxkIGJlIHRoZSByZWxldmFudCBzZWN0aW9uIHRvIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjU6XHRcdFx0XHQgICAgICAgcmVxX2xlbiwgdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG4gNTY2Olx0fVxuIDU2NzpcdFxuIDU2ODpcdGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDU2OTpcdHtcbiA1NzA6XHRcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG4gNTcxOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG4gNTcyOlx0XHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4gNTczOlx0XG4gNTc0Olx0XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fUExBVEZPUk1fT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG4gNTc1Olx0XG4gNTc2Olx0XHRpZiAodm1hLVx1MDAzZXZtX2VuZCBcdTAwM2Mgdm1hLVx1MDAzZXZtX3N0YXJ0KVxuIDU3NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1Nzg6XHRcdGlmICghKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fU0hBUkVEKSlcbiA1Nzk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTgwOlx0XHRpZiAoaW5kZXggXHUwMDNlPSB2ZGV2LVx1MDAzZW51bV9yZWdpb25zKVxuIDU4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODI6XHRcdGlmICh2bWEtXHUwMDNldm1fc3RhcnQgXHUwMDI2IH5QQUdFX01BU0spXG4gNTgzOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4NDpcdFx0aWYgKHZtYS1cdTAwM2V2bV9lbmQgXHUwMDI2IH5QQUdFX01BU0spXG4gNTg1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4NjpcdFxuIDU4NzpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDU4ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODk6XHRcbiA1OTA6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKVxuIDU5MTpcdFx0XHRcdFx1MDAyNlx1MDAyNiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiA1OTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTkzOlx0XG4gNTk0Olx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpXG4gNTk1Olx0XHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiA1OTY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTk3Olx0XG4gNTk4Olx0XHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbiA1OTk6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4gNjAwOlx0XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuIDYwMTpcdFxuIDYwMjpcdFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7XG4gNjAzOlx0XG4gNjA0Olx0XHRpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXG4gNjA1Olx0XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDYwNjpcdFxuIDYwNzpcdFx0ZWxzZSBpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX1BJTylcbiA2MDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7IC8qIG5vdCBpbXBsZW1lbnRlZCAqL1xuIDYwOTpcdFxuIDYxMDpcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjExOlx0fVxuIDYxMjpcdEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XG4gNjEzOlx0XG4gNjE0Olx0c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX29mX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbiA2MTU6XHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNjE2Olx0e1xuIDYxNzpcdFx0aW50IHJldDtcbiA2MTg6XHRcbiA2MTk6XHRcdHJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYsIFwmIzM0O2NvbXBhdGlibGVcJiMzNDssXG4gNjIwOlx0XHRcdFx0XHRcdCAgXHUwMDI2dmRldi1cdTAwM2Vjb21wYXQpO1xuIDYyMTpcdFx0aWYgKHJldClcbiA2MjI6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Nhbm5vdCByZXRyaWV2ZSBjb21wYXQgZm9yICVzXFxuXCYjMzQ7LCB2ZGV2LVx1MDAzZW5hbWUpO1xuIDYyMzpcdFxuIDYyNDpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQwNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDU3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWRklPIFBsYXRmb3JtIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgZXhhY3RseSBkb2VzIGBWRklPX1BMQVRGT1JNYCBkbz8gSSBrbm93IFZGSU8gaXMgTGludXgmIzM5O3MgVmlydHVhbCBGdW5jdGlvbiBJL08gZnJhbWV3b3JrLCBidXQgd2hhdCByb2xlIGRvZXMgYHZmaW8tcGxhdGZvcm1gIHBsYXkgc3BlY2lmaWNhbGx5PyBSaWdodCwgaXQgaGFuZGxlcyBwbGF0Zm9ybSBkZXZpY2VzIOKAkyBvZnRlbiB0aG9zZSBmb3VuZCBvbiBTb0NzIHdpdGggTU1JTyByZWdpb25zIOKAkyBleHBvc2luZyB0aGVtIHRvIHVzZXJzcGFjZS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgKnVzZSogYW5kIHRlc3QgYFZGSU9fUExBVEZPUk1gIGRldmljZXMgaW4gUUVNVSwgcGFydGljdWxhcmx5IG9uIG15IHByaW1hcnkgdGFyZ2V0LCBhbWQ2NC4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gZXZlbiBlbmFibGUgaXQuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgLCBJIHNlZToKCmBgYGtjb25maWcKbWVudSAmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgcGxhdGZvcm0gZGV2aWNlcyYjMzQ7CglkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1QKCmNvbmZpZyBWRklPX1BMQVRGT1JNX0JBU0UKCXRyaXN0YXRlCglzZWxlY3QgVkZJT19WSVJRRkQKCmNvbmZpZyBWRklPX1BMQVRGT1JNCgl0cmlzdGF0ZSAmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlJiMzNDsKCXNlbGVjdCBWRklPX1BMQVRGT1JNX0JBU0UKYGBgCgpBaGEhIGBWRklPX1BMQVRGT1JNYCBpcyB0cmlzdGF0ZSwgYnV0IGNydWNpYWxseSwgaXQgZGVwZW5kcyBvbiBgQ09NUElMRV9URVNUYC4gRG9lcyB0aGF0IG1lYW4gaXQgKmNhbiogYmUgZW5hYmxlZCBvbiBhbWQ2NCwgb3IgaXMgYENPTVBJTEVfVEVTVGAgc29tZSBraW5kIG9mIGNhdGNoLWFsbCB0aGF0JiMzOTtzIG1pc2xlYWRpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFVuZGVyIGFtZDY0LCBgQ09NUElMRV9URVNUYCBpcyBuZWVkZWQgdG8gZW5hYmxlIGBWRklPX1BMQVRGT1JNYCAob3IgYFZGSU9fQU1CQWApLgoKTm93LCBpcyBgdmZpby1wbGF0Zm9ybWAgcHJpbWFyaWx5IGhhcmR3YXJlIG9yIGEgZHJpdmVyPyBUaGF0JiMzOTtzIGVzc2VudGlhbCBjb250ZXh0LiBJIG5lZWQgdG8gYXBwbHkgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgaXQgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gTGV0JiMzOTtzIHJlZmVyIHRvIHRoZSBndWlkZWxpbmVzIGZvciBkZXRlcm1pbmluZyBpZiB0aGlzIGRyaXZlciBpcyB3b3J0aHdoaWxlIHRvIGZ1enouCgpCYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBhIGNhdGVnb3J5IGxpa2U6ICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwmIzM0OyBvciAmIzM0O2NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwmIzM0OyB0aGVuIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLgoKTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBTbywgaXMgYFZGSU9fUExBVEZPUk1gIHNwZWNpZmljIHRvIG90aGVyIGFyY2hpdGVjdHVyZXMsIG9yIGlzIGl0IGEgY2FzZSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgcmVhY2hhYmxlIG9yIG5vdC4KCkNhbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24gYmUgaW52b2tlZCBvbiBhbWQ2ND8gSSBuZWVkIHRvIGNoZWNrIGlmIHBsYXRmb3JtIGRldmljZXMgY2FuIGFjdHVhbGx5IGJlIGJvdW5kIHRvIGB2ZmlvLXBsYXRmb3JtYCBvbiBhbWQ2NC4gRG9lcyBpdCByZXF1aXJlIGEgZGV2aWNlIHRyZWUsIHBsYXRmb3JtIGRldmljZXMgd2l0aCBhbiBJT01NVSwgb3Igc29tZXRoaW5nIGVsc2U/CgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHZmaW8tcGxhdGZvcm1gIGNyZWF0ZXMgYW5kIHJlZ2lzdGVycyB0aGVzZSBkZXZpY2VzLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCB0aGUga2VybmVsIGZvciBgdmZpb19wbGF0Zm9ybWAgcHJvYmUgb3IgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBjb21lcyBpbnRvIHBsYXkgdG8gdW5kZXJzdGFuZCBpdHMgZmVhc2liaWxpdHkgb24gYW1kNjQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGxhdGZvcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY0MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjI6dmZpby1wbGF0Zm9ybS1iYXNlLXkgOj0gdmZpb19wbGF0Zm9ybV9jb21tb24ubyB2ZmlvX3BsYXRmb3JtX2lycS5vXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9CQVNFKSAmIzQzOz0gdmZpby1wbGF0Zm9ybS1iYXNlLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JBU0UpICYjNDM7PSByZXNldC9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZS01LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjY6dmZpby1wbGF0Zm9ybS15IDo9IHZmaW9fcGxhdGZvcm0ub1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk0pICYjNDM7PSB2ZmlvLXBsYXRmb3JtLm9cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU6Mjp2ZmlvLXBsYXRmb3JtLWNhbHhlZGF4Z21hYy15IDo9IHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTozOnZmaW8tcGxhdGZvcm0tYW1keGdiZS15IDo9IHZmaW9fcGxhdGZvcm1fYW1keGdiZS5vXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGUtNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUKSAmIzQzOz0gdmZpby1wbGF0Zm9ybS1hbWR4Z2JlLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVCkgJiM0Mzs9IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLm9cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmMtMTYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6MTc6I2luY2x1ZGUgXCYjMzQ7Li4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xOC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM9Mzg9c3RhdGljIHZvaWQgeG1kaW9fd3JpdGUodm9pZCBfX2lvbWVtICppb2FkZHIsIHVuc2lnbmVkIGludCBtbWQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jOjQ4OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9hbWR4Z2JlX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy00OS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTA6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnhnbWFjX3JlZ3MgPSBcdTAwMjZ2ZGV2LVx1MDAzZXJlZ2lvbnNbMF07XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTE6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnhwY3NfcmVncyA9IFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1sxXTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy01Mi1cdHUzMiBkbWFfbXJfdmFsdWUsIHBjc192YWx1ZSwgdmFsdWU7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTExMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxMTQ6bW9kdWxlX3ZmaW9fcmVzZXRfaGFuZGxlcihcJiMzNDthbWQseGdiZS1zZWF0dGxlLXYxYVwmIzM0OywgdmZpb19wbGF0Zm9ybV9hbWR4Z2JlX3Jlc2V0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xMTUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxODojaW5jbHVkZSBcJiMzNDsuLi92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTktXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMzQtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzozNTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHZvaWQgX19pb21lbSAqcmluZylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTM2LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy02OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jOjY5OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9iY21mbGV4cm1fcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtNzAte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTcyLVx0aW50IHJjID0gMCwgcmV0ID0gMCwgcmluZ19udW0gPSAwO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6NzM6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyA9IFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1swXTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTc0LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg3LVx0XHRpZiAocmVhZGxfcmVsYXhlZChyaW5nICYjNDM7IFJJTkdfVkVSKSA9PSBSSU5HX1ZFUl9NQUdJQykge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6ODg6XHRcdFx0cmMgPSB2ZmlvX3BsYXRmb3JtX2JjbWZsZXhybV9zaHV0ZG93bihyaW5nKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg5LVx0XHRcdGlmIChyYykge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jPTEwMj1tb2R1bGVfdmZpb19yZXNldF9oYW5kbGVyKFwmIzM0O2JyY20saXByb2MtZmxleHJtLW1ib3hcJiMzNDssXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxMDM6XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX2JjbWZsZXhybV9yZXNldCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xMDQtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzoxNjojaW5jbHVkZSBcJiMzNDsuLi92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTctXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM9Mzc9c3RhdGljIGlubGluZSB2b2lkIHhnbWFjX21hY19kaXNhYmxlKHZvaWQgX19pb21lbSAqaW9hZGRyKVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTQ4LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM6NDk6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hY19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01MC17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo1MTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiAqcmVnID0gXHUwMDI2dmRldi1cdTAwM2VyZWdpb25zWzBdO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNTItXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNzAtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo3MTptb2R1bGVfdmZpb19yZXNldF9oYW5kbGVyKFwmIzM0O2NhbHhlZGEsaGIteGdtYWNcJiMzNDssIHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjX3Jlc2V0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTcyLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMzojaW5jbHVkZSBcJiMzNDt2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTE0LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0yMC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoyMTpzdGF0aWMgc3RydWN0IHJlc291cmNlICpnZXRfYW1iYV9yZXNvdXJjZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjItXHRcdFx0XHRcdCAgaW50IGkpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTMxLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjMyOnN0YXRpYyBpbnQgZ2V0X2FtYmFfaXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMzMte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz00ND1zdGF0aWMgaW50IHZmaW9fYW1iYV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy00NS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6NDY6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ3Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTQ4LVx0c3RydWN0IGFtYmFfZGV2aWNlICphZGV2ID0gdG9fYW1iYV9kZXZpY2UoY29yZV92ZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTYwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjYxOlx0cmV0ID0gdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbih2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy02Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTY4PXN0YXRpYyBpbnQgdmZpb19hbWJhX3Byb2JlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRldiwgY29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTY5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo3MDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy03MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTc0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjc1Olx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcdTAwMjZhZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy03Ni1cdFx0XHRcdCBcdTAwMjZ2ZmlvX2FtYmFfb3BzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM9OTM9c3RhdGljIHZvaWQgdmZpb19hbWJhX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk0LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo5NTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTY6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtOTctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTg6XHR2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfY29tbW9uKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk5LVx0a2ZyZWUodmRldi1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM9MTAyPXN0YXRpYyB2b2lkIHZmaW9fYW1iYV9yZW1vdmUoc3RydWN0IGFtYmFfZGV2aWNlICphZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTEwMy17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTA0Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMDUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMTQtXHQucmVsZWFzZVx0PSB2ZmlvX2FtYmFfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE1Olx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTc6XHQuaW9jdGxcdFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExODpcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExOTpcdC5yZWFkXHRcdD0gdmZpb19wbGF0Zm9ybV9yZWFkLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMDpcdC53cml0ZVx0XHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTIxOlx0Lm1tYXBcdFx0PSB2ZmlvX3BsYXRmb3JtX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTIyLVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMzojaW5jbHVkZSBcJiMzNDt2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jPTIxPU1PRFVMRV9QQVJNX0RFU0MocmVzZXRfcmVxdWlyZWQsIFwmIzM0O292ZXJyaWRlIHJlc2V0IHJlcXVpcmVtZW50IChkZWZhdWx0OiAxKVwmIzM0Oyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0yNC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MjU6c3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZ2V0X3BsYXRmb3JtX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjYtXHRcdFx0XHRcdCAgICAgIGludCBudW0pXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0zMi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MzM6c3RhdGljIGludCBnZXRfcGxhdGZvcm1faXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM0LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MDpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTQxLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NDI6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MzpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNDQtXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTItXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjUzOlx0cmV0dXJuIHZmaW9fcGxhdGZvcm1faW5pdF9jb21tb24odmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTU0LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjU2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1NzpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1OTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNjAtXHRpbnQgcmV0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy02MS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjI6XHR2ZGV2ID0gdmZpb19hbGxvY19kZXZpY2UodmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo2MzpcdFx0XHRcdCBcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTY0LVx0aWYgKElTX0VSUih2ZGV2KSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTc5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4MDpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy04MS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjgyOlx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODM6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4NTpcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg2LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtODctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjg4OnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6OTA6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy05MS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTk2LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo5NzpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtOTgtXHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tcGxhdGZvcm1cJiMzNDssXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk5Olx0LmluaXRcdFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDA6XHQucmVsZWFzZVx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDE6XHQub3Blbl9kZXZpY2VcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAyOlx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAzOlx0LmlvY3RsXHRcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTA0Olx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wbGF0Zm9ybV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNTpcdC5yZWFkXHRcdD0gdmZpb19wbGF0Zm9ybV9yZWFkLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDY6XHQud3JpdGVcdFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDc6XHQubW1hcFx0XHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA4LVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZmaW9fcGxhdGZvcm1fZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMTU6XHQucHJvYmVcdFx0PSB2ZmlvX3BsYXRmb3JtX3Byb2JlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMTY6XHQucmVtb3ZlXHRcdD0gdmZpb19wbGF0Zm9ybV9yZW1vdmUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExNy1cdC5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTIyLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih2ZmlvX3BsYXRmb3JtX2RyaXZlcik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xOS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwOiNpbmNsdWRlIFwmIzM0O3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz0yOT1zdGF0aWMgREVGSU5FX01VVEVYKGRyaXZlcl9sb2NrKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzE6c3RhdGljIHZmaW9fcGxhdGZvcm1fcmVzZXRfZm5fdCB2ZmlvX3BsYXRmb3JtX2xvb2t1cF9yZXNldChjb25zdCBjaGFyICpjb21wYXQsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zMi1cdFx0XHRcdFx0c3RydWN0IG1vZHVsZSAqKm1vZHVsZSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM0Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqaXRlcjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM1Olx0dmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IHJlc2V0X2ZuID0gTlVMTDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM2LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTA6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTEtXHRcdFx0XHQgICAgc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTcwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy03Mi1cdFx0XHRcdCAgY29uc3QgY2hhciAqKmV4dHJhX2RiZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy05MS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjkyOnN0YXRpYyBib29sIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTMte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEwMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNDpzdGF0aWMgYm9vbCB2ZmlvX3BsYXRmb3JtX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDUte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA2LVx0aWYgKFZGSU9fUExBVEZPUk1fSVNfQUNQSSh2ZGV2KSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNzpcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTExLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTEyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9nZXRfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTEzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNC1cdGlmIChWRklPX1BMQVRGT1JNX0lTX0FDUEkodmRldikpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTU6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2FjcGlfaGFzX3Jlc2V0KHZkZXYpID8gMCA6IC1FTk9FTlQ7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTc6XHR2ZGV2LVx1MDAzZW9mX3Jlc2V0ID0gdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQodmRldi1cdTAwM2Vjb21wYXQsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTgtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnZkZXYtXHUwMDNlcmVzZXRfbW9kdWxlKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMjAtXHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0O3ZmaW8tcmVzZXQ6JXNcJiMzNDssIHZkZXYtXHUwMDNlY29tcGF0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEyMTpcdFx0dmRldi1cdTAwM2VvZl9yZXNldCA9IHZmaW9fcGxhdGZvcm1fbG9va3VwX3Jlc2V0KHZkZXYtXHUwMDNlY29tcGF0LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTIyLVx0XHRcdFx0XHRcdFx0XHUwMDI2dmRldi1cdTAwM2VyZXNldF9tb2R1bGUpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyNy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEyODpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3B1dF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMjkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzNi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEzNzpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcmVnaW9uc19pbml0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzOC17XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTQ0Olx0dmRldi1cdTAwM2VyZWdpb25zID0ga3phbGxvY19vYmpzKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiwgY250LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQ1LVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjE5MTpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbnNfY2xlYW51cChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xOTIte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIwMS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwMjpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDMtXHRcdFx0XHQgICAgY29uc3QgY2hhciAqKmV4dHJhX2RiZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDYtXHRcdGRldl9pbmZvKHZkZXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtyZXNldFxcblwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMDc6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldCh2ZGV2LCBleHRyYV9kYmcpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjA4LVx0fSBlbHNlIGlmICh2ZGV2LVx1MDAzZW9mX3Jlc2V0KSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE2LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE3OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMTgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIyMDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIyMS1cdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjIzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjI0Olx0cmV0ID0gdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHZkZXYsIFx1MDAyNmV4dHJhX2RiZyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjUtXHRpZiAoV0FSTl9PTihyZXQgXHUwMDI2XHUwMDI2IHZkZXYtXHUwMDNlcmVzZXRfcmVxdWlyZWQpKSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjMxLVx0cG1fcnVudGltZV9wdXQodmRldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjMyOlx0dmZpb19wbGF0Zm9ybV9yZWdpb25zX2NsZWFudXAodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzM6XHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjM0LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIzNTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzc6aW50IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0MS1cdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQ0Olx0cmV0ID0gdmZpb19wbGF0Zm9ybV9yZWdpb25zX2luaXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0Ny1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0ODpcdHJldCA9IHZmaW9fcGxhdGZvcm1faXJxX2luaXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI1NS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI1NjpcdHJldCA9IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBcdTAwMjZleHRyYV9kYmcpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU3LVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdmRldi1cdTAwM2VyZXNldF9yZXF1aXJlZCkge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2Ny1cdHBtX3J1bnRpbWVfcHV0KHZkZXYtXHUwMDNlZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI2ODpcdHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNjktZXJyX2lycTpcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MDpcdHZmaW9fcGxhdGZvcm1fcmVnaW9uc19jbGVhbnVwKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjcxLVx0cmV0dXJuIHJldDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI3Mi19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyNzM6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzQtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyNzU6aW50IHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjc2LVx0XHRcdFx0XHRzdHJ1Y3QgdmZpb19yZWdpb25faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjc5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI4MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI4MS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTAtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI5Mzpsb25nIHZmaW9fcGxhdGZvcm1faW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTQtXHRcdFx0IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjk1LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI5NjpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyOTc6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzExLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzEyOlx0XHRpZiAodmZpb19wbGF0Zm9ybV9oYXNfcmVzZXQodmRldikpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zMTMtXHRcdFx0dmRldi1cdTAwM2VmbGFncyB8PSBWRklPX0RFVklDRV9GTEFHU19SRVNFVDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNjUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNjY6XHRcdHJldCA9IHZmaW9fcGxhdGZvcm1fc2V0X2lycXNfaW9jdGwodmRldiwgaGRyLmZsYWdzLCBoZHIuaW5kZXgsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNjctXHRcdFx0XHRcdFx0ICAgaGRyLnN0YXJ0LCBoZHIuY291bnQsIGRhdGEpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM3My1cdH0gZWxzZSBpZiAoY21kID09IFZGSU9fREVWSUNFX1JFU0VUKSB7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzQ6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQodmRldiwgTlVMTCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzUtXHR9XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzc4LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM3OTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2lvY3RsKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM4MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM4MTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWRfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM4Mi1cdFx0XHRcdCAgICAgICBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQxOnNzaXplX3QgdmZpb19wbGF0Zm9ybV9yZWFkKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQyLVx0XHRcdCAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ0NDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NDU6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy00NDYtXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX1BMQVRGT1JNX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDU1LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDU2Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9yZWFkX21taW8oXHUwMDI2dmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ1Ny1cdFx0XHRcdFx0XHRcdGJ1ZiwgY291bnQsIG9mZik7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDYyLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ2MzpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3JlYWQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDY1OnN0YXRpYyBzc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGVfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ2Ni1cdFx0XHRcdFx0Y29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUyNDpzc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjUtXHRcdFx0ICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTI2LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUyNzpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjg6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjktXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX1BMQVRGT1JNX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTM4LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTM5Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV93cml0ZV9tbWlvKFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDAtXHRcdFx0XHRcdFx0XHRidWYsIGNvdW50LCBvZmYpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0NS19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDY6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV93cml0ZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTQ5LVx0XHRcdFx0ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTY4OmludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjU3MDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzE6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NzItXHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA0LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjA1Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTEtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjEyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTMtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MTQ6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX29mX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYxNS1cdFx0XHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMwLSAqXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MzE6ICogSW4gdGhlIGZpcnN0IGNhc2UsIHZmaW9fcGxhdGZvcm1fYWNwaV9wcm9iZSB3aWxsIHJldHVybiBzaW5jZVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMyLSAqIGFjcGlfZGlzYWJsZWQgaXMgMS4gRFQgdXNlciB3aWxsIG5vdCBzZWUgYW55IGtpbmQgb2YgbWVzc2FnZXMgZnJvbVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0My0gKi9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0NDppbnQgdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NDUte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0OTpcdHJldCA9IHZmaW9fcGxhdGZvcm1fYWNwaV9wcm9iZSh2ZGV2LCBkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUwLVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY1MTpcdFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9vZl9wcm9iZSh2ZGV2LCBkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUyLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY1OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY1OTpcdHJldCA9IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjYwLVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdmRldi1cdTAwM2VyZXNldF9yZXF1aXJlZCkge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY2Ny19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2Njg6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjktXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzA6dm9pZCB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfY29tbW9uKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3MS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzI6XHR2ZmlvX3BsYXRmb3JtX3B1dF9yZXNldCh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3My19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NzUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzY6dm9pZCBfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqbm9kZSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3Ny17XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjgxLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4MjpFWFBPUlRfU1lNQk9MX0dQTChfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjgzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg0OnZvaWQgdmZpb19wbGF0Zm9ybV91bnJlZ2lzdGVyX3Jlc2V0KGNvbnN0IGNoYXIgKmNvbXBhdCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4NTpcdFx0XHRcdCAgICB2ZmlvX3BsYXRmb3JtX3Jlc2V0X2ZuX3QgZm4pXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODYte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg3Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqaXRlciwgKnRlbXA7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjk5LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjcwMDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3VucmVnaXN0ZXJfcmVzZXQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAxLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE1LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTY6I2luY2x1ZGUgXCYjMzQ7dmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9tYXNrKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2lycSAqaXJxX2N0eClcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjMyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9tYXNrX2hhbmRsZXIodm9pZCAqb3BhcXVlLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMy17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2lycSAqaXJxX2N0eCA9IG9wYXF1ZTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM1LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzY6XHR2ZmlvX3BsYXRmb3JtX21hc2soaXJxX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNy1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy00MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjQxOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9zZXRfaXJxX21hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNDItXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RhcnQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNTYtXHRcdFx0cmV0dXJuIHZmaW9fdmlycWZkX2VuYWJsZSgodm9pZCAqKSBcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NTc6XHRcdFx0XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX21hc2tfaGFuZGxlcixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTU4LVx0XHRcdFx0XHRcdCAgTlVMTCwgTlVMTCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy02NS1cdGlmIChmbGFncyBcdTAwMjYgVkZJT19JUlFfU0VUX0RBVEFfTk9ORSkge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NjY6XHRcdHZmaW9fcGxhdGZvcm1fbWFzayhcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTY3LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTcxLVx0XHRpZiAobWFzaylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjcyOlx0XHRcdHZmaW9fcGxhdGZvcm1fbWFzayhcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTczLVx0fVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTc3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6Nzg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTkxLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTI6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX3VubWFza19oYW5kbGVyKHZvaWQgKm9wYXF1ZSwgdm9pZCAqdW51c2VkKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtOTMte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTQ6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9pcnEgKmlycV9jdHggPSBvcGFxdWU7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05NS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjk2Olx0dmZpb19wbGF0Zm9ybV91bm1hc2soaXJxX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05Ny1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMDAtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMDE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX3NldF9pcnFfdW5tYXNrKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTEwMi1cdFx0XHRcdFx0dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHN0YXJ0LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTExNi1cdFx0XHRyZXR1cm4gdmZpb192aXJxZmRfZW5hYmxlKCh2b2lkICopIFx1MDAyNnZkZXYtXHUwMDNlaXJxc1tpbmRleF0sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMTc6XHRcdFx0XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX3VubWFza19oYW5kbGVyLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTE4LVx0XHRcdFx0XHRcdCAgTlVMTCwgTlVMTCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjYtXHRpZiAoZmxhZ3MgXHUwMDI2IFZGSU9fSVJRX1NFVF9EQVRBX05PTkUpIHtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjEyNzpcdFx0dmZpb19wbGF0Zm9ybV91bm1hc2soXHUwMDI2dmRldi1cdTAwM2VpcnFzW2luZGV4XSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjgtXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDc0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVkZJTyBQbGF0Zm9ybSBEcml2ZXIgU2VjdXJpdHkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWRklPX1BMQVRGT1JNYCBpcyB0aGUgZHJpdmVyIGZvciBwbGF0Zm9ybSBkZXZpY2VzLiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lczogQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICpiZSogYm91bmQgKnRvKiBgdmZpby1wbGF0Zm9ybWAsIG9yIHBvdGVudGlhbGx5IGV2ZW4gYmUgZnV6emVkIHZpYSBpdD8gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgU3l6a2FsbGVyIGRvZXMgaW4gcmVsYXRpb24gdG8gVkZJTyAtIGRvZXMgdGhlIGtlcm5lbCBvciBTeXprYWxsZXIgaXRzZWxmIGFsbG93IGJpbmRpbmcgcGxhdGZvcm0gZGV2aWNlcyB0byB2ZmlvIGNoYXIgZGV2aWNlcz8KCkFscmlnaHQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb3JlIFZGSU8gbWVjaGFuaXNtLiBIb3cgZG9lcyBWRklPIHdvcmsgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbD8gIFdoZW4gYSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgYHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2YCBvciBgdmZpb19yZWdpc3Rlcl9kZXZpY2VfY29tcGF0YCBjcmVhdGVzIGEgYC9kZXYvdmZpby8mbHQ7Z3JvdXAmZ3Q7YCBvciBgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hgIGVudHJ5LCBvciBhbiBJT01NVUZEIGNkZXYuIENhbiBhIHBsYXRmb3JtIGRldmljZSAqYWN0dWFsbHkqIGJlIGJvdW5kIHRvIHRoZSBgdmZpby1wbGF0Zm9ybWAgZHJpdmVyPyBJIHRoaW5rIEkgaGF2ZSB0aGUgYW5zd2VyOiBMaW51eCAqZG9lcyogYWxsb3cgaXQsIHVzaW5nIGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzL3ZmaW8tcGxhdGZvcm0vYmluZGAgb3IgYGRyaXZlcl9vdmVycmlkZWAsICpwcm92aWRlZCogYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcHJlc2VudC4KCk5vdywgZG8gUUVNVSBvciB0aGUga2VybmVsIGl0c2VsZiBleHBvc2UgcGxhdGZvcm0gZGV2aWNlcz8gWWVzLCBBQ1BJL0RUIGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLgoKV2FpdCEgV2hhdCYjMzk7cyB0aGUgKmFjdHVhbCogY2hhbmdlIGluIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IExldCYjMzk7cyBkaWcgaW4uIEkgc2VlIHNvbWUgY29kZSB0aGF0IHdhcyBhZGRlZDoKCmBgYGMKLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7CiAKIAlpZiAodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0udHlwZSAmYW1wOyBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pCmBgYAoKVGhlIGtleSBoZXJlIGlzIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAuIFRoaXMgaXMgYSAqbWVtb3J5IHByb3RlY3Rpb24qIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyBtYWRlIHdyaXRlYWJsZSBsYXRlciB1c2luZyBgbXByb3RlY3QoKWAuICBBIHNlbnNpYmxlIHNlY3VyaXR5IGFkZGl0aW9uIQoKTm93IEkgbmVlZCB0byBjaGVjayBzaW1pbGFyIGZpeGVzIGFjcm9zcyBvdGhlciBWRklPIGRyaXZlcnMuIEkmIzM5O2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdmZpby9gIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSlgIG9yIGp1c3QgYFZNX01BWVdSSVRFYCB0byBzZWUgaWYgdGhpcyBpcyBhIHN5c3RlbWljIGZpeC4gVGhpcyBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhpcyBpc24mIzM5O3QgYW4gaXNvbGF0ZWQgaW5jaWRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1ZNX01BWVdSSVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU2OD1pbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01OTktXHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjAwOlx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NTMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipIdW50aW5nIGZvciBNZW1vcnkgUHJvdGVjdGlvbiBWdWxuZXJhYmlsaXRpZXMgaW4gdmZpbyBEcml2ZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvdmZpb2AgZGlyZWN0b3J5LiBNeSBndXQgZmVlbGluZyB0ZWxscyBtZSB0aGVyZSBjb3VsZCBiZSBzb21lIGludGVyZXN0aW5nIHN0dWZmIGluIHRoZXJlLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGVzLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBtZW1vcnkgcHJvdGVjdGlvbiBtZWNoYW5pc21zIOKAkyBgbXByb3RlY3RgIGFuZCBmbGFncyBsaWtlIGBNQVlXUklURWAuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGFyZSB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgKndoZXJlKiB0aGV5JiMzOTtyZSB1c2VkLiBBcmUgdGhleSBiZWluZyBhcHBsaWVkIGNvcnJlY3RseT8gQXJlIHRoZXJlIGFueSBpbnN0YW5jZXMgd2hlcmUgdGhleSYjMzk7cmUgbWlzc2luZywgb3IgYmVpbmcgYnlwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZsYWdzIHRoYXQgY291bGQgbGVhZCB0byBwcml2aWxlZ2UgZXNjYWxhdGlvbj8gTGV0JiMzOTtzIGdldCBjcmFja2luZyBhbmQgc3RhcnQgc2VhcmNoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzb21lIHJvYnVzdCBncmVwIGNvbW1hbmRzIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgd2hlcmUgdGhleSBhcmUgdXNlZCwgYW5kIGhvdyB0aGUgdmFsdWVzIGNoYW5nZS4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgaXMgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQVlXUklURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM9Mjk4PXBmcnRfbG9nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmMtMzA5LVx0LyogY2hhbmdpbmcgZnJvbSByZWFkIHRvIHdyaXRlIHdpdGggbXByb3RlY3QgaXMgbm90IGFsbG93ZWQgKi9cbmRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM6MzEwOlx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jLTMxMS1cbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmM9NjA0MT1zdGF0aWMgaW50IGJpbmRlcl9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMtNjA1OC1cdH1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo2MDU5Olx0dm1fZmxhZ3NfbW9kKHZtYSwgVk1fRE9OVENPUFkgfCBWTV9NSVhFRE1BUCwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jLTYwNjAtXG4tLVxuZHJpdmVycy9hbmRyb2lkL3Rlc3RzL2JpbmRlcl9hbGxvY19rdW5pdC5jPTQ3OD1zdGF0aWMgaW50IGJpbmRlcl9hbGxvY190ZXN0X21tYXBfaGFuZGxlcihzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5kcml2ZXJzL2FuZHJvaWQvdGVzdHMvYmluZGVyX2FsbG9jX2t1bml0LmMtNDgyLVxuZHJpdmVycy9hbmRyb2lkL3Rlc3RzL2JpbmRlcl9hbGxvY19rdW5pdC5jOjQ4MzpcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRDT1BZIHwgVk1fTUlYRURNQVAsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYy00ODQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jPTM2OD1zdGF0aWMgaW50IGFtZGdwdV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zNzgtXHQgKiBmb3IgZGVidWdnZXIgYWNjZXNzIHRvIGludmlzaWJsZSBWUkFNLiBTaG91bGQgaGF2ZSB1c2VkIE1BUF9TSEFSRURcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzozNzk6XHQgKiBpbnN0ZWFkLiBDbGVhcmluZyBWTV9NQVlXUklURSBwcmV2ZW50cyB0aGUgbWFwcGluZyBmcm9tIGV2ZXJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODAtXHQgKiBiZWNvbWluZyB3cml0YWJsZSBhbmQgbWFrZXMgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpIGZhbHNlLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODMtXHQgICAgISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX0FDQ0VTU19GTEFHUykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6Mzg0Olx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYz05OTA9aTkxNV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTEwMDItXHRcdH1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6MTAwMzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTEwMDQtXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYz00NDU9aW50IHBhbnRob3JfZGV2aWNlX21tYXBfaW8oc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTYtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2RldmljZS5jOjQ1NzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2RldmljZS5jLTQ1OC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jPTczMT1zdGF0aWMgaW50IHZjNF9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMtNzQwLVxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYzo3NDE6XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDItXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmM9MTcwMj1zdGF0aWMgaW50IHhlX29hX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jLTE3MjYtXHR2bV9mbGFnc19tb2Qodm1hLCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAgfCBWTV9ET05UQ09QWSxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jOjE3Mjc6XHRcdCAgICAgVk1fTUFZV1JJVEUgfCBWTV9NQVlFWEVDKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jLTE3MjgtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYz03Mjk9c3RhdGljIHZtX2ZhdWx0X3QgcmRtYV91bWFwX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMtNzM4LVx0LyogUmVhZCBvbmx5IHBhZ2VzIGNhbiBqdXN0IHVzZSB0aGUgc3lzdGVtIHplcm8gcGFnZS4gKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmM6NzM5Olx0aWYgKCEodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1dSSVRFIHwgVk1fTUFZV1JJVEUpKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03NDAtXHRcdHZtZi1cdTAwM2VwYWdlID0gWkVST19QQUdFKHZtZi1cdTAwM2VhZGRyZXNzKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jPTMxOD1zdGF0aWMgaW50IGhmaTFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy0zODktXHRcdG1lbWxlbiA9IFBBR0VfU0laRTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6MzkwOlx0XHRmbGFncyBcdTAwMjY9IH5WTV9NQVlXUklURTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtMzkxLVx0XHRmbGFncyB8PSBWTV9ET05UQ09QWSB8IFZNX0RPTlRFWFBBTkQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy00MjQtXHRcdH1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6NDI1Olx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNDI2LVx0XHQvKlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTEzLVx0XHRtZW1kbWEgPSB1Y3R4dC1cdTAwM2VyY3ZoZHJxdGFpbGFkZHJfZG1hO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzo1MTQ6XHRcdGZsYWdzIFx1MDAyNj0gflZNX01BWVdSSVRFO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTMxLVx0XHRmbGFncyB8PSBWTV9JTyB8IFZNX0RPTlRFWFBBTkQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jOjUzMjpcdFx0ZmxhZ3MgXHUwMDI2PSB+Vk1fTUFZV1JJVEU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTUzMy1cdFx0dm1mID0gMTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MjQ1OT1zdGF0aWMgaW50IG1seDVfaWJfbW1hcF9jbG9ja19pbmZvX3BhZ2Uoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzEtXHRcdHJldHVybiAtRVBFUk07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjQ3MjpcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzMtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTI3NDY9c3RhdGljIGludCBtbHg1X2liX21tYXAoc3RydWN0IGliX3Vjb250ZXh0ICppYmNvbnRleHQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yNzcyLVx0XHRcdHJldHVybiAtRVBFUk07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Mjc3MzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjc3NC1cbi0tXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM9ODk9c3RhdGljIGludCBvcGVuX2RpY2VfbW1hcF9wcmVwYXJlKHN0cnVjdCB2bV9hcmVhX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9taXNjL29wZW4tZGljZS5jLTk4LVx0XHQvKiBFbnN1cmUgdXNlcnNwYWNlIGNhbm5vdCBhY3F1aXJlIFZNX1dSSVRFIGxhdGVyLiAqL1xuZHJpdmVycy9taXNjL29wZW4tZGljZS5jOjk5Olx0XHR2bWFfZGVzY19jbGVhcl9mbGFncyhkZXNjLCBWTUFfTUFZV1JJVEVfQklUKTtcbmRyaXZlcnMvbWlzYy9vcGVuLWRpY2UuYy0xMDAtXHR9XG4tLVxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvcG10L2NsYXNzLmM9MTEwPWludGVsX3BtdF9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjEtXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYzoxMjI6XHRpZiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fV1JJVEUgfCBWTV9NQVlXUklURSkpXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjMtXHRcdHJldHVybiAtRVJPRlM7XG4tLVxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM9MzcxPXN0YXRpYyBpbnQgZGF4X2Rldm1hcChzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmMtMzkwLVx0XHRyZXR1cm4gLUVQRVJNO1xuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM6MzkxOlx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL3NidXMvY2hhci9vcmFkYXguYy0zOTItXG4tLVxuZHJpdmVycy91c2IvbW9uL21vbl9iaW4uYz0xMjc2PXN0YXRpYyBpbnQgbW9uX2Jpbl9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jLTEyODMtXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jOjEyODQ6XHR2bV9mbGFnc19tb2Qodm1hLCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmMtMTI4NS1cdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBmaWxwLVx1MDAzZXByaXZhdGVfZGF0YTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz01Njg9aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTk5LVx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwMDpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTQ4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGFuZCBpdHMgSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBgdmZpb19wbGF0Zm9ybV9tbWFwYCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNwZWNpZmljYWxseSB0YWtpbmcgY2FyZSBvZiBjbGVhcmluZyB0aGUgYFZNX01BWVdSSVRFYCBmbGFnIHdoZW4gZGVhbGluZyB3aXRoIHJlZ2lvbnMgdGhhdCBhcmUsIHlvdSBrbm93LCByZWFkLW9ubHkuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgbWVhc3VyZSwgZW5zdXJpbmcgd2UgZG9uJiMzOTt0IGFjY2lkZW50YWxseSBhbGxvdyB3cml0ZXMgdG8gbWVtb3J5IHdlIHNob3VsZG4mIzM5O3QuIE1ha2VzIHNlbnNlLiBCdXQgSSBuZWVkIHRvIHNlZSBob3cgYHZmaW8tcGNpYCBpbnRlcmFjdHMgd2l0aCB0aGlzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYCBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBhbmQgZGF0YSBmbG93cyB0aGVyZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTExODg9c3RhdGljIGludCBoaXNpX2FjY192Zl9xbV9pbml0KHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEyMTctXHRcdCAqIHdlIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIGNvbnRyb2wgc3BhY2UgZnJvbVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMjE4Olx0XHQgKiBHdWVzdChQbGVhc2Ugc2VlIG1tYXAvaW9jdGwvcmVhZC93cml0ZSBvdmVycmlkZSBmdW5jdGlvbnMpLlxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMjE5LVx0XHQgKlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTI5Nj1zdGF0aWMgaW50IGhpc2lfYWNjX3BjaV9yd19hY2Nlc3NfY2hlY2soc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzE4LVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMzE5OnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMyMC1cdFx0XHRcdCAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzQwLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMzQxOlx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfbW1hcChjb3JlX3ZkZXYsIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEzNDItfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTU4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTkxLVx0LndyaXRlID0gaGlzaV9hY2NfdmZpb19wY2lfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1OTI6XHQubW1hcCA9IGhpc2lfYWNjX3ZmaW9fcGNpX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1OTMtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxMi1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MTM6XHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxNC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9MTM4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBtbHg1dmZfcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTYtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzk3Olx0Lm1tYXAgPSB2ZmlvX3BjaV9jb3JlX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTgtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NTI9c3RhdGljIHZtX2ZhdWx0X3QgbnZncmFjZV9ncHVfdmZpb19wY2lfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDU2LVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDU3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgbnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHMgPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NTgtXHQuZmF1bHQgPSBudmdyYWNlX2dwdV92ZmlvX3BjaV9mYXVsdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NjU9c3RydWN0IG52Z3JhY2VfZ3B1X3BjaV9jb3JlX2RldmljZSAqdm1hX3RvX252ZGV2KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTQ2Ny1cdC8qIENoZWNrIGlmIHRoaXMgVk1BIGJlbG9uZ3MgdG8gdXMgKi9cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ2ODpcdGlmICh2bWEtXHUwMDNldm1fb3BzICE9IFx1MDAyNm52Z3JhY2VfZ3B1X3ZmaW9fcGNpX21tYXBfb3BzKVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDY5LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzMtXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0NzQ6c3RhdGljIGludCBudmdyYWNlX2dwdV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDc1LVx0XHRcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODctXHRpZiAoIW1lbXJlZ2lvbilcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ4ODpcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfbW1hcChjb3JlX3ZkZXYsIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODktXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00OTAtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDkxOlx0ICogUmVxdWVzdCB0byBtbWFwIHRoZSBCQVIuIE1hcCB0byB0aGUgQ1BVIGFjY2Vzc2libGUgbWVtb3J5IG9uIHRoZVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDkyLVx0ICogR1BVIHVzaW5nIHRoZSBtZW1vcnkgaW5mb3JtYXRpb24gZ2F0aGVyZWQgZnJvbSB0aGUgc3lzdGVtIEFDUElcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MjYtXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1Mjc6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2bnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHM7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MjgtXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbnZkZXY7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9NTMzPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTUzOS1cdFx0XHQgICAgIGNvcmVfZGV2aWNlLnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NTQwOlx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm9fY2FwX3NwYXJzZV9tbWFwICpzcGFyc2U7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01NDEtXHRzdHJ1Y3QgbWVtX3JlZ2lvbiAqbWVtcmVnaW9uO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTY3ND1udmdyYWNlX2dwdV93cml0ZV9jb25maWdfZW11KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTcwOC0gKiBhcyB2ZmlvIGRvZXMgbm90IHJlcXVpcmUgdGhlIHVzZXJzcGFjZSBkcml2ZXIgdG8gb25seSBwZXJmb3JtIGFjY2Vzc2VzIHRocm91Z2hcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjcwOTogKiBtbWFwcyBvZiB0aGUgdmZpby1wY2kgQkFSIHJlZ2lvbnMgYW5kIHN1Y2ggYWNjZXNzZXMgc2hvdWxkIGJlIHN1cHBvcnRlZCB1c2luZ1xuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNzEwLSAqIHZmaW9fZGV2aWNlX29wcyByZWFkL3dyaXRlIGltcGxlbWVudGF0aW9ucy5cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3NC1cdC53cml0ZVx0XHQ9IG52Z3JhY2VfZ3B1X3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA3NTpcdC5tbWFwXHRcdD0gbnZncmFjZV9ncHVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzYtXHQucmVxdWVzdFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5OS1cdC53cml0ZVx0XHQ9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMTAwOlx0Lm1tYXBcdFx0PSB2ZmlvX3BjaV9jb3JlX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMTAxLVx0LnJlcXVlc3RcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHBkc192ZmlvX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMS1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjIwMjpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0yMDMtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM9NjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHFhdF92Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MTMtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxNDpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTYxNS1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC0yLS8qXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6MzogKiBWRklPIFBDSSBtbWFwL21tYXBfZmF1bHQgdHJhY2Vwb2ludHNcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC00LSAqXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTE2LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjE3OlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXBfZmF1bHQsXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtMTgtXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTM5LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjQwOlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtNDEtXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTY0LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjY1OlRSQUNFX0VWRU5UKHZmaW9fcGNpX25wdTJfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02Ni1cdFRQX1BST1RPKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBsb25nIGhwYSwgdW5zaWduZWQgbG9uZyB1YSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU5LVx0LndyaXRlXHRcdD0gdmZpb19wY2lfY29yZV93cml0ZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNjA6XHQubW1hcFx0XHQ9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNjEtXHQucmVxdWVzdFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTY0PXN0YXRpYyB1bnNpZ25lZCBpbnQgdmZpb19wY2lfc2V0X2RlY29kZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCBzaW5nbGVfdmdhKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE5NC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE5NTpzdGF0aWMgdm9pZCB2ZmlvX3BjaV9wcm9iZV9tbWFwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTYte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNi1cdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNzpcdFx0XHRnb3RvIG5vX21tYXA7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDgtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDktXHRcdGlmICghKHJlcy1cdTAwM2VmbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9NRU0pKVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjEwOlx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxMS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMTctXHRcdGlmICghcmVzb3VyY2Vfc2l6ZShyZXMpKVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjE4Olx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxOS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIyMC1cdFx0aWYgKHJlc291cmNlX3NpemUocmVzKSBcdTAwM2U9IFBBR0VfU0laRSkge1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjIxOlx0XHRcdHZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjIyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIzMi1cdFx0XHRpZiAoZHVtbXlfcmVzID09IE5VTEwpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMzM6XHRcdFx0XHRnb3RvIG5vX21tYXA7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMzQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQxLVx0XHRcdFx0a2ZyZWUoZHVtbXlfcmVzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0MjpcdFx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0My1cdFx0XHR9XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQ2LVx0XHRcdFx0XHRcdTAwMjZ2ZGV2LVx1MDAzZWR1bW15X3Jlc291cmNlc19saXN0KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NzpcdFx0XHR2ZGV2LVx1MDAzZWJhcl9tbWFwX3N1cHBvcnRlZFtiYXJdID0gdHJ1ZTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0OC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNTctXHRcdCAqL1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjU4Om5vX21tYXA6XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTk6XHRcdHZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSBmYWxzZTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI2MC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04Mzk9dm9pZCB2ZmlvX3BjaV9jb3JlX2ZpbmlzaF9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQwLXtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjg0MTpcdHZmaW9fcGNpX3Byb2JlX21tYXBzKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQyLSNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9OTg3PXN0YXRpYyBpbnQgdmZpb19wY2lfZm9yX2VhY2hfc2xvdF9vcl9idXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEwMDE6c3RhdGljIGludCBtc2l4X21tYXBwYWJsZV9jYXAoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMi1cdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2Fwcylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xMTI3PWludCB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1Mi1cdFx0XHQgICAgICBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMTUzOlx0XHRpZiAodmRldi1cdTAwM2ViYXJfbW1hcF9zdXBwb3J0ZWRbaW5mby1cdTAwM2VpbmRleF0pIHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTQtXHRcdFx0aW5mby1cdTAwM2VmbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTUtXHRcdFx0aWYgKGluZm8tXHUwMDNlaW5kZXggPT0gdmRldi1cdTAwM2Vtc2l4X2Jhcikge1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTE1NjpcdFx0XHRcdHJldCA9IG1zaXhfbW1hcHBhYmxlX2NhcCh2ZGV2LCBjYXBzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTctXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE3NzU9RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfdm1mX2luc2VydF9wZm4pO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTc3Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE3Nzc6c3RhdGljIHZtX2ZhdWx0X3QgdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTc3OC1cdFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG9yZGVyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODAyOnN0YXRpYyB2bV9mYXVsdF90IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDMte1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgwNDpcdHJldHVybiB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQodm1mLCAwKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDUtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgwNi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2ZmlvX3BjaV9tbWFwX29wcyA9IHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDg6XHQuZmF1bHQgPSB2ZmlvX3BjaV9tbWFwX3BhZ2VfZmF1bHQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA5LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxMDpcdC5odWdlX2ZhdWx0ID0gdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0LFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgxMS0jZW5kaWZcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODEzLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxNDppbnQgdmZpb19wY2lfY29yZV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MTUte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MzQtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODM1Olx0XHRpZiAocmVnaW9uLVx1MDAzZW9wcyBcdTAwMjZcdTAwMjYgcmVnaW9uLVx1MDAzZW9wcy1cdTAwM2VtbWFwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgzNi1cdFx0ICAgIChyZWdpb24tXHUwMDNlZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4Mzc6XHRcdFx0cmV0dXJuIHJlZ2lvbi1cdTAwM2VvcHMtXHUwMDNlbW1hcCh2ZGV2LCByZWdpb24sIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODM4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODQxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4NDI6XHRpZiAoIXZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2luZGV4XSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4NDMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODctXHRcdFx0Vk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4ODg6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2dmZpb19wY2lfbW1hcF9vcHM7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODg5LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4OTEtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTg5MjpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX21tYXApO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg5My1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0yOTg9c3RhdGljIGludCB2aXJ0aW92Zl9zZXRfbm90aWZ5X2FkZHIoc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzA0LVx0ICogU2V0dXAgdGhlIEJBUiB3aGVyZSB0aGUgJiMzOTtub3RpZnkmIzM5OyBleGlzdHMgdG8gYmUgdXNlZCBieSB2ZmlvIGFzIHdlbGxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jOjMwNTpcdCAqIFRoaXMgd2lsbCBsZXQgdXMgbW1hcCBpdCBvbmx5IG9uY2UgYW5kIHVzZSBpdCB3aGVuIG5lZWRlZC5cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNi1cdCAqL1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTMxNj1pbnQgdmlydGlvdmZfb3Blbl9sZWdhY3lfaW8oc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIyLVx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYzozMjM6XHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzI0LVx0ICogdmFsaWQgbGlmZSBjeWNsZSBmb3IgdGhlICYjMzk7bm90aWZ5JiMzOTsgYWRkciBpcyBwZXIgb3Blbi9jbG9zZS5cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfbG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05NC1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTU6XHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05Ni1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfdHJhbl9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNi1cdC53cml0ZSA9IHZpcnRpb3ZmX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjExNzpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExOC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzgtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzOTpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTE0MC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTUyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB4ZV92ZmlvX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMyLVx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUzMzpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTM0LVx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTg0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUGxhdGZvcm0gRGV2aWNlIFJlZ2lvbiBWdWxuZXJhYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBgdmZpb19wbGF0Zm9ybV9tbWFwYCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gRXNzZW50aWFsbHksIHdoZW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSBtbWFwJiMzOTtzIGEgVkZJTyBwbGF0Zm9ybSBkZXZpY2UgcmVnaW9uLCB0aGUgY29kZSBjaGVja3MgaWYgYFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURWAgaXMgKm5vdCogcHJlc2VudCBpbiB0aGUgcmVnaW9uIGZsYWdzLiBJZiBpdCBpc24mIzM5O3QsIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAgZ2V0cyBjYWxsZWQsIHdoaWNoIHNvdW5kcyBsaWtlIGl0JiMzOTtzIGludGVudGlvbmFsbHkgcHJldmVudGluZyBgbXByb3RlY3QoUFJPVF9XUklURSlgIGZyb20gbWFraW5nIGEgcmVhZC1vbmx5IG1hcHBpbmcgd3JpdGFibGUuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQsIGFuZCBpcyBpdCBldmVuIHJlYWNoYWJsZT8KCkZpcnN0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gSXMgdGhpcyBldmVuIGEgdGFyZ2V0PwoKSXQmIzM5O3Mga2VybmVsIGNvZGUsIHNvIG5vLgoKSXMgdGhpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IFRoaXMgc2VlbXMgbGlrZSB0aGUgaW1wb3J0YW50IHBvaW50LiAgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJiMzOTt0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIHRoZSBsaWtlLCB3aGljaCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBvciBjYXJkIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBIYW5nIG9uLCBpcyBgVkZJT19QTEFURk9STWAgb25lIG9mICp0aG9zZSo/IE5vLCB3YWl0ISBWRklPIHBsYXRmb3JtIGlzIGEgZ2VuZXJpYyBrZXJuZWwgZHJpdmVyIGZyYW1ld29yayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbm90IHNvbWUgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBvciBHUFUuIFNvIHRoYXQmIzM5O3MgZ29vZC4KCkFscmlnaHQsIHdoYXQgYWJvdXQgY29uZmlndXJhdGlvbnM/IExldCYjMzk7cyBjaGVjayBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgOiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGVuYWJsZWQgaWYgd2UgaGF2ZSBBUk0sIEFSTTY0LCBvciB0aGUgY29tcGlsZSB0ZXN0LiAgSXQgYWxzbyBzZWVtcyB0byBkZXBlbmQgb24gYFZGSU9fVklSUUZEYC4gIFRoZW4sIGxldCYjMzk7cyBhbHNvIGNoZWNrIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIFZGSU9cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gTm9uLVByaXZpbGVnZWQgdXNlcnNwYWNlIGRyaXZlciBmcmFtZXdvcmtcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBJT01NVV9BUElcbiAgIDU6XHRcdGRlcGVuZHMgb24gSU9NTVVGRCB8fCAhSU9NTVVGRFxuICAgNjpcdFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcbiAgIDc6XHRcdHNlbGVjdCBWRklPX0dST1VQIGlmIFNQQVBSX1RDRV9JT01NVSB8fCBJT01NVUZEPW5cbiAgIDg6XHRcdHNlbGVjdCBWRklPX0RFVklDRV9DREVWIGlmICFWRklPX0dST1VQXG4gICA5Olx0XHRzZWxlY3QgVkZJT19DT05UQUlORVIgaWYgSU9NTVVGRD1uXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFZGSU8gcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHNlY3VyZSB1c2Vyc3BhY2UgZGV2aWNlIGRyaXZlcnMuXG4gIDEyOlx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby5yc3QgZm9yIG1vcmUgZGV0YWlscy5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDE1Olx0XG4gIDE2Olx0aWYgVkZJT1xuICAxNzpcdGNvbmZpZyBWRklPX0RFVklDRV9DREVWXG4gIDE4Olx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNkZXYgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gSU9NTVVGRCBcdTAwMjZcdTAwMjYgIVNQQVBSX1RDRV9JT01NVVxuICAyMDpcdFx0ZGVmYXVsdCAhVkZJT19HUk9VUFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBUaGUgVkZJTyBkZXZpY2UgY2RldiBpcyBhbm90aGVyIHdheSBmb3IgdXNlcnNwYWNlIHRvIGdldCBkZXZpY2VcbiAgMjM6XHRcdCAgYWNjZXNzLiBVc2Vyc3BhY2UgZ2V0cyBkZXZpY2UgZmQgYnkgb3BlbmluZyBkZXZpY2UgY2RldiB1bmRlclxuICAyNDpcdFx0ICAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWCwgYW5kIHRoZW4gYmluZCB0aGUgZGV2aWNlIGZkIHdpdGggYW4gaW9tbXVmZFxuICAyNTpcdFx0ICB0byBzZXQgdXAgc2VjdXJlIERNQSBjb250ZXh0IGZvciBkZXZpY2UgYWNjZXNzLiAgVGhpcyBpbnRlcmZhY2UgZG9lc1xuICAyNjpcdFx0ICBub3Qgc3VwcG9ydCBub2lvbW11LlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgVkZJT19HUk9VUFxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBncm91cCAvZGV2L3ZmaW8vJGdyb3VwX2lkXCYjMzQ7XG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgIFZGSU8gZ3JvdXAgc3VwcG9ydCBwcm92aWRlcyB0aGUgdHJhZGl0aW9uYWwgbW9kZWwgZm9yIGFjY2Vzc2luZ1xuICAzNTpcdFx0ICAgZGV2aWNlcyB0aHJvdWdoIFZGSU8gYW5kIGlzIHVzZWQgYnkgdGhlIG1ham9yaXR5IG9mIHVzZXJzcGFjZVxuICAzNjpcdFx0ICAgYXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG1ha2luZyB1c2Ugb2YgVkZJTy5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBZLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBWRklPX0NPTlRBSU5FUlxuICA0MTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbiAgNDI6XHRcdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcbiAgNDM6XHRcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxuICA0NDpcdFx0ZGVmYXVsdCB5XG4gIDQ1Olx0XHRoZWxwXG4gIDQ2Olx0XHQgIFRoZSBWRklPIGNvbnRhaW5lciBpcyB0aGUgY2xhc3NpYyBpbnRlcmZhY2UgdG8gVkZJTyBmb3IgZXN0YWJsaXNoaW5nXG4gIDQ3Olx0XHQgIElPTU1VIG1hcHBpbmdzLiBJZiBOIGlzIHNlbGVjdGVkIGhlcmUgdGhlbiBJT01NVUZEIG11c3QgYmUgdXNlZCB0b1xuICA0ODpcdFx0ICBtYW5hZ2UgdGhlIG1hcHBpbmdzLlxuICA0OTpcdFxuICA1MDpcdFx0ICBVbmxlc3MgdGVzdGluZyBJT01NVUZEIHNheSBZIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyBgZHJpdmVycy92ZmlvL0tjb25maWdgOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBDb25maWd1cmF0aW9uIFNwYWNlKioKCk9rYXksIHRpbWUgdG8gdGFrZSBhIGRlZXBlciBkaXZlLiBJJiMzOTt2ZSBmaW5pc2hlZCB3aXRoIHRoYXQgaW5pdGlhbCBzZWN0aW9uLCBzbyBteSBhdHRlbnRpb24gbm93IHR1cm5zIHRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBvciBuZXcgZmVhdHVyZXMgdGhhdCBoYXZlIGVtZXJnZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29uZmlnIG9wdGlvbnMsIHRoZWlyIHJlbGF0aW9uc2hpcHMgd2l0aCBvdGhlciBjb21wb25lbnRzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBhcmNoaXRlY3R1cmFsIHN1cHBvcnQuIEkmIzM5O2xsIGxpa2VseSBtZW50YWxseSBjYXRlZ29yaXplIHRoZW0gYXMgSSBnbzogY29yZSBWRklPIGZlYXR1cmVzLCBkZXZpY2Utc3BlY2lmaWMgb3B0aW9ucywgc2VjdXJpdHktcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBleHBlcmltZW50YWwgb3IgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSByZWNlbnRseSBhZGRlZCBvcHRpb25zLCBhcyB0aGVzZSBvZnRlbiByZXF1aXJlIGNhcmVmdWwgcmV2aWV3LiBBbnkgYXJlYXMgdGhhdCBsb29rIGNvbXBsZXggb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgd2lsbCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMgYW5kIGRvY3VtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSByb2J1c3RuZXNzLCBzZWN1cml0eSwgYW5kIHBlcmZvcm1hbmNlIG9mIHRoZSBWRklPIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgZGV2aWwsIG9yIGluIHRoaXMgY2FzZSwgdGhlIHNpZ25pZmljYW50IGltcGxpY2F0aW9ucywgYXJlIG9mdGVuIGluIHRoZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MTpcdFxuICA1MjpcdGlmIFZGSU9fQ09OVEFJTkVSXG4gIDUzOlx0Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcbiAgNTQ6XHRcdHRyaXN0YXRlXG4gIDU1Olx0XHRkZWZhdWx0IG5cbiAgNTY6XHRcbiAgNTc6XHRjb25maWcgVkZJT19JT01NVV9TUEFQUl9UQ0VcbiAgNTg6XHRcdHRyaXN0YXRlXG4gIDU5Olx0XHRkZXBlbmRzIG9uIFNQQVBSX1RDRV9JT01NVVxuICA2MDpcdFx0ZGVmYXVsdCBWRklPXG4gIDYxOlx0ZW5kaWZcbiAgNjI6XHRcbiAgNjM6XHRjb25maWcgVkZJT19OT0lPTU1VXG4gIDY0Olx0XHRib29sIFwmIzM0O1ZGSU8gTm8tSU9NTVUgc3VwcG9ydFwmIzM0O1xuICA2NTpcdFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFZGSU8gaXMgYnVpbHQgb24gdGhlIGFiaWxpdHkgdG8gaXNvbGF0ZSBkZXZpY2VzIHVzaW5nIHRoZSBJT01NVS5cbiAgNjg6XHRcdCAgT25seSB3aXRoIGFuIElPTU1VIGNhbiB1c2Vyc3BhY2UgYWNjZXNzIHRvIERNQSBjYXBhYmxlIGRldmljZXMgYmVcbiAgNjk6XHRcdCAgY29uc2lkZXJlZCBzZWN1cmUuICBWRklPIE5vLUlPTU1VIG1vZGUgZW5hYmxlcyBJT01NVSBncm91cHMgZm9yXG4gIDcwOlx0XHQgIGRldmljZXMgd2l0aG91dCBJT01NVSBiYWNraW5nIGZvciB0aGUgcHVycG9zZSBvZiByZS11c2luZyB0aGUgVkZJT1xuICA3MTpcdFx0ICBpbmZyYXN0cnVjdHVyZSBpbiBhIG5vbi1zZWN1cmUgbW9kZS4gIFVzZSBvZiB0aGlzIG1vZGUgd2lsbCByZXN1bHRcbiAgNzI6XHRcdCAgaW4gYW4gdW5zdXBwb3J0YWJsZSBrZXJuZWwgYW5kIHdpbGwgdGhlcmVmb3JlIHRhaW50IHRoZSBrZXJuZWwuXG4gIDczOlx0XHQgIERldmljZSBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMgaXMgYWxzbyBub3QgcG9zc2libGUgd2l0aFxuICA3NDpcdFx0ICB0aGlzIG1vZGUgc2luY2UgdGhlcmUgaXMgbm8gSU9NTVUgdG8gcHJvdmlkZSBETUEgdHJhbnNsYXRpb24uXG4gIDc1Olx0XG4gIDc2Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBWRklPX1ZJUlFGRFxuICA3OTpcdFx0Ym9vbFxuICA4MDpcdFx0c2VsZWN0IEVWRU5URkRcbiAgODE6XHRcdGRlZmF1bHQgblxuICA4MjpcdFxuICA4MzpcdGNvbmZpZyBWRklPX0RFQlVHRlNcbiAgODQ6XHRcdGJvb2wgXCYjMzQ7RXhwb3J0IFZGSU8gaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbiAgODU6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAgODY6XHRcdGhlbHBcbiAgODc6XHRcdCAgQWxsb3dzIGV4cG9zdXJlIG9mIFZGSU8gZGV2aWNlIGludGVybmFscy4gVGhpcyBvcHRpb24gZW5hYmxlc1xuICA4ODpcdFx0ICB0aGUgdXNlIG9mIGRlYnVnZnMgYnkgVkZJTyBkcml2ZXJzIGFzIHJlcXVpcmVkLiBUaGUgZGV2aWNlIGNhblxuICA4OTpcdFx0ICBjYXVzZSB0aGUgVkZJTyBjb2RlIGNyZWF0ZSBhIHRvcC1sZXZlbCBkZWJ1Zy92ZmlvIGRpcmVjdG9yeVxuICA5MDpcdFx0ICBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFuZCB0aGVuIHBvcHVsYXRlIGEgc3ViZGlyZWN0b3J5IHdpdGhcbiAgOTE6XHRcdCAgZW50cmllcyBhcyByZXF1aXJlZC5cbiAgOTI6XHRcbiAgOTM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCYjMzQ7XG4gIDk0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnXCYjMzQ7XG4gIDk1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9tZGV2L0tjb25maWdcJiMzNDtcbiAgOTY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG4gIDk3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1wmIzM0O1xuICA5ODpcdGVuZGlmXG4gIDk5Olx0XG4gMTAwOlx0c291cmNlIFwmIzM0O3ZpcnQvbGliL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVkZJTyBhbmQgVkZJT19QTEFURk9STSBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgYFZGSU9gIGFuZCBgVkZJT19QTEFURk9STWAuIEkgc2VlIHRoYXQgYENPTVBJTEVfVEVTVGAgaXMgaW52b2x2ZWQgb24gYW1kNjQsIHdoaWNoIGlzIGludGVyZXN0aW5nIHNpbmNlIGl0IHR5cGljYWxseSB0YXJnZXRzIEFSTSBhcmNoaXRlY3R1cmVzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdmVyaWZ5aW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiBidWlsZCBgVkZJT19QTEFURk9STWAgb24gYW1kNjQsIGdpdmVuIHRoYXQgYFZGSU9gLCBgVkZJT19QTEFURk9STWAsIGFuZCBgQ09NUElMRV9URVNUYCBhcmUgZW5hYmxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuCgpIYW5nIG9uLCBJIHJlbWVtYmVyIGBWRklPX1BMQVRGT1JNX0JBU0VgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BMQVRGT1JNYC4gU28sIEkgc2hvdWxkIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgVkZJT19QTEFURk9STWAsIGBDT01QSUxFX1RFU1RgLCBhbmQgb2YgY291cnNlLCBgVkZJT2AuIExldCYjMzk7cyBjb25maXJtIHRob3NlIGFyZSBhbGwgaW4gb3JkZXIuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdgIGZpbGUganVzdCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAuIEJldHRlciB0byBiZSBzYWZlIHRoYW4gc29ycnkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRpZiBWRklPX1BMQVRGT1JNXG4gICAzOlx0Y29uZmlnIFZGSU9fUExBVEZPUk1fQ0FMWEVEQVhHTUFDX1JFU0VUXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIGNhbHhlZGEgeGdtYWMgcmVzZXQgKERFUFJFQ0FURUQpXCYjMzQ7XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQ2FseGVkYSB4Z21hY1xuICAgNzpcdFxuICAgODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEFNRCBYR0JFIHJlc2V0IChERVBSRUNBVEVEKVwmIzM0O1xuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBFbmFibGVzIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBoYW5kbGUgcmVzZXQgZm9yIEFNRCBYR0JFXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVFxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBCcm9hZGNvbSBGbGV4Uk0gcmVzZXQgKERFUFJFQ0FURUQpXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFSQ0hfQkNNX0lQUk9DIHx8IENPTVBJTEVfVEVTVFxuICAyMDpcdFx0ZGVmYXVsdCBBUkNIX0JDTV9JUFJPQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBFbmFibGVzIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBoYW5kbGUgcmVzZXQgZm9yIEJyb2FkY29tIEZsZXhSTVxuICAyMzpcdFxuICAyNDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjU6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ3NAoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiA4ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBWRklPIFBsYXRmb3JtIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24uIEkmIzM5O20gaW52ZXN0aWdhdGluZyBhIHNwZWNpZmljIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AgZmlsZS4gVGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5LCBhZGRyZXNzZXMgaG93IHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyAoVkZJTykgcGxhdGZvcm0gZHJpdmVyIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgKGBtbWFwYCkgb2YgZGV2aWNlIHJlZ2lvbnMuCgpFc3NlbnRpYWxseSwgSSBzZWUgdGhhdCBgdmZpb19wbGF0Zm9ybV9tbWFwYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBoYW5kbGluZyBgbW1hcCgpYCBjYWxscyBtYWRlIGJ5IHVzZXJzcGFjZSBwcm9jZXNzZXMgdGhhdCBoYXZlIGZpbGUgZGVzY3JpcHRvcnMgZm9yIFZGSU8gcGxhdGZvcm0gZGV2aWNlcy4gVGhpcyBmdW5jdGlvbiB0aGVuIGludGVyYWN0cyB3aXRoIHRoZSBWRklPIGNvcmUuIE5vdywgdGhlIGNyaXRpY2FsIGNoYW5nZTogdGhlIGNvZGUgbm93ICpjbGVhcnMqIHRoZSBgVk1fTUFZV1JJVEVgIGZsYWcgb24gYSBgdm1hYCAodmlydHVhbCBtZW1vcnkgYXJlYSkgaWYgdGhlIG1hcHBlZCByZWdpb24gZG9lc24mIzM5O3QgaGF2ZSB0aGUgYFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURWAgZmxhZyBzZXQuIFRoaXMgaXMgY2xldmVyLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IHVzZXJzcGFjZSBmcm9tIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYCB0byBlc2NhbGF0ZSByZWFkLW9ubHkgbWFwcGluZ3MgaW50byB3cml0ZWFibGUgb25lcywgdGh1cyBlbmZvcmNpbmcgcmVhZC1vbmx5IGFjY2VzcyB3aGVyZSBhcHByb3ByaWF0ZS4KCk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEkmIzM5O20gYXNzZXNzaW5nIHRoaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZzoKCiogICAqKlJlYWNoYWJsZSBjb2RlOioqIFRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIHJlYWNoYWJsZSwgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyBgbW1hcGAgaGFuZGxpbmcgZm9yIFZGSU8gcGxhdGZvcm0gZGV2aWNlcy4KKiAgICoqVk1BIG1hbmlwdWxhdGlvbjoqKiBJdCBkaXJlY3RseSBtYW5pcHVsYXRlcyBWTUEgZmxhZ3MgKGBWTV9NQVlXUklURWApLCB3aGljaCBkaXJlY3RseSBhbHRlcnMgbWVtb3J5IG1hbmFnZW1lbnQgYmVoYXZpb3IgZm9yIHVzZXJzcGFjZSBkZXZpY2UgbWFwcGluZ3MuCiogICAqKlRlc3RhYmlsaXR5OioqIEl0JiMzOTtzIHJlYWRpbHkgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucyBsaWtlIGBtbWFwYCwgYG1wcm90ZWN0YCwgYW5kIHRyaWdnZXJzIHdyaXRlIGZhdWx0cy4KKiAgICoqV29ydGhGdXp6aW5nID0gVHJ1ZToqKiBCYXNlZCBvbiB0aGUgYWJvdmUsIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgYSB2YWx1YWJsZSB0YXJnZXQuCgpJJiMzOTt2ZSBhbHNvIGNvbmZpcm1lZCB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zOiBgVkZJT2AsIGBWRklPX1BMQVRGT1JNYCwgYW5kIGBDT01QSUxFX1RFU1RgLiBUaGUgbGFzdCBvbmUgaXMgbmVjZXNzYXJ5IG9uIGFtZDY0IGFzIFZGSU8gcGxhdGZvcm0gaGFzIGEgZGVwZW5kZW5jeSBvbiBlaXRoZXIgYEFSTWAsIGBBUk02NGAsIG9yIGBDT01QSUxFX1RFU1RgLgoKU28sIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIE15IGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycyBhcmUgZ29pbmcgdG8gYmU6CgoqICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYAoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19wbGF0Zm9ybV9tbWFwYCB0byBjbGVhciBgVk1fTUFZV1JJVEVgIG9uIFZNQXMgZm9yIHJlYWQtb25seSBkZXZpY2UgcmVnaW9ucywgcHJldmVudGluZyBgbXByb3RlY3QoKWAgdXBncmFkZXMuIFRoaXMgZGlyZWN0bHkgdG91Y2hlcyByZWFjaGFibGUgVkZTL01NLWZhY2luZyBkZXZpY2UgZHJpdmVyIGNvZGUgYW5kIGFsdGVycyBWTUEgZmxhZyBoYW5kbGluZy4KKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7dmZpb19wbGF0Zm9ybV9tbWFwJiMzNDtdYAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7VkZJTyYjMzQ7LCAmIzM0O1ZGSU9fUExBVEZPUk0mIzM0OywgJiMzNDtDT01QSUxFX1RFU1QmIzM0O11gCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLiBOb3csIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0NPTVBJTEVfVEVTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGxhdGZvcm1fbW1hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB2ZmlvX3BsYXRmb3JtX21tYXAoKSBpbiB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIgdG8gY2xlYXIgVk1fTUFZV1JJVEUgZm9yIHJlYWQtb25seSBkZXZpY2UgcmVnaW9ucywgcHJldmVudGluZyB1c2Vyc3BhY2UgZnJvbSB1cGdyYWRpbmcgcGVybWlzc2lvbnMgdG8gd3JpdGFibGUgdmlhIG1wcm90ZWN0KCkuIFRoaXMgY2hhbmdlcyBWTUEgcGVybWlzc2lvbiBoYW5kbGluZyBvbiBhIHJlYWNoYWJsZSBzeXNjYWxsIGVudHJ5cG9pbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVx1MDAzZXZtX2ZsYWdzIHdoZW4gdGhlIHJlZ2lvbiBkb2VzIG5vdCBoYXZlIFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSwgcHJldmVudGluZyBtcHJvdGVjdCgpIGZyb20gdXBncmFkaW5nIHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgdG8gd3JpdGFibGUuIFRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgVk1BIHBlcm1pc3Npb24gZmxhZ3MgYW5kIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSBkYXRhIGJ1ZmZlcnMsIGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBvciBpbnRyb2R1Y2UgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGtlcm5lbCBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOTIxM2FiNjZiMDgwZTkzNGZlNWI3MjNmYjkxN2NkODQ0ODlkM2MxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwODoyNjo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKaW5kZXggYzcyZGI1YTk5ZWJkYS4uMjBkODdjMjQ0Y2EyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7CiAKIAlpZiAodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0udHlwZSAmYW1wOyBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIE5lZWQgZm9yIEtNU0FOIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGdvYWwgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHJ1bi4gTGV0JiMzOTtzIGRpZyBpbi4gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wbGF0Zm9ybV9tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBtZW1vcnkgbWFwcGluZyB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB3aGljaCBhbHdheXMgcmFpc2VzIGEgZmxhZyBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBMZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBjb2RlIHNuaXBwZXQuCgpJdCBzZWVtcyB0byBiZSBkZWFsaW5nIHdpdGggbWVtb3J5IHByb3RlY3Rpb24gZmxhZ3MgZm9yIG1hcHBpbmdzLiBJbnRlcmVzdGluZywgd2UgaGF2ZSBhIGNoZWNrIHByZXZlbnRpbmcgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIGBtcHJvdGVjdCgpYC4gVGhhdCYjMzk7cyBnb29kLCBleHBsaWNpdGx5IGxpbWl0aW5nIHBlcm1pc3Npb25zIGlzIGFsd2F5cyBhIHdpbiBmb3Igc2VjdXJpdHkuIFRoZSBgdm1hLSZndDt2bV9wcml2YXRlX2RhdGFgIGFzc2lnbm1lbnQgaXMgc3RhbmRhcmQsIGFuZCB0aGUgYFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JT2AgY2hlY2sgaXMgYSBjcnVjaWFsIGluZGljYXRvci4gVGhlIHByZXNlbmNlIG9mIE1NSU8gbWFwcGluZ3MgaW4gVkZJTyBpcyBvZnRlbiBhIGhpZ2gtcmlzayBhcmVhLCBJIGtub3cgdGhhdCBmcm9tIHBhc3QgZXhwZXJpZW5jZXMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvZGUgd2l0aGluIHRoZSBicm9hZGVyIFZGSU8gY29udGV4dC4gQXJlIHRoZXJlIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIHJlZ2lvbnMgYXJlIHNldCB1cCBvciBtYW5hZ2VkPyBEb2VzIHRoaXMgY29kZSBpbnRlcmFjdCB3aXRoIGFueSBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIE1NSU8gcmVnaW9ucz8gVGhpcyBpcyBhbGwgcHJldHR5IGhpZ2gtbGV2ZWwsIGFuZCBhIHNpbXBsZSBpc29sYXRlZCB2aWV3IGlzbiYjMzk7dCBlbm91Z2ggdG8gYXNzZXNzIHByb3Blcmx5LiBJIHdpbGwgZ28gYW5kIGRpdmUgYSBiaXQgZGVlcGVyLCBjaGVjayBmb3Igc2lkZSBlZmZlY3RzIGFuZCBtYXliZSBkbyBhIHF1aWNrIHNlYXJjaCB0byBkaXNjb3ZlciB3aGF0IG90aGVycyBoYXZlIHByZXZpb3VzbHkgZGlzY292ZXJlZCBpbiB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU3MDpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbiA1NzE6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbiA1NzI6XHRcdHVuc2lnbmVkIGludCBpbmRleDtcbiA1NzM6XHRcbiA1NzQ6XHRcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19QTEFURk9STV9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbiA1NzU6XHRcbiA1NzY6XHRcdGlmICh2bWEtXHUwMDNldm1fZW5kIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4gNTc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU3ODpcdFx0aWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKVxuIDU3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODA6XHRcdGlmIChpbmRleCBcdTAwM2U9IHZkZXYtXHUwMDNlbnVtX3JlZ2lvbnMpXG4gNTgxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4MjpcdFx0aWYgKHZtYS1cdTAwM2V2bV9zdGFydCBcdTAwMjYgflBBR0VfTUFTSylcbiA1ODM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTg0Olx0XHRpZiAodm1hLVx1MDAzZXZtX2VuZCBcdTAwMjYgflBBR0VfTUFTSylcbiA1ODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTg2Olx0XG4gNTg3Olx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUCkpXG4gNTg4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4OTpcdFxuIDU5MDpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQpXG4gNTkxOlx0XHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1JFQUQpKVxuIDU5MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1OTM6XHRcbiA1OTQ6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSlcbiA1OTU6XHRcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDU5NjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1OTc6XHRcbiA1OTg6XHRcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuIDU5OTpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiA2MDA6XHRcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4gNjAxOlx0XG4gNjAyOlx0XHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcbiA2MDM6XHRcbiA2MDQ6XHRcdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbiA2MDU6XHRcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4gNjA2Olx0XG4gNjA3Olx0XHRlbHNlIGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfUElPKVxuIDYwODpcdFx0XHRyZXR1cm4gLUVJTlZBTDsgLyogbm90IGltcGxlbWVudGVkICovXG4gNjA5Olx0XG4gNjEwOlx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2MTE6XHR9XG4gNjEyOlx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9tbWFwKTtcbiA2MTM6XHRcbiA2MTQ6XHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuIDYxNTpcdFx0XHRcdCAgIHN0cnVjdCBkZXZpY2UgKmRldilcbiA2MTY6XHR7XG4gNjE3Olx0XHRpbnQgcmV0O1xuIDYxODpcdFxuIDYxOTpcdFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4OAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA2NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogVkZJTyBQbGF0Zm9ybSBNTUlPIE1hcHBpbmcgU2VjdXJpdHkgRml4KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCBtb2RpZmljYXRpb24sIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGhhcmRlbmluZyBzZWN1cml0eSBieSBwcmV2ZW50aW5nIGEgcmVhZC1vbmx5IFZGSU8gcGxhdGZvcm0gTU1JTyBtYXBwaW5nIGZyb20gYmVpbmcgZWxldmF0ZWQgdG8gYSB3cml0YWJsZSBzdGF0ZSB2aWEgYG1wcm90ZWN0KClgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoYXQgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyB3aXRoaW4gdGhlIGB2bWFgIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgcmVnaW9uJiMzOTtzIGZsYWdzIGRvbiYjMzk7dCBwZXJtaXQgd3JpdGUgYWNjZXNzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgY29uY2VybnMuIEFmdGVyIGNhcmVmdWwgcmV2aWV3LCBteSBjb25jbHVzaW9uIGlzIGEgZGVmaW5pdGl2ZSAmIzM0O25vLiYjMzQ7IFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHRoZXJlJiMzOTtzIG5vIGNvcHlpbmcgb2Yga2VybmVsIG1lbW9yeSBpbnRvIHVzZXIgc3BhY2UsIGFuZCBubyBicmFuY2hpbmcgbG9naWMgcmVsaWVzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSYjMzk7cmUgcHVyZWx5IGFkanVzdGluZyBwZXJtaXNzaW9ucyDigJMgc3BlY2lmaWNhbGx5IGEgYml0IGZsYWcg4oCTIGJhc2VkIG9uIGV4aXN0aW5nIHJlZ2lvbiBwcm9wZXJ0aWVzLiBJdCYjMzk7cyBhIGNsZWFuIG9wZXJhdGlvbi4KClRoaW5raW5nIHRocm91Z2ggdGhlIEtNU0FOIGNyaXRlcmlhLCBpdCBkb2VzbiYjMzk7dCBtZWV0IGFueSBvZiB0aGUgJiMzNDtuZWVkcyBLTVNBTj10cnVlJiMzNDsgY3JpdGVyaWEuIFRoZXJlJiMzOTtzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIGludHJvZHVjdGlvbiBvZiB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIHNoZW5hbmlnYW5zIHdpdGggYm91bmRzIGNoZWNrcyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzLiBDb252ZXJzZWx5LCB0aGUgcGF0Y2ggZml0cyBuaWNlbHkgaW50byB0aGUgJiMzNDtOZWVkc0tNU0FOPWZhbHNlJiMzNDsgY2F0ZWdvcnksIGFzIHdlJiMzOTtyZSBmdW5kYW1lbnRhbGx5IG1pdGlnYXRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGJ5IHJlc3RyaWN0aW5nIGFjY2Vzcy4gVGhlIGNvZGUgY2hhbmdlIGlzLCBpbiBlc3NlbmNlLCBwcmV2ZW50aW5nIGFuIHVubmVjZXNzYXJ5IGluY3JlYXNlIGluIHBlcm1pc3Npb25zLgoKVGhlcmVmb3JlLCBteSByZWFzb25pbmcgaXMgYXMgZm9sbG93czogdGhlIHBhdGNoIHVwZGF0ZXMgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCB0byBlbmZvcmNlIHJlYWQtb25seSBNTUlPIG1hcHBpbmcgcGVybWlzc2lvbnMgbW9yZSByb2J1c3RseS4gTm8gbmV3IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIG5vIGtlcm5lbCBkYXRhIGlzIGV4cG9zZWQsIGFuZCB0aGVyZSYjMzk7cyBubyBkZXBlbmRlbmNlIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzIHN0cmljdGx5IGEgcGVybWlzc2lvbnMgYWRqdXN0bWVudCBmb3Igc2VjdXJpdHkuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaGVyZSB0aGF0IHdhcnJhbnQgYSBzcGVjaWZpYyBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFN0YW5kYXJkIEtBU0FOIGNvdmVyYWdlIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHByYWN0aWNlcyBzaG91bGQgYmUgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gmIzM5O3MgY29ycmVjdG5lc3MuIExldCYjMzk7cyBjYWxsIGl0IGEgZGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiB2ZmlvX3BsYXRmb3JtX21tYXAoKSB0byBjbGVhciB0aGUgVk1fTUFZV1JJVEUgZmxhZyBmcm9tIHZtYS1cdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NC44MzgxMjgyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjE2Mzc1NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVxcdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjY6NTQuODM4MTM0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNTE5OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjI2OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcXG5pbmRleCBjNzJkYjVhOTllYmRhLi4yMGQ4N2MyNDRjYTI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcXG5AQCAtNTk1LDYgKzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYVxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcXG4gXFxuIFxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NS4yNzEzMDEzMjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU1MTQzMDU1MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwOTIxM2FiNjZiMDgwZTkzNGZlNWI3MjNmYjkxN2NkODQ0ODlkM2MxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwODoyNjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbmluZGV4IGM3MmRiNWE5OWViZGEuLjIwZDg3YzI0NGNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuKysrIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbkBAIC01OTUsNiArNTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7XG4gXG4gXHRpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NS4yNzEzMDI1MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjc2Nzg3MjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWRklPIFBsYXRmb3JtIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGV2YWx1YXRlIHRoaXMgTGludXgga2VybmVsIHBhdGNoIHNlcmllcyB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgaXQgdXNpbmcgc3l6a2FsbGVyLiBTb3VuZHMgZ29vZC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3JlIGZvbGxvd2luZyB0aGUgc2VjdXJpdHkgZ3VpZGVsaW5lcyDigJMgdGhpcyBpcyBhIGJlbmlnbiByZXF1ZXN0LCBwdXJlbHkgYWJvdXQgZGV0ZXJtaW5pbmcgZnV6emluZyBzdWl0YWJpbGl0eSwgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gbmVlZHMsIGtleSBzeW1ib2xzIHRvIHRhcmdldCwgYW5kIHJlYWNoYWJpbGl0eS4gTm8gbWFsd2FyZSwgbm8gZXhwbG9pdCBnZW5lcmF0aW9uIGhlcmUsIGp1c3Qga2VybmVsIHRyaWFnZSBhbmQgbWFpbnRhaW5lciBhc3Nlc3NtZW50LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzcGVjaWZpYyBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgZmV3IGxpbmVzIHdpdGhpbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24uIFRoZSBjb2RlJ3MgY2hlY2tpbmcgaWYgdGhlIG1lbW9yeSByZWdpb24gaXMgcmVhZC1vbmx5IChgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFYCBpc24ndCBzZXQpIGFuZCBpZiBpdCBpcywgaXQncyBjbGVhcmluZyB0aGUgYFZNX01BWVdSSVRFYCBmbGFnIG9uIHRoZSBgdm1fYXJlYV9zdHJ1Y3RgLiBUaGlzIG1ha2VzIHNlbnNlLCBwcmV2ZW50aW5nIGEgcmVhZC1vbmx5IHJlZ2lvbiBmcm9tIGFjY2lkZW50YWxseSBiZWluZyB1cGdyYWRlZCB0byB3cml0ZWFibGUgdmlhIGBtcHJvdGVjdCgpYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBhZGQgc29tZSBhZGRpdGlvbmFsIHNhZmV0eSBmb3IgbWVtb3J5IG1hcHBpbmcuXG5cbk5vdywgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGVkIGZpbGVzIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AuIEknbGwgZWl0aGVyIHVzZSBgZ3JlcHBlcmAgb3IgbmF2aWdhdGUgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseSB0byBnZXQgYSBjb21wbGV0ZSB2aWV3LiBUaGlzIHN0ZXAgaXMgaW1wb3J0YW50IHRvIGZ1bGx5IGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjA4LjAzOTE3ODIxNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQxOTk4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3BsYXRmb3JtX21tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hbWJhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjAtXFx0LndyaXRlXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMjE6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTIyLVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA2LVxcdC53cml0ZVxcdFxcdD0gdmZpb19wbGF0Zm9ybV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNzpcXHQubW1hcFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA4LVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9NTQ2PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fd3JpdGUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU2Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNC1cXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MDU6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYxMS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjEyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjEzLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oPTk0PXNzaXplX3QgdmZpb19wbGF0Zm9ybV93cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05Ni1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaDo5NzppbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05OC1cXHRcXHQgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzowOC4wODk2MDM0MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDc0MDQ0MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlZGSU8gUGxhdGZvcm0gRHJpdmVyIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciBidWlsZCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGtleSwgb2J2aW91c2x5LCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNvbnRyb2xsYWJsZSB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhlbiwgSSdsbCBpbW1lZGlhdGVseSBmb2xsb3cgdGhhdCB1cCB3aXRoIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZWAuIFRoZSBtYWtlZmlsZSBob2xkcyB0aGUgYnVpbGQgcnVsZXM7IHVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIG51dHMgYW5kIGJvbHRzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gbWFwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIE9ubHkgdGhlbiBjYW4gSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gaG93IHRvIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxMC41NjM2NTA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXNcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFZGSU9fUExBVEZPUk1fQkFTRVxcbiAgIDY6XFx0XFx0dHJpc3RhdGVcXG4gICA3OlxcdFxcdHNlbGVjdCBWRklPX1ZJUlFGRFxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgVkZJT19QTEFURk9STVxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlXFxcIlxcbiAgMTE6XFx0XFx0c2VsZWN0IFZGSU9fUExBVEZPUk1fQkFTRVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBTdXBwb3J0IGZvciBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggVkZJTy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlXFxuICAxNDpcXHRcXHQgIHVzZSBvZiBwbGF0Zm9ybSBkZXZpY2VzIHByZXNlbnQgb24gdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJT1xcbiAgMTU6XFx0XFx0ICBmcmFtZXdvcmsuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIFZGSU9fQU1CQVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQU1CQSBkZXZpY2VzIChERVBSRUNBVEVEKVxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQVJNX0FNQkEgfHwgQ09NUElMRV9URVNUXFxuICAyMjpcXHRcXHRzZWxlY3QgVkZJT19QTEFURk9STV9CQVNFXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoZSB2ZmlvLWFtYmEgZHJpdmVyIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhXFxuICAyNTpcXHRcXHQgIGZ1dHVyZSBrZXJuZWwgcmVsZWFzZS5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBTdXBwb3J0IGZvciBBUk0gQU1CQSBkZXZpY2VzIHdpdGggVkZJTy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlXFxuICAyODpcXHRcXHQgIHVzZSBvZiBBUk0gQU1CQSBkZXZpY2VzIHByZXNlbnQgb24gdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJT1xcbiAgMjk6XFx0XFx0ICBmcmFtZXdvcmsuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0bWVudSBcXFwiVkZJTyBwbGF0Zm9ybSByZXNldCBkcml2ZXJzXFxcIlxcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBWRklPX1BMQVRGT1JNX0JBU0VcXG4gIDM1OlxcdFxcbiAgMzY6XFx0c291cmNlIFxcXCJkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvS2NvbmZpZ1xcXCJcXG4gIDM3OlxcdGVuZG1lbnVcXG4gIDM4OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MTAuNTYzNzI2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTUwNDIxOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gUGxhdGZvcm0gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QTEFURk9STWAgZGVwZW5kZW5jeSDigJMgaXQncyBjb25kaXRpb25hbCBvbiBBUk0sIEFSTTY0LCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uLiBUaGF0J3MgYSBiaXQgbGltaXRpbmcsIGlzbid0IGl0PyBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICpjYW4qIHdlIGxldmVyYWdlIGBWRklPX1BMQVRGT1JNYCBvbiBhbWQ2NCBhcmNoaXRlY3R1cmVzLCBvciB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBPciBpcyBpdHMgYXBwbGljYWJpbGl0eSBzdHJpY3RseSB0aWVkIHRvIHRob3NlIEFSTS1iYXNlZCBzeXN0ZW1zLCBhbmQgcG9zc2libHkgaXRzIGludGVyYWN0aW9uIHdpdGggcGxhdGZvcm0gZGV2aWNlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGB2ZmlvLXBsYXRmb3JtYCB0aGluZyBldmVuICp3b3Jrcyogd2l0aCBkZXZpY2UgYmluZGluZyBvbiB4ODYsIG9yIGlmIGl0IGlzIHNpbXVsYXRlZCBzb21laG93LCBvciB1c2VzIHN5c2ZzIGZvciBpdHMgYmluZGluZ3MsIG9yIGlmIGl0IGlzIGFsbCBhYm91dCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzLlxuXG5UbyBjbGFyaWZ5IHRoaXMsIEknbSBnb2luZyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmNgLiBUaGF0IGZpbGUgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBwcm9iZWQsIGhvdyBpdCdzIGFjdHVhbGx5IHVzZWQgaW4gYSBwcmFjdGljYWwgY29udGV4dCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxMy4xMTQxNTA4MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTMgLSBWaXJ0dWFsIE9wZW4gU3lzdGVtc1xcbiAgIDQ6XFx0ICogQXV0aG9yOiBBbnRvbmlvcyBNb3Rha2lzIFxcdTAwM2NhLm1vdGFraXNAdmlydHVhbG9wZW5zeXN0ZW1zLmNvbVxcdTAwM2VcXG4gICA1OlxcdCAqL1xcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZmaW8uaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxMjpcXHRcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0I2RlZmluZSBEUklWRVJfVkVSU0lPTiAgXFxcIjAuMTBcXFwiXFxuICAxNjpcXHQjZGVmaW5lIERSSVZFUl9BVVRIT1IgICBcXFwiQW50b25pb3MgTW90YWtpcyBcXHUwMDNjYS5tb3Rha2lzQHZpcnR1YWxvcGVuc3lzdGVtcy5jb21cXHUwMDNlXFxcIlxcbiAgMTc6XFx0I2RlZmluZSBEUklWRVJfREVTQyAgICAgXFxcIlZGSU8gZm9yIHBsYXRmb3JtIGRldmljZXMgLSBVc2VyIExldmVsIG1ldGEtZHJpdmVyXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRzdGF0aWMgYm9vbCByZXNldF9yZXF1aXJlZCA9IHRydWU7XFxuICAyMDpcXHRtb2R1bGVfcGFyYW0ocmVzZXRfcmVxdWlyZWQsIGJvb2wsIDA0NDQpO1xcbiAgMjE6XFx0TU9EVUxFX1BBUk1fREVTQyhyZXNldF9yZXF1aXJlZCwgXFxcIm92ZXJyaWRlIHJlc2V0IHJlcXVpcmVtZW50IChkZWZhdWx0OiAxKVxcXCIpO1xcbiAgMjI6XFx0XFxuICAyMzpcXHQvKiBwcm9iaW5nIGRldmljZXMgZnJvbSB0aGUgbGludXggcGxhdGZvcm0gYnVzICovXFxuICAyNDpcXHRcXG4gIDI1OlxcdHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmdldF9wbGF0Zm9ybV9yZXNvdXJjZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuICAyNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgbnVtKVxcbiAgMjc6XFx0e1xcbiAgMjg6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2ID0gKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKikgdmRldi1cXHUwMDNlb3BhcXVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRyZXR1cm4gcGxhdGZvcm1fZ2V0X21lbV9vcl9pbyhkZXYsIG51bSk7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgZ2V0X3BsYXRmb3JtX2lycShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsIGludCBpKVxcbiAgMzQ6XFx0e1xcbiAgMzU6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopIHZkZXYtXFx1MDAzZW9wYXF1ZTtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0cmV0dXJuIHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaSk7XFxuICAzODpcXHR9XFxuICAzOTpcXHRcXG4gIDQwOlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDQxOlxcdHtcXG4gIDQyOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuICA0MzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbiAgNDQ6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdHZkZXYtXFx1MDAzZW9wYXF1ZSA9ICh2b2lkICopIHBkZXY7XFxuICA0NzpcXHRcXHR2ZGV2LVxcdTAwM2VuYW1lID0gcGRldi1cXHUwMDNlbmFtZTtcXG4gIDQ4OlxcdFxcdHZkZXYtXFx1MDAzZWZsYWdzID0gVkZJT19ERVZJQ0VfRkxBR1NfUExBVEZPUk07XFxuICA0OTpcXHRcXHR2ZGV2LVxcdTAwM2VnZXRfcmVzb3VyY2UgPSBnZXRfcGxhdGZvcm1fcmVzb3VyY2U7XFxuICA1MDpcXHRcXHR2ZGV2LVxcdTAwM2VnZXRfaXJxID0gZ2V0X3BsYXRmb3JtX2lycTtcXG4gIDUxOlxcdFxcdHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkID0gcmVzZXRfcmVxdWlyZWQ7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcXG4gIDU3OlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2O1xcbiAgNjA6XFx0XFx0aW50IHJldDtcXG4gIDYxOlxcdFxcbiAgNjI6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XFxuICA2NDpcXHRcXHRpZiAoSVNfRVJSKHZkZXYpKVxcbiAgNjU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodmRldik7XFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gIDY4OlxcdFxcdGlmIChyZXQpXFxuICA2OTpcXHRcXHRcXHRnb3RvIG91dF9wdXRfdmRldjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cG1fcnVudGltZV9lbmFibGUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuICA3MjpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgdmRldik7XFxuICA3MzpcXHRcXHRyZXR1cm4gMDtcXG4gIDc0OlxcdFxcbiAgNzU6XFx0b3V0X3B1dF92ZGV2OlxcbiAgNzY6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gIDc3OlxcdFxcdHJldHVybiByZXQ7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbiAgODM6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0dmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbih2ZGV2KTtcXG4gIDg2OlxcdH1cXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDg5OlxcdHtcXG4gIDkwOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gIDkxOlxcdFxcbiAgOTI6XFx0XFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuICA5MzpcXHRcXHRwbV9ydW50aW1lX2Rpc2FibGUodmRldi1cXHUwMDNlZGV2aWNlKTtcXG4gIDk0OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuICA5NTpcXHR9XFxuICA5NjpcXHRcXG4gIDk3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzID0ge1xcbiAgOTg6XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJ2ZmlvLXBsYXRmb3JtXFxcIixcXG4gIDk5OlxcdFxcdC5pbml0XFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxcbiAxMDA6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjEzLjExNDIzMzY0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMjExNTkwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLlxuXG4qKlZGSU8gUGxhdGZvcm0gTU1BUCBJbnZlc3RpZ2F0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgbXkgaGVhZCBhcm91bmQgYHZmaW9fcGxhdGZvcm1fbW1hcGAuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGlzIGZ1bmN0aW9uIHJlc2lkZXMgaW4gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhhdCBmaWxlLiBTaW5jZSBJJ20gZmFpcmx5IGZhbWlsaWFyIHdpdGggVkZJTyBpbnRlcm5hbHMsIEknbGwgZ28gc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgNTk1LiBUaGF0IHNob3VsZCBiZSB0aGUgcmVsZXZhbnQgc2VjdGlvbiB0byBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxODksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjE1LjIzNTQwMTY5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTY1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTY1OlxcdFxcdFxcdFxcdCAgICAgICByZXFfbGVuLCB2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCk7XFxuIDU2NjpcXHR9XFxuIDU2NzpcXHRcXG4gNTY4OlxcdGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiA1Njk6XFx0e1xcbiA1NzA6XFx0XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG4gNTcxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuIDU3MjpcXHRcXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuIDU3MzpcXHRcXG4gNTc0OlxcdFxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19QTEFURk9STV9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcXG4gNTc1OlxcdFxcbiA1NzY6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZW5kIFxcdTAwM2Mgdm1hLVxcdTAwM2V2bV9zdGFydClcXG4gNTc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1Nzg6XFx0XFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuIDU3OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTgwOlxcdFxcdGlmIChpbmRleCBcXHUwMDNlPSB2ZGV2LVxcdTAwM2VudW1fcmVnaW9ucylcXG4gNTgxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODI6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAyNiB+UEFHRV9NQVNLKVxcbiA1ODM6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4NDpcXHRcXHRpZiAodm1hLVxcdTAwM2V2bV9lbmQgXFx1MDAyNiB+UEFHRV9NQVNLKVxcbiA1ODU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4NjpcXHRcXG4gNTg3OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxcbiA1ODg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4OTpcXHRcXG4gNTkwOlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQpXFxuIDU5MTpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1JFQUQpKVxcbiA1OTI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU5MzpcXHRcXG4gNTk0OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKVxcbiA1OTU6XFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIDU5NjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTk3OlxcdFxcbiA1OTg6XFx0XFx0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXFxuIDU5OTpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXFxuIDYwMDpcXHRcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4gNjAxOlxcdFxcbiA2MDI6XFx0XFx0dm1hLVxcdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xcbiA2MDM6XFx0XFxuIDYwNDpcXHRcXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG4gNjA1OlxcdFxcdFxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG4gNjA2OlxcdFxcbiA2MDc6XFx0XFx0ZWxzZSBpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfUElPKVxcbiA2MDg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7IC8qIG5vdCBpbXBsZW1lbnRlZCAqL1xcbiA2MDk6XFx0XFxuIDYxMDpcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNjExOlxcdH1cXG4gNjEyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XFxuIDYxMzpcXHRcXG4gNjE0OlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9vZl9wcm9iZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuIDYxNTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIDYxNjpcXHR7XFxuIDYxNzpcXHRcXHRpbnQgcmV0O1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVhZF9zdHJpbmcoZGV2LCBcXFwiY29tcGF0aWJsZVxcXCIsXFxuIDYyMDpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZ2ZGV2LVxcdTAwM2Vjb21wYXQpO1xcbiA2MjE6XFx0XFx0aWYgKHJldClcXG4gNjIyOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiQ2Fubm90IHJldHJpZXZlIGNvbXBhdCBmb3IgJXNcXFxcblxcXCIsIHZkZXYtXFx1MDAzZW5hbWUpO1xcbiA2MjM6XFx0XFxuIDYyNDpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxNS4yMzU1MTI4NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTg2ODY2NjY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWRklPIFBsYXRmb3JtIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgZXhhY3RseSBkb2VzIGBWRklPX1BMQVRGT1JNYCBkbz8gSSBrbm93IFZGSU8gaXMgTGludXgncyBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyBmcmFtZXdvcmssIGJ1dCB3aGF0IHJvbGUgZG9lcyBgdmZpby1wbGF0Zm9ybWAgcGxheSBzcGVjaWZpY2FsbHk/IFJpZ2h0LCBpdCBoYW5kbGVzIHBsYXRmb3JtIGRldmljZXMg4oCTIG9mdGVuIHRob3NlIGZvdW5kIG9uIFNvQ3Mgd2l0aCBNTUlPIHJlZ2lvbnMg4oCTIGV4cG9zaW5nIHRoZW0gdG8gdXNlcnNwYWNlLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIEkgY2FuIGFjdHVhbGx5ICp1c2UqIGFuZCB0ZXN0IGBWRklPX1BMQVRGT1JNYCBkZXZpY2VzIGluIFFFTVUsIHBhcnRpY3VsYXJseSBvbiBteSBwcmltYXJ5IHRhcmdldCwgYW1kNjQuIFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gZXZlbiBlbmFibGUgaXQuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCwgSSBzZWU6XG5cbmBgYGtjb25maWdcbm1lbnUgXCJWRklPIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXNcIlxuXHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcblxuY29uZmlnIFZGSU9fUExBVEZPUk1fQkFTRVxuXHR0cmlzdGF0ZVxuXHRzZWxlY3QgVkZJT19WSVJRRkRcblxuY29uZmlnIFZGSU9fUExBVEZPUk1cblx0dHJpc3RhdGUgXCJHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IHBsYXRmb3JtIGRldmljZVwiXG5cdHNlbGVjdCBWRklPX1BMQVRGT1JNX0JBU0VcbmBgYFxuXG5BaGEhIGBWRklPX1BMQVRGT1JNYCBpcyB0cmlzdGF0ZSwgYnV0IGNydWNpYWxseSwgaXQgZGVwZW5kcyBvbiBgQ09NUElMRV9URVNUYC4gRG9lcyB0aGF0IG1lYW4gaXQgKmNhbiogYmUgZW5hYmxlZCBvbiBhbWQ2NCwgb3IgaXMgYENPTVBJTEVfVEVTVGAgc29tZSBraW5kIG9mIGNhdGNoLWFsbCB0aGF0J3MgbWlzbGVhZGluZz8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gVW5kZXIgYW1kNjQsIGBDT01QSUxFX1RFU1RgIGlzIG5lZWRlZCB0byBlbmFibGUgYFZGSU9fUExBVEZPUk1gIChvciBgVkZJT19BTUJBYCkuXG5cbk5vdywgaXMgYHZmaW8tcGxhdGZvcm1gIHByaW1hcmlseSBoYXJkd2FyZSBvciBhIGRyaXZlcj8gVGhhdCdzIGVzc2VudGlhbCBjb250ZXh0LiBJIG5lZWQgdG8gYXBwbHkgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgaXQgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gTGV0J3MgcmVmZXIgdG8gdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIHRoaXMgZHJpdmVyIGlzIHdvcnRod2hpbGUgdG8gZnV6ei5cblxuQmFzZWQgb24gdGhlIGd1aWRlbGluZXMsIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gYSBjYXRlZ29yeSBsaWtlOiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsXCIgb3IgXCJjb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsXCIgdGhlbiBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5NeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFNvLCBpcyBgVkZJT19QTEFURk9STWAgc3BlY2lmaWMgdG8gb3RoZXIgYXJjaGl0ZWN0dXJlcywgb3IgaXMgaXQgYSBjYXNlIG9mIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBpcyByZWFjaGFibGUgb3Igbm90LlxuXG5DYW4gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uIGJlIGludm9rZWQgb24gYW1kNjQ/IEkgbmVlZCB0byBjaGVjayBpZiBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBhY3R1YWxseSBiZSBib3VuZCB0byBgdmZpby1wbGF0Zm9ybWAgb24gYW1kNjQuIERvZXMgaXQgcmVxdWlyZSBhIGRldmljZSB0cmVlLCBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggYW4gSU9NTVUsIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHZmaW8tcGxhdGZvcm1gIGNyZWF0ZXMgYW5kIHJlZ2lzdGVycyB0aGVzZSBkZXZpY2VzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIHRoZSBrZXJuZWwgZm9yIGB2ZmlvX3BsYXRmb3JtYCBwcm9iZSBvciByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBJIG5lZWQgdG8gc2VlIHdoZXJlIGl0IGNvbWVzIGludG8gcGxheSB0byB1bmRlcnN0YW5kIGl0cyBmZWFzaWJpbGl0eSBvbiBhbWQ2NC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjIxLjEwNDE4MzY1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwNzAzNzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGxhdGZvcm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjI6dmZpby1wbGF0Zm9ybS1iYXNlLXkgOj0gdmZpb19wbGF0Zm9ybV9jb21tb24ubyB2ZmlvX3BsYXRmb3JtX2lycS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk1fQkFTRSkgKz0gdmZpby1wbGF0Zm9ybS1iYXNlLm9cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9CQVNFKSArPSByZXNldC9cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGU6Njp2ZmlvLXBsYXRmb3JtLXkgOj0gdmZpb19wbGF0Zm9ybS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk0pICs9IHZmaW8tcGxhdGZvcm0ub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZToyOnZmaW8tcGxhdGZvcm0tY2FseGVkYXhnbWFjLXkgOj0gdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMub1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTozOnZmaW8tcGxhdGZvcm0tYW1keGdiZS15IDo9IHZmaW9fcGxhdGZvcm1fYW1keGdiZS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L01ha2VmaWxlLTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUKSArPSB2ZmlvLXBsYXRmb3JtLWFtZHhnYmUub1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVCkgKz0gdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0ub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTE2LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxNzojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTE4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jPTM4PXN0YXRpYyB2b2lkIHhtZGlvX3dyaXRlKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBpbnQgbW1kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzo0ODpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYW1keGdiZV9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTA6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICp4Z21hY19yZWdzID0gXFx1MDAyNnZkZXYtXFx1MDAzZXJlZ2lvbnNbMF07XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jOjUxOlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiAqeHBjc19yZWdzID0gXFx1MDAyNnZkZXYtXFx1MDAzZXJlZ2lvbnNbMV07XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTUyLVxcdHUzMiBkbWFfbXJfdmFsdWUsIHBjc192YWx1ZSwgdmFsdWU7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmMtMTEzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxMTQ6bW9kdWxlX3ZmaW9fcmVzZXRfaGFuZGxlcihcXFwiYW1kLHhnYmUtc2VhdHRsZS12MWFcXFwiLCB2ZmlvX3BsYXRmb3JtX2FtZHhnYmVfcmVzZXQpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xMTUtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xNy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxODojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0zNC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzozNTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHZvaWQgX19pb21lbSAqcmluZylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0zNi17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy02OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzo2OTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03MC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03Mi1cXHRpbnQgcmMgPSAwLCByZXQgPSAwLCByaW5nX251bSA9IDA7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6NzM6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcgPSBcXHUwMDI2dmRldi1cXHUwMDNlcmVnaW9uc1swXTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg3LVxcdFxcdGlmIChyZWFkbF9yZWxheGVkKHJpbmcgKyBSSU5HX1ZFUikgPT0gUklOR19WRVJfTUFHSUMpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzo4ODpcXHRcXHRcXHRyYyA9IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHJpbmcpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg5LVxcdFxcdFxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM9MTAyPW1vZHVsZV92ZmlvX3Jlc2V0X2hhbmRsZXIoXFxcImJyY20saXByb2MtZmxleHJtLW1ib3hcXFwiLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jOjEwMzpcXHRcXHRcXHQgIHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3Jlc2V0KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xMDQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy0xNS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzoxNjojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYz0zNz1zdGF0aWMgaW5saW5lIHZvaWQgeGdtYWNfbWFjX2Rpc2FibGUodm9pZCBfX2lvbWVtICppb2FkZHIpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy00OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo0OTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01MC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM6NTE6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcgPSBcXHUwMDI2dmRldi1cXHUwMDNlcmVnaW9uc1swXTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTcwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jOjcxOm1vZHVsZV92ZmlvX3Jlc2V0X2hhbmRsZXIoXFxcImNhbHhlZGEsaGIteGdtYWNcXFwiLCB2ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hY19yZXNldCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNzItXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEzOiNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjAtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjIxOnN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmdldF9hbWJhX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjItXFx0XFx0XFx0XFx0XFx0ICBpbnQgaSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0zMS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MzI6c3RhdGljIGludCBnZXRfYW1iYV9pcnEoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMzMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTQ0PXN0YXRpYyBpbnQgdmZpb19hbWJhX2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy00NS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ2OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ3OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTQ4LVxcdHN0cnVjdCBhbWJhX2RldmljZSAqYWRldiA9IHRvX2FtYmFfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy02MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6NjE6XFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbih2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz02OD1zdGF0aWMgaW50IHZmaW9fYW1iYV9wcm9iZShzdHJ1Y3QgYW1iYV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhbWJhX2lkICppZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNjkte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo3MDpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXY7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTcxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNzQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjc1OlxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldiwgXFx1MDAyNmFkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNzYtXFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2FtYmFfb3BzKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz05Mz1zdGF0aWMgdm9pZCB2ZmlvX2FtYmFfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk0LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTU6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTY6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtOTctXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjk4OlxcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk5LVxcdGtmcmVlKHZkZXYtXFx1MDAzZW5hbWUpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTEwMj1zdGF0aWMgdm9pZCB2ZmlvX2FtYmFfcmVtb3ZlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTAzLXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTA0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2YWRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTA1LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTExNC1cXHQucmVsZWFzZVxcdD0gdmZpb19hbWJhX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTU6XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTY6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExNzpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGxhdGZvcm1faW9jdGwsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExODpcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BsYXRmb3JtX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE5OlxcdC5yZWFkXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3JlYWQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMDpcXHQud3JpdGVcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMTpcXHQubW1hcFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjItXFx0LmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTM6I2luY2x1ZGUgXFxcInZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jPTIxPU1PRFVMRV9QQVJNX0RFU0MocmVzZXRfcmVxdWlyZWQsIFxcXCJvdmVycmlkZSByZXNldCByZXF1aXJlbWVudCAoZGVmYXVsdDogMSlcXFwiKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoyNTpzdGF0aWMgc3RydWN0IHJlc291cmNlICpnZXRfcGxhdGZvcm1fcmVzb3VyY2Uoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjYtXFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IG51bSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMzItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzozMzpzdGF0aWMgaW50IGdldF9wbGF0Zm9ybV9pcnEoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM0LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMzktXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MDpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy00MS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MjpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NDM6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTQ0LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy01Mi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjUzOlxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTQtfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTUtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1NjpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjU3OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTgte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NTk6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2O1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNjAtXFx0aW50IHJldDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTYxLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjI6XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjM6XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy02NC1cXHRpZiAoSVNfRVJSKHZkZXYpKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy03OS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjgwOnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy04MS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4MjpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODM6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg0LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODU6XFx0dmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbih2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg2LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjkwOlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTkxLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy05Ni1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzID0ge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtOTgtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJ2ZmlvLXBsYXRmb3JtXFxcIixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk5OlxcdC5pbml0XFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAwOlxcdC5yZWxlYXNlXFx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAxOlxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwMjpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwMzpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGxhdGZvcm1faW9jdGwsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDQ6XFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wbGF0Zm9ybV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDU6XFx0LnJlYWRcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fcmVhZCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNjpcXHQud3JpdGVcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDc6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwOC1cXHQuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTEzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZmaW9fcGxhdGZvcm1fZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE1OlxcdC5wcm9iZVxcdFxcdD0gdmZpb19wbGF0Zm9ybV9wcm9iZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjExNjpcXHQucmVtb3ZlXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3JlbW92ZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExNy1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyMi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHZmaW9fcGxhdGZvcm1fZHJpdmVyKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwOiNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTI5PXN0YXRpYyBERUZJTkVfTVVURVgoZHJpdmVyX2xvY2spO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjMxOnN0YXRpYyB2ZmlvX3BsYXRmb3JtX3Jlc2V0X2ZuX3QgdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQoY29uc3QgY2hhciAqY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKiptb2R1bGUpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzMte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3Jlc2V0X25vZGUgKml0ZXI7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzU6XFx0dmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IHJlc2V0X2ZuID0gTlVMTDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ5LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUwOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzItXFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICoqZXh0cmFfZGJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6OTI6c3RhdGljIGJvb2wgdmZpb19wbGF0Zm9ybV9hY3BpX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTAzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNDpzdGF0aWMgYm9vbCB2ZmlvX3BsYXRmb3JtX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA1LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDYtXFx0aWYgKFZGSU9fUExBVEZPUk1fSVNfQUNQSSh2ZGV2KSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMDc6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQodmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTExLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjExMjpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTMte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNC1cXHRpZiAoVkZJT19QTEFURk9STV9JU19BQ1BJKHZkZXYpKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjExNTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9hY3BpX2hhc19yZXNldCh2ZGV2KSA/IDAgOiAtRU5PRU5UO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTc6XFx0dmRldi1cXHUwMDNlb2ZfcmVzZXQgPSB2ZmlvX3BsYXRmb3JtX2xvb2t1cF9yZXNldCh2ZGV2LVxcdTAwM2Vjb21wYXQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTE4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dmRldi1cXHUwMDNlcmVzZXRfbW9kdWxlKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyMC1cXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwidmZpby1yZXNldDolc1xcXCIsIHZkZXYtXFx1MDAzZWNvbXBhdCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTIxOlxcdFxcdHZkZXYtXFx1MDAzZW9mX3Jlc2V0ID0gdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQodmRldi1cXHUwMDNlY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2dmRldi1cXHUwMDNlcmVzZXRfbW9kdWxlKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyNy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMjg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9wdXRfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyOS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMzYtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9yZWdpb25zX2luaXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xNDMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTQ0OlxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBremFsbG9jX29ianMoc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uLCBjbnQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQ1LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxOTE6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZWdpb25zX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjAyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDMtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKipleHRyYV9kYmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDYtXFx0XFx0ZGV2X2luZm8odmRldi1cXHUwMDNlZGV2aWNlLCBcXFwicmVzZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwNzpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9hY3BpX2NhbGxfcmVzZXQodmRldiwgZXh0cmFfZGJnKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDgtXFx0fSBlbHNlIGlmICh2ZGV2LVxcdTAwM2VvZl9yZXNldCkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE2LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIxNzp2b2lkIHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxOC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE5OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjIwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjIxLVxcdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjI0OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBcXHUwMDI2ZXh0cmFfZGJnKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjUtXFx0aWYgKFdBUk5fT04ocmV0IFxcdTAwMjZcXHUwMDI2IHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkKSkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjMxLVxcdHBtX3J1bnRpbWVfcHV0KHZkZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjMyOlxcdHZmaW9fcGxhdGZvcm1fcmVnaW9uc19jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIzMzpcXHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNC19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM1OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzYtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM3OmludCB2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzOC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM5OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQxLVxcdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQ0OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fcmVnaW9uc19pbml0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQ3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0ODpcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX2lycV9pbml0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI1NjpcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQodmRldiwgXFx1MDAyNmV4dHJhX2RiZyk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU3LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgdmRldi1cXHUwMDNlcmVzZXRfcmVxdWlyZWQpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2Ny1cXHRwbV9ydW50aW1lX3B1dCh2ZGV2LVxcdTAwM2VkZXZpY2UpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI2ODpcXHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2OS1lcnJfaXJxOlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MDpcXHR2ZmlvX3BsYXRmb3JtX3JlZ2lvbnNfY2xlYW51cCh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzEtXFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzItfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MzpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjc1OmludCB2ZmlvX3BsYXRmb3JtX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzgte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3OTpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI4MDpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5MC19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkzOmxvbmcgdmZpb19wbGF0Zm9ybV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTQtXFx0XFx0XFx0IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5NS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjk2OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjk3OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjk4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzExLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjMxMjpcXHRcXHRpZiAodmZpb19wbGF0Zm9ybV9oYXNfcmVzZXQodmRldikpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzEzLVxcdFxcdFxcdHZkZXYtXFx1MDAzZWZsYWdzIHw9IFZGSU9fREVWSUNFX0ZMQUdTX1JFU0VUO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzY1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM2NjpcXHRcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX3NldF9pcnFzX2lvY3RsKHZkZXYsIGhkci5mbGFncywgaGRyLmluZGV4LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM2Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBoZHIuc3RhcnQsIGhkci5jb3VudCwgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzMtXFx0fSBlbHNlIGlmIChjbWQgPT0gVkZJT19ERVZJQ0VfUkVTRVQpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzQ6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBOVUxMKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzUtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzc4LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzk6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9pb2N0bCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzgwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM4MTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWRfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zODItXFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ0MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NDE6c3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWQoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQyLVxcdFxcdFxcdCAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ0My17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQ0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQ1OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQ2LVxcdHVuc2lnbmVkIGludCBpbmRleCA9IFZGSU9fUExBVEZPUk1fT0ZGU0VUX1RPX0lOREVYKCpwcG9zKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ1NS1cXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NTY6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fcmVhZF9tbWlvKFxcdTAwMjZ2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy00NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnVmLCBjb3VudCwgb2ZmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ2Mi19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDYzOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fcmVhZCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY0LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ2NTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3dyaXRlX21taW8oc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY2LVxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyMy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1MjQ6c3NpemVfdCB2ZmlvX3BsYXRmb3JtX3dyaXRlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyNS1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTI2LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjc6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjg6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjktXFx0dW5zaWduZWQgaW50IGluZGV4ID0gVkZJT19QTEFURk9STV9PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTM4LVxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUzOTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV93cml0ZV9tbWlvKFxcdTAwMjZ2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnVmLCBjb3VudCwgb2ZmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0NS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTQ2OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fd3JpdGUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU2Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzA6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzE6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NzItXFx0dW5zaWduZWQgaW50IGluZGV4O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA0LVxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwNTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA2LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjExLX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MTI6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9tbWFwKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjE0OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9vZl9wcm9iZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjE1LVxcdFxcdFxcdCAgIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYzMC0gKlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYzMTogKiBJbiB0aGUgZmlyc3QgY2FzZSwgdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlIHdpbGwgcmV0dXJuIHNpbmNlXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMyLSAqIGFjcGlfZGlzYWJsZWQgaXMgMS4gRFQgdXNlciB3aWxsIG5vdCBzZWUgYW55IGtpbmQgb2YgbWVzc2FnZXMgZnJvbVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjQzLSAqL1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0NDppbnQgdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NDk6XFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlKHZkZXYsIGRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUwLVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjUxOlxcdFxcdHJldCA9IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUodmRldiwgZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NTItXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NTgtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjU5OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY2MC1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkKSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjctfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY2ODpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjktXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjcwOnZvaWQgdmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjcxLXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzI6XFx0dmZpb19wbGF0Zm9ybV9wdXRfcmVzZXQodmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjczLX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjc1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY3Njp2b2lkIF9fdmZpb19wbGF0Zm9ybV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZXNldF9ub2RlICpub2RlKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3Ny17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODEtfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4MjpFWFBPUlRfU1lNQk9MX0dQTChfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4My1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2ODQ6dm9pZCB2ZmlvX3BsYXRmb3JtX3VucmVnaXN0ZXJfcmVzZXQoY29uc3QgY2hhciAqY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4NTpcXHRcXHRcXHRcXHQgICAgdmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IGZuKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4Ni17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg3OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3Jlc2V0X25vZGUgKml0ZXIsICp0ZW1wO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY5OS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzAwOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fdW5yZWdpc3Rlcl9yZXNldCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAxLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTUtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTY6I2luY2x1ZGUgXFxcInZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE4OnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fbWFzayhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9pcnEgKmlycV9jdHgpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTkte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzI6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21hc2tfaGFuZGxlcih2b2lkICpvcGFxdWUsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMy17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzQ6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4ID0gb3BhcXVlO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjM2OlxcdHZmaW9fcGxhdGZvcm1fbWFzayhpcnFfY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNy1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTQwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjQxOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9zZXRfaXJxX21hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTQyLVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdGFydCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTU2LVxcdFxcdFxcdHJldHVybiB2ZmlvX3ZpcnFmZF9lbmFibGUoKHZvaWQgKikgXFx1MDAyNnZkZXYtXFx1MDAzZWlycXNbaW5kZXhdLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgdmZpb19wbGF0Zm9ybV9tYXNrX2hhbmRsZXIsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNTgtXFx0XFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBOVUxMLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNjUtXFx0aWYgKGZsYWdzIFxcdTAwMjYgVkZJT19JUlFfU0VUX0RBVEFfTk9ORSkge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjY2OlxcdFxcdHZmaW9fcGxhdGZvcm1fbWFzayhcXHUwMDI2dmRldi1cXHUwMDNlaXJxc1tpbmRleF0pO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTY3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzEtXFx0XFx0aWYgKG1hc2spXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NzI6XFx0XFx0XFx0dmZpb19wbGF0Zm9ybV9tYXNrKFxcdTAwMjZ2ZGV2LVxcdTAwM2VpcnFzW2luZGV4XSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzMtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzctXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6Nzg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTkxLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjkyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV91bm1hc2tfaGFuZGxlcih2b2lkICpvcGFxdWUsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05My17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTQ6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4ID0gb3BhcXVlO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTk1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjk2OlxcdHZmaW9fcGxhdGZvcm1fdW5tYXNrKGlycV9jdHgpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTk3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTAwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjEwMTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fc2V0X2lycV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTEwMi1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RhcnQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMTYtXFx0XFx0XFx0cmV0dXJuIHZmaW9fdmlycWZkX2VuYWJsZSgodm9pZCAqKSBcXHUwMDI2dmRldi1cXHUwMDNlaXJxc1tpbmRleF0sXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTE3OlxcdFxcdFxcdFxcdFxcdFxcdCAgdmZpb19wbGF0Zm9ybV91bm1hc2tfaGFuZGxlcixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMTgtXFx0XFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBOVUxMLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTI2LVxcdGlmIChmbGFncyBcXHUwMDI2IFZGSU9fSVJRX1NFVF9EQVRBX05PTkUpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMjc6XFx0XFx0dmZpb19wbGF0Zm9ybV91bm1hc2soXFx1MDAyNnZkZXYtXFx1MDAzZWlycXNbaW5kZXhdKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjEuNDE0ODk0Mjc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNjMwNDgzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPIFBsYXRmb3JtIERyaXZlciBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWRklPX1BMQVRGT1JNYCBpcyB0aGUgZHJpdmVyIGZvciBwbGF0Zm9ybSBkZXZpY2VzLiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lczogQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICpiZSogYm91bmQgKnRvKiBgdmZpby1wbGF0Zm9ybWAsIG9yIHBvdGVudGlhbGx5IGV2ZW4gYmUgZnV6emVkIHZpYSBpdD8gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgU3l6a2FsbGVyIGRvZXMgaW4gcmVsYXRpb24gdG8gVkZJTyAtIGRvZXMgdGhlIGtlcm5lbCBvciBTeXprYWxsZXIgaXRzZWxmIGFsbG93IGJpbmRpbmcgcGxhdGZvcm0gZGV2aWNlcyB0byB2ZmlvIGNoYXIgZGV2aWNlcz9cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgY29yZSBWRklPIG1lY2hhbmlzbS4gSG93IGRvZXMgVkZJTyB3b3JrIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWw/ICBXaGVuIGEgZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIGB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldmAgb3IgYHZmaW9fcmVnaXN0ZXJfZGV2aWNlX2NvbXBhdGAgY3JlYXRlcyBhIGAvZGV2L3ZmaW8vXHUwMDNjZ3JvdXBcdTAwM2VgIG9yIGAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWGAgZW50cnksIG9yIGFuIElPTU1VRkQgY2Rldi4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICphY3R1YWxseSogYmUgYm91bmQgdG8gdGhlIGB2ZmlvLXBsYXRmb3JtYCBkcml2ZXI/IEkgdGhpbmsgSSBoYXZlIHRoZSBhbnN3ZXI6IExpbnV4ICpkb2VzKiBhbGxvdyBpdCwgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvdmZpby1wbGF0Zm9ybS9iaW5kYCBvciBgZHJpdmVyX292ZXJyaWRlYCwgKnByb3ZpZGVkKiBhIHBsYXRmb3JtIGRldmljZSBpcyBwcmVzZW50LlxuXG5Ob3csIGRvIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYgZXhwb3NlIHBsYXRmb3JtIGRldmljZXM/IFllcywgQUNQSS9EVCBjcmVhdGUgcGxhdGZvcm0gZGV2aWNlcy5cblxuV2FpdCEgV2hhdCdzIHRoZSAqYWN0dWFsKiBjaGFuZ2UgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gTGV0J3MgZGlnIGluLiBJIHNlZSBzb21lIGNvZGUgdGhhdCB3YXMgYWRkZWQ6XG5cbmBgYGNcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuQEAgLTU5NSw2ICs1OTUsMTAgQEAgaW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWFcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcbiBcbiBcdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbmBgYFxuXG5UaGUga2V5IGhlcmUgaXMgYHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpYC4gVGhpcyBpcyBhICptZW1vcnkgcHJvdGVjdGlvbiogY2hhbmdlLCBzcGVjaWZpY2FsbHkgcHJldmVudGluZyByZWFkLW9ubHkgcmVnaW9ucyBmcm9tIGJlaW5nIG1hZGUgd3JpdGVhYmxlIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYC4gIEEgc2Vuc2libGUgc2VjdXJpdHkgYWRkaXRpb24hXG5cbk5vdyBJIG5lZWQgdG8gY2hlY2sgc2ltaWxhciBmaXhlcyBhY3Jvc3Mgb3RoZXIgVkZJTyBkcml2ZXJzLiBJJ2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdmZpby9gIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSlgIG9yIGp1c3QgYFZNX01BWVdSSVRFYCB0byBzZWUgaWYgdGhpcyBpcyBhIHN5c3RlbWljIGZpeC4gVGhpcyBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhpcyBpc24ndCBhbiBpc29sYXRlZCBpbmNpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NzQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjYuNzc3OTQ1MTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIwMjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWTV9NQVlXUklURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9NTY4PWludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTk5LVxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MDA6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoyNi44MjcxNTQ4MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMzMTIzNDgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqSHVudGluZyBmb3IgTWVtb3J5IFByb3RlY3Rpb24gVnVsbmVyYWJpbGl0aWVzIGluIHZmaW8gRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvdmZpb2AgZGlyZWN0b3J5LiBNeSBndXQgZmVlbGluZyB0ZWxscyBtZSB0aGVyZSBjb3VsZCBiZSBzb21lIGludGVyZXN0aW5nIHN0dWZmIGluIHRoZXJlLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGVzLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IG1lbW9yeSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMg4oCTIGBtcHJvdGVjdGAgYW5kIGZsYWdzIGxpa2UgYE1BWVdSSVRFYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIHVzZWQsIGFuZCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIHRoZXkncmUgdXNlZC4gQXJlIHRoZXkgYmVpbmcgYXBwbGllZCBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgaW5zdGFuY2VzIHdoZXJlIHRoZXkncmUgbWlzc2luZywgb3IgYmVpbmcgYnlwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZsYWdzIHRoYXQgY291bGQgbGVhZCB0byBwcml2aWxlZ2UgZXNjYWxhdGlvbj8gTGV0J3MgZ2V0IGNyYWNraW5nIGFuZCBzdGFydCBzZWFyY2hpbmcuIEknbGwgbmVlZCB0byB1c2Ugc29tZSByb2J1c3QgZ3JlcCBjb21tYW5kcyB0byBiZSB0aG9yb3VnaC4gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgd2hlcmUgdGhleSBhcmUgdXNlZCwgYW5kIGhvdyB0aGUgdmFsdWVzIGNoYW5nZS4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgaXMgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg1MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjI5LjE1ODM5MjgyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1ODgyNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BWVdSSVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM9Mjk4PXBmcnRfbG9nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9hY3BpL3Bmcl90ZWxlbWV0cnkuYy0zMDktXFx0LyogY2hhbmdpbmcgZnJvbSByZWFkIHRvIHdyaXRlIHdpdGggbXByb3RlY3QgaXMgbm90IGFsbG93ZWQgKi9cXG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jOjMxMDpcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jLTMxMS1cXG4tLVxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYz02MDQxPXN0YXRpYyBpbnQgYmluZGVyX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jLTYwNTgtXFx0fVxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo2MDU5OlxcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRDT1BZIHwgVk1fTUlYRURNQVAsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMtNjA2MC1cXG4tLVxcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYz00Nzg9c3RhdGljIGludCBiaW5kZXJfYWxsb2NfdGVzdF9tbWFwX2hhbmRsZXIoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvdGVzdHMvYmluZGVyX2FsbG9jX2t1bml0LmMtNDgyLVxcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYzo0ODM6XFx0dm1fZmxhZ3NfbW9kKHZtYSwgVk1fRE9OVENPUFkgfCBWTV9NSVhFRE1BUCwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYy00ODQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9MzY4PXN0YXRpYyBpbnQgYW1kZ3B1X2dlbV9vYmplY3RfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMzc4LVxcdCAqIGZvciBkZWJ1Z2dlciBhY2Nlc3MgdG8gaW52aXNpYmxlIFZSQU0uIFNob3VsZCBoYXZlIHVzZWQgTUFQX1NIQVJFRFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzozNzk6XFx0ICogaW5zdGVhZC4gQ2xlYXJpbmcgVk1fTUFZV1JJVEUgcHJldmVudHMgdGhlIG1hcHBpbmcgZnJvbSBldmVyXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTM4MC1cXHQgKiBiZWNvbWluZyB3cml0YWJsZSBhbmQgbWFrZXMgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpIGZhbHNlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTM4My1cXHQgICAgISh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fQUNDRVNTX0ZMQUdTKSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6Mzg0OlxcdFxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTk5MD1pOTE1X2dlbV9vYmplY3RfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMDAyLVxcdFxcdH1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjEwMDM6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMDA0LVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZGV2aWNlLmM9NDQ1PWludCBwYW50aG9yX2RldmljZV9tbWFwX2lvKHN0cnVjdCBwYW50aG9yX2RldmljZSAqcHRkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTYtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYzo0NTc6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jPTczMT1zdGF0aWMgaW50IHZjNF9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDAtXFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYzo3NDE6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDItXFx0fVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmM9MTcwMj1zdGF0aWMgaW50IHhlX29hX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmMtMTcyNi1cXHR2bV9mbGFnc19tb2Qodm1hLCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAgfCBWTV9ET05UQ09QWSxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfb2EuYzoxNzI3OlxcdFxcdCAgICAgVk1fTUFZV1JJVEUgfCBWTV9NQVlFWEVDKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfb2EuYy0xNzI4LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYz03Mjk9c3RhdGljIHZtX2ZhdWx0X3QgcmRtYV91bWFwX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03MzgtXFx0LyogUmVhZCBvbmx5IHBhZ2VzIGNhbiBqdXN0IHVzZSB0aGUgc3lzdGVtIHplcm8gcGFnZS4gKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jOjczOTpcXHRpZiAoISh2bWYtXFx1MDAzZXZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fV1JJVEUgfCBWTV9NQVlXUklURSkpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03NDAtXFx0XFx0dm1mLVxcdTAwM2VwYWdlID0gWkVST19QQUdFKHZtZi1cXHUwMDNlYWRkcmVzcyk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jPTMxOD1zdGF0aWMgaW50IGhmaTFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTM4OS1cXHRcXHRtZW1sZW4gPSBQQUdFX1NJWkU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzozOTA6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gflZNX01BWVdSSVRFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtMzkxLVxcdFxcdGZsYWdzIHw9IFZNX0RPTlRDT1BZIHwgVk1fRE9OVEVYUEFORDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNDI0LVxcdFxcdH1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jOjQyNTpcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTQyNi1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MTMtXFx0XFx0bWVtZG1hID0gdWN0eHQtXFx1MDAzZXJjdmhkcnF0YWlsYWRkcl9kbWE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzo1MTQ6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gflZNX01BWVdSSVRFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MzEtXFx0XFx0ZmxhZ3MgfD0gVk1fSU8gfCBWTV9ET05URVhQQU5EO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6NTMyOlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5WTV9NQVlXUklURTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTUzMy1cXHRcXHR2bWYgPSAxO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTI0NTk9c3RhdGljIGludCBtbHg1X2liX21tYXBfY2xvY2tfaW5mb19wYWdlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzEtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjQ3MjpcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjQ3My1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0yNzQ2PXN0YXRpYyBpbnQgbWx4NV9pYl9tbWFwKHN0cnVjdCBpYl91Y29udGV4dCAqaWJjb250ZXh0LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yNzcyLVxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjI3NzM6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI3NzQtXFxuLS1cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM9ODk9c3RhdGljIGludCBvcGVuX2RpY2VfbW1hcF9wcmVwYXJlKHN0cnVjdCB2bV9hcmVhX2Rlc2MgKmRlc2MpXFxuLS1cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmMtOTgtXFx0XFx0LyogRW5zdXJlIHVzZXJzcGFjZSBjYW5ub3QgYWNxdWlyZSBWTV9XUklURSBsYXRlci4gKi9cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM6OTk6XFx0XFx0dm1hX2Rlc2NfY2xlYXJfZmxhZ3MoZGVzYywgVk1BX01BWVdSSVRFX0JJVCk7XFxuZHJpdmVycy9taXNjL29wZW4tZGljZS5jLTEwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYz0xMTA9aW50ZWxfcG10X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvcG10L2NsYXNzLmMtMTIxLVxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3BtdC9jbGFzcy5jOjEyMjpcXHRpZiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9XUklURSB8IFZNX01BWVdSSVRFKSlcXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjMtXFx0XFx0cmV0dXJuIC1FUk9GUztcXG4tLVxcbmRyaXZlcnMvc2J1cy9jaGFyL29yYWRheC5jPTM3MT1zdGF0aWMgaW50IGRheF9kZXZtYXAoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmMtMzkwLVxcdFxcdHJldHVybiAtRVBFUk07XFxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM6MzkxOlxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvc2J1cy9jaGFyL29yYWRheC5jLTM5Mi1cXG4tLVxcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmM9MTI3Nj1zdGF0aWMgaW50IG1vbl9iaW5fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jLTEyODMtXFxuZHJpdmVycy91c2IvbW9uL21vbl9iaW4uYzoxMjg0OlxcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUCwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmMtMTI4NS1cXHR2bWEtXFx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU2OD1pbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU5OS1cXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjAwOlxcdFxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjkuOTg0MjgxNDk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0OTY4MzA0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgdmZpb19wbGF0Zm9ybV9tbWFwYCBhbmQgaXRzIEludGVyYWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGB2ZmlvX3BsYXRmb3JtX21tYXBgIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGVjaWZpY2FsbHkgdGFraW5nIGNhcmUgb2YgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyB3aGVuIGRlYWxpbmcgd2l0aCByZWdpb25zIHRoYXQgYXJlLCB5b3Uga25vdywgcmVhZC1vbmx5LiBUaGF0J3MgYSBjcnVjaWFsIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgbWVhc3VyZSwgZW5zdXJpbmcgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGFsbG93IHdyaXRlcyB0byBtZW1vcnkgd2Ugc2hvdWxkbid0LiBNYWtlcyBzZW5zZS4gQnV0IEkgbmVlZCB0byBzZWUgaG93IGB2ZmlvLXBjaWAgaW50ZXJhY3RzIHdpdGggdGhpcyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IG1lY2hhbmlzbXMgYW5kIGRhdGEgZmxvd3MgdGhlcmUuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk0OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjMzLjQ4MTExNDc4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNTk3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTE4OD1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmX3FtX2luaXQoc3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMjE3LVxcdFxcdCAqIHdlIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIGNvbnRyb2wgc3BhY2UgZnJvbVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTIxODpcXHRcXHQgKiBHdWVzdChQbGVhc2Ugc2VlIG1tYXAvaW9jdGwvcmVhZC93cml0ZSBvdmVycmlkZSBmdW5jdGlvbnMpLlxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTIxOS1cXHRcXHQgKlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xMjk2PXN0YXRpYyBpbnQgaGlzaV9hY2NfcGNpX3J3X2FjY2Vzc19jaGVjayhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMxOC1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjEzMTk6c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMyMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzQwLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTM0MTpcXHRyZXR1cm4gdmZpb19wY2lfY29yZV9tbWFwKGNvcmVfdmRldiwgdm1hKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEzNDItfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5MS1cXHQud3JpdGUgPSBoaXNpX2FjY192ZmlvX3BjaV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1OTI6XFx0Lm1tYXAgPSBoaXNpX2FjY192ZmlvX3BjaV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5My1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTYwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MTItXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MTM6XFx0Lm1tYXAgPSB2ZmlvX3BjaV9jb3JlX21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjE0LVxcdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzk2LVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzk3OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5OC1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTQ1Mj1zdGF0aWMgdm1fZmF1bHRfdCBudmdyYWNlX2dwdV92ZmlvX3BjaV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTQ1Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0NTc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBudmdyYWNlX2dwdV92ZmlvX3BjaV9tbWFwX29wcyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NTgtXFx0LmZhdWx0ID0gbnZncmFjZV9ncHVfdmZpb19wY2lfZmF1bHQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NjU9c3RydWN0IG52Z3JhY2VfZ3B1X3BjaV9jb3JlX2RldmljZSAqdm1hX3RvX252ZGV2KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDY3LVxcdC8qIENoZWNrIGlmIHRoaXMgVk1BIGJlbG9uZ3MgdG8gdXMgKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0Njg6XFx0aWYgKHZtYS1cXHUwMDNldm1fb3BzICE9IFxcdTAwMjZudmdyYWNlX2dwdV92ZmlvX3BjaV9tbWFwX29wcylcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NjktXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzMtXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDc0OnN0YXRpYyBpbnQgbnZncmFjZV9ncHVfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzUtXFx0XFx0XFx0ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDg3LVxcdGlmICghbWVtcmVnaW9uKVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ4ODpcXHRcXHRyZXR1cm4gdmZpb19wY2lfY29yZV9tbWFwKGNvcmVfdmRldiwgdm1hKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODktXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDkwLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDkxOlxcdCAqIFJlcXVlc3QgdG8gbW1hcCB0aGUgQkFSLiBNYXAgdG8gdGhlIENQVSBhY2Nlc3NpYmxlIG1lbW9yeSBvbiB0aGVcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00OTItXFx0ICogR1BVIHVzaW5nIHRoZSBtZW1vcnkgaW5mb3JtYXRpb24gZ2F0aGVyZWQgZnJvbSB0aGUgc3lzdGVtIEFDUElcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTUyNi1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1Mjc6XFx0dm1hLVxcdTAwM2V2bV9vcHMgPSBcXHUwMDI2bnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHM7XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTI4LVxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbnZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz01MzM9c3RhdGljIGludCBudmdyYWNlX2dwdV9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MzktXFx0XFx0XFx0ICAgICBjb3JlX2RldmljZS52ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1NDA6XFx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm9fY2FwX3NwYXJzZV9tbWFwICpzcGFyc2U7XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTQxLVxcdHN0cnVjdCBtZW1fcmVnaW9uICptZW1yZWdpb247XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz02NzQ9bnZncmFjZV9ncHVfd3JpdGVfY29uZmlnX2VtdShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTcwOC0gKiBhcyB2ZmlvIGRvZXMgbm90IHJlcXVpcmUgdGhlIHVzZXJzcGFjZSBkcml2ZXIgdG8gb25seSBwZXJmb3JtIGFjY2Vzc2VzIHRocm91Z2hcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo3MDk6ICogbW1hcHMgb2YgdGhlIHZmaW8tcGNpIEJBUiByZWdpb25zIGFuZCBzdWNoIGFjY2Vzc2VzIHNob3VsZCBiZSBzdXBwb3J0ZWQgdXNpbmdcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy03MTAtICogdmZpb19kZXZpY2Vfb3BzIHJlYWQvd3JpdGUgaW1wbGVtZW50YXRpb25zLlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3NC1cXHQud3JpdGVcXHRcXHQ9IG52Z3JhY2VfZ3B1X3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwNzU6XFx0Lm1tYXBcXHRcXHQ9IG52Z3JhY2VfZ3B1X21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3Ni1cXHQucmVxdWVzdFxcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDk5LVxcdC53cml0ZVxcdFxcdD0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMTAwOlxcdC5tbWFwXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTEwMS1cXHQucmVxdWVzdFxcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcGRzX3ZmaW9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0yMDEtXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjIwMjpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMy1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz02MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcWF0X3ZmX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjEzLVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxNDpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjE1LVxcdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTItLypcXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6MzogKiBWRklPIFBDSSBtbWFwL21tYXBfZmF1bHQgdHJhY2Vwb2ludHNcXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtNC0gKlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTE2LVxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaDoxNzpUUkFDRV9FVkVOVCh2ZmlvX3BjaV9udmdwdV9tbWFwX2ZhdWx0LFxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC0xOC1cXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtMzktXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjQwOlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTQxLVxcdFRQX1BST1RPKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBsb25nIGhwYSwgdW5zaWduZWQgbG9uZyB1YSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02NC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6NjU6VFJBQ0VfRVZFTlQodmZpb19wY2lfbnB1Ml9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02Ni1cXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTktXFx0LndyaXRlXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNjA6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTYxLVxcdC5yZXF1ZXN0XFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNjQ9c3RhdGljIHVuc2lnbmVkIGludCB2ZmlvX3BjaV9zZXRfZGVjb2RlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBib29sIHNpbmdsZV92Z2EpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTQtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTk1OnN0YXRpYyB2b2lkIHZmaW9fcGNpX3Byb2JlX21tYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTYte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjA2LVxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMDc6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwOC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDktXFx0XFx0aWYgKCEocmVzLVxcdTAwM2VmbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMTA6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxMS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxNy1cXHRcXHRpZiAoIXJlc291cmNlX3NpemUocmVzKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMTg6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMjAtXFx0XFx0aWYgKHJlc291cmNlX3NpemUocmVzKSBcXHUwMDNlPSBQQUdFX1NJWkUpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMjE6XFx0XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIyMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIzMi1cXHRcXHRcXHRpZiAoZHVtbXlfcmVzID09IE5VTEwpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjMzOlxcdFxcdFxcdFxcdGdvdG8gbm9fbW1hcDtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMzQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDEtXFx0XFx0XFx0XFx0a2ZyZWUoZHVtbXlfcmVzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDI6XFx0XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0My1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDYtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnZkZXYtXFx1MDAzZWR1bW15X3Jlc291cmNlc19saXN0KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDc6XFx0XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0OC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1Ny1cXHRcXHQgKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTg6bm9fbW1hcDpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTk6XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSBmYWxzZTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNjAtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODM5PXZvaWQgdmZpb19wY2lfY29yZV9maW5pc2hfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04NDAte1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjg0MTpcXHR2ZmlvX3BjaV9wcm9iZV9tbWFwcyh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04NDItI2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTk4Nz1zdGF0aWMgaW50IHZmaW9fcGNpX2Zvcl9lYWNoX3Nsb3Rfb3JfYnVzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMDAxOnN0YXRpYyBpbnQgbXNpeF9tbWFwcGFibGVfY2FwKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMDAyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTEyNz1pbnQgdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1Mi1cXHRcXHRcXHQgICAgICBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTE1MzpcXHRcXHRpZiAodmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2luZm8tXFx1MDAzZWluZGV4XSkge1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTQtXFx0XFx0XFx0aW5mby1cXHUwMDNlZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVA7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1NS1cXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlaW5kZXggPT0gdmRldi1cXHUwMDNlbXNpeF9iYXIpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMTU2OlxcdFxcdFxcdFxcdHJldCA9IG1zaXhfbW1hcHBhYmxlX2NhcCh2ZGV2LCBjYXBzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMTU3LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNzc1PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX3ZtZl9pbnNlcnRfcGZuKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNzc2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE3Nzc6c3RhdGljIHZtX2ZhdWx0X3QgdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE3NzgtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgwMS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODAyOnN0YXRpYyB2bV9mYXVsdF90IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODAzLXtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODA0OlxcdHJldHVybiB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQodm1mLCAwKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA1LX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2ZmlvX3BjaV9tbWFwX29wcyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODA4OlxcdC5mYXVsdCA9IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA5LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MTA6XFx0Lmh1Z2VfZmF1bHQgPSB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgxMS0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MTMtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxNDppbnQgdmZpb19wY2lfY29yZV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODE1LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MzQtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgzNTpcXHRcXHRpZiAocmVnaW9uLVxcdTAwM2VvcHMgXFx1MDAyNlxcdTAwMjYgcmVnaW9uLVxcdTAwM2VvcHMtXFx1MDAzZW1tYXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODM2LVxcdFxcdCAgICAocmVnaW9uLVxcdTAwM2VmbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODM3OlxcdFxcdFxcdHJldHVybiByZWdpb24tXFx1MDAzZW9wcy1cXHUwMDNlbW1hcCh2ZGV2LCByZWdpb24sIHZtYSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgzOC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4NDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTg0MjpcXHRpZiAoIXZkZXYtXFx1MDAzZWJhcl9tbWFwX3N1cHBvcnRlZFtpbmRleF0pXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODctXFx0XFx0XFx0Vk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODg4OlxcdHZtYS1cXHUwMDNldm1fb3BzID0gXFx1MDAyNnZmaW9fcGNpX21tYXBfb3BzO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODkxLX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODkyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfbW1hcCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg5My1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTI5OD1zdGF0aWMgaW50IHZpcnRpb3ZmX3NldF9ub3RpZnlfYWRkcihzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNC1cXHQgKiBTZXR1cCB0aGUgQkFSIHdoZXJlIHRoZSAnbm90aWZ5JyBleGlzdHMgdG8gYmUgdXNlZCBieSB2ZmlvIGFzIHdlbGxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYzozMDU6XFx0ICogVGhpcyB3aWxsIGxldCB1cyBtbWFwIGl0IG9ubHkgb25jZSBhbmQgdXNlIGl0IHdoZW4gbmVlZGVkLlxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTMxNj1pbnQgdmlydGlvdmZfb3Blbl9sZWdhY3lfaW8oc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjItXFx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIzOlxcdCAqIGFuZCB3aWxsIGNsb3NlIGFsbCB0aGUgcHJldmlvdXMgbW1hcHMsIHNvIGl0IHNlZW1zIHRoYXQgdGhlXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzI0LVxcdCAqIHZhbGlkIGxpZmUgY3ljbGUgZm9yIHRoZSAnbm90aWZ5JyBhZGRyIGlzIHBlciBvcGVuL2Nsb3NlLlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05NC1cXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5NTpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTYtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX3RyYW5fbG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNi1cXHQud3JpdGUgPSB2aXJ0aW92Zl9wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE3OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTgtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzgtXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTM5OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xNDAtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMyLVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTMzOlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUzNC1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MzMuNTI4MzgyNjc2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNjUzMzEyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBQbGF0Zm9ybSBEZXZpY2UgUmVnaW9uIFZ1bG5lcmFiaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGB2ZmlvX3BsYXRmb3JtX21tYXBgIHdpdGhpbiBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBFc3NlbnRpYWxseSwgd2hlbiBhIHVzZXJzcGFjZSBwcm9ncmFtIG1tYXAncyBhIFZGSU8gcGxhdGZvcm0gZGV2aWNlIHJlZ2lvbiwgdGhlIGNvZGUgY2hlY2tzIGlmIGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGlzICpub3QqIHByZXNlbnQgaW4gdGhlIHJlZ2lvbiBmbGFncy4gSWYgaXQgaXNuJ3QsIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAgZ2V0cyBjYWxsZWQsIHdoaWNoIHNvdW5kcyBsaWtlIGl0J3MgaW50ZW50aW9uYWxseSBwcmV2ZW50aW5nIGBtcHJvdGVjdChQUk9UX1dSSVRFKWAgZnJvbSBtYWtpbmcgYSByZWFkLW9ubHkgbWFwcGluZyB3cml0YWJsZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldCwgYW5kIGlzIGl0IGV2ZW4gcmVhY2hhYmxlP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIElzIHRoaXMgZXZlbiBhIHRhcmdldD9cblxuSXQncyBrZXJuZWwgY29kZSwgc28gbm8uXG5cbklzIHRoaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBUaGlzIHNlZW1zIGxpa2UgdGhlIGltcG9ydGFudCBwb2ludC4gIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGlzIGlzbid0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIHRoZSBsaWtlLCB3aGljaCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBvciBjYXJkIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBIYW5nIG9uLCBpcyBgVkZJT19QTEFURk9STWAgb25lIG9mICp0aG9zZSo/IE5vLCB3YWl0ISBWRklPIHBsYXRmb3JtIGlzIGEgZ2VuZXJpYyBrZXJuZWwgZHJpdmVyIGZyYW1ld29yayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbm90IHNvbWUgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBvciBHUFUuIFNvIHRoYXQncyBnb29kLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGNvbmZpZ3VyYXRpb25zPyBMZXQncyBjaGVjayBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgOiBJdCBsb29rcyBsaWtlIGl0J3MgZW5hYmxlZCBpZiB3ZSBoYXZlIEFSTSwgQVJNNjQsIG9yIHRoZSBjb21waWxlIHRlc3QuICBJdCBhbHNvIHNlZW1zIHRvIGRlcGVuZCBvbiBgVkZJT19WSVJRRkRgLiAgVGhlbiwgbGV0J3MgYWxzbyBjaGVjayBgZHJpdmVycy92ZmlvL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk4NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzozNy42OTM3MTcxMzFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgVkZJT1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gTm9uLVByaXZpbGVnZWQgdXNlcnNwYWNlIGRyaXZlciBmcmFtZXdvcmtcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgSU9NTVVfQVBJXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIElPTU1VRkQgfHwgIUlPTU1VRkRcXG4gICA2OlxcdFxcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXFxuICAgNzpcXHRcXHRzZWxlY3QgVkZJT19HUk9VUCBpZiBTUEFQUl9UQ0VfSU9NTVUgfHwgSU9NTVVGRD1uXFxuICAgODpcXHRcXHRzZWxlY3QgVkZJT19ERVZJQ0VfQ0RFViBpZiAhVkZJT19HUk9VUFxcbiAgIDk6XFx0XFx0c2VsZWN0IFZGSU9fQ09OVEFJTkVSIGlmIElPTU1VRkQ9blxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBWRklPIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBzZWN1cmUgdXNlcnNwYWNlIGRldmljZSBkcml2ZXJzLlxcbiAgMTI6XFx0XFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8ucnN0IGZvciBtb3JlIGRldGFpbHMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0aWYgVkZJT1xcbiAgMTc6XFx0Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNkZXYgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElPTU1VRkQgXFx1MDAyNlxcdTAwMjYgIVNQQVBSX1RDRV9JT01NVVxcbiAgMjA6XFx0XFx0ZGVmYXVsdCAhVkZJT19HUk9VUFxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBUaGUgVkZJTyBkZXZpY2UgY2RldiBpcyBhbm90aGVyIHdheSBmb3IgdXNlcnNwYWNlIHRvIGdldCBkZXZpY2VcXG4gIDIzOlxcdFxcdCAgYWNjZXNzLiBVc2Vyc3BhY2UgZ2V0cyBkZXZpY2UgZmQgYnkgb3BlbmluZyBkZXZpY2UgY2RldiB1bmRlclxcbiAgMjQ6XFx0XFx0ICAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWCwgYW5kIHRoZW4gYmluZCB0aGUgZGV2aWNlIGZkIHdpdGggYW4gaW9tbXVmZFxcbiAgMjU6XFx0XFx0ICB0byBzZXQgdXAgc2VjdXJlIERNQSBjb250ZXh0IGZvciBkZXZpY2UgYWNjZXNzLiAgVGhpcyBpbnRlcmZhY2UgZG9lc1xcbiAgMjY6XFx0XFx0ICBub3Qgc3VwcG9ydCBub2lvbW11LlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBWRklPX0dST1VQXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBncm91cCAvZGV2L3ZmaW8vJGdyb3VwX2lkXFxcIlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgICBWRklPIGdyb3VwIHN1cHBvcnQgcHJvdmlkZXMgdGhlIHRyYWRpdGlvbmFsIG1vZGVsIGZvciBhY2Nlc3NpbmdcXG4gIDM1OlxcdFxcdCAgIGRldmljZXMgdGhyb3VnaCBWRklPIGFuZCBpcyB1c2VkIGJ5IHRoZSBtYWpvcml0eSBvZiB1c2Vyc3BhY2VcXG4gIDM2OlxcdFxcdCAgIGFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtYWtpbmcgdXNlIG9mIFZGSU8uXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcbiAgNDI6XFx0XFx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFxcdTAwMjZcXHUwMDI2IChYODYgfHwgUzM5MCB8fCBBUk0gfHwgQVJNNjQpXFxuICA0MzpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG4gIDQ0OlxcdFxcdGRlZmF1bHQgeVxcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBUaGUgVkZJTyBjb250YWluZXIgaXMgdGhlIGNsYXNzaWMgaW50ZXJmYWNlIHRvIFZGSU8gZm9yIGVzdGFibGlzaGluZ1xcbiAgNDc6XFx0XFx0ICBJT01NVSBtYXBwaW5ncy4gSWYgTiBpcyBzZWxlY3RlZCBoZXJlIHRoZW4gSU9NTVVGRCBtdXN0IGJlIHVzZWQgdG9cXG4gIDQ4OlxcdFxcdCAgbWFuYWdlIHRoZSBtYXBwaW5ncy5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBVbmxlc3MgdGVzdGluZyBJT01NVUZEIHNheSBZIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjM3LjY5MzgxNjYyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE4Mjc0NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyBgZHJpdmVycy92ZmlvL0tjb25maWdgOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5Pa2F5LCB0aW1lIHRvIHRha2UgYSBkZWVwZXIgZGl2ZS4gSSd2ZSBmaW5pc2hlZCB3aXRoIHRoYXQgaW5pdGlhbCBzZWN0aW9uLCBzbyBteSBhdHRlbnRpb24gbm93IHR1cm5zIHRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbCBjb25mbGljdHMsIG9yIG5ldyBmZWF0dXJlcyB0aGF0IGhhdmUgZW1lcmdlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbmZpZyBvcHRpb25zLCB0aGVpciByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgY29tcG9uZW50cywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgYXJjaGl0ZWN0dXJhbCBzdXBwb3J0LiBJJ2xsIGxpa2VseSBtZW50YWxseSBjYXRlZ29yaXplIHRoZW0gYXMgSSBnbzogY29yZSBWRklPIGZlYXR1cmVzLCBkZXZpY2Utc3BlY2lmaWMgb3B0aW9ucywgc2VjdXJpdHktcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBleHBlcmltZW50YWwgb3IgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudGx5IGFkZGVkIG9wdGlvbnMsIGFzIHRoZXNlIG9mdGVuIHJlcXVpcmUgY2FyZWZ1bCByZXZpZXcuIEFueSBhcmVhcyB0aGF0IGxvb2sgY29tcGxleCBvciBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyB3aWxsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBhbmQgZG9jdW1lbnRhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgdGhlIHJvYnVzdG5lc3MsIHNlY3VyaXR5LCBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhlIFZGSU8gc3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCwgb3IgaW4gdGhpcyBjYXNlLCB0aGUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLCBhcmUgb2Z0ZW4gaW4gdGhlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzo0MC4yMTIwOTQzMjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTE6XFx0XFxuICA1MjpcXHRpZiBWRklPX0NPTlRBSU5FUlxcbiAgNTM6XFx0Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG4gIDU0OlxcdFxcdHRyaXN0YXRlXFxuICA1NTpcXHRcXHRkZWZhdWx0IG5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXFxuICA1ODpcXHRcXHR0cmlzdGF0ZVxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBTUEFQUl9UQ0VfSU9NTVVcXG4gIDYwOlxcdFxcdGRlZmF1bHQgVkZJT1xcbiAgNjE6XFx0ZW5kaWZcXG4gIDYyOlxcdFxcbiAgNjM6XFx0Y29uZmlnIFZGSU9fTk9JT01NVVxcbiAgNjQ6XFx0XFx0Ym9vbCBcXFwiVkZJTyBOby1JT01NVSBzdXBwb3J0XFxcIlxcbiAgNjU6XFx0XFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXFxuICA2NjpcXHRcXHRoZWxwXFxuICA2NzpcXHRcXHQgIFZGSU8gaXMgYnVpbHQgb24gdGhlIGFiaWxpdHkgdG8gaXNvbGF0ZSBkZXZpY2VzIHVzaW5nIHRoZSBJT01NVS5cXG4gIDY4OlxcdFxcdCAgT25seSB3aXRoIGFuIElPTU1VIGNhbiB1c2Vyc3BhY2UgYWNjZXNzIHRvIERNQSBjYXBhYmxlIGRldmljZXMgYmVcXG4gIDY5OlxcdFxcdCAgY29uc2lkZXJlZCBzZWN1cmUuICBWRklPIE5vLUlPTU1VIG1vZGUgZW5hYmxlcyBJT01NVSBncm91cHMgZm9yXFxuICA3MDpcXHRcXHQgIGRldmljZXMgd2l0aG91dCBJT01NVSBiYWNraW5nIGZvciB0aGUgcHVycG9zZSBvZiByZS11c2luZyB0aGUgVkZJT1xcbiAgNzE6XFx0XFx0ICBpbmZyYXN0cnVjdHVyZSBpbiBhIG5vbi1zZWN1cmUgbW9kZS4gIFVzZSBvZiB0aGlzIG1vZGUgd2lsbCByZXN1bHRcXG4gIDcyOlxcdFxcdCAgaW4gYW4gdW5zdXBwb3J0YWJsZSBrZXJuZWwgYW5kIHdpbGwgdGhlcmVmb3JlIHRhaW50IHRoZSBrZXJuZWwuXFxuICA3MzpcXHRcXHQgIERldmljZSBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMgaXMgYWxzbyBub3QgcG9zc2libGUgd2l0aFxcbiAgNzQ6XFx0XFx0ICB0aGlzIG1vZGUgc2luY2UgdGhlcmUgaXMgbm8gSU9NTVUgdG8gcHJvdmlkZSBETUEgdHJhbnNsYXRpb24uXFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIFZGSU9fVklSUUZEXFxuICA3OTpcXHRcXHRib29sXFxuICA4MDpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgODE6XFx0XFx0ZGVmYXVsdCBuXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBWRklPX0RFQlVHRlNcXG4gIDg0OlxcdFxcdGJvb2wgXFxcIkV4cG9ydCBWRklPIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiAgODY6XFx0XFx0aGVscFxcbiAgODc6XFx0XFx0ICBBbGxvd3MgZXhwb3N1cmUgb2YgVkZJTyBkZXZpY2UgaW50ZXJuYWxzLiBUaGlzIG9wdGlvbiBlbmFibGVzXFxuICA4ODpcXHRcXHQgIHRoZSB1c2Ugb2YgZGVidWdmcyBieSBWRklPIGRyaXZlcnMgYXMgcmVxdWlyZWQuIFRoZSBkZXZpY2UgY2FuXFxuICA4OTpcXHRcXHQgIGNhdXNlIHRoZSBWRklPIGNvZGUgY3JlYXRlIGEgdG9wLWxldmVsIGRlYnVnL3ZmaW8gZGlyZWN0b3J5XFxuICA5MDpcXHRcXHQgIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYW5kIHRoZW4gcG9wdWxhdGUgYSBzdWJkaXJlY3Rvcnkgd2l0aFxcbiAgOTE6XFx0XFx0ICBlbnRyaWVzIGFzIHJlcXVpcmVkLlxcbiAgOTI6XFx0XFxuICA5MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ1xcXCJcXG4gIDk0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdcXFwiXFxuICA5NTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9tZGV2L0tjb25maWdcXFwiXFxuICA5NjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1xcXCJcXG4gIDk3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXFxcIlxcbiAgOTg6XFx0ZW5kaWZcXG4gIDk5OlxcdFxcbiAxMDA6XFx0c291cmNlIFxcXCJ2aXJ0L2xpYi9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzo0MC4yMTIxODU4NTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyMzg1NTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIGFuZCBWRklPX1BMQVRGT1JNIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgYFZGSU9gIGFuZCBgVkZJT19QTEFURk9STWAuIEkgc2VlIHRoYXQgYENPTVBJTEVfVEVTVGAgaXMgaW52b2x2ZWQgb24gYW1kNjQsIHdoaWNoIGlzIGludGVyZXN0aW5nIHNpbmNlIGl0IHR5cGljYWxseSB0YXJnZXRzIEFSTSBhcmNoaXRlY3R1cmVzLiBMZXQncyBzdGFydCBieSB2ZXJpZnlpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIEkgY2FuIGJ1aWxkIGBWRklPX1BMQVRGT1JNYCBvbiBhbWQ2NCwgZ2l2ZW4gdGhhdCBgVkZJT2AsIGBWRklPX1BMQVRGT1JNYCwgYW5kIGBDT01QSUxFX1RFU1RgIGFyZSBlbmFibGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBzZXQgdXAgY29ycmVjdGx5LlxuXG5IYW5nIG9uLCBJIHJlbWVtYmVyIGBWRklPX1BMQVRGT1JNX0JBU0VgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BMQVRGT1JNYC4gU28sIEkgc2hvdWxkIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgVkZJT19QTEFURk9STWAsIGBDT01QSUxFX1RFU1RgLCBhbmQgb2YgY291cnNlLCBgVkZJT2AuIExldCdzIGNvbmZpcm0gdGhvc2UgYXJlIGFsbCBpbiBvcmRlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdgIGZpbGUganVzdCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAuIEJldHRlciB0byBiZSBzYWZlIHRoYW4gc29ycnkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjEzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NDMuNDM2MDQzOThaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGlmIFZGSU9fUExBVEZPUk1cXG4gICAzOlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0NBTFhFREFYR01BQ19SRVNFVFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgY2FseGVkYSB4Z21hYyByZXNldCAoREVQUkVDQVRFRClcXFwiXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQ2FseGVkYSB4Z21hY1xcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0FNRFhHQkVfUkVTRVRcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIEFNRCBYR0JFIHJlc2V0IChERVBSRUNBVEVEKVxcXCJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRW5hYmxlcyB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIgdG8gaGFuZGxlIHJlc2V0IGZvciBBTUQgWEdCRVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVFxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQnJvYWRjb20gRmxleFJNIHJlc2V0IChERVBSRUNBVEVEKVxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9CQ01fSVBST0MgfHwgQ09NUElMRV9URVNUXFxuICAyMDpcXHRcXHRkZWZhdWx0IEFSQ0hfQkNNX0lQUk9DXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQnJvYWRjb20gRmxleFJNXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDI1OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjQzLjQzNjEwOTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MDAxMTk4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBWRklPIFBsYXRmb3JtIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgaXMgb24gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uLiBJJ20gaW52ZXN0aWdhdGluZyBhIHNwZWNpZmljIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AgZmlsZS4gVGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5LCBhZGRyZXNzZXMgaG93IHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyAoVkZJTykgcGxhdGZvcm0gZHJpdmVyIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgKGBtbWFwYCkgb2YgZGV2aWNlIHJlZ2lvbnMuXG5cbkVzc2VudGlhbGx5LCBJIHNlZSB0aGF0IGB2ZmlvX3BsYXRmb3JtX21tYXBgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGhhbmRsaW5nIGBtbWFwKClgIGNhbGxzIG1hZGUgYnkgdXNlcnNwYWNlIHByb2Nlc3NlcyB0aGF0IGhhdmUgZmlsZSBkZXNjcmlwdG9ycyBmb3IgVkZJTyBwbGF0Zm9ybSBkZXZpY2VzLiBUaGlzIGZ1bmN0aW9uIHRoZW4gaW50ZXJhY3RzIHdpdGggdGhlIFZGSU8gY29yZS4gTm93LCB0aGUgY3JpdGljYWwgY2hhbmdlOiB0aGUgY29kZSBub3cgKmNsZWFycyogdGhlIGBWTV9NQVlXUklURWAgZmxhZyBvbiBhIGB2bWFgICh2aXJ0dWFsIG1lbW9yeSBhcmVhKSBpZiB0aGUgbWFwcGVkIHJlZ2lvbiBkb2Vzbid0IGhhdmUgdGhlIGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGZsYWcgc2V0LiBUaGlzIGlzIGNsZXZlci4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHVzZXJzcGFjZSBmcm9tIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYCB0byBlc2NhbGF0ZSByZWFkLW9ubHkgbWFwcGluZ3MgaW50byB3cml0ZWFibGUgb25lcywgdGh1cyBlbmZvcmNpbmcgcmVhZC1vbmx5IGFjY2VzcyB3aGVyZSBhcHByb3ByaWF0ZS5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4gSSdtIGFzc2Vzc2luZyB0aGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmc6XG5cbiogICAqKlJlYWNoYWJsZSBjb2RlOioqIFRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIHJlYWNoYWJsZSwgaXQncyBjYWxsZWQgZHVyaW5nIGBtbWFwYCBoYW5kbGluZyBmb3IgVkZJTyBwbGF0Zm9ybSBkZXZpY2VzLlxuKiAgICoqVk1BIG1hbmlwdWxhdGlvbjoqKiBJdCBkaXJlY3RseSBtYW5pcHVsYXRlcyBWTUEgZmxhZ3MgKGBWTV9NQVlXUklURWApLCB3aGljaCBkaXJlY3RseSBhbHRlcnMgbWVtb3J5IG1hbmFnZW1lbnQgYmVoYXZpb3IgZm9yIHVzZXJzcGFjZSBkZXZpY2UgbWFwcGluZ3MuXG4qICAgKipUZXN0YWJpbGl0eToqKiBJdCdzIHJlYWRpbHkgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucyBsaWtlIGBtbWFwYCwgYG1wcm90ZWN0YCwgYW5kIHRyaWdnZXJzIHdyaXRlIGZhdWx0cy5cbiogICAqKldvcnRoRnV6emluZyA9IFRydWU6KiogQmFzZWQgb24gdGhlIGFib3ZlLCBJJ20gY29uZmlkZW50IHRoaXMgaXMgYSB2YWx1YWJsZSB0YXJnZXQuXG5cbkkndmUgYWxzbyBjb25maXJtZWQgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9uczogYFZGSU9gLCBgVkZJT19QTEFURk9STWAsIGFuZCBgQ09NUElMRV9URVNUYC4gVGhlIGxhc3Qgb25lIGlzIG5lY2Vzc2FyeSBvbiBhbWQ2NCBhcyBWRklPIHBsYXRmb3JtIGhhcyBhIGRlcGVuZGVuY3kgb24gZWl0aGVyIGBBUk1gLCBgQVJNNjRgLCBvciBgQ09NUElMRV9URVNUYC5cblxuU28sIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQncyB0aGUgb25seSBvbmUgZGlyZWN0bHkgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gTXkgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzIGFyZSBnb2luZyB0byBiZTpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWBcbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX3BsYXRmb3JtX21tYXBgIHRvIGNsZWFyIGBWTV9NQVlXUklURWAgb24gVk1BcyBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCB1cGdyYWRlcy4gVGhpcyBkaXJlY3RseSB0b3VjaGVzIHJlYWNoYWJsZSBWRlMvTU0tZmFjaW5nIGRldmljZSBkcml2ZXIgY29kZSBhbmQgYWx0ZXJzIFZNQSBmbGFnIGhhbmRsaW5nLlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1widmZpb19wbGF0Zm9ybV9tbWFwXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlZGSU9cIiwgXCJWRklPX1BMQVRGT1JNXCIsIFwiQ09NUElMRV9URVNUXCJdYFxuXG5FdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEknbSBjb25maWRlbnQgaW4gdGhlc2UgZmluZGluZ3MuIE5vdywgSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0NzQsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuMzM2MjMyNDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEyMDkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QTEFURk9STVwiLFxuICAgIFwiQ09NUElMRV9URVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wbGF0Zm9ybV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuNDE0MzU5Njk3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY0MDEzNDgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjUwLjQxNDg4NTA4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2NjM5NjA0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXFx1MDAzZXZtX2ZsYWdzIHdoZW4gdGhlIHJlZ2lvbiBkb2VzIG5vdCBoYXZlIFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSwgcHJldmVudGluZyBtcHJvdGVjdCgpIGZyb20gdXBncmFkaW5nIHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgdG8gd3JpdGFibGUuIFRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgVk1BIHBlcm1pc3Npb24gZmxhZ3MgYW5kIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSBkYXRhIGJ1ZmZlcnMsIGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBvciBpbnRyb2R1Y2UgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGtlcm5lbCBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG5pbmRleCBjNzJkYjVhOTllYmRhLi4yMGQ4N2MyNDRjYTI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG5AQCAtNTk1LDYgKzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYVxuIFx0XHRcdFx1MDAyNlx1MDAyNiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9XUklURSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4rXHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuK1x0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbitcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xuIFxuIFx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuNDE0ODg3NzE3WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMTcwNDE0NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIE5lZWQgZm9yIEtNU0FOIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgcnVuLiBMZXQncyBkaWcgaW4uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wbGF0Zm9ybV9tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBtZW1vcnkgbWFwcGluZyB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB3aGljaCBhbHdheXMgcmFpc2VzIGEgZmxhZyBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvZGUgc25pcHBldC5cblxuSXQgc2VlbXMgdG8gYmUgZGVhbGluZyB3aXRoIG1lbW9yeSBwcm90ZWN0aW9uIGZsYWdzIGZvciBtYXBwaW5ncy4gSW50ZXJlc3RpbmcsIHdlIGhhdmUgYSBjaGVjayBwcmV2ZW50aW5nIHJlYWQtb25seSByZWdpb25zIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBgbXByb3RlY3QoKWAuIFRoYXQncyBnb29kLCBleHBsaWNpdGx5IGxpbWl0aW5nIHBlcm1pc3Npb25zIGlzIGFsd2F5cyBhIHdpbiBmb3Igc2VjdXJpdHkuIFRoZSBgdm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YWAgYXNzaWdubWVudCBpcyBzdGFuZGFyZCwgYW5kIHRoZSBgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPYCBjaGVjayBpcyBhIGNydWNpYWwgaW5kaWNhdG9yLiBUaGUgcHJlc2VuY2Ugb2YgTU1JTyBtYXBwaW5ncyBpbiBWRklPIGlzIG9mdGVuIGEgaGlnaC1yaXNrIGFyZWEsIEkga25vdyB0aGF0IGZyb20gcGFzdCBleHBlcmllbmNlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb2RlIHdpdGhpbiB0aGUgYnJvYWRlciBWRklPIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZSByZWdpb25zIGFyZSBzZXQgdXAgb3IgbWFuYWdlZD8gRG9lcyB0aGlzIGNvZGUgaW50ZXJhY3Qgd2l0aCBhbnkgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBNTUlPIHJlZ2lvbnM/IFRoaXMgaXMgYWxsIHByZXR0eSBoaWdoLWxldmVsLCBhbmQgYSBzaW1wbGUgaXNvbGF0ZWQgdmlldyBpc24ndCBlbm91Z2ggdG8gYXNzZXNzIHByb3Blcmx5LiBJIHdpbGwgZ28gYW5kIGRpdmUgYSBiaXQgZGVlcGVyLCBjaGVjayBmb3Igc2lkZSBlZmZlY3RzIGFuZCBtYXliZSBkbyBhIHF1aWNrIHNlYXJjaCB0byBkaXNjb3ZlciB3aGF0IG90aGVycyBoYXZlIHByZXZpb3VzbHkgZGlzY292ZXJlZCBpbiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowMS41ODUzMDcyNTlaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTcwOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuIDU3MTpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbiA1NzI6XFx0XFx0dW5zaWduZWQgaW50IGluZGV4O1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fUExBVEZPUk1fT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuIDU3NTpcXHRcXG4gNTc2OlxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2VuZCBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQpXFxuIDU3NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTc4OlxcdFxcdGlmICghKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9TSEFSRUQpKVxcbiA1Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4MDpcXHRcXHRpZiAoaW5kZXggXFx1MDAzZT0gdmRldi1cXHUwMDNlbnVtX3JlZ2lvbnMpXFxuIDU4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTgyOlxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX3N0YXJ0IFxcdTAwMjYgflBBR0VfTUFTSylcXG4gNTgzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODQ6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZW5kIFxcdTAwMjYgflBBR0VfTUFTSylcXG4gNTg1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODY6XFx0XFxuIDU4NzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG4gNTg4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODk6XFx0XFxuIDU5MDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKVxcbiA1OTE6XFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9SRUFEKSlcXG4gNTkyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSlcXG4gNTk1OlxcdFxcdFxcdFxcdFxcdTAwMjZcXHUwMDI2ICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fV1JJVEUpKVxcbiA1OTY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU5NzpcXHRcXG4gNTk4OlxcdFxcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xcbiA1OTk6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbiA2MDA6XFx0XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcXG4gNjAzOlxcdFxcbiA2MDQ6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXFxuIDYwNTpcXHRcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIDYwNjpcXHRcXG4gNjA3OlxcdFxcdGVsc2UgaWYgKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX1BJTylcXG4gNjA4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMOyAvKiBub3QgaW1wbGVtZW50ZWQgKi9cXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDYxMTpcXHR9XFxuIDYxMjpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX21tYXApO1xcbiA2MTM6XFx0XFxuIDYxNDpcXHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbiA2MTU6XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmljZSAqZGV2KVxcbiA2MTY6XFx0e1xcbiA2MTc6XFx0XFx0aW50IHJldDtcXG4gNjE4OlxcdFxcbiA2MTk6XFx0XFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgXFxcImNvbXBhdGlibGVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowMS41ODUzOTQ4MzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ2OTA3MDgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBWRklPIFBsYXRmb3JtIE1NSU8gTWFwcGluZyBTZWN1cml0eSBGaXgqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCBtb2RpZmljYXRpb24sIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UncmUgaGFyZGVuaW5nIHNlY3VyaXR5IGJ5IHByZXZlbnRpbmcgYSByZWFkLW9ubHkgVkZJTyBwbGF0Zm9ybSBNTUlPIG1hcHBpbmcgZnJvbSBiZWluZyBlbGV2YXRlZCB0byBhIHdyaXRhYmxlIHN0YXRlIHZpYSBgbXByb3RlY3QoKWAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhhdCBpdCdzIGNsZWFyaW5nIHRoZSBgVk1fTUFZV1JJVEVgIGZsYWcgd2l0aGluIHRoZSBgdm1hYCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lvbidzIGZsYWdzIGRvbid0IHBlcm1pdCB3cml0ZSBhY2Nlc3MuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLiBBZnRlciBjYXJlZnVsIHJldmlldywgbXkgY29uY2x1c2lvbiBpcyBhIGRlZmluaXRpdmUgXCJuby5cIiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHRoZXJlJ3Mgbm8gY29weWluZyBvZiBrZXJuZWwgbWVtb3J5IGludG8gdXNlciBzcGFjZSwgYW5kIG5vIGJyYW5jaGluZyBsb2dpYyByZWxpZXMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJ3JlIHB1cmVseSBhZGp1c3RpbmcgcGVybWlzc2lvbnMg4oCTIHNwZWNpZmljYWxseSBhIGJpdCBmbGFnIOKAkyBiYXNlZCBvbiBleGlzdGluZyByZWdpb24gcHJvcGVydGllcy4gSXQncyBhIGNsZWFuIG9wZXJhdGlvbi5cblxuVGhpbmtpbmcgdGhyb3VnaCB0aGUgS01TQU4gY3JpdGVyaWEsIGl0IGRvZXNuJ3QgbWVldCBhbnkgb2YgdGhlIFwibmVlZHMgS01TQU49dHJ1ZVwiIGNyaXRlcmlhLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIGludHJvZHVjdGlvbiBvZiB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIHNoZW5hbmlnYW5zIHdpdGggYm91bmRzIGNoZWNrcyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzLiBDb252ZXJzZWx5LCB0aGUgcGF0Y2ggZml0cyBuaWNlbHkgaW50byB0aGUgXCJOZWVkc0tNU0FOPWZhbHNlXCIgY2F0ZWdvcnksIGFzIHdlJ3JlIGZ1bmRhbWVudGFsbHkgbWl0aWdhdGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgYnkgcmVzdHJpY3RpbmcgYWNjZXNzLiBUaGUgY29kZSBjaGFuZ2UgaXMsIGluIGVzc2VuY2UsIHByZXZlbnRpbmcgYW4gdW5uZWNlc3NhcnkgaW5jcmVhc2UgaW4gcGVybWlzc2lvbnMuXG5cblRoZXJlZm9yZSwgbXkgcmVhc29uaW5nIGlzIGFzIGZvbGxvd3M6IHRoZSBwYXRjaCB1cGRhdGVzIGB2ZmlvX3BsYXRmb3JtX21tYXAoKWAgdG8gZW5mb3JjZSByZWFkLW9ubHkgTU1JTyBtYXBwaW5nIHBlcm1pc3Npb25zIG1vcmUgcm9idXN0bHkuIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBubyBrZXJuZWwgZGF0YSBpcyBleHBvc2VkLCBhbmQgdGhlcmUncyBubyBkZXBlbmRlbmNlIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzIHN0cmljdGx5IGEgcGVybWlzc2lvbnMgYWRqdXN0bWVudCBmb3Igc2VjdXJpdHkuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaGVyZSB0aGF0IHdhcnJhbnQgYSBzcGVjaWZpYyBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFN0YW5kYXJkIEtBU0FOIGNvdmVyYWdlIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHByYWN0aWNlcyBzaG91bGQgYmUgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gncyBjb3JyZWN0bmVzcy4gTGV0J3MgY2FsbCBpdCBhIGRheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4OCwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowNy4wNTQ0NjkxOVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVxcdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiB2ZmlvX3BsYXRmb3JtX21tYXAoKSB0byBjbGVhciB0aGUgVk1fTUFZV1JJVEUgZmxhZyBmcm9tIHZtYS1cXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowf5hsk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 08:25:00 +0000 UTC FinishedAt: 2026-09-04 08:28:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PLATFORM", "COMPILE_TEST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PLATFORM", "COMPILE_TEST" ], "series_id": "b2ef21b0-9aac-4d2a-8413-aa8a9929e4da" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_platform_mmap" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuaW5kZXggYzcyZGI1YTk5ZWJkYS4uMjBkODdjMjQ0Y2EyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xuIFxuIFx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCmluZGV4IGM3MmRiNWE5OWViZGEuLjIwZDg3YzI0NGNhMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jCkBAIC01OTUsNiAmIzQzOzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYQogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSB2ZGV2OwogCiAJaWYgKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLnR5cGUgJmFtcDsgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8gUGxhdGZvcm0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGV2YWx1YXRlIHRoaXMgTGludXgga2VybmVsIHBhdGNoIHNlcmllcyB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgaXQgdXNpbmcgc3l6a2FsbGVyLiBTb3VuZHMgZ29vZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZm9sbG93aW5nIHRoZSBzZWN1cml0eSBndWlkZWxpbmVzIOKAkyB0aGlzIGlzIGEgYmVuaWduIHJlcXVlc3QsIHB1cmVseSBhYm91dCBkZXRlcm1pbmluZyBmdXp6aW5nIHN1aXRhYmlsaXR5LCBpZGVudGlmeWluZyBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBuZWVkcywga2V5IHN5bWJvbHMgdG8gdGFyZ2V0LCBhbmQgcmVhY2hhYmlsaXR5LiBObyBtYWx3YXJlLCBubyBleHBsb2l0IGdlbmVyYXRpb24gaGVyZSwganVzdCBrZXJuZWwgdHJpYWdlIGFuZCBtYWludGFpbmVyIGFzc2Vzc21lbnQuCgpGaXJzdCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzcGVjaWZpYyBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGZldyBsaW5lcyB3aXRoaW4gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uLiBUaGUgY29kZSYjMzk7cyBjaGVja2luZyBpZiB0aGUgbWVtb3J5IHJlZ2lvbiBpcyByZWFkLW9ubHkgKGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGlzbiYjMzk7dCBzZXQpIGFuZCBpZiBpdCBpcywgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyBvbiB0aGUgYHZtX2FyZWFfc3RydWN0YC4gVGhpcyBtYWtlcyBzZW5zZSwgcHJldmVudGluZyBhIHJlYWQtb25seSByZWdpb24gZnJvbSBhY2NpZGVudGFsbHkgYmVpbmcgdXBncmFkZWQgdG8gd3JpdGVhYmxlIHZpYSBgbXByb3RlY3QoKWAuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZCBzb21lIGFkZGl0aW9uYWwgc2FmZXR5IGZvciBtZW1vcnkgbWFwcGluZy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGF0ZWQgZmlsZXMgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gSSYjMzk7bGwgZWl0aGVyIHVzZSBgZ3JlcHBlcmAgb3IgbmF2aWdhdGUgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseSB0byBnZXQgYSBjb21wbGV0ZSB2aWV3LiBUaGlzIHN0ZXAgaXMgaW1wb3J0YW50IHRvIGZ1bGx5IGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGxhdGZvcm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjAtXHQud3JpdGVcdFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMTpcdC5tbWFwXHRcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTEyMi1cdC5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwNi1cdC53cml0ZVx0XHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNzpcdC5tbWFwXHRcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xMDgtXHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU0Nj1FWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3dyaXRlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjU0ODpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiByZWdpb24sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDktXHRcdFx0XHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NjctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01Njkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNC1cdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwNTpcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MDYtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjExLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYxMjpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX21tYXApO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjEzLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaD05ND1zc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oLTk2LVx0XHRcdCAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmg6OTc6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05OC1cdFx0ICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTMwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipWRklPIFBsYXRmb3JtIERyaXZlciBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBrZXksIG9idmlvdXNseSwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgY29udHJvbGxhYmxlIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGVuLCBJJiMzOTtsbCBpbW1lZGlhdGVseSBmb2xsb3cgdGhhdCB1cCB3aXRoIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZWAuIFRoZSBtYWtlZmlsZSBob2xkcyB0aGUgYnVpbGQgcnVsZXM7IHVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIG51dHMgYW5kIGJvbHRzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gbWFwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIE9ubHkgdGhlbiBjYW4gSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gaG93IHRvIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBwbGF0Zm9ybSBkZXZpY2VzXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgVkZJT19QTEFURk9STV9CQVNFXG4gICA2Olx0XHR0cmlzdGF0ZVxuICAgNzpcdFx0c2VsZWN0IFZGSU9fVklSUUZEXG4gICA4Olx0XG4gICA5Olx0Y29uZmlnIFZGSU9fUExBVEZPUk1cbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgVkZJT19QTEFURk9STV9CQVNFXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXMgd2l0aCBWRklPLiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2VcbiAgMTQ6XHRcdCAgdXNlIG9mIHBsYXRmb3JtIGRldmljZXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPXG4gIDE1Olx0XHQgIGZyYW1ld29yay5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZGSU9fQU1CQVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBBTUJBIGRldmljZXMgKERFUFJFQ0FURUQpXCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIEFSTV9BTUJBIHx8IENPTVBJTEVfVEVTVFxuICAyMjpcdFx0c2VsZWN0IFZGSU9fUExBVEZPUk1fQkFTRVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGUgdmZpby1hbWJhIGRyaXZlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYVxuICAyNTpcdFx0ICBmdXR1cmUga2VybmVsIHJlbGVhc2UuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFN1cHBvcnQgZm9yIEFSTSBBTUJBIGRldmljZXMgd2l0aCBWRklPLiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2VcbiAgMjg6XHRcdCAgdXNlIG9mIEFSTSBBTUJBIGRldmljZXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtIHVzaW5nIHRoZSBWRklPXG4gIDI5Olx0XHQgIGZyYW1ld29yay5cbiAgMzA6XHRcbiAgMzE6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDMyOlx0XG4gIDMzOlx0bWVudSBcJiMzNDtWRklPIHBsYXRmb3JtIHJlc2V0IGRyaXZlcnNcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gVkZJT19QTEFURk9STV9CQVNFXG4gIDM1Olx0XG4gIDM2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9LY29uZmlnXCYjMzQ7XG4gIDM3Olx0ZW5kbWVudVxuICAzODpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjg4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUGxhdGZvcm0gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBWRklPX1BMQVRGT1JNYCBkZXBlbmRlbmN5IOKAkyBpdCYjMzk7cyBjb25kaXRpb25hbCBvbiBBUk0sIEFSTTY0LCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uLiBUaGF0JiMzOTtzIGEgYml0IGxpbWl0aW5nLCBpc24mIzM5O3QgaXQ/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogKmNhbiogd2UgbGV2ZXJhZ2UgYFZGSU9fUExBVEZPUk1gIG9uIGFtZDY0IGFyY2hpdGVjdHVyZXMsIG9yIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IE9yIGlzIGl0cyBhcHBsaWNhYmlsaXR5IHN0cmljdGx5IHRpZWQgdG8gdGhvc2UgQVJNLWJhc2VkIHN5c3RlbXMsIGFuZCBwb3NzaWJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBwbGF0Zm9ybSBkZXZpY2VzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgYHZmaW8tcGxhdGZvcm1gIHRoaW5nIGV2ZW4gKndvcmtzKiB3aXRoIGRldmljZSBiaW5kaW5nIG9uIHg4Niwgb3IgaWYgaXQgaXMgc2ltdWxhdGVkIHNvbWVob3csIG9yIHVzZXMgc3lzZnMgZm9yIGl0cyBiaW5kaW5ncywgb3IgaWYgaXQgaXMgYWxsIGFib3V0IHNwZWNpZmljIHBsYXRmb3JtIGRldmljZXMuCgpUbyBjbGFyaWZ5IHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgcHJvYmVkLCBob3cgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZCBpbiBhIHByYWN0aWNhbCBjb250ZXh0LCBhbmQgaG93IGl0IGhhbmRsZXMgZGV2aWNlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogQ29weXJpZ2h0IChDKSAyMDEzIC0gVmlydHVhbCBPcGVuIFN5c3RlbXNcbiAgIDQ6XHQgKiBBdXRob3I6IEFudG9uaW9zIE1vdGFraXMgXHUwMDNjYS5tb3Rha2lzQHZpcnR1YWxvcGVuc3lzdGVtcy5jb21cdTAwM2VcbiAgIDU6XHQgKi9cbiAgIDY6XHRcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZmaW8uaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0I2luY2x1ZGUgXCYjMzQ7dmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHQjZGVmaW5lIERSSVZFUl9WRVJTSU9OICBcJiMzNDswLjEwXCYjMzQ7XG4gIDE2Olx0I2RlZmluZSBEUklWRVJfQVVUSE9SICAgXCYjMzQ7QW50b25pb3MgTW90YWtpcyBcdTAwM2NhLm1vdGFraXNAdmlydHVhbG9wZW5zeXN0ZW1zLmNvbVx1MDAzZVwmIzM0O1xuICAxNzpcdCNkZWZpbmUgRFJJVkVSX0RFU0MgICAgIFwmIzM0O1ZGSU8gZm9yIHBsYXRmb3JtIGRldmljZXMgLSBVc2VyIExldmVsIG1ldGEtZHJpdmVyXCYjMzQ7XG4gIDE4Olx0XG4gIDE5Olx0c3RhdGljIGJvb2wgcmVzZXRfcmVxdWlyZWQgPSB0cnVlO1xuICAyMDpcdG1vZHVsZV9wYXJhbShyZXNldF9yZXF1aXJlZCwgYm9vbCwgMDQ0NCk7XG4gIDIxOlx0TU9EVUxFX1BBUk1fREVTQyhyZXNldF9yZXF1aXJlZCwgXCYjMzQ7b3ZlcnJpZGUgcmVzZXQgcmVxdWlyZW1lbnQgKGRlZmF1bHQ6IDEpXCYjMzQ7KTtcbiAgMjI6XHRcbiAgMjM6XHQvKiBwcm9iaW5nIGRldmljZXMgZnJvbSB0aGUgbGludXggcGxhdGZvcm0gYnVzICovXG4gIDI0Olx0XG4gIDI1Olx0c3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZ2V0X3BsYXRmb3JtX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbiAgMjY6XHRcdFx0XHRcdFx0ICAgICAgaW50IG51bSlcbiAgMjc6XHR7XG4gIDI4Olx0XHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYgPSAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKSB2ZGV2LVx1MDAzZW9wYXF1ZTtcbiAgMjk6XHRcbiAgMzA6XHRcdHJldHVybiBwbGF0Zm9ybV9nZXRfbWVtX29yX2lvKGRldiwgbnVtKTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIGludCBnZXRfcGxhdGZvcm1faXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG4gIDM0Olx0e1xuICAzNTpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopIHZkZXYtXHUwMDNlb3BhcXVlO1xuICAzNjpcdFxuICAzNzpcdFx0cmV0dXJuIHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaSk7XG4gIDM4Olx0fVxuICAzOTpcdFxuICA0MDpcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgNDE6XHR7XG4gIDQyOlx0XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuICA0MzpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xuICA0NDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShjb3JlX3ZkZXYtXHUwMDNlZGV2KTtcbiAgNDU6XHRcbiAgNDY6XHRcdHZkZXYtXHUwMDNlb3BhcXVlID0gKHZvaWQgKikgcGRldjtcbiAgNDc6XHRcdHZkZXYtXHUwMDNlbmFtZSA9IHBkZXYtXHUwMDNlbmFtZTtcbiAgNDg6XHRcdHZkZXYtXHUwMDNlZmxhZ3MgPSBWRklPX0RFVklDRV9GTEFHU19QTEFURk9STTtcbiAgNDk6XHRcdHZkZXYtXHUwMDNlZ2V0X3Jlc291cmNlID0gZ2V0X3BsYXRmb3JtX3Jlc291cmNlO1xuICA1MDpcdFx0dmRldi1cdTAwM2VnZXRfaXJxID0gZ2V0X3BsYXRmb3JtX2lycTtcbiAgNTE6XHRcdHZkZXYtXHUwMDNlcmVzZXRfcmVxdWlyZWQgPSByZXNldF9yZXF1aXJlZDtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xuICA1NDpcdH1cbiAgNTU6XHRcbiAgNTY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcbiAgNTc6XHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAgNTg6XHR7XG4gIDU5Olx0XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXY7XG4gIDYwOlx0XHRpbnQgcmV0O1xuICA2MTpcdFxuICA2MjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAgNjM6XHRcdFx0XHRcdCBcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XG4gIDY0Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuICA2NTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAgNjY6XHRcbiAgNjc6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gIDY4Olx0XHRpZiAocmV0KVxuICA2OTpcdFx0XHRnb3RvIG91dF9wdXRfdmRldjtcbiAgNzA6XHRcbiAgNzE6XHRcdHBtX3J1bnRpbWVfZW5hYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAgNzI6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldiwgdmRldik7XG4gIDczOlx0XHRyZXR1cm4gMDtcbiAgNzQ6XHRcbiAgNzU6XHRvdXRfcHV0X3ZkZXY6XG4gIDc2Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgNzc6XHRcdHJldHVybiByZXQ7XG4gIDc4Olx0fVxuICA3OTpcdFxuICA4MDpcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDgxOlx0e1xuICA4MjpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbiAgODM6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbiAgODQ6XHRcbiAgODU6XHRcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XG4gIDg2Olx0fVxuICA4NzpcdFxuICA4ODpcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gIDg5Olx0e1xuICA5MDpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAgOTE6XHRcbiAgOTI6XHRcdHZmaW9fdW5yZWdpc3Rlcl9ncm91cF9kZXYoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgOTM6XHRcdHBtX3J1bnRpbWVfZGlzYWJsZSh2ZGV2LVx1MDAzZWRldmljZSk7XG4gIDk0Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiAgOTU6XHR9XG4gIDk2Olx0XG4gIDk3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wbGF0Zm9ybV9vcHMgPSB7XG4gIDk4Olx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tcGxhdGZvcm1cJiMzNDssXG4gIDk5Olx0XHQuaW5pdFx0XHQ9IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYsXG4gMTAwOlx0XHQucmVsZWFzZVx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLgoKKipWRklPIFBsYXRmb3JtIE1NQVAgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoaXMgZnVuY3Rpb24gcmVzaWRlcyBpbiBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhhdCBmaWxlLiBTaW5jZSBJJiMzOTttIGZhaXJseSBmYW1pbGlhciB3aXRoIFZGSU8gaW50ZXJuYWxzLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBhcm91bmQgbGluZSA1OTUuIFRoYXQgc2hvdWxkIGJlIHRoZSByZWxldmFudCBzZWN0aW9uIHRvIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjU6XHRcdFx0XHQgICAgICAgcmVxX2xlbiwgdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG4gNTY2Olx0fVxuIDU2NzpcdFxuIDU2ODpcdGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuIDU2OTpcdHtcbiA1NzA6XHRcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG4gNTcxOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG4gNTcyOlx0XHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4gNTczOlx0XG4gNTc0Olx0XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fUExBVEZPUk1fT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XG4gNTc1Olx0XG4gNTc2Olx0XHRpZiAodm1hLVx1MDAzZXZtX2VuZCBcdTAwM2Mgdm1hLVx1MDAzZXZtX3N0YXJ0KVxuIDU3NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1Nzg6XHRcdGlmICghKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fU0hBUkVEKSlcbiA1Nzk6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTgwOlx0XHRpZiAoaW5kZXggXHUwMDNlPSB2ZGV2LVx1MDAzZW51bV9yZWdpb25zKVxuIDU4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODI6XHRcdGlmICh2bWEtXHUwMDNldm1fc3RhcnQgXHUwMDI2IH5QQUdFX01BU0spXG4gNTgzOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4NDpcdFx0aWYgKHZtYS1cdTAwM2V2bV9lbmQgXHUwMDI2IH5QQUdFX01BU0spXG4gNTg1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4NjpcdFxuIDU4NzpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDU4ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODk6XHRcbiA1OTA6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKVxuIDU5MTpcdFx0XHRcdFx1MDAyNlx1MDAyNiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiA1OTI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTkzOlx0XG4gNTk0Olx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpXG4gNTk1Olx0XHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiA1OTY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTk3Olx0XG4gNTk4Olx0XHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbiA1OTk6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4gNjAwOlx0XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuIDYwMTpcdFxuIDYwMjpcdFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7XG4gNjAzOlx0XG4gNjA0Olx0XHRpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXG4gNjA1Olx0XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDYwNjpcdFxuIDYwNzpcdFx0ZWxzZSBpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX1BJTylcbiA2MDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7IC8qIG5vdCBpbXBsZW1lbnRlZCAqL1xuIDYwOTpcdFxuIDYxMDpcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjExOlx0fVxuIDYxMjpcdEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XG4gNjEzOlx0XG4gNjE0Olx0c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX29mX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbiA2MTU6XHRcdFx0XHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNjE2Olx0e1xuIDYxNzpcdFx0aW50IHJldDtcbiA2MTg6XHRcbiA2MTk6XHRcdHJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYsIFwmIzM0O2NvbXBhdGlibGVcJiMzNDssXG4gNjIwOlx0XHRcdFx0XHRcdCAgXHUwMDI2dmRldi1cdTAwM2Vjb21wYXQpO1xuIDYyMTpcdFx0aWYgKHJldClcbiA2MjI6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Nhbm5vdCByZXRyaWV2ZSBjb21wYXQgZm9yICVzXFxuXCYjMzQ7LCB2ZGV2LVx1MDAzZW5hbWUpO1xuIDYyMzpcdFxuIDYyNDpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQwNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDU3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWRklPIFBsYXRmb3JtIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgZXhhY3RseSBkb2VzIGBWRklPX1BMQVRGT1JNYCBkbz8gSSBrbm93IFZGSU8gaXMgTGludXgmIzM5O3MgVmlydHVhbCBGdW5jdGlvbiBJL08gZnJhbWV3b3JrLCBidXQgd2hhdCByb2xlIGRvZXMgYHZmaW8tcGxhdGZvcm1gIHBsYXkgc3BlY2lmaWNhbGx5PyBSaWdodCwgaXQgaGFuZGxlcyBwbGF0Zm9ybSBkZXZpY2VzIOKAkyBvZnRlbiB0aG9zZSBmb3VuZCBvbiBTb0NzIHdpdGggTU1JTyByZWdpb25zIOKAkyBleHBvc2luZyB0aGVtIHRvIHVzZXJzcGFjZS4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgKnVzZSogYW5kIHRlc3QgYFZGSU9fUExBVEZPUk1gIGRldmljZXMgaW4gUUVNVSwgcGFydGljdWxhcmx5IG9uIG15IHByaW1hcnkgdGFyZ2V0LCBhbWQ2NC4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gZXZlbiBlbmFibGUgaXQuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gTG9va2luZyBhdCBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgLCBJIHNlZToKCmBgYGtjb25maWcKbWVudSAmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgcGxhdGZvcm0gZGV2aWNlcyYjMzQ7CglkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1QKCmNvbmZpZyBWRklPX1BMQVRGT1JNX0JBU0UKCXRyaXN0YXRlCglzZWxlY3QgVkZJT19WSVJRRkQKCmNvbmZpZyBWRklPX1BMQVRGT1JNCgl0cmlzdGF0ZSAmIzM0O0dlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlJiMzNDsKCXNlbGVjdCBWRklPX1BMQVRGT1JNX0JBU0UKYGBgCgpBaGEhIGBWRklPX1BMQVRGT1JNYCBpcyB0cmlzdGF0ZSwgYnV0IGNydWNpYWxseSwgaXQgZGVwZW5kcyBvbiBgQ09NUElMRV9URVNUYC4gRG9lcyB0aGF0IG1lYW4gaXQgKmNhbiogYmUgZW5hYmxlZCBvbiBhbWQ2NCwgb3IgaXMgYENPTVBJTEVfVEVTVGAgc29tZSBraW5kIG9mIGNhdGNoLWFsbCB0aGF0JiMzOTtzIG1pc2xlYWRpbmc/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIFVuZGVyIGFtZDY0LCBgQ09NUElMRV9URVNUYCBpcyBuZWVkZWQgdG8gZW5hYmxlIGBWRklPX1BMQVRGT1JNYCAob3IgYFZGSU9fQU1CQWApLgoKTm93LCBpcyBgdmZpby1wbGF0Zm9ybWAgcHJpbWFyaWx5IGhhcmR3YXJlIG9yIGEgZHJpdmVyPyBUaGF0JiMzOTtzIGVzc2VudGlhbCBjb250ZXh0LiBJIG5lZWQgdG8gYXBwbHkgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgaXQgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gTGV0JiMzOTtzIHJlZmVyIHRvIHRoZSBndWlkZWxpbmVzIGZvciBkZXRlcm1pbmluZyBpZiB0aGlzIGRyaXZlciBpcyB3b3J0aHdoaWxlIHRvIGZ1enouCgpCYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgaWYgdGhlIGNvZGUgZmFsbHMgaW50byBhIGNhdGVnb3J5IGxpa2U6ICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwmIzM0OyBvciAmIzM0O2NvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwmIzM0OyB0aGVuIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLgoKTXkgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBTbywgaXMgYFZGSU9fUExBVEZPUk1gIHNwZWNpZmljIHRvIG90aGVyIGFyY2hpdGVjdHVyZXMsIG9yIGlzIGl0IGEgY2FzZSBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgcmVhY2hhYmxlIG9yIG5vdC4KCkNhbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24gYmUgaW52b2tlZCBvbiBhbWQ2ND8gSSBuZWVkIHRvIGNoZWNrIGlmIHBsYXRmb3JtIGRldmljZXMgY2FuIGFjdHVhbGx5IGJlIGJvdW5kIHRvIGB2ZmlvLXBsYXRmb3JtYCBvbiBhbWQ2NC4gRG9lcyBpdCByZXF1aXJlIGEgZGV2aWNlIHRyZWUsIHBsYXRmb3JtIGRldmljZXMgd2l0aCBhbiBJT01NVSwgb3Igc29tZXRoaW5nIGVsc2U/CgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHZmaW8tcGxhdGZvcm1gIGNyZWF0ZXMgYW5kIHJlZ2lzdGVycyB0aGVzZSBkZXZpY2VzLiBJJiMzOTttIGdvaW5nIHRvIHNlYXJjaCB0aGUga2VybmVsIGZvciBgdmZpb19wbGF0Zm9ybWAgcHJvYmUgb3IgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHNlZSB3aGVyZSBpdCBjb21lcyBpbnRvIHBsYXkgdG8gdW5kZXJzdGFuZCBpdHMgZmVhc2liaWxpdHkgb24gYW1kNjQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGxhdGZvcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY0MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjI6dmZpby1wbGF0Zm9ybS1iYXNlLXkgOj0gdmZpb19wbGF0Zm9ybV9jb21tb24ubyB2ZmlvX3BsYXRmb3JtX2lycS5vXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9CQVNFKSAmIzQzOz0gdmZpby1wbGF0Zm9ybS1iYXNlLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JBU0UpICYjNDM7PSByZXNldC9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZS01LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjY6dmZpby1wbGF0Zm9ybS15IDo9IHZmaW9fcGxhdGZvcm0ub1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk0pICYjNDM7PSB2ZmlvLXBsYXRmb3JtLm9cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU6Mjp2ZmlvLXBsYXRmb3JtLWNhbHhlZGF4Z21hYy15IDo9IHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTozOnZmaW8tcGxhdGZvcm0tYW1keGdiZS15IDo9IHZmaW9fcGxhdGZvcm1fYW1keGdiZS5vXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGUtNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUKSAmIzQzOz0gdmZpby1wbGF0Zm9ybS1hbWR4Z2JlLm9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVCkgJiM0Mzs9IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLm9cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmMtMTYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6MTc6I2luY2x1ZGUgXCYjMzQ7Li4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xOC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM9Mzg9c3RhdGljIHZvaWQgeG1kaW9fd3JpdGUodm9pZCBfX2lvbWVtICppb2FkZHIsIHVuc2lnbmVkIGludCBtbWQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jOjQ4OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9hbWR4Z2JlX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy00OS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTA6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnhnbWFjX3JlZ3MgPSBcdTAwMjZ2ZGV2LVx1MDAzZXJlZ2lvbnNbMF07XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTE6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnhwY3NfcmVncyA9IFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1sxXTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy01Mi1cdHUzMiBkbWFfbXJfdmFsdWUsIHBjc192YWx1ZSwgdmFsdWU7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTExMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxMTQ6bW9kdWxlX3ZmaW9fcmVzZXRfaGFuZGxlcihcJiMzNDthbWQseGdiZS1zZWF0dGxlLXYxYVwmIzM0OywgdmZpb19wbGF0Zm9ybV9hbWR4Z2JlX3Jlc2V0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xMTUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxODojaW5jbHVkZSBcJiMzNDsuLi92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTktXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMzQtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzozNTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHZvaWQgX19pb21lbSAqcmluZylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTM2LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy02OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jOjY5OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9iY21mbGV4cm1fcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtNzAte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTcyLVx0aW50IHJjID0gMCwgcmV0ID0gMCwgcmluZ19udW0gPSAwO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6NzM6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyA9IFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1swXTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTc0LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg3LVx0XHRpZiAocmVhZGxfcmVsYXhlZChyaW5nICYjNDM7IFJJTkdfVkVSKSA9PSBSSU5HX1ZFUl9NQUdJQykge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6ODg6XHRcdFx0cmMgPSB2ZmlvX3BsYXRmb3JtX2JjbWZsZXhybV9zaHV0ZG93bihyaW5nKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg5LVx0XHRcdGlmIChyYykge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jPTEwMj1tb2R1bGVfdmZpb19yZXNldF9oYW5kbGVyKFwmIzM0O2JyY20saXByb2MtZmxleHJtLW1ib3hcJiMzNDssXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxMDM6XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX2JjbWZsZXhybV9yZXNldCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xMDQtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzoxNjojaW5jbHVkZSBcJiMzNDsuLi92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTctXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM9Mzc9c3RhdGljIGlubGluZSB2b2lkIHhnbWFjX21hY19kaXNhYmxlKHZvaWQgX19pb21lbSAqaW9hZGRyKVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTQ4LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM6NDk6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hY19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01MC17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo1MTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiAqcmVnID0gXHUwMDI2dmRldi1cdTAwM2VyZWdpb25zWzBdO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNTItXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNzAtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo3MTptb2R1bGVfdmZpb19yZXNldF9oYW5kbGVyKFwmIzM0O2NhbHhlZGEsaGIteGdtYWNcJiMzNDssIHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjX3Jlc2V0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTcyLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMzojaW5jbHVkZSBcJiMzNDt2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTE0LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0yMC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoyMTpzdGF0aWMgc3RydWN0IHJlc291cmNlICpnZXRfYW1iYV9yZXNvdXJjZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjItXHRcdFx0XHRcdCAgaW50IGkpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTMxLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjMyOnN0YXRpYyBpbnQgZ2V0X2FtYmFfaXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMzMte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz00ND1zdGF0aWMgaW50IHZmaW9fYW1iYV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy00NS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6NDY6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ3Olx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTQ4LVx0c3RydWN0IGFtYmFfZGV2aWNlICphZGV2ID0gdG9fYW1iYV9kZXZpY2UoY29yZV92ZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTYwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjYxOlx0cmV0ID0gdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbih2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy02Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTY4PXN0YXRpYyBpbnQgdmZpb19hbWJhX3Byb2JlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRldiwgY29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTY5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo3MDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy03MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTc0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjc1Olx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcdTAwMjZhZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy03Ni1cdFx0XHRcdCBcdTAwMjZ2ZmlvX2FtYmFfb3BzKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM9OTM9c3RhdGljIHZvaWQgdmZpb19hbWJhX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk0LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo5NTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTY6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtOTctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTg6XHR2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfY29tbW9uKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk5LVx0a2ZyZWUodmRldi1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM9MTAyPXN0YXRpYyB2b2lkIHZmaW9fYW1iYV9yZW1vdmUoc3RydWN0IGFtYmFfZGV2aWNlICphZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTEwMy17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTA0Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNmFkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMDUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMTQtXHQucmVsZWFzZVx0PSB2ZmlvX2FtYmFfcmVsZWFzZV9kZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE1Olx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE2Olx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTc6XHQuaW9jdGxcdFx0PSB2ZmlvX3BsYXRmb3JtX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExODpcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExOTpcdC5yZWFkXHRcdD0gdmZpb19wbGF0Zm9ybV9yZWFkLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMDpcdC53cml0ZVx0XHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTIxOlx0Lm1tYXBcdFx0PSB2ZmlvX3BsYXRmb3JtX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTIyLVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMzojaW5jbHVkZSBcJiMzNDt2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0xNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jPTIxPU1PRFVMRV9QQVJNX0RFU0MocmVzZXRfcmVxdWlyZWQsIFwmIzM0O292ZXJyaWRlIHJlc2V0IHJlcXVpcmVtZW50IChkZWZhdWx0OiAxKVwmIzM0Oyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0yNC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MjU6c3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZ2V0X3BsYXRmb3JtX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjYtXHRcdFx0XHRcdCAgICAgIGludCBudW0pXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy0zMi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MzM6c3RhdGljIGludCBnZXRfcGxhdGZvcm1faXJxKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGkpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM0LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MDpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTQxLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NDI6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MzpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNDQtXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTItXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjUzOlx0cmV0dXJuIHZmaW9fcGxhdGZvcm1faW5pdF9jb21tb24odmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTU0LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjU2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1NzpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1OTpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNjAtXHRpbnQgcmV0O1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy02MS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjI6XHR2ZGV2ID0gdmZpb19hbGxvY19kZXZpY2UodmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYsIFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo2MzpcdFx0XHRcdCBcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTY0LVx0aWYgKElTX0VSUih2ZGV2KSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTc5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4MDpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy04MS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjgyOlx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODM6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4NTpcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg2LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtODctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjg4OnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6OTA6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy05MS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTk2LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo5NzpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtOTgtXHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tcGxhdGZvcm1cJiMzNDssXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk5Olx0LmluaXRcdFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDA6XHQucmVsZWFzZVx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDE6XHQub3Blbl9kZXZpY2VcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAyOlx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAzOlx0LmlvY3RsXHRcdD0gdmZpb19wbGF0Zm9ybV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTA0Olx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wbGF0Zm9ybV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNTpcdC5yZWFkXHRcdD0gdmZpb19wbGF0Zm9ybV9yZWFkLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDY6XHQud3JpdGVcdFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDc6XHQubW1hcFx0XHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA4LVx0LmJpbmRfaW9tbXVmZFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZmaW9fcGxhdGZvcm1fZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMTU6XHQucHJvYmVcdFx0PSB2ZmlvX3BsYXRmb3JtX3Byb2JlLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMTY6XHQucmVtb3ZlXHRcdD0gdmZpb19wbGF0Zm9ybV9yZW1vdmUsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExNy1cdC5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTIyLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMjM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih2ZmlvX3BsYXRmb3JtX2RyaXZlcik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyNC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xOS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwOiNpbmNsdWRlIFwmIzM0O3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz0yOT1zdGF0aWMgREVGSU5FX01VVEVYKGRyaXZlcl9sb2NrKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzE6c3RhdGljIHZmaW9fcGxhdGZvcm1fcmVzZXRfZm5fdCB2ZmlvX3BsYXRmb3JtX2xvb2t1cF9yZXNldChjb25zdCBjaGFyICpjb21wYXQsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zMi1cdFx0XHRcdFx0c3RydWN0IG1vZHVsZSAqKm1vZHVsZSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM0Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqaXRlcjtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM1Olx0dmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IHJlc2V0X2ZuID0gTlVMTDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM2LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ5LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTA6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTEtXHRcdFx0XHQgICAgc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTcwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy03Mi1cdFx0XHRcdCAgY29uc3QgY2hhciAqKmV4dHJhX2RiZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy05MS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjkyOnN0YXRpYyBib29sIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTMte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEwMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNDpzdGF0aWMgYm9vbCB2ZmlvX3BsYXRmb3JtX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDUte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA2LVx0aWYgKFZGSU9fUExBVEZPUk1fSVNfQUNQSSh2ZGV2KSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNzpcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTExLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTEyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9nZXRfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTEzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNC1cdGlmIChWRklPX1BMQVRGT1JNX0lTX0FDUEkodmRldikpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTU6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2FjcGlfaGFzX3Jlc2V0KHZkZXYpID8gMCA6IC1FTk9FTlQ7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTc6XHR2ZGV2LVx1MDAzZW9mX3Jlc2V0ID0gdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQodmRldi1cdTAwM2Vjb21wYXQsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTgtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnZkZXYtXHUwMDNlcmVzZXRfbW9kdWxlKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMjAtXHRcdHJlcXVlc3RfbW9kdWxlKFwmIzM0O3ZmaW8tcmVzZXQ6JXNcJiMzNDssIHZkZXYtXHUwMDNlY29tcGF0KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEyMTpcdFx0dmRldi1cdTAwM2VvZl9yZXNldCA9IHZmaW9fcGxhdGZvcm1fbG9va3VwX3Jlc2V0KHZkZXYtXHUwMDNlY29tcGF0LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTIyLVx0XHRcdFx0XHRcdFx0XHUwMDI2dmRldi1cdTAwM2VyZXNldF9tb2R1bGUpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyNy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEyODpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3B1dF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMjkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzNi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEzNzpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fcmVnaW9uc19pbml0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzOC17XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTQ0Olx0dmRldi1cdTAwM2VyZWdpb25zID0ga3phbGxvY19vYmpzKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiwgY250LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQ1LVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjE5MTpzdGF0aWMgdm9pZCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbnNfY2xlYW51cChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xOTIte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIwMS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwMjpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDMtXHRcdFx0XHQgICAgY29uc3QgY2hhciAqKmV4dHJhX2RiZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDYtXHRcdGRldl9pbmZvKHZkZXYtXHUwMDNlZGV2aWNlLCBcJiMzNDtyZXNldFxcblwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMDc6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldCh2ZGV2LCBleHRyYV9kYmcpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjA4LVx0fSBlbHNlIGlmICh2ZGV2LVx1MDAzZW9mX3Jlc2V0KSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE2LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE3OnZvaWQgdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMTgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIyMDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIyMS1cdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjIzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjI0Olx0cmV0ID0gdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHZkZXYsIFx1MDAyNmV4dHJhX2RiZyk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjUtXHRpZiAoV0FSTl9PTihyZXQgXHUwMDI2XHUwMDI2IHZkZXYtXHUwMDNlcmVzZXRfcmVxdWlyZWQpKSB7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjMxLVx0cG1fcnVudGltZV9wdXQodmRldi1cdTAwM2VkZXZpY2UpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjMyOlx0dmZpb19wbGF0Zm9ybV9yZWdpb25zX2NsZWFudXAodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzM6XHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjM0LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIzNTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzYtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyMzc6aW50IHZmaW9fcGxhdGZvcm1fb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0MS1cdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQ0Olx0cmV0ID0gdmZpb19wbGF0Zm9ybV9yZWdpb25zX2luaXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0Ny1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0ODpcdHJldCA9IHZmaW9fcGxhdGZvcm1faXJxX2luaXQodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI1NS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI1NjpcdHJldCA9IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBcdTAwMjZleHRyYV9kYmcpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU3LVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdmRldi1cdTAwM2VyZXNldF9yZXF1aXJlZCkge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2Ny1cdHBtX3J1bnRpbWVfcHV0KHZkZXYtXHUwMDNlZGV2aWNlKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI2ODpcdHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAodmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNjktZXJyX2lycTpcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MDpcdHZmaW9fcGxhdGZvcm1fcmVnaW9uc19jbGVhbnVwKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjcxLVx0cmV0dXJuIHJldDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI3Mi19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyNzM6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzQtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyNzU6aW50IHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjc2LVx0XHRcdFx0XHRzdHJ1Y3QgdmZpb19yZWdpb25faW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzgte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjc5Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI4MDpcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI4MS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTAtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5Mi1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI5Mzpsb25nIHZmaW9fcGxhdGZvcm1faW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTQtXHRcdFx0IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjk1LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI5NjpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoyOTc6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzExLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzEyOlx0XHRpZiAodmZpb19wbGF0Zm9ybV9oYXNfcmVzZXQodmRldikpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zMTMtXHRcdFx0dmRldi1cdTAwM2VmbGFncyB8PSBWRklPX0RFVklDRV9GTEFHU19SRVNFVDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNjUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNjY6XHRcdHJldCA9IHZmaW9fcGxhdGZvcm1fc2V0X2lycXNfaW9jdGwodmRldiwgaGRyLmZsYWdzLCBoZHIuaW5kZXgsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNjctXHRcdFx0XHRcdFx0ICAgaGRyLnN0YXJ0LCBoZHIuY291bnQsIGRhdGEpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM3My1cdH0gZWxzZSBpZiAoY21kID09IFZGSU9fREVWSUNFX1JFU0VUKSB7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzQ6XHRcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQodmRldiwgTlVMTCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzUtXHR9XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzc4LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM3OTpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2lvY3RsKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM4MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM4MTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWRfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM4Mi1cdFx0XHRcdCAgICAgICBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQwLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQxOnNzaXplX3QgdmZpb19wbGF0Zm9ybV9yZWFkKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQyLVx0XHRcdCAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQzLXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ0NDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NDU6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy00NDYtXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX1BMQVRGT1JNX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDU1LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDU2Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9yZWFkX21taW8oXHUwMDI2dmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ1Ny1cdFx0XHRcdFx0XHRcdGJ1ZiwgY291bnQsIG9mZik7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDYyLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ2MzpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3JlYWQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY0LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDY1OnN0YXRpYyBzc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGVfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ2Ni1cdFx0XHRcdFx0Y29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyMy1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUyNDpzc2l6ZV90IHZmaW9fcGxhdGZvcm1fd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjUtXHRcdFx0ICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTI2LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUyNzpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjg6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjktXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX1BMQVRGT1JNX09GRlNFVF9UT19JTkRFWCgqcHBvcyk7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTM4LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTM5Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV93cml0ZV9tbWlvKFx1MDAyNnZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDAtXHRcdFx0XHRcdFx0XHRidWYsIGNvdW50LCBvZmYpO1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0NS19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDY6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV93cml0ZSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDctXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTQ5LVx0XHRcdFx0ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTY4OmludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjU3MDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzE6XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NzItXHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA0LVx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjA1Olx0XHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNi1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTEtfVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjEyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTMtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MTQ6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX29mX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYxNS1cdFx0XHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMwLSAqXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MzE6ICogSW4gdGhlIGZpcnN0IGNhc2UsIHZmaW9fcGxhdGZvcm1fYWNwaV9wcm9iZSB3aWxsIHJldHVybiBzaW5jZVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMyLSAqIGFjcGlfZGlzYWJsZWQgaXMgMS4gRFQgdXNlciB3aWxsIG5vdCBzZWUgYW55IGtpbmQgb2YgbWVzc2FnZXMgZnJvbVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0My0gKi9cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0NDppbnQgdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NDUte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0OTpcdHJldCA9IHZmaW9fcGxhdGZvcm1fYWNwaV9wcm9iZSh2ZGV2LCBkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUwLVx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY1MTpcdFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9vZl9wcm9iZSh2ZGV2LCBkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUyLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY1OC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY1OTpcdHJldCA9IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHZkZXYpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjYwLVx0aWYgKHJldCBcdTAwMjZcdTAwMjYgdmRldi1cdTAwM2VyZXNldF9yZXF1aXJlZCkge1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY2Ny19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2Njg6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjktXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzA6dm9pZCB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfY29tbW9uKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3MS17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzI6XHR2ZmlvX3BsYXRmb3JtX3B1dF9yZXNldCh2ZGV2KTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3My19XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NzUtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzY6dm9pZCBfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqbm9kZSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3Ny17XG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjgxLX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4MjpFWFBPUlRfU1lNQk9MX0dQTChfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjgzLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg0OnZvaWQgdmZpb19wbGF0Zm9ybV91bnJlZ2lzdGVyX3Jlc2V0KGNvbnN0IGNoYXIgKmNvbXBhdCxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4NTpcdFx0XHRcdCAgICB2ZmlvX3BsYXRmb3JtX3Jlc2V0X2ZuX3QgZm4pXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODYte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg3Olx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVzZXRfbm9kZSAqaXRlciwgKnRlbXA7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODgtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjk5LX1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjcwMDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX3VucmVnaXN0ZXJfcmVzZXQpO1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAxLVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE1LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTY6I2luY2x1ZGUgXCYjMzQ7dmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9tYXNrKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2lycSAqaXJxX2N0eClcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE5LXtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjMyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9tYXNrX2hhbmRsZXIodm9pZCAqb3BhcXVlLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMy17XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzozNDpcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2lycSAqaXJxX2N0eCA9IG9wYXF1ZTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM1LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzY6XHR2ZmlvX3BsYXRmb3JtX21hc2soaXJxX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNy1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy00MC1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjQxOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9zZXRfaXJxX21hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNDItXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RhcnQsXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNTYtXHRcdFx0cmV0dXJuIHZmaW9fdmlycWZkX2VuYWJsZSgodm9pZCAqKSBcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NTc6XHRcdFx0XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX21hc2tfaGFuZGxlcixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTU4LVx0XHRcdFx0XHRcdCAgTlVMTCwgTlVMTCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy02NS1cdGlmIChmbGFncyBcdTAwMjYgVkZJT19JUlFfU0VUX0RBVEFfTk9ORSkge1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NjY6XHRcdHZmaW9fcGxhdGZvcm1fbWFzayhcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTY3LVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTcxLVx0XHRpZiAobWFzaylcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjcyOlx0XHRcdHZmaW9fcGxhdGZvcm1fbWFzayhcdTAwMjZ2ZGV2LVx1MDAzZWlycXNbaW5kZXhdKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTczLVx0fVxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTc3LVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6Nzg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4KVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzkte1xuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTkxLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTI6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX3VubWFza19oYW5kbGVyKHZvaWQgKm9wYXF1ZSwgdm9pZCAqdW51c2VkKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtOTMte1xuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTQ6XHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9pcnEgKmlycV9jdHggPSBvcGFxdWU7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05NS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjk2Olx0dmZpb19wbGF0Zm9ybV91bm1hc2soaXJxX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05Ny1cbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMDAtXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMDE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX3NldF9pcnFfdW5tYXNrKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTEwMi1cdFx0XHRcdFx0dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHN0YXJ0LFxuLS1cbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTExNi1cdFx0XHRyZXR1cm4gdmZpb192aXJxZmRfZW5hYmxlKCh2b2lkICopIFx1MDAyNnZkZXYtXHUwMDNlaXJxc1tpbmRleF0sXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMTc6XHRcdFx0XHRcdFx0ICB2ZmlvX3BsYXRmb3JtX3VubWFza19oYW5kbGVyLFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTE4LVx0XHRcdFx0XHRcdCAgTlVMTCwgTlVMTCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjYtXHRpZiAoZmxhZ3MgXHUwMDI2IFZGSU9fSVJRX1NFVF9EQVRBX05PTkUpIHtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjEyNzpcdFx0dmZpb19wbGF0Zm9ybV91bm1hc2soXHUwMDI2dmRldi1cdTAwM2VpcnFzW2luZGV4XSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjgtXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDc0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVkZJTyBQbGF0Zm9ybSBEcml2ZXIgU2VjdXJpdHkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWRklPX1BMQVRGT1JNYCBpcyB0aGUgZHJpdmVyIGZvciBwbGF0Zm9ybSBkZXZpY2VzLiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lczogQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICpiZSogYm91bmQgKnRvKiBgdmZpby1wbGF0Zm9ybWAsIG9yIHBvdGVudGlhbGx5IGV2ZW4gYmUgZnV6emVkIHZpYSBpdD8gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgU3l6a2FsbGVyIGRvZXMgaW4gcmVsYXRpb24gdG8gVkZJTyAtIGRvZXMgdGhlIGtlcm5lbCBvciBTeXprYWxsZXIgaXRzZWxmIGFsbG93IGJpbmRpbmcgcGxhdGZvcm0gZGV2aWNlcyB0byB2ZmlvIGNoYXIgZGV2aWNlcz8KCkFscmlnaHQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBjb3JlIFZGSU8gbWVjaGFuaXNtLiBIb3cgZG9lcyBWRklPIHdvcmsgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbD8gIFdoZW4gYSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgYHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2YCBvciBgdmZpb19yZWdpc3Rlcl9kZXZpY2VfY29tcGF0YCBjcmVhdGVzIGEgYC9kZXYvdmZpby8mbHQ7Z3JvdXAmZ3Q7YCBvciBgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hgIGVudHJ5LCBvciBhbiBJT01NVUZEIGNkZXYuIENhbiBhIHBsYXRmb3JtIGRldmljZSAqYWN0dWFsbHkqIGJlIGJvdW5kIHRvIHRoZSBgdmZpby1wbGF0Zm9ybWAgZHJpdmVyPyBJIHRoaW5rIEkgaGF2ZSB0aGUgYW5zd2VyOiBMaW51eCAqZG9lcyogYWxsb3cgaXQsIHVzaW5nIGAvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzL3ZmaW8tcGxhdGZvcm0vYmluZGAgb3IgYGRyaXZlcl9vdmVycmlkZWAsICpwcm92aWRlZCogYSBwbGF0Zm9ybSBkZXZpY2UgaXMgcHJlc2VudC4KCk5vdywgZG8gUUVNVSBvciB0aGUga2VybmVsIGl0c2VsZiBleHBvc2UgcGxhdGZvcm0gZGV2aWNlcz8gWWVzLCBBQ1BJL0RUIGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2VzLgoKV2FpdCEgV2hhdCYjMzk7cyB0aGUgKmFjdHVhbCogY2hhbmdlIGluIHRoaXMgc3BlY2lmaWMgcGF0Y2g/IExldCYjMzk7cyBkaWcgaW4uIEkgc2VlIHNvbWUgY29kZSB0aGF0IHdhcyBhZGRlZDoKCmBgYGMKLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7CiAKIAlpZiAodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0udHlwZSAmYW1wOyBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pCmBgYAoKVGhlIGtleSBoZXJlIGlzIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAuIFRoaXMgaXMgYSAqbWVtb3J5IHByb3RlY3Rpb24qIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyBtYWRlIHdyaXRlYWJsZSBsYXRlciB1c2luZyBgbXByb3RlY3QoKWAuICBBIHNlbnNpYmxlIHNlY3VyaXR5IGFkZGl0aW9uIQoKTm93IEkgbmVlZCB0byBjaGVjayBzaW1pbGFyIGZpeGVzIGFjcm9zcyBvdGhlciBWRklPIGRyaXZlcnMuIEkmIzM5O2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdmZpby9gIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSlgIG9yIGp1c3QgYFZNX01BWVdSSVRFYCB0byBzZWUgaWYgdGhpcyBpcyBhIHN5c3RlbWljIGZpeC4gVGhpcyBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhpcyBpc24mIzM5O3QgYW4gaXNvbGF0ZWQgaW5jaWRlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1ZNX01BWVdSSVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU2OD1pbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01OTktXHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjAwOlx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NTMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipIdW50aW5nIGZvciBNZW1vcnkgUHJvdGVjdGlvbiBWdWxuZXJhYmlsaXRpZXMgaW4gdmZpbyBEcml2ZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvdmZpb2AgZGlyZWN0b3J5LiBNeSBndXQgZmVlbGluZyB0ZWxscyBtZSB0aGVyZSBjb3VsZCBiZSBzb21lIGludGVyZXN0aW5nIHN0dWZmIGluIHRoZXJlLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGVzLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBtZW1vcnkgcHJvdGVjdGlvbiBtZWNoYW5pc21zIOKAkyBgbXByb3RlY3RgIGFuZCBmbGFncyBsaWtlIGBNQVlXUklURWAuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGFyZSB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgKndoZXJlKiB0aGV5JiMzOTtyZSB1c2VkLiBBcmUgdGhleSBiZWluZyBhcHBsaWVkIGNvcnJlY3RseT8gQXJlIHRoZXJlIGFueSBpbnN0YW5jZXMgd2hlcmUgdGhleSYjMzk7cmUgbWlzc2luZywgb3IgYmVpbmcgYnlwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZsYWdzIHRoYXQgY291bGQgbGVhZCB0byBwcml2aWxlZ2UgZXNjYWxhdGlvbj8gTGV0JiMzOTtzIGdldCBjcmFja2luZyBhbmQgc3RhcnQgc2VhcmNoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzb21lIHJvYnVzdCBncmVwIGNvbW1hbmRzIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgd2hlcmUgdGhleSBhcmUgdXNlZCwgYW5kIGhvdyB0aGUgdmFsdWVzIGNoYW5nZS4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgaXMgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNQVlXUklURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM9Mjk4PXBmcnRfbG9nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmMtMzA5LVx0LyogY2hhbmdpbmcgZnJvbSByZWFkIHRvIHdyaXRlIHdpdGggbXByb3RlY3QgaXMgbm90IGFsbG93ZWQgKi9cbmRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM6MzEwOlx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jLTMxMS1cbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmM9NjA0MT1zdGF0aWMgaW50IGJpbmRlcl9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMtNjA1OC1cdH1cbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo2MDU5Olx0dm1fZmxhZ3NfbW9kKHZtYSwgVk1fRE9OVENPUFkgfCBWTV9NSVhFRE1BUCwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jLTYwNjAtXG4tLVxuZHJpdmVycy9hbmRyb2lkL3Rlc3RzL2JpbmRlcl9hbGxvY19rdW5pdC5jPTQ3OD1zdGF0aWMgaW50IGJpbmRlcl9hbGxvY190ZXN0X21tYXBfaGFuZGxlcihzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5kcml2ZXJzL2FuZHJvaWQvdGVzdHMvYmluZGVyX2FsbG9jX2t1bml0LmMtNDgyLVxuZHJpdmVycy9hbmRyb2lkL3Rlc3RzL2JpbmRlcl9hbGxvY19rdW5pdC5jOjQ4MzpcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRDT1BZIHwgVk1fTUlYRURNQVAsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYy00ODQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jPTM2OD1zdGF0aWMgaW50IGFtZGdwdV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zNzgtXHQgKiBmb3IgZGVidWdnZXIgYWNjZXNzIHRvIGludmlzaWJsZSBWUkFNLiBTaG91bGQgaGF2ZSB1c2VkIE1BUF9TSEFSRURcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzozNzk6XHQgKiBpbnN0ZWFkLiBDbGVhcmluZyBWTV9NQVlXUklURSBwcmV2ZW50cyB0aGUgbWFwcGluZyBmcm9tIGV2ZXJcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODAtXHQgKiBiZWNvbWluZyB3cml0YWJsZSBhbmQgbWFrZXMgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpIGZhbHNlLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODMtXHQgICAgISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX0FDQ0VTU19GTEFHUykpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6Mzg0Olx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYz05OTA9aTkxNV9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTEwMDItXHRcdH1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmM6MTAwMzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jLTEwMDQtXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYz00NDU9aW50IHBhbnRob3JfZGV2aWNlX21tYXBfaW8oc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTYtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2RldmljZS5jOjQ1NzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2RldmljZS5jLTQ1OC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jPTczMT1zdGF0aWMgaW50IHZjNF9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMtNzQwLVxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYzo3NDE6XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDItXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmM9MTcwMj1zdGF0aWMgaW50IHhlX29hX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jLTE3MjYtXHR2bV9mbGFnc19tb2Qodm1hLCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAgfCBWTV9ET05UQ09QWSxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jOjE3Mjc6XHRcdCAgICAgVk1fTUFZV1JJVEUgfCBWTV9NQVlFWEVDKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9vYS5jLTE3MjgtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYz03Mjk9c3RhdGljIHZtX2ZhdWx0X3QgcmRtYV91bWFwX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMtNzM4LVx0LyogUmVhZCBvbmx5IHBhZ2VzIGNhbiBqdXN0IHVzZSB0aGUgc3lzdGVtIHplcm8gcGFnZS4gKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmM6NzM5Olx0aWYgKCEodm1mLVx1MDAzZXZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1dSSVRFIHwgVk1fTUFZV1JJVEUpKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03NDAtXHRcdHZtZi1cdTAwM2VwYWdlID0gWkVST19QQUdFKHZtZi1cdTAwM2VhZGRyZXNzKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jPTMxOD1zdGF0aWMgaW50IGhmaTFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy0zODktXHRcdG1lbWxlbiA9IFBBR0VfU0laRTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6MzkwOlx0XHRmbGFncyBcdTAwMjY9IH5WTV9NQVlXUklURTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtMzkxLVx0XHRmbGFncyB8PSBWTV9ET05UQ09QWSB8IFZNX0RPTlRFWFBBTkQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy00MjQtXHRcdH1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6NDI1Olx0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNDI2LVx0XHQvKlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTEzLVx0XHRtZW1kbWEgPSB1Y3R4dC1cdTAwM2VyY3ZoZHJxdGFpbGFkZHJfZG1hO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzo1MTQ6XHRcdGZsYWdzIFx1MDAyNj0gflZNX01BWVdSSVRFO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MTUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTMxLVx0XHRmbGFncyB8PSBWTV9JTyB8IFZNX0RPTlRFWFBBTkQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jOjUzMjpcdFx0ZmxhZ3MgXHUwMDI2PSB+Vk1fTUFZV1JJVEU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTUzMy1cdFx0dm1mID0gMTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9MjQ1OT1zdGF0aWMgaW50IG1seDVfaWJfbW1hcF9jbG9ja19pbmZvX3BhZ2Uoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzEtXHRcdHJldHVybiAtRVBFUk07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjQ3MjpcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzMtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTI3NDY9c3RhdGljIGludCBtbHg1X2liX21tYXAoc3RydWN0IGliX3Vjb250ZXh0ICppYmNvbnRleHQsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yNzcyLVx0XHRcdHJldHVybiAtRVBFUk07XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6Mjc3MzpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjc3NC1cbi0tXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM9ODk9c3RhdGljIGludCBvcGVuX2RpY2VfbW1hcF9wcmVwYXJlKHN0cnVjdCB2bV9hcmVhX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9taXNjL29wZW4tZGljZS5jLTk4LVx0XHQvKiBFbnN1cmUgdXNlcnNwYWNlIGNhbm5vdCBhY3F1aXJlIFZNX1dSSVRFIGxhdGVyLiAqL1xuZHJpdmVycy9taXNjL29wZW4tZGljZS5jOjk5Olx0XHR2bWFfZGVzY19jbGVhcl9mbGFncyhkZXNjLCBWTUFfTUFZV1JJVEVfQklUKTtcbmRyaXZlcnMvbWlzYy9vcGVuLWRpY2UuYy0xMDAtXHR9XG4tLVxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvcG10L2NsYXNzLmM9MTEwPWludGVsX3BtdF9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjEtXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYzoxMjI6XHRpZiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fV1JJVEUgfCBWTV9NQVlXUklURSkpXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjMtXHRcdHJldHVybiAtRVJPRlM7XG4tLVxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM9MzcxPXN0YXRpYyBpbnQgZGF4X2Rldm1hcChzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmMtMzkwLVx0XHRyZXR1cm4gLUVQRVJNO1xuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM6MzkxOlx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL3NidXMvY2hhci9vcmFkYXguYy0zOTItXG4tLVxuZHJpdmVycy91c2IvbW9uL21vbl9iaW4uYz0xMjc2PXN0YXRpYyBpbnQgbW9uX2Jpbl9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jLTEyODMtXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jOjEyODQ6XHR2bV9mbGFnc19tb2Qodm1hLCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAsIFZNX01BWVdSSVRFKTtcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmMtMTI4NS1cdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBmaWxwLVx1MDAzZXByaXZhdGVfZGF0YTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYz01Njg9aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTk5LVx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwMDpcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTQ4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGFuZCBpdHMgSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBgdmZpb19wbGF0Zm9ybV9tbWFwYCBoYW5kbGVzIG1lbW9yeSBtYXBwaW5nLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNwZWNpZmljYWxseSB0YWtpbmcgY2FyZSBvZiBjbGVhcmluZyB0aGUgYFZNX01BWVdSSVRFYCBmbGFnIHdoZW4gZGVhbGluZyB3aXRoIHJlZ2lvbnMgdGhhdCBhcmUsIHlvdSBrbm93LCByZWFkLW9ubHkuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgbWVhc3VyZSwgZW5zdXJpbmcgd2UgZG9uJiMzOTt0IGFjY2lkZW50YWxseSBhbGxvdyB3cml0ZXMgdG8gbWVtb3J5IHdlIHNob3VsZG4mIzM5O3QuIE1ha2VzIHNlbnNlLiBCdXQgSSBuZWVkIHRvIHNlZSBob3cgYHZmaW8tcGNpYCBpbnRlcmFjdHMgd2l0aCB0aGlzIGJlaGF2aW9yLiBUaW1lIHRvIGRlbHZlIGludG8gYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYCBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBhbmQgZGF0YSBmbG93cyB0aGVyZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTExODg9c3RhdGljIGludCBoaXNpX2FjY192Zl9xbV9pbml0KHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEyMTctXHRcdCAqIHdlIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIGNvbnRyb2wgc3BhY2UgZnJvbVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMjE4Olx0XHQgKiBHdWVzdChQbGVhc2Ugc2VlIG1tYXAvaW9jdGwvcmVhZC93cml0ZSBvdmVycmlkZSBmdW5jdGlvbnMpLlxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMjE5LVx0XHQgKlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTI5Nj1zdGF0aWMgaW50IGhpc2lfYWNjX3BjaV9yd19hY2Nlc3NfY2hlY2soc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzE4LVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMzE5OnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMyMC1cdFx0XHRcdCAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzQwLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxMzQxOlx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfbW1hcChjb3JlX3ZkZXYsIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEzNDItfVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTU4MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTkxLVx0LndyaXRlID0gaGlzaV9hY2NfdmZpb19wY2lfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1OTI6XHQubW1hcCA9IGhpc2lfYWNjX3ZmaW9fcGNpX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE1OTMtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxMi1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MTM6XHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxNC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM9MTM4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBtbHg1dmZfcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTYtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzk3Olx0Lm1tYXAgPSB2ZmlvX3BjaV9jb3JlX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTgtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NTI9c3RhdGljIHZtX2ZhdWx0X3QgbnZncmFjZV9ncHVfdmZpb19wY2lfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDU2LVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDU3OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgbnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHMgPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NTgtXHQuZmF1bHQgPSBudmdyYWNlX2dwdV92ZmlvX3BjaV9mYXVsdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NjU9c3RydWN0IG52Z3JhY2VfZ3B1X3BjaV9jb3JlX2RldmljZSAqdm1hX3RvX252ZGV2KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTQ2Ny1cdC8qIENoZWNrIGlmIHRoaXMgVk1BIGJlbG9uZ3MgdG8gdXMgKi9cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ2ODpcdGlmICh2bWEtXHUwMDNldm1fb3BzICE9IFx1MDAyNm52Z3JhY2VfZ3B1X3ZmaW9fcGNpX21tYXBfb3BzKVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDY5LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzMtXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0NzQ6c3RhdGljIGludCBudmdyYWNlX2dwdV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDc1LVx0XHRcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODctXHRpZiAoIW1lbXJlZ2lvbilcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ4ODpcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfbW1hcChjb3JlX3ZkZXYsIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODktXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00OTAtXHQvKlxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDkxOlx0ICogUmVxdWVzdCB0byBtbWFwIHRoZSBCQVIuIE1hcCB0byB0aGUgQ1BVIGFjY2Vzc2libGUgbWVtb3J5IG9uIHRoZVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDkyLVx0ICogR1BVIHVzaW5nIHRoZSBtZW1vcnkgaW5mb3JtYXRpb24gZ2F0aGVyZWQgZnJvbSB0aGUgc3lzdGVtIEFDUElcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MjYtXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1Mjc6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2bnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHM7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MjgtXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbnZkZXY7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9NTMzPXN0YXRpYyBpbnQgbnZncmFjZV9ncHVfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTUzOS1cdFx0XHQgICAgIGNvcmVfZGV2aWNlLnZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NTQwOlx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm9fY2FwX3NwYXJzZV9tbWFwICpzcGFyc2U7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01NDEtXHRzdHJ1Y3QgbWVtX3JlZ2lvbiAqbWVtcmVnaW9uO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTY3ND1udmdyYWNlX2dwdV93cml0ZV9jb25maWdfZW11KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTcwOC0gKiBhcyB2ZmlvIGRvZXMgbm90IHJlcXVpcmUgdGhlIHVzZXJzcGFjZSBkcml2ZXIgdG8gb25seSBwZXJmb3JtIGFjY2Vzc2VzIHRocm91Z2hcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjcwOTogKiBtbWFwcyBvZiB0aGUgdmZpby1wY2kgQkFSIHJlZ2lvbnMgYW5kIHN1Y2ggYWNjZXNzZXMgc2hvdWxkIGJlIHN1cHBvcnRlZCB1c2luZ1xuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNzEwLSAqIHZmaW9fZGV2aWNlX29wcyByZWFkL3dyaXRlIGltcGxlbWVudGF0aW9ucy5cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3NC1cdC53cml0ZVx0XHQ9IG52Z3JhY2VfZ3B1X3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA3NTpcdC5tbWFwXHRcdD0gbnZncmFjZV9ncHVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzYtXHQucmVxdWVzdFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5OS1cdC53cml0ZVx0XHQ9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMTAwOlx0Lm1tYXBcdFx0PSB2ZmlvX3BjaV9jb3JlX21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMTAxLVx0LnJlcXVlc3RcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHBkc192ZmlvX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMS1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjIwMjpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0yMDMtXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM9NjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHFhdF92Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYy02MTMtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxNDpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTYxNS1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC0yLS8qXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6MzogKiBWRklPIFBDSSBtbWFwL21tYXBfZmF1bHQgdHJhY2Vwb2ludHNcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC00LSAqXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTE2LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjE3OlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXBfZmF1bHQsXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtMTgtXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTM5LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjQwOlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXAsXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtNDEtXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTY0LVxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjY1OlRSQUNFX0VWRU5UKHZmaW9fcGNpX25wdTJfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02Ni1cdFRQX1BST1RPKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBsb25nIGhwYSwgdW5zaWduZWQgbG9uZyB1YSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU5LVx0LndyaXRlXHRcdD0gdmZpb19wY2lfY29yZV93cml0ZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNjA6XHQubW1hcFx0XHQ9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNjEtXHQucmVxdWVzdFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTY0PXN0YXRpYyB1bnNpZ25lZCBpbnQgdmZpb19wY2lfc2V0X2RlY29kZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCBzaW5nbGVfdmdhKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE5NC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE5NTpzdGF0aWMgdm9pZCB2ZmlvX3BjaV9wcm9iZV9tbWFwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTYte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwNi1cdFx0aWYgKHZkZXYtXHUwMDNlcGRldi1cdTAwM2Vub25fbWFwcGFibGVfYmFycylcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjIwNzpcdFx0XHRnb3RvIG5vX21tYXA7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDgtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDktXHRcdGlmICghKHJlcy1cdTAwM2VmbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9NRU0pKVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjEwOlx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxMS1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMTctXHRcdGlmICghcmVzb3VyY2Vfc2l6ZShyZXMpKVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjE4Olx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxOS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIyMC1cdFx0aWYgKHJlc291cmNlX3NpemUocmVzKSBcdTAwM2U9IFBBR0VfU0laRSkge1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjIxOlx0XHRcdHZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjIyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIzMi1cdFx0XHRpZiAoZHVtbXlfcmVzID09IE5VTEwpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMzM6XHRcdFx0XHRnb3RvIG5vX21tYXA7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMzQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQxLVx0XHRcdFx0a2ZyZWUoZHVtbXlfcmVzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0MjpcdFx0XHRcdGdvdG8gbm9fbW1hcDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0My1cdFx0XHR9XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQ2LVx0XHRcdFx0XHRcdTAwMjZ2ZGV2LVx1MDAzZWR1bW15X3Jlc291cmNlc19saXN0KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NzpcdFx0XHR2ZGV2LVx1MDAzZWJhcl9tbWFwX3N1cHBvcnRlZFtiYXJdID0gdHJ1ZTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0OC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNTctXHRcdCAqL1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjU4Om5vX21tYXA6XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTk6XHRcdHZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSBmYWxzZTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI2MC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz04Mzk9dm9pZCB2ZmlvX3BjaV9jb3JlX2ZpbmlzaF9lbmFibGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQwLXtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjg0MTpcdHZmaW9fcGNpX3Byb2JlX21tYXBzKHZkZXYpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtODQyLSNpZiBJU19FTkFCTEVEKENPTkZJR19FRUgpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9OTg3PXN0YXRpYyBpbnQgdmZpb19wY2lfZm9yX2VhY2hfc2xvdF9vcl9idXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEwMDE6c3RhdGljIGludCBtc2l4X21tYXBwYWJsZV9jYXAoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMi1cdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19pbmZvX2NhcCAqY2Fwcylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xMTI3PWludCB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1Mi1cdFx0XHQgICAgICBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMTUzOlx0XHRpZiAodmRldi1cdTAwM2ViYXJfbW1hcF9zdXBwb3J0ZWRbaW5mby1cdTAwM2VpbmRleF0pIHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTQtXHRcdFx0aW5mby1cdTAwM2VmbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTUtXHRcdFx0aWYgKGluZm8tXHUwMDNlaW5kZXggPT0gdmRldi1cdTAwM2Vtc2l4X2Jhcikge1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTE1NjpcdFx0XHRcdHJldCA9IG1zaXhfbW1hcHBhYmxlX2NhcCh2ZGV2LCBjYXBzKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTctXHRcdFx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE3NzU9RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfdm1mX2luc2VydF9wZm4pO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTc3Ni1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE3Nzc6c3RhdGljIHZtX2ZhdWx0X3QgdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTc3OC1cdFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG9yZGVyKVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODAyOnN0YXRpYyB2bV9mYXVsdF90IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDMte1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgwNDpcdHJldHVybiB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQodm1mLCAwKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MDUtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgwNi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2ZmlvX3BjaV9tbWFwX29wcyA9IHtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDg6XHQuZmF1bHQgPSB2ZmlvX3BjaV9tbWFwX3BhZ2VfZmF1bHQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA5LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxMDpcdC5odWdlX2ZhdWx0ID0gdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0LFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgxMS0jZW5kaWZcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODEzLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxNDppbnQgdmZpb19wY2lfY29yZV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MTUte1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MzQtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODM1Olx0XHRpZiAocmVnaW9uLVx1MDAzZW9wcyBcdTAwMjZcdTAwMjYgcmVnaW9uLVx1MDAzZW9wcy1cdTAwM2VtbWFwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgzNi1cdFx0ICAgIChyZWdpb24tXHUwMDNlZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4Mzc6XHRcdFx0cmV0dXJuIHJlZ2lvbi1cdTAwM2VvcHMtXHUwMDNlbW1hcCh2ZGV2LCByZWdpb24sIHZtYSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODM4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODQxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4NDI6XHRpZiAoIXZkZXYtXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2luZGV4XSlcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4NDMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODctXHRcdFx0Vk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4ODg6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2dmZpb19wY2lfbW1hcF9vcHM7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODg5LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4OTEtfVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTg5MjpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX21tYXApO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg5My1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYz0yOTg9c3RhdGljIGludCB2aXJ0aW92Zl9zZXRfbm90aWZ5X2FkZHIoc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzA0LVx0ICogU2V0dXAgdGhlIEJBUiB3aGVyZSB0aGUgJiMzOTtub3RpZnkmIzM5OyBleGlzdHMgdG8gYmUgdXNlZCBieSB2ZmlvIGFzIHdlbGxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jOjMwNTpcdCAqIFRoaXMgd2lsbCBsZXQgdXMgbW1hcCBpdCBvbmx5IG9uY2UgYW5kIHVzZSBpdCB3aGVuIG5lZWRlZC5cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNi1cdCAqL1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTMxNj1pbnQgdmlydGlvdmZfb3Blbl9sZWdhY3lfaW8oc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzIyLVx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYzozMjM6XHQgKiBhbmQgd2lsbCBjbG9zZSBhbGwgdGhlIHByZXZpb3VzIG1tYXBzLCBzbyBpdCBzZWVtcyB0aGF0IHRoZVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzI0LVx0ICogdmFsaWQgbGlmZSBjeWNsZSBmb3IgdGhlICYjMzk7bm90aWZ5JiMzOTsgYWRkciBpcyBwZXIgb3Blbi9jbG9zZS5cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfbG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05NC1cdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTU6XHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05Ni1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMDY9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfdHJhbl9sbV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNi1cdC53cml0ZSA9IHZpcnRpb3ZmX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjExNzpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExOC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzgtXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzOTpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTE0MC1cdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jPTUyMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB4ZV92ZmlvX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMyLVx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jOjUzMzpcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTM0LVx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTg0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUGxhdGZvcm0gRGV2aWNlIFJlZ2lvbiBWdWxuZXJhYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBgdmZpb19wbGF0Zm9ybV9tbWFwYCB3aXRoaW4gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gRXNzZW50aWFsbHksIHdoZW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSBtbWFwJiMzOTtzIGEgVkZJTyBwbGF0Zm9ybSBkZXZpY2UgcmVnaW9uLCB0aGUgY29kZSBjaGVja3MgaWYgYFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURWAgaXMgKm5vdCogcHJlc2VudCBpbiB0aGUgcmVnaW9uIGZsYWdzLiBJZiBpdCBpc24mIzM5O3QsIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAgZ2V0cyBjYWxsZWQsIHdoaWNoIHNvdW5kcyBsaWtlIGl0JiMzOTtzIGludGVudGlvbmFsbHkgcHJldmVudGluZyBgbXByb3RlY3QoUFJPVF9XUklURSlgIGZyb20gbWFraW5nIGEgcmVhZC1vbmx5IG1hcHBpbmcgd3JpdGFibGUuIFNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQsIGFuZCBpcyBpdCBldmVuIHJlYWNoYWJsZT8KCkZpcnN0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gSXMgdGhpcyBldmVuIGEgdGFyZ2V0PwoKSXQmIzM5O3Mga2VybmVsIGNvZGUsIHNvIG5vLgoKSXMgdGhpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IFRoaXMgc2VlbXMgbGlrZSB0aGUgaW1wb3J0YW50IHBvaW50LiAgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJiMzOTt0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIHRoZSBsaWtlLCB3aGljaCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBvciBjYXJkIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBIYW5nIG9uLCBpcyBgVkZJT19QTEFURk9STWAgb25lIG9mICp0aG9zZSo/IE5vLCB3YWl0ISBWRklPIHBsYXRmb3JtIGlzIGEgZ2VuZXJpYyBrZXJuZWwgZHJpdmVyIGZyYW1ld29yayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbm90IHNvbWUgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBvciBHUFUuIFNvIHRoYXQmIzM5O3MgZ29vZC4KCkFscmlnaHQsIHdoYXQgYWJvdXQgY29uZmlndXJhdGlvbnM/IExldCYjMzk7cyBjaGVjayBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgOiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGVuYWJsZWQgaWYgd2UgaGF2ZSBBUk0sIEFSTTY0LCBvciB0aGUgY29tcGlsZSB0ZXN0LiAgSXQgYWxzbyBzZWVtcyB0byBkZXBlbmQgb24gYFZGSU9fVklSUUZEYC4gIFRoZW4sIGxldCYjMzk7cyBhbHNvIGNoZWNrIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIFZGSU9cbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gTm9uLVByaXZpbGVnZWQgdXNlcnNwYWNlIGRyaXZlciBmcmFtZXdvcmtcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBJT01NVV9BUElcbiAgIDU6XHRcdGRlcGVuZHMgb24gSU9NTVVGRCB8fCAhSU9NTVVGRFxuICAgNjpcdFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcbiAgIDc6XHRcdHNlbGVjdCBWRklPX0dST1VQIGlmIFNQQVBSX1RDRV9JT01NVSB8fCBJT01NVUZEPW5cbiAgIDg6XHRcdHNlbGVjdCBWRklPX0RFVklDRV9DREVWIGlmICFWRklPX0dST1VQXG4gICA5Olx0XHRzZWxlY3QgVkZJT19DT05UQUlORVIgaWYgSU9NTVVGRD1uXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFZGSU8gcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHNlY3VyZSB1c2Vyc3BhY2UgZGV2aWNlIGRyaXZlcnMuXG4gIDEyOlx0XHQgIFNlZSBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby5yc3QgZm9yIG1vcmUgZGV0YWlscy5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXG4gIDE1Olx0XG4gIDE2Olx0aWYgVkZJT1xuICAxNzpcdGNvbmZpZyBWRklPX0RFVklDRV9DREVWXG4gIDE4Olx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIHRoZSBWRklPIGNkZXYgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gSU9NTVVGRCBcdTAwMjZcdTAwMjYgIVNQQVBSX1RDRV9JT01NVVxuICAyMDpcdFx0ZGVmYXVsdCAhVkZJT19HUk9VUFxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBUaGUgVkZJTyBkZXZpY2UgY2RldiBpcyBhbm90aGVyIHdheSBmb3IgdXNlcnNwYWNlIHRvIGdldCBkZXZpY2VcbiAgMjM6XHRcdCAgYWNjZXNzLiBVc2Vyc3BhY2UgZ2V0cyBkZXZpY2UgZmQgYnkgb3BlbmluZyBkZXZpY2UgY2RldiB1bmRlclxuICAyNDpcdFx0ICAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWCwgYW5kIHRoZW4gYmluZCB0aGUgZGV2aWNlIGZkIHdpdGggYW4gaW9tbXVmZFxuICAyNTpcdFx0ICB0byBzZXQgdXAgc2VjdXJlIERNQSBjb250ZXh0IGZvciBkZXZpY2UgYWNjZXNzLiAgVGhpcyBpbnRlcmZhY2UgZG9lc1xuICAyNjpcdFx0ICBub3Qgc3VwcG9ydCBub2lvbW11LlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgVkZJT19HUk9VUFxuICAzMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBncm91cCAvZGV2L3ZmaW8vJGdyb3VwX2lkXCYjMzQ7XG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgIFZGSU8gZ3JvdXAgc3VwcG9ydCBwcm92aWRlcyB0aGUgdHJhZGl0aW9uYWwgbW9kZWwgZm9yIGFjY2Vzc2luZ1xuICAzNTpcdFx0ICAgZGV2aWNlcyB0aHJvdWdoIFZGSU8gYW5kIGlzIHVzZWQgYnkgdGhlIG1ham9yaXR5IG9mIHVzZXJzcGFjZVxuICAzNjpcdFx0ICAgYXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG1ha2luZyB1c2Ugb2YgVkZJTy5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBZLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBWRklPX0NPTlRBSU5FUlxuICA0MTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjb250YWluZXIgL2Rldi92ZmlvL3ZmaW9cJiMzNDtcbiAgNDI6XHRcdHNlbGVjdCBWRklPX0lPTU1VX1RZUEUxIGlmIE1NVSBcdTAwMjZcdTAwMjYgKFg4NiB8fCBTMzkwIHx8IEFSTSB8fCBBUk02NClcbiAgNDM6XHRcdGRlcGVuZHMgb24gVkZJT19HUk9VUFxuICA0NDpcdFx0ZGVmYXVsdCB5XG4gIDQ1Olx0XHRoZWxwXG4gIDQ2Olx0XHQgIFRoZSBWRklPIGNvbnRhaW5lciBpcyB0aGUgY2xhc3NpYyBpbnRlcmZhY2UgdG8gVkZJTyBmb3IgZXN0YWJsaXNoaW5nXG4gIDQ3Olx0XHQgIElPTU1VIG1hcHBpbmdzLiBJZiBOIGlzIHNlbGVjdGVkIGhlcmUgdGhlbiBJT01NVUZEIG11c3QgYmUgdXNlZCB0b1xuICA0ODpcdFx0ICBtYW5hZ2UgdGhlIG1hcHBpbmdzLlxuICA0OTpcdFxuICA1MDpcdFx0ICBVbmxlc3MgdGVzdGluZyBJT01NVUZEIHNheSBZIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjA3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyBgZHJpdmVycy92ZmlvL0tjb25maWdgOgoKKipEaXZpbmcgaW50byB0aGUgVkZJTyBDb25maWd1cmF0aW9uIFNwYWNlKioKCk9rYXksIHRpbWUgdG8gdGFrZSBhIGRlZXBlciBkaXZlLiBJJiMzOTt2ZSBmaW5pc2hlZCB3aXRoIHRoYXQgaW5pdGlhbCBzZWN0aW9uLCBzbyBteSBhdHRlbnRpb24gbm93IHR1cm5zIHRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBvciBuZXcgZmVhdHVyZXMgdGhhdCBoYXZlIGVtZXJnZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29uZmlnIG9wdGlvbnMsIHRoZWlyIHJlbGF0aW9uc2hpcHMgd2l0aCBvdGhlciBjb21wb25lbnRzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCBhcmNoaXRlY3R1cmFsIHN1cHBvcnQuIEkmIzM5O2xsIGxpa2VseSBtZW50YWxseSBjYXRlZ29yaXplIHRoZW0gYXMgSSBnbzogY29yZSBWRklPIGZlYXR1cmVzLCBkZXZpY2Utc3BlY2lmaWMgb3B0aW9ucywgc2VjdXJpdHktcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBleHBlcmltZW50YWwgb3IgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSByZWNlbnRseSBhZGRlZCBvcHRpb25zLCBhcyB0aGVzZSBvZnRlbiByZXF1aXJlIGNhcmVmdWwgcmV2aWV3LiBBbnkgYXJlYXMgdGhhdCBsb29rIGNvbXBsZXggb3IgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgd2lsbCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMgYW5kIGRvY3VtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSByb2J1c3RuZXNzLCBzZWN1cml0eSwgYW5kIHBlcmZvcm1hbmNlIG9mIHRoZSBWRklPIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgZGV2aWwsIG9yIGluIHRoaXMgY2FzZSwgdGhlIHNpZ25pZmljYW50IGltcGxpY2F0aW9ucywgYXJlIG9mdGVuIGluIHRoZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MTpcdFxuICA1MjpcdGlmIFZGSU9fQ09OVEFJTkVSXG4gIDUzOlx0Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcbiAgNTQ6XHRcdHRyaXN0YXRlXG4gIDU1Olx0XHRkZWZhdWx0IG5cbiAgNTY6XHRcbiAgNTc6XHRjb25maWcgVkZJT19JT01NVV9TUEFQUl9UQ0VcbiAgNTg6XHRcdHRyaXN0YXRlXG4gIDU5Olx0XHRkZXBlbmRzIG9uIFNQQVBSX1RDRV9JT01NVVxuICA2MDpcdFx0ZGVmYXVsdCBWRklPXG4gIDYxOlx0ZW5kaWZcbiAgNjI6XHRcbiAgNjM6XHRjb25maWcgVkZJT19OT0lPTU1VXG4gIDY0Olx0XHRib29sIFwmIzM0O1ZGSU8gTm8tSU9NTVUgc3VwcG9ydFwmIzM0O1xuICA2NTpcdFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXG4gIDY2Olx0XHRoZWxwXG4gIDY3Olx0XHQgIFZGSU8gaXMgYnVpbHQgb24gdGhlIGFiaWxpdHkgdG8gaXNvbGF0ZSBkZXZpY2VzIHVzaW5nIHRoZSBJT01NVS5cbiAgNjg6XHRcdCAgT25seSB3aXRoIGFuIElPTU1VIGNhbiB1c2Vyc3BhY2UgYWNjZXNzIHRvIERNQSBjYXBhYmxlIGRldmljZXMgYmVcbiAgNjk6XHRcdCAgY29uc2lkZXJlZCBzZWN1cmUuICBWRklPIE5vLUlPTU1VIG1vZGUgZW5hYmxlcyBJT01NVSBncm91cHMgZm9yXG4gIDcwOlx0XHQgIGRldmljZXMgd2l0aG91dCBJT01NVSBiYWNraW5nIGZvciB0aGUgcHVycG9zZSBvZiByZS11c2luZyB0aGUgVkZJT1xuICA3MTpcdFx0ICBpbmZyYXN0cnVjdHVyZSBpbiBhIG5vbi1zZWN1cmUgbW9kZS4gIFVzZSBvZiB0aGlzIG1vZGUgd2lsbCByZXN1bHRcbiAgNzI6XHRcdCAgaW4gYW4gdW5zdXBwb3J0YWJsZSBrZXJuZWwgYW5kIHdpbGwgdGhlcmVmb3JlIHRhaW50IHRoZSBrZXJuZWwuXG4gIDczOlx0XHQgIERldmljZSBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMgaXMgYWxzbyBub3QgcG9zc2libGUgd2l0aFxuICA3NDpcdFx0ICB0aGlzIG1vZGUgc2luY2UgdGhlcmUgaXMgbm8gSU9NTVUgdG8gcHJvdmlkZSBETUEgdHJhbnNsYXRpb24uXG4gIDc1Olx0XG4gIDc2Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBWRklPX1ZJUlFGRFxuICA3OTpcdFx0Ym9vbFxuICA4MDpcdFx0c2VsZWN0IEVWRU5URkRcbiAgODE6XHRcdGRlZmF1bHQgblxuICA4MjpcdFxuICA4MzpcdGNvbmZpZyBWRklPX0RFQlVHRlNcbiAgODQ6XHRcdGJvb2wgXCYjMzQ7RXhwb3J0IFZGSU8gaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbiAgODU6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAgODY6XHRcdGhlbHBcbiAgODc6XHRcdCAgQWxsb3dzIGV4cG9zdXJlIG9mIFZGSU8gZGV2aWNlIGludGVybmFscy4gVGhpcyBvcHRpb24gZW5hYmxlc1xuICA4ODpcdFx0ICB0aGUgdXNlIG9mIGRlYnVnZnMgYnkgVkZJTyBkcml2ZXJzIGFzIHJlcXVpcmVkLiBUaGUgZGV2aWNlIGNhblxuICA4OTpcdFx0ICBjYXVzZSB0aGUgVkZJTyBjb2RlIGNyZWF0ZSBhIHRvcC1sZXZlbCBkZWJ1Zy92ZmlvIGRpcmVjdG9yeVxuICA5MDpcdFx0ICBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFuZCB0aGVuIHBvcHVsYXRlIGEgc3ViZGlyZWN0b3J5IHdpdGhcbiAgOTE6XHRcdCAgZW50cmllcyBhcyByZXF1aXJlZC5cbiAgOTI6XHRcbiAgOTM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCYjMzQ7XG4gIDk0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnXCYjMzQ7XG4gIDk1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9tZGV2L0tjb25maWdcJiMzNDtcbiAgOTY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG4gIDk3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1wmIzM0O1xuICA5ODpcdGVuZGlmXG4gIDk5Olx0XG4gMTAwOlx0c291cmNlIFwmIzM0O3ZpcnQvbGliL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVkZJTyBhbmQgVkZJT19QTEFURk9STSBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgYFZGSU9gIGFuZCBgVkZJT19QTEFURk9STWAuIEkgc2VlIHRoYXQgYENPTVBJTEVfVEVTVGAgaXMgaW52b2x2ZWQgb24gYW1kNjQsIHdoaWNoIGlzIGludGVyZXN0aW5nIHNpbmNlIGl0IHR5cGljYWxseSB0YXJnZXRzIEFSTSBhcmNoaXRlY3R1cmVzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdmVyaWZ5aW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiBidWlsZCBgVkZJT19QTEFURk9STWAgb24gYW1kNjQsIGdpdmVuIHRoYXQgYFZGSU9gLCBgVkZJT19QTEFURk9STWAsIGFuZCBgQ09NUElMRV9URVNUYCBhcmUgZW5hYmxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkuCgpIYW5nIG9uLCBJIHJlbWVtYmVyIGBWRklPX1BMQVRGT1JNX0JBU0VgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BMQVRGT1JNYC4gU28sIEkgc2hvdWxkIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgVkZJT19QTEFURk9STWAsIGBDT01QSUxFX1RFU1RgLCBhbmQgb2YgY291cnNlLCBgVkZJT2AuIExldCYjMzk7cyBjb25maXJtIHRob3NlIGFyZSBhbGwgaW4gb3JkZXIuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdgIGZpbGUganVzdCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAuIEJldHRlciB0byBiZSBzYWZlIHRoYW4gc29ycnkhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRpZiBWRklPX1BMQVRGT1JNXG4gICAzOlx0Y29uZmlnIFZGSU9fUExBVEZPUk1fQ0FMWEVEQVhHTUFDX1JFU0VUXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIGNhbHhlZGEgeGdtYWMgcmVzZXQgKERFUFJFQ0FURUQpXCYjMzQ7XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQ2FseGVkYSB4Z21hY1xuICAgNzpcdFxuICAgODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEFNRCBYR0JFIHJlc2V0IChERVBSRUNBVEVEKVwmIzM0O1xuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBFbmFibGVzIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBoYW5kbGUgcmVzZXQgZm9yIEFNRCBYR0JFXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVFxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBCcm9hZGNvbSBGbGV4Uk0gcmVzZXQgKERFUFJFQ0FURUQpXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFSQ0hfQkNNX0lQUk9DIHx8IENPTVBJTEVfVEVTVFxuICAyMDpcdFx0ZGVmYXVsdCBBUkNIX0JDTV9JUFJPQ1xuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBFbmFibGVzIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBoYW5kbGUgcmVzZXQgZm9yIEJyb2FkY29tIEZsZXhSTVxuICAyMzpcdFxuICAyNDpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjU6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ3NAoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiA4ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBWRklPIFBsYXRmb3JtIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24uIEkmIzM5O20gaW52ZXN0aWdhdGluZyBhIHNwZWNpZmljIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AgZmlsZS4gVGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5LCBhZGRyZXNzZXMgaG93IHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyAoVkZJTykgcGxhdGZvcm0gZHJpdmVyIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgKGBtbWFwYCkgb2YgZGV2aWNlIHJlZ2lvbnMuCgpFc3NlbnRpYWxseSwgSSBzZWUgdGhhdCBgdmZpb19wbGF0Zm9ybV9tbWFwYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBoYW5kbGluZyBgbW1hcCgpYCBjYWxscyBtYWRlIGJ5IHVzZXJzcGFjZSBwcm9jZXNzZXMgdGhhdCBoYXZlIGZpbGUgZGVzY3JpcHRvcnMgZm9yIFZGSU8gcGxhdGZvcm0gZGV2aWNlcy4gVGhpcyBmdW5jdGlvbiB0aGVuIGludGVyYWN0cyB3aXRoIHRoZSBWRklPIGNvcmUuIE5vdywgdGhlIGNyaXRpY2FsIGNoYW5nZTogdGhlIGNvZGUgbm93ICpjbGVhcnMqIHRoZSBgVk1fTUFZV1JJVEVgIGZsYWcgb24gYSBgdm1hYCAodmlydHVhbCBtZW1vcnkgYXJlYSkgaWYgdGhlIG1hcHBlZCByZWdpb24gZG9lc24mIzM5O3QgaGF2ZSB0aGUgYFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURWAgZmxhZyBzZXQuIFRoaXMgaXMgY2xldmVyLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IHVzZXJzcGFjZSBmcm9tIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYCB0byBlc2NhbGF0ZSByZWFkLW9ubHkgbWFwcGluZ3MgaW50byB3cml0ZWFibGUgb25lcywgdGh1cyBlbmZvcmNpbmcgcmVhZC1vbmx5IGFjY2VzcyB3aGVyZSBhcHByb3ByaWF0ZS4KCk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEkmIzM5O20gYXNzZXNzaW5nIHRoaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZzoKCiogICAqKlJlYWNoYWJsZSBjb2RlOioqIFRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIHJlYWNoYWJsZSwgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyBgbW1hcGAgaGFuZGxpbmcgZm9yIFZGSU8gcGxhdGZvcm0gZGV2aWNlcy4KKiAgICoqVk1BIG1hbmlwdWxhdGlvbjoqKiBJdCBkaXJlY3RseSBtYW5pcHVsYXRlcyBWTUEgZmxhZ3MgKGBWTV9NQVlXUklURWApLCB3aGljaCBkaXJlY3RseSBhbHRlcnMgbWVtb3J5IG1hbmFnZW1lbnQgYmVoYXZpb3IgZm9yIHVzZXJzcGFjZSBkZXZpY2UgbWFwcGluZ3MuCiogICAqKlRlc3RhYmlsaXR5OioqIEl0JiMzOTtzIHJlYWRpbHkgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucyBsaWtlIGBtbWFwYCwgYG1wcm90ZWN0YCwgYW5kIHRyaWdnZXJzIHdyaXRlIGZhdWx0cy4KKiAgICoqV29ydGhGdXp6aW5nID0gVHJ1ZToqKiBCYXNlZCBvbiB0aGUgYWJvdmUsIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgYSB2YWx1YWJsZSB0YXJnZXQuCgpJJiMzOTt2ZSBhbHNvIGNvbmZpcm1lZCB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zOiBgVkZJT2AsIGBWRklPX1BMQVRGT1JNYCwgYW5kIGBDT01QSUxFX1RFU1RgLiBUaGUgbGFzdCBvbmUgaXMgbmVjZXNzYXJ5IG9uIGFtZDY0IGFzIFZGSU8gcGxhdGZvcm0gaGFzIGEgZGVwZW5kZW5jeSBvbiBlaXRoZXIgYEFSTWAsIGBBUk02NGAsIG9yIGBDT01QSUxFX1RFU1RgLgoKU28sIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIE15IGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycyBhcmUgZ29pbmcgdG8gYmU6CgoqICAgYFdvcnRoRnV6emluZ2A6IGB0cnVlYAoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19wbGF0Zm9ybV9tbWFwYCB0byBjbGVhciBgVk1fTUFZV1JJVEVgIG9uIFZNQXMgZm9yIHJlYWQtb25seSBkZXZpY2UgcmVnaW9ucywgcHJldmVudGluZyBgbXByb3RlY3QoKWAgdXBncmFkZXMuIFRoaXMgZGlyZWN0bHkgdG91Y2hlcyByZWFjaGFibGUgVkZTL01NLWZhY2luZyBkZXZpY2UgZHJpdmVyIGNvZGUgYW5kIGFsdGVycyBWTUEgZmxhZyBoYW5kbGluZy4KKiAgIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7dmZpb19wbGF0Zm9ybV9tbWFwJiMzNDtdYAoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7VkZJTyYjMzQ7LCAmIzM0O1ZGSU9fUExBVEZPUk0mIzM0OywgJiMzNDtDT01QSUxFX1RFU1QmIzM0O11gCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLiBOb3csIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O0NPTVBJTEVfVEVTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGxhdGZvcm1fbW1hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB2ZmlvX3BsYXRmb3JtX21tYXAoKSBpbiB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIgdG8gY2xlYXIgVk1fTUFZV1JJVEUgZm9yIHJlYWQtb25seSBkZXZpY2UgcmVnaW9ucywgcHJldmVudGluZyB1c2Vyc3BhY2UgZnJvbSB1cGdyYWRpbmcgcGVybWlzc2lvbnMgdG8gd3JpdGFibGUgdmlhIG1wcm90ZWN0KCkuIFRoaXMgY2hhbmdlcyBWTUEgcGVybWlzc2lvbiBoYW5kbGluZyBvbiBhIHJlYWNoYWJsZSBzeXNjYWxsIGVudHJ5cG9pbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BsYXRmb3JtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVx1MDAzZXZtX2ZsYWdzIHdoZW4gdGhlIHJlZ2lvbiBkb2VzIG5vdCBoYXZlIFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSwgcHJldmVudGluZyBtcHJvdGVjdCgpIGZyb20gdXBncmFkaW5nIHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgdG8gd3JpdGFibGUuIFRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgVk1BIHBlcm1pc3Npb24gZmxhZ3MgYW5kIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSBkYXRhIGJ1ZmZlcnMsIGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBvciBpbnRyb2R1Y2UgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGtlcm5lbCBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwOTIxM2FiNjZiMDgwZTkzNGZlNWI3MjNmYjkxN2NkODQ0ODlkM2MxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwODoyNjo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKaW5kZXggYzcyZGI1YTk5ZWJkYS4uMjBkODdjMjQ0Y2EyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMKQEAgLTU5NSw2ICYjNDM7NTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7CiAKIAlpZiAodmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0udHlwZSAmYW1wOyBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIE5lZWQgZm9yIEtNU0FOIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGdvYWwgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHJ1bi4gTGV0JiMzOTtzIGRpZyBpbi4gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wbGF0Zm9ybV9tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBtZW1vcnkgbWFwcGluZyB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB3aGljaCBhbHdheXMgcmFpc2VzIGEgZmxhZyBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBMZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBjb2RlIHNuaXBwZXQuCgpJdCBzZWVtcyB0byBiZSBkZWFsaW5nIHdpdGggbWVtb3J5IHByb3RlY3Rpb24gZmxhZ3MgZm9yIG1hcHBpbmdzLiBJbnRlcmVzdGluZywgd2UgaGF2ZSBhIGNoZWNrIHByZXZlbnRpbmcgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIGBtcHJvdGVjdCgpYC4gVGhhdCYjMzk7cyBnb29kLCBleHBsaWNpdGx5IGxpbWl0aW5nIHBlcm1pc3Npb25zIGlzIGFsd2F5cyBhIHdpbiBmb3Igc2VjdXJpdHkuIFRoZSBgdm1hLSZndDt2bV9wcml2YXRlX2RhdGFgIGFzc2lnbm1lbnQgaXMgc3RhbmRhcmQsIGFuZCB0aGUgYFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JT2AgY2hlY2sgaXMgYSBjcnVjaWFsIGluZGljYXRvci4gVGhlIHByZXNlbmNlIG9mIE1NSU8gbWFwcGluZ3MgaW4gVkZJTyBpcyBvZnRlbiBhIGhpZ2gtcmlzayBhcmVhLCBJIGtub3cgdGhhdCBmcm9tIHBhc3QgZXhwZXJpZW5jZXMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvZGUgd2l0aGluIHRoZSBicm9hZGVyIFZGSU8gY29udGV4dC4gQXJlIHRoZXJlIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlIHJlZ2lvbnMgYXJlIHNldCB1cCBvciBtYW5hZ2VkPyBEb2VzIHRoaXMgY29kZSBpbnRlcmFjdCB3aXRoIGFueSBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIE1NSU8gcmVnaW9ucz8gVGhpcyBpcyBhbGwgcHJldHR5IGhpZ2gtbGV2ZWwsIGFuZCBhIHNpbXBsZSBpc29sYXRlZCB2aWV3IGlzbiYjMzk7dCBlbm91Z2ggdG8gYXNzZXNzIHByb3Blcmx5LiBJIHdpbGwgZ28gYW5kIGRpdmUgYSBiaXQgZGVlcGVyLCBjaGVjayBmb3Igc2lkZSBlZmZlY3RzIGFuZCBtYXliZSBkbyBhIHF1aWNrIHNlYXJjaCB0byBkaXNjb3ZlciB3aGF0IG90aGVycyBoYXZlIHByZXZpb3VzbHkgZGlzY292ZXJlZCBpbiB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU3MDpcdFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cbiA1NzE6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcbiA1NzI6XHRcdHVuc2lnbmVkIGludCBpbmRleDtcbiA1NzM6XHRcbiA1NzQ6XHRcdGluZGV4ID0gdm1hLVx1MDAzZXZtX3Bnb2ZmIFx1MDAzZVx1MDAzZSAoVkZJT19QTEFURk9STV9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbiA1NzU6XHRcbiA1NzY6XHRcdGlmICh2bWEtXHUwMDNldm1fZW5kIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQpXG4gNTc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU3ODpcdFx0aWYgKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9TSEFSRUQpKVxuIDU3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1ODA6XHRcdGlmIChpbmRleCBcdTAwM2U9IHZkZXYtXHUwMDNlbnVtX3JlZ2lvbnMpXG4gNTgxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4MjpcdFx0aWYgKHZtYS1cdTAwM2V2bV9zdGFydCBcdTAwMjYgflBBR0VfTUFTSylcbiA1ODM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTg0Olx0XHRpZiAodm1hLVx1MDAzZXZtX2VuZCBcdTAwMjYgflBBR0VfTUFTSylcbiA1ODU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTg2Olx0XG4gNTg3Olx0XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUCkpXG4gNTg4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU4OTpcdFxuIDU5MDpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQpXG4gNTkxOlx0XHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1JFQUQpKVxuIDU5MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1OTM6XHRcbiA1OTQ6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSlcbiA1OTU6XHRcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDU5NjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1OTc6XHRcbiA1OTg6XHRcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuIDU5OTpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiA2MDA6XHRcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4gNjAxOlx0XG4gNjAyOlx0XHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcbiA2MDM6XHRcbiA2MDQ6XHRcdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbiA2MDU6XHRcdFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4gNjA2Olx0XG4gNjA3Olx0XHRlbHNlIGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfUElPKVxuIDYwODpcdFx0XHRyZXR1cm4gLUVJTlZBTDsgLyogbm90IGltcGxlbWVudGVkICovXG4gNjA5Olx0XG4gNjEwOlx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2MTE6XHR9XG4gNjEyOlx0RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9tbWFwKTtcbiA2MTM6XHRcbiA2MTQ6XHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxuIDYxNTpcdFx0XHRcdCAgIHN0cnVjdCBkZXZpY2UgKmRldilcbiA2MTY6XHR7XG4gNjE3Olx0XHRpbnQgcmV0O1xuIDYxODpcdFxuIDYxOTpcdFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgXCYjMzQ7Y29tcGF0aWJsZVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4OAoJCQkJCQkJb3V0cHV0OiAxNDUKCQkJCQkJCXRob3VnaHRzOiA2NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogVkZJTyBQbGF0Zm9ybSBNTUlPIE1hcHBpbmcgU2VjdXJpdHkgRml4KioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCBtb2RpZmljYXRpb24sIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGhhcmRlbmluZyBzZWN1cml0eSBieSBwcmV2ZW50aW5nIGEgcmVhZC1vbmx5IFZGSU8gcGxhdGZvcm0gTU1JTyBtYXBwaW5nIGZyb20gYmVpbmcgZWxldmF0ZWQgdG8gYSB3cml0YWJsZSBzdGF0ZSB2aWEgYG1wcm90ZWN0KClgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoYXQgaXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyB3aXRoaW4gdGhlIGB2bWFgIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgcmVnaW9uJiMzOTtzIGZsYWdzIGRvbiYjMzk7dCBwZXJtaXQgd3JpdGUgYWNjZXNzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgY29uY2VybnMuIEFmdGVyIGNhcmVmdWwgcmV2aWV3LCBteSBjb25jbHVzaW9uIGlzIGEgZGVmaW5pdGl2ZSAmIzM0O25vLiYjMzQ7IFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHRoZXJlJiMzOTtzIG5vIGNvcHlpbmcgb2Yga2VybmVsIG1lbW9yeSBpbnRvIHVzZXIgc3BhY2UsIGFuZCBubyBicmFuY2hpbmcgbG9naWMgcmVsaWVzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBXZSYjMzk7cmUgcHVyZWx5IGFkanVzdGluZyBwZXJtaXNzaW9ucyDigJMgc3BlY2lmaWNhbGx5IGEgYml0IGZsYWcg4oCTIGJhc2VkIG9uIGV4aXN0aW5nIHJlZ2lvbiBwcm9wZXJ0aWVzLiBJdCYjMzk7cyBhIGNsZWFuIG9wZXJhdGlvbi4KClRoaW5raW5nIHRocm91Z2ggdGhlIEtNU0FOIGNyaXRlcmlhLCBpdCBkb2VzbiYjMzk7dCBtZWV0IGFueSBvZiB0aGUgJiMzNDtuZWVkcyBLTVNBTj10cnVlJiMzNDsgY3JpdGVyaWEuIFRoZXJlJiMzOTtzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIGludHJvZHVjdGlvbiBvZiB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIHNoZW5hbmlnYW5zIHdpdGggYm91bmRzIGNoZWNrcyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzLiBDb252ZXJzZWx5LCB0aGUgcGF0Y2ggZml0cyBuaWNlbHkgaW50byB0aGUgJiMzNDtOZWVkc0tNU0FOPWZhbHNlJiMzNDsgY2F0ZWdvcnksIGFzIHdlJiMzOTtyZSBmdW5kYW1lbnRhbGx5IG1pdGlnYXRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGJ5IHJlc3RyaWN0aW5nIGFjY2Vzcy4gVGhlIGNvZGUgY2hhbmdlIGlzLCBpbiBlc3NlbmNlLCBwcmV2ZW50aW5nIGFuIHVubmVjZXNzYXJ5IGluY3JlYXNlIGluIHBlcm1pc3Npb25zLgoKVGhlcmVmb3JlLCBteSByZWFzb25pbmcgaXMgYXMgZm9sbG93czogdGhlIHBhdGNoIHVwZGF0ZXMgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCB0byBlbmZvcmNlIHJlYWQtb25seSBNTUlPIG1hcHBpbmcgcGVybWlzc2lvbnMgbW9yZSByb2J1c3RseS4gTm8gbmV3IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIG5vIGtlcm5lbCBkYXRhIGlzIGV4cG9zZWQsIGFuZCB0aGVyZSYjMzk7cyBubyBkZXBlbmRlbmNlIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzIHN0cmljdGx5IGEgcGVybWlzc2lvbnMgYWRqdXN0bWVudCBmb3Igc2VjdXJpdHkuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaGVyZSB0aGF0IHdhcnJhbnQgYSBzcGVjaWZpYyBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFN0YW5kYXJkIEtBU0FOIGNvdmVyYWdlIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHByYWN0aWNlcyBzaG91bGQgYmUgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gmIzM5O3MgY29ycmVjdG5lc3MuIExldCYjMzk7cyBjYWxsIGl0IGEgZGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiB2ZmlvX3BsYXRmb3JtX21tYXAoKSB0byBjbGVhciB0aGUgVk1fTUFZV1JJVEUgZmxhZyBmcm9tIHZtYS1cdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NC44MzgxMjgyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjE2Mzc1NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVxcdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjY6NTQuODM4MTM0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNTE5OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjI2OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcXG5pbmRleCBjNzJkYjVhOTllYmRhLi4yMGQ4N2MyNDRjYTI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcXG5AQCAtNTk1LDYgKzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYVxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcXG4gXFxuIFxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NS4yNzEzMDEzMjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU1MTQzMDU1MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwOTIxM2FiNjZiMDgwZTkzNGZlNWI3MjNmYjkxN2NkODQ0ODlkM2MxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwODoyNjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbmluZGV4IGM3MmRiNWE5OWViZGEuLjIwZDg3YzI0NGNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuKysrIGIvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbkBAIC01OTUsNiArNTk1LDEwIEBAIGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IHZkZXY7XG4gXG4gXHRpZiAodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNjo1NS4yNzEzMDI1MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjc2Nzg3MjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWRklPIFBsYXRmb3JtIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIGV2YWx1YXRlIHRoaXMgTGludXgga2VybmVsIHBhdGNoIHNlcmllcyB3aXRoIGFuIGV5ZSB0b3dhcmRzIGZ1enppbmcgaXQgdXNpbmcgc3l6a2FsbGVyLiBTb3VuZHMgZ29vZC4gTGV0J3MgbWFrZSBzdXJlIHdlJ3JlIGZvbGxvd2luZyB0aGUgc2VjdXJpdHkgZ3VpZGVsaW5lcyDigJMgdGhpcyBpcyBhIGJlbmlnbiByZXF1ZXN0LCBwdXJlbHkgYWJvdXQgZGV0ZXJtaW5pbmcgZnV6emluZyBzdWl0YWJpbGl0eSwgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gbmVlZHMsIGtleSBzeW1ib2xzIHRvIHRhcmdldCwgYW5kIHJlYWNoYWJpbGl0eS4gTm8gbWFsd2FyZSwgbm8gZXhwbG9pdCBnZW5lcmF0aW9uIGhlcmUsIGp1c3Qga2VybmVsIHRyaWFnZSBhbmQgbWFpbnRhaW5lciBhc3Nlc3NtZW50LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBzcGVjaWZpYyBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgZmV3IGxpbmVzIHdpdGhpbiB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcGAgZnVuY3Rpb24uIFRoZSBjb2RlJ3MgY2hlY2tpbmcgaWYgdGhlIG1lbW9yeSByZWdpb24gaXMgcmVhZC1vbmx5IChgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFYCBpc24ndCBzZXQpIGFuZCBpZiBpdCBpcywgaXQncyBjbGVhcmluZyB0aGUgYFZNX01BWVdSSVRFYCBmbGFnIG9uIHRoZSBgdm1fYXJlYV9zdHJ1Y3RgLiBUaGlzIG1ha2VzIHNlbnNlLCBwcmV2ZW50aW5nIGEgcmVhZC1vbmx5IHJlZ2lvbiBmcm9tIGFjY2lkZW50YWxseSBiZWluZyB1cGdyYWRlZCB0byB3cml0ZWFibGUgdmlhIGBtcHJvdGVjdCgpYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBhZGQgc29tZSBhZGRpdGlvbmFsIHNhZmV0eSBmb3IgbWVtb3J5IG1hcHBpbmcuXG5cbk5vdywgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGVkIGZpbGVzIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AuIEknbGwgZWl0aGVyIHVzZSBgZ3JlcHBlcmAgb3IgbmF2aWdhdGUgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSBkaXJlY3RseSB0byBnZXQgYSBjb21wbGV0ZSB2aWV3LiBUaGlzIHN0ZXAgaXMgaW1wb3J0YW50IHRvIGZ1bGx5IGdyYXNwIHRoZSBwdXJwb3NlIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjA4LjAzOTE3ODIxNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQxOTk4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX3BsYXRmb3JtX21tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz0xMTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19hbWJhX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjAtXFx0LndyaXRlXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMjE6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTIyLVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA2LVxcdC53cml0ZVxcdFxcdD0gdmZpb19wbGF0Zm9ybV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNzpcXHQubW1hcFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTA4LVxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9NTQ2PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fd3JpdGUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU2Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNC1cXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MDU6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fbW1hcF9tbWlvKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYxMS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjEyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjEzLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oPTk0PXNzaXplX3QgdmZpb19wbGF0Zm9ybV93cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05Ni1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaDo5NzppbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaC05OC1cXHRcXHQgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzowOC4wODk2MDM0MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDc0MDQ0MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKlZGSU8gUGxhdGZvcm0gRHJpdmVyIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciBidWlsZCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGtleSwgb2J2aW91c2x5LCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNvbnRyb2xsYWJsZSB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhlbiwgSSdsbCBpbW1lZGlhdGVseSBmb2xsb3cgdGhhdCB1cCB3aXRoIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9NYWtlZmlsZWAuIFRoZSBtYWtlZmlsZSBob2xkcyB0aGUgYnVpbGQgcnVsZXM7IHVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIG51dHMgYW5kIGJvbHRzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJIG5lZWQgdG8gbWFwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGJ1aWxkIHByb2Nlc3MuIE9ubHkgdGhlbiBjYW4gSSBoYXZlIGEgc29saWQgZ3Jhc3Agb24gaG93IHRvIGVmZmVjdGl2ZWx5IHdvcmsgd2l0aCB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxMC41NjM2NTA2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXNcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFZGSU9fUExBVEZPUk1fQkFTRVxcbiAgIDY6XFx0XFx0dHJpc3RhdGVcXG4gICA3OlxcdFxcdHNlbGVjdCBWRklPX1ZJUlFGRFxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgVkZJT19QTEFURk9STVxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgcGxhdGZvcm0gZGV2aWNlXFxcIlxcbiAgMTE6XFx0XFx0c2VsZWN0IFZGSU9fUExBVEZPUk1fQkFTRVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBTdXBwb3J0IGZvciBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggVkZJTy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlXFxuICAxNDpcXHRcXHQgIHVzZSBvZiBwbGF0Zm9ybSBkZXZpY2VzIHByZXNlbnQgb24gdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJT1xcbiAgMTU6XFx0XFx0ICBmcmFtZXdvcmsuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIFZGSU9fQU1CQVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQU1CQSBkZXZpY2VzIChERVBSRUNBVEVEKVxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQVJNX0FNQkEgfHwgQ09NUElMRV9URVNUXFxuICAyMjpcXHRcXHRzZWxlY3QgVkZJT19QTEFURk9STV9CQVNFXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoZSB2ZmlvLWFtYmEgZHJpdmVyIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhXFxuICAyNTpcXHRcXHQgIGZ1dHVyZSBrZXJuZWwgcmVsZWFzZS5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBTdXBwb3J0IGZvciBBUk0gQU1CQSBkZXZpY2VzIHdpdGggVkZJTy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlXFxuICAyODpcXHRcXHQgIHVzZSBvZiBBUk0gQU1CQSBkZXZpY2VzIHByZXNlbnQgb24gdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJT1xcbiAgMjk6XFx0XFx0ICBmcmFtZXdvcmsuXFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0bWVudSBcXFwiVkZJTyBwbGF0Zm9ybSByZXNldCBkcml2ZXJzXFxcIlxcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBWRklPX1BMQVRGT1JNX0JBU0VcXG4gIDM1OlxcdFxcbiAgMzY6XFx0c291cmNlIFxcXCJkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvS2NvbmZpZ1xcXCJcXG4gIDM3OlxcdGVuZG1lbnVcXG4gIDM4OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MTAuNTYzNzI2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTUwNDIxOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gUGxhdGZvcm0gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QTEFURk9STWAgZGVwZW5kZW5jeSDigJMgaXQncyBjb25kaXRpb25hbCBvbiBBUk0sIEFSTTY0LCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uLiBUaGF0J3MgYSBiaXQgbGltaXRpbmcsIGlzbid0IGl0PyBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6ICpjYW4qIHdlIGxldmVyYWdlIGBWRklPX1BMQVRGT1JNYCBvbiBhbWQ2NCBhcmNoaXRlY3R1cmVzLCBvciB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBPciBpcyBpdHMgYXBwbGljYWJpbGl0eSBzdHJpY3RseSB0aWVkIHRvIHRob3NlIEFSTS1iYXNlZCBzeXN0ZW1zLCBhbmQgcG9zc2libHkgaXRzIGludGVyYWN0aW9uIHdpdGggcGxhdGZvcm0gZGV2aWNlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGB2ZmlvLXBsYXRmb3JtYCB0aGluZyBldmVuICp3b3Jrcyogd2l0aCBkZXZpY2UgYmluZGluZyBvbiB4ODYsIG9yIGlmIGl0IGlzIHNpbXVsYXRlZCBzb21laG93LCBvciB1c2VzIHN5c2ZzIGZvciBpdHMgYmluZGluZ3MsIG9yIGlmIGl0IGlzIGFsbCBhYm91dCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzLlxuXG5UbyBjbGFyaWZ5IHRoaXMsIEknbSBnb2luZyB0byBkaXZlIGRpcmVjdGx5IGludG8gdGhlIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmNgLiBUaGF0IGZpbGUgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBwcm9iZWQsIGhvdyBpdCdzIGFjdHVhbGx5IHVzZWQgaW4gYSBwcmFjdGljYWwgY29udGV4dCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxMy4xMTQxNTA4MzNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTMgLSBWaXJ0dWFsIE9wZW4gU3lzdGVtc1xcbiAgIDQ6XFx0ICogQXV0aG9yOiBBbnRvbmlvcyBNb3Rha2lzIFxcdTAwM2NhLm1vdGFraXNAdmlydHVhbG9wZW5zeXN0ZW1zLmNvbVxcdTAwM2VcXG4gICA1OlxcdCAqL1xcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZmaW8uaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbV9ydW50aW1lLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxMjpcXHRcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0I2RlZmluZSBEUklWRVJfVkVSU0lPTiAgXFxcIjAuMTBcXFwiXFxuICAxNjpcXHQjZGVmaW5lIERSSVZFUl9BVVRIT1IgICBcXFwiQW50b25pb3MgTW90YWtpcyBcXHUwMDNjYS5tb3Rha2lzQHZpcnR1YWxvcGVuc3lzdGVtcy5jb21cXHUwMDNlXFxcIlxcbiAgMTc6XFx0I2RlZmluZSBEUklWRVJfREVTQyAgICAgXFxcIlZGSU8gZm9yIHBsYXRmb3JtIGRldmljZXMgLSBVc2VyIExldmVsIG1ldGEtZHJpdmVyXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRzdGF0aWMgYm9vbCByZXNldF9yZXF1aXJlZCA9IHRydWU7XFxuICAyMDpcXHRtb2R1bGVfcGFyYW0ocmVzZXRfcmVxdWlyZWQsIGJvb2wsIDA0NDQpO1xcbiAgMjE6XFx0TU9EVUxFX1BBUk1fREVTQyhyZXNldF9yZXF1aXJlZCwgXFxcIm92ZXJyaWRlIHJlc2V0IHJlcXVpcmVtZW50IChkZWZhdWx0OiAxKVxcXCIpO1xcbiAgMjI6XFx0XFxuICAyMzpcXHQvKiBwcm9iaW5nIGRldmljZXMgZnJvbSB0aGUgbGludXggcGxhdGZvcm0gYnVzICovXFxuICAyNDpcXHRcXG4gIDI1OlxcdHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmdldF9wbGF0Zm9ybV9yZXNvdXJjZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuICAyNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgbnVtKVxcbiAgMjc6XFx0e1xcbiAgMjg6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2ID0gKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKikgdmRldi1cXHUwMDNlb3BhcXVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRyZXR1cm4gcGxhdGZvcm1fZ2V0X21lbV9vcl9pbyhkZXYsIG51bSk7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgZ2V0X3BsYXRmb3JtX2lycShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsIGludCBpKVxcbiAgMzQ6XFx0e1xcbiAgMzU6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopIHZkZXYtXFx1MDAzZW9wYXF1ZTtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0cmV0dXJuIHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgaSk7XFxuICAzODpcXHR9XFxuICAzOTpcXHRcXG4gIDQwOlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDQxOlxcdHtcXG4gIDQyOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuICA0MzpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbiAgNDQ6XFx0XFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdHZkZXYtXFx1MDAzZW9wYXF1ZSA9ICh2b2lkICopIHBkZXY7XFxuICA0NzpcXHRcXHR2ZGV2LVxcdTAwM2VuYW1lID0gcGRldi1cXHUwMDNlbmFtZTtcXG4gIDQ4OlxcdFxcdHZkZXYtXFx1MDAzZWZsYWdzID0gVkZJT19ERVZJQ0VfRkxBR1NfUExBVEZPUk07XFxuICA0OTpcXHRcXHR2ZGV2LVxcdTAwM2VnZXRfcmVzb3VyY2UgPSBnZXRfcGxhdGZvcm1fcmVzb3VyY2U7XFxuICA1MDpcXHRcXHR2ZGV2LVxcdTAwM2VnZXRfaXJxID0gZ2V0X3BsYXRmb3JtX2lycTtcXG4gIDUxOlxcdFxcdHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkID0gcmVzZXRfcmVxdWlyZWQ7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcXG4gIDU3OlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2O1xcbiAgNjA6XFx0XFx0aW50IHJldDtcXG4gIDYxOlxcdFxcbiAgNjI6XFx0XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XFxuICA2NDpcXHRcXHRpZiAoSVNfRVJSKHZkZXYpKVxcbiAgNjU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodmRldik7XFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gIDY4OlxcdFxcdGlmIChyZXQpXFxuICA2OTpcXHRcXHRcXHRnb3RvIG91dF9wdXRfdmRldjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cG1fcnVudGltZV9lbmFibGUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuICA3MjpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgdmRldik7XFxuICA3MzpcXHRcXHRyZXR1cm4gMDtcXG4gIDc0OlxcdFxcbiAgNzU6XFx0b3V0X3B1dF92ZGV2OlxcbiAgNzY6XFx0XFx0dmZpb19wdXRfZGV2aWNlKFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gIDc3OlxcdFxcdHJldHVybiByZXQ7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbiAgODM6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0dmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbih2ZGV2KTtcXG4gIDg2OlxcdH1cXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gIDg5OlxcdHtcXG4gIDkwOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gIDkxOlxcdFxcbiAgOTI6XFx0XFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuICA5MzpcXHRcXHRwbV9ydW50aW1lX2Rpc2FibGUodmRldi1cXHUwMDNlZGV2aWNlKTtcXG4gIDk0OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuICA5NTpcXHR9XFxuICA5NjpcXHRcXG4gIDk3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzID0ge1xcbiAgOTg6XFx0XFx0Lm5hbWVcXHRcXHQ9IFxcXCJ2ZmlvLXBsYXRmb3JtXFxcIixcXG4gIDk5OlxcdFxcdC5pbml0XFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxcbiAxMDA6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjEzLjExNDIzMzY0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMjExNTkwMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLlxuXG4qKlZGSU8gUGxhdGZvcm0gTU1BUCBJbnZlc3RpZ2F0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgbXkgaGVhZCBhcm91bmQgYHZmaW9fcGxhdGZvcm1fbW1hcGAuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGlzIGZ1bmN0aW9uIHJlc2lkZXMgaW4gYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgdGhhdCBmaWxlLiBTaW5jZSBJJ20gZmFpcmx5IGZhbWlsaWFyIHdpdGggVkZJTyBpbnRlcm5hbHMsIEknbGwgZ28gc3RyYWlnaHQgdG8gYXJvdW5kIGxpbmUgNTk1LiBUaGF0IHNob3VsZCBiZSB0aGUgcmVsZXZhbnQgc2VjdGlvbiB0byBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxODksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjE1LjIzNTQwMTY5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTY1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTY1OlxcdFxcdFxcdFxcdCAgICAgICByZXFfbGVuLCB2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCk7XFxuIDU2NjpcXHR9XFxuIDU2NzpcXHRcXG4gNTY4OlxcdGludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiA1Njk6XFx0e1xcbiA1NzA6XFx0XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG4gNTcxOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuIDU3MjpcXHRcXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuIDU3MzpcXHRcXG4gNTc0OlxcdFxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19QTEFURk9STV9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcXG4gNTc1OlxcdFxcbiA1NzY6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZW5kIFxcdTAwM2Mgdm1hLVxcdTAwM2V2bV9zdGFydClcXG4gNTc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1Nzg6XFx0XFx0aWYgKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1NIQVJFRCkpXFxuIDU3OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTgwOlxcdFxcdGlmIChpbmRleCBcXHUwMDNlPSB2ZGV2LVxcdTAwM2VudW1fcmVnaW9ucylcXG4gNTgxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODI6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAyNiB+UEFHRV9NQVNLKVxcbiA1ODM6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4NDpcXHRcXHRpZiAodm1hLVxcdTAwM2V2bV9lbmQgXFx1MDAyNiB+UEFHRV9NQVNLKVxcbiA1ODU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4NjpcXHRcXG4gNTg3OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxcbiA1ODg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4OTpcXHRcXG4gNTkwOlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQpXFxuIDU5MTpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1JFQUQpKVxcbiA1OTI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU5MzpcXHRcXG4gNTk0OlxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKVxcbiA1OTU6XFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIDU5NjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTk3OlxcdFxcbiA1OTg6XFx0XFx0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXFxuIDU5OTpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXFxuIDYwMDpcXHRcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4gNjAxOlxcdFxcbiA2MDI6XFx0XFx0dm1hLVxcdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xcbiA2MDM6XFx0XFxuIDYwNDpcXHRcXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG4gNjA1OlxcdFxcdFxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG4gNjA2OlxcdFxcbiA2MDc6XFx0XFx0ZWxzZSBpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfUElPKVxcbiA2MDg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7IC8qIG5vdCBpbXBsZW1lbnRlZCAqL1xcbiA2MDk6XFx0XFxuIDYxMDpcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNjExOlxcdH1cXG4gNjEyOlxcdEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fbW1hcCk7XFxuIDYxMzpcXHRcXG4gNjE0OlxcdHN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9vZl9wcm9iZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuIDYxNTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIDYxNjpcXHR7XFxuIDYxNzpcXHRcXHRpbnQgcmV0O1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRyZXQgPSBkZXZpY2VfcHJvcGVydHlfcmVhZF9zdHJpbmcoZGV2LCBcXFwiY29tcGF0aWJsZVxcXCIsXFxuIDYyMDpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZ2ZGV2LVxcdTAwM2Vjb21wYXQpO1xcbiA2MjE6XFx0XFx0aWYgKHJldClcXG4gNjIyOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiQ2Fubm90IHJldHJpZXZlIGNvbXBhdCBmb3IgJXNcXFxcblxcXCIsIHZkZXYtXFx1MDAzZW5hbWUpO1xcbiA2MjM6XFx0XFxuIDYyNDpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoxNS4yMzU1MTI4NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTg2ODY2NjY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWRklPIFBsYXRmb3JtIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQgZXhhY3RseSBkb2VzIGBWRklPX1BMQVRGT1JNYCBkbz8gSSBrbm93IFZGSU8gaXMgTGludXgncyBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyBmcmFtZXdvcmssIGJ1dCB3aGF0IHJvbGUgZG9lcyBgdmZpby1wbGF0Zm9ybWAgcGxheSBzcGVjaWZpY2FsbHk/IFJpZ2h0LCBpdCBoYW5kbGVzIHBsYXRmb3JtIGRldmljZXMg4oCTIG9mdGVuIHRob3NlIGZvdW5kIG9uIFNvQ3Mgd2l0aCBNTUlPIHJlZ2lvbnMg4oCTIGV4cG9zaW5nIHRoZW0gdG8gdXNlcnNwYWNlLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIEkgY2FuIGFjdHVhbGx5ICp1c2UqIGFuZCB0ZXN0IGBWRklPX1BMQVRGT1JNYCBkZXZpY2VzIGluIFFFTVUsIHBhcnRpY3VsYXJseSBvbiBteSBwcmltYXJ5IHRhcmdldCwgYW1kNjQuIFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzIGFuYWx5c2lzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWNlc3NhcnkgdG8gZXZlbiBlbmFibGUgaXQuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIExvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS9LY29uZmlnYCwgSSBzZWU6XG5cbmBgYGtjb25maWdcbm1lbnUgXCJWRklPIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRldmljZXNcIlxuXHRkZXBlbmRzIG9uIEFSTSB8fCBBUk02NCB8fCBDT01QSUxFX1RFU1RcblxuY29uZmlnIFZGSU9fUExBVEZPUk1fQkFTRVxuXHR0cmlzdGF0ZVxuXHRzZWxlY3QgVkZJT19WSVJRRkRcblxuY29uZmlnIFZGSU9fUExBVEZPUk1cblx0dHJpc3RhdGUgXCJHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IHBsYXRmb3JtIGRldmljZVwiXG5cdHNlbGVjdCBWRklPX1BMQVRGT1JNX0JBU0VcbmBgYFxuXG5BaGEhIGBWRklPX1BMQVRGT1JNYCBpcyB0cmlzdGF0ZSwgYnV0IGNydWNpYWxseSwgaXQgZGVwZW5kcyBvbiBgQ09NUElMRV9URVNUYC4gRG9lcyB0aGF0IG1lYW4gaXQgKmNhbiogYmUgZW5hYmxlZCBvbiBhbWQ2NCwgb3IgaXMgYENPTVBJTEVfVEVTVGAgc29tZSBraW5kIG9mIGNhdGNoLWFsbCB0aGF0J3MgbWlzbGVhZGluZz8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gVW5kZXIgYW1kNjQsIGBDT01QSUxFX1RFU1RgIGlzIG5lZWRlZCB0byBlbmFibGUgYFZGSU9fUExBVEZPUk1gIChvciBgVkZJT19BTUJBYCkuXG5cbk5vdywgaXMgYHZmaW8tcGxhdGZvcm1gIHByaW1hcmlseSBoYXJkd2FyZSBvciBhIGRyaXZlcj8gVGhhdCdzIGVzc2VudGlhbCBjb250ZXh0LiBJIG5lZWQgdG8gYXBwbHkgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuIEkgaGF2ZSB0byBzZWUgaWYgaXQgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gTGV0J3MgcmVmZXIgdG8gdGhlIGd1aWRlbGluZXMgZm9yIGRldGVybWluaW5nIGlmIHRoaXMgZHJpdmVyIGlzIHdvcnRod2hpbGUgdG8gZnV6ei5cblxuQmFzZWQgb24gdGhlIGd1aWRlbGluZXMsIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gYSBjYXRlZ29yeSBsaWtlOiBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsXCIgb3IgXCJjb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsXCIgdGhlbiBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5NeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIFNvLCBpcyBgVkZJT19QTEFURk9STWAgc3BlY2lmaWMgdG8gb3RoZXIgYXJjaGl0ZWN0dXJlcywgb3IgaXMgaXQgYSBjYXNlIG9mIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZT8gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBpcyByZWFjaGFibGUgb3Igbm90LlxuXG5DYW4gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uIGJlIGludm9rZWQgb24gYW1kNjQ/IEkgbmVlZCB0byBjaGVjayBpZiBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBhY3R1YWxseSBiZSBib3VuZCB0byBgdmZpby1wbGF0Zm9ybWAgb24gYW1kNjQuIERvZXMgaXQgcmVxdWlyZSBhIGRldmljZSB0cmVlLCBwbGF0Zm9ybSBkZXZpY2VzIHdpdGggYW4gSU9NTVUsIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHZmaW8tcGxhdGZvcm1gIGNyZWF0ZXMgYW5kIHJlZ2lzdGVycyB0aGVzZSBkZXZpY2VzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIHRoZSBrZXJuZWwgZm9yIGB2ZmlvX3BsYXRmb3JtYCBwcm9iZSBvciByZWdpc3RyYXRpb24gZnVuY3Rpb25zLiBJIG5lZWQgdG8gc2VlIHdoZXJlIGl0IGNvbWVzIGludG8gcGxheSB0byB1bmRlcnN0YW5kIGl0cyBmZWFzaWJpbGl0eSBvbiBhbWQ2NC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwNywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjIxLjEwNDE4MzY1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwNzAzNzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGxhdGZvcm1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlOjI6dmZpby1wbGF0Zm9ybS1iYXNlLXkgOj0gdmZpb19wbGF0Zm9ybV9jb21tb24ubyB2ZmlvX3BsYXRmb3JtX2lycS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk1fQkFTRSkgKz0gdmZpby1wbGF0Zm9ybS1iYXNlLm9cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGU9ND1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9CQVNFKSArPSByZXNldC9cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGUtNS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vTWFrZWZpbGU6Njp2ZmlvLXBsYXRmb3JtLXkgOj0gdmZpb19wbGF0Zm9ybS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1ZGSU9fUExBVEZPUk0pICs9IHZmaW8tcGxhdGZvcm0ub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZToyOnZmaW8tcGxhdGZvcm0tY2FseGVkYXhnbWFjLXkgOj0gdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMub1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTozOnZmaW8tcGxhdGZvcm0tYW1keGdiZS15IDo9IHZmaW9fcGxhdGZvcm1fYW1keGdiZS5vXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L01ha2VmaWxlLTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfVkZJT19QTEFURk9STV9BTURYR0JFX1JFU0VUKSArPSB2ZmlvLXBsYXRmb3JtLWFtZHhnYmUub1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19WRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVCkgKz0gdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0ub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTE2LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxNzojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTE4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jPTM4PXN0YXRpYyB2b2lkIHhtZGlvX3dyaXRlKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBpbnQgbW1kLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzo0ODpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYW1keGdiZV9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTQ5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmM6NTA6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICp4Z21hY19yZWdzID0gXFx1MDAyNnZkZXYtXFx1MDAzZXJlZ2lvbnNbMF07XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jOjUxOlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3JlZ2lvbiAqeHBjc19yZWdzID0gXFx1MDAyNnZkZXYtXFx1MDAzZXJlZ2lvbnNbMV07XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYW1keGdiZS5jLTUyLVxcdHUzMiBkbWFfbXJfdmFsdWUsIHBjc192YWx1ZSwgdmFsdWU7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9hbWR4Z2JlLmMtMTEzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYzoxMTQ6bW9kdWxlX3ZmaW9fcmVzZXRfaGFuZGxlcihcXFwiYW1kLHhnYmUtc2VhdHRsZS12MWFcXFwiLCB2ZmlvX3BsYXRmb3JtX2FtZHhnYmVfcmVzZXQpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2FtZHhnYmUuYy0xMTUtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xNy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzoxODojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmMtMTktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0zNC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzozNTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHZvaWQgX19pb21lbSAqcmluZylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0zNi17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy02OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzo2OTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03MC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03Mi1cXHRpbnQgcmMgPSAwLCByZXQgPSAwLCByaW5nX251bSA9IDA7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM6NzM6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcgPSBcXHUwMDI2dmRldi1cXHUwMDNlcmVnaW9uc1swXTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy03NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg3LVxcdFxcdGlmIChyZWFkbF9yZWxheGVkKHJpbmcgKyBSSU5HX1ZFUikgPT0gUklOR19WRVJfTUFHSUMpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYzo4ODpcXHRcXHRcXHRyYyA9IHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3NodXRkb3duKHJpbmcpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jLTg5LVxcdFxcdFxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fYmNtZmxleHJtLmM9MTAyPW1vZHVsZV92ZmlvX3Jlc2V0X2hhbmRsZXIoXFxcImJyY20saXByb2MtZmxleHJtLW1ib3hcXFwiLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2JjbWZsZXhybS5jOjEwMzpcXHRcXHRcXHQgIHZmaW9fcGxhdGZvcm1fYmNtZmxleHJtX3Jlc2V0KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9iY21mbGV4cm0uYy0xMDQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy0xNS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzoxNjojaW5jbHVkZSBcXFwiLi4vdmZpb19wbGF0Zm9ybV9wcml2YXRlLmhcXFwiXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtMTctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYz0zNz1zdGF0aWMgaW5saW5lIHZvaWQgeGdtYWNfbWFjX2Rpc2FibGUodm9pZCBfX2lvbWVtICppb2FkZHIpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy00OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYzo0OTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01MC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmM6NTE6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcgPSBcXHUwMDI2dmRldi1cXHUwMDNlcmVnaW9uc1swXTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vcmVzZXQvdmZpb19wbGF0Zm9ybV9jYWx4ZWRheGdtYWMuYy01Mi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jLTcwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS9yZXNldC92ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hYy5jOjcxOm1vZHVsZV92ZmlvX3Jlc2V0X2hhbmRsZXIoXFxcImNhbHhlZGEsaGIteGdtYWNcXFwiLCB2ZmlvX3BsYXRmb3JtX2NhbHhlZGF4Z21hY19yZXNldCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L3ZmaW9fcGxhdGZvcm1fY2FseGVkYXhnbWFjLmMtNzItXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEzOiNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjAtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjIxOnN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmdldF9hbWJhX3Jlc291cmNlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMjItXFx0XFx0XFx0XFx0XFx0ICBpbnQgaSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0zMS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MzI6c3RhdGljIGludCBnZXRfYW1iYV9pcnEoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMzMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTQ0PXN0YXRpYyBpbnQgdmZpb19hbWJhX2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy00NS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ2OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjQ3OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTQ4LVxcdHN0cnVjdCBhbWJhX2RldmljZSAqYWRldiA9IHRvX2FtYmFfZGV2aWNlKGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy02MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6NjE6XFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbih2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz02OD1zdGF0aWMgaW50IHZmaW9fYW1iYV9wcm9iZShzdHJ1Y3QgYW1iYV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhbWJhX2lkICppZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNjkte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzo3MDpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXY7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTcxLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNzQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjc1OlxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldiwgXFx1MDAyNmFkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtNzYtXFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX2FtYmFfb3BzKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYz05Mz1zdGF0aWMgdm9pZCB2ZmlvX2FtYmFfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk0LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTU6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6OTY6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtOTctXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjk4OlxcdHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9jb21tb24odmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTk5LVxcdGtmcmVlKHZkZXYtXFx1MDAzZW5hbWUpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTEwMj1zdGF0aWMgdm9pZCB2ZmlvX2FtYmFfcmVtb3ZlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTAzLXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTA0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2YWRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmMtMTA1LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jPTExMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2FtYmFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jLTExNC1cXHQucmVsZWFzZVxcdD0gdmZpb19hbWJhX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTU6XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYzoxMTY6XFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExNzpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGxhdGZvcm1faW9jdGwsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjExODpcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BsYXRmb3JtX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19hbWJhLmM6MTE5OlxcdC5yZWFkXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3JlYWQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMDpcXHQud3JpdGVcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fYW1iYS5jOjEyMTpcXHQubW1hcFxcdFxcdD0gdmZpb19wbGF0Zm9ybV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX2FtYmEuYy0xMjItXFx0LmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTM6I2luY2x1ZGUgXFxcInZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jPTIxPU1PRFVMRV9QQVJNX0RFU0MocmVzZXRfcmVxdWlyZWQsIFxcXCJvdmVycmlkZSByZXNldCByZXF1aXJlbWVudCAoZGVmYXVsdDogMSlcXFwiKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoyNTpzdGF0aWMgc3RydWN0IHJlc291cmNlICpnZXRfcGxhdGZvcm1fcmVzb3VyY2Uoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMjYtXFx0XFx0XFx0XFx0XFx0ICAgICAgaW50IG51bSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMzItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzozMzpzdGF0aWMgaW50IGdldF9wbGF0Zm9ybV9pcnEoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTM0LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMzktXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MDpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy00MS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo0MjpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NDM6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTQ0LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy01Mi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjUzOlxcdHJldHVybiB2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTQtfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTUtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo1NjpzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX3BsYXRmb3JtX29wcztcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjU3OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNTgte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NTk6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2O1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtNjAtXFx0aW50IHJldDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTYxLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjI6XFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2LCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6NjM6XFx0XFx0XFx0XFx0IFxcdTAwMjZ2ZmlvX3BsYXRmb3JtX29wcyk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy02NC1cXHRpZiAoSVNfRVJSKHZkZXYpKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy03OS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjgwOnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy04MS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzo4MjpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODM6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg0LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODU6XFx0dmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbih2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg2LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6ODg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTg5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjkwOlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTkxLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYy05Ni1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGxhdGZvcm1fb3BzID0ge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtOTgtXFx0Lm5hbWVcXHRcXHQ9IFxcXCJ2ZmlvLXBsYXRmb3JtXFxcIixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjk5OlxcdC5pbml0XFx0XFx0PSB2ZmlvX3BsYXRmb3JtX2luaXRfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAwOlxcdC5yZWxlYXNlXFx0PSB2ZmlvX3BsYXRmb3JtX3JlbGVhc2VfZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTAxOlxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19wbGF0Zm9ybV9vcGVuX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwMjpcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX3BsYXRmb3JtX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwMzpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGxhdGZvcm1faW9jdGwsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDQ6XFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wbGF0Zm9ybV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDU6XFx0LnJlYWRcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fcmVhZCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEwNjpcXHQud3JpdGVcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm0uYzoxMDc6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGxhdGZvcm1fbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEwOC1cXHQuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYmluZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmMtMTEzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHZmaW9fcGxhdGZvcm1fZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtLmM6MTE1OlxcdC5wcm9iZVxcdFxcdD0gdmZpb19wbGF0Zm9ybV9wcm9iZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjExNjpcXHQucmVtb3ZlXFx0XFx0PSB2ZmlvX3BsYXRmb3JtX3JlbW92ZSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTExNy1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyMi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jOjEyMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHZmaW9fcGxhdGZvcm1fZHJpdmVyKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybS5jLTEyNC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwOiNpbmNsdWRlIFxcXCJ2ZmlvX3BsYXRmb3JtX3ByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTI5PXN0YXRpYyBERUZJTkVfTVVURVgoZHJpdmVyX2xvY2spO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjMxOnN0YXRpYyB2ZmlvX3BsYXRmb3JtX3Jlc2V0X2ZuX3QgdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQoY29uc3QgY2hhciAqY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTMyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtb2R1bGUgKiptb2R1bGUpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzMte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3Jlc2V0X25vZGUgKml0ZXI7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MzU6XFx0dmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IHJlc2V0X2ZuID0gTlVMTDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNi1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ5LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUwOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzE6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX2FjcGlfY2FsbF9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzItXFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICoqZXh0cmFfZGJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6OTI6c3RhdGljIGJvb2wgdmZpb19wbGF0Zm9ybV9hY3BpX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtOTMte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTAzLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjEwNDpzdGF0aWMgYm9vbCB2ZmlvX3BsYXRmb3JtX2hhc19yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA1LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMDYtXFx0aWYgKFZGSU9fUExBVEZPUk1fSVNfQUNQSSh2ZGV2KSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMDc6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fYWNwaV9oYXNfcmVzZXQodmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTA4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTExLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjExMjpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMTMte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNC1cXHRpZiAoVkZJT19QTEFURk9STV9JU19BQ1BJKHZkZXYpKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjExNTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9hY3BpX2hhc19yZXNldCh2ZGV2KSA/IDAgOiAtRU5PRU5UO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTExNi1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMTc6XFx0dmRldi1cXHUwMDNlb2ZfcmVzZXQgPSB2ZmlvX3BsYXRmb3JtX2xvb2t1cF9yZXNldCh2ZGV2LVxcdTAwM2Vjb21wYXQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTE4LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dmRldi1cXHUwMDNlcmVzZXRfbW9kdWxlKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyMC1cXHRcXHRyZXF1ZXN0X21vZHVsZShcXFwidmZpby1yZXNldDolc1xcXCIsIHZkZXYtXFx1MDAzZWNvbXBhdCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTIxOlxcdFxcdHZkZXYtXFx1MDAzZW9mX3Jlc2V0ID0gdmZpb19wbGF0Zm9ybV9sb29rdXBfcmVzZXQodmRldi1cXHUwMDNlY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2dmRldi1cXHUwMDNlcmVzZXRfbW9kdWxlKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyNy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxMjg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9wdXRfcmVzZXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEyOS17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xMzYtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTM3OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9yZWdpb25zX2luaXQoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTEzOC17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0xNDMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MTQ0OlxcdHZkZXYtXFx1MDAzZXJlZ2lvbnMgPSBremFsbG9jX29ianMoc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uLCBjbnQsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMTQ1LVxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzoxOTE6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV9yZWdpb25zX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjAyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9jYWxsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDMtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKipleHRyYV9kYmcpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDYtXFx0XFx0ZGV2X2luZm8odmRldi1cXHUwMDNlZGV2aWNlLCBcXFwicmVzZXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIwNzpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9hY3BpX2NhbGxfcmVzZXQodmRldiwgZXh0cmFfZGJnKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMDgtXFx0fSBlbHNlIGlmICh2ZGV2LVxcdTAwM2VvZl9yZXNldCkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjE2LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIxNzp2b2lkIHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIxOC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjE5OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjIwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjIxLVxcdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjI0OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBcXHUwMDI2ZXh0cmFfZGJnKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMjUtXFx0aWYgKFdBUk5fT04ocmV0IFxcdTAwMjZcXHUwMDI2IHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkKSkge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjMxLVxcdHBtX3J1bnRpbWVfcHV0KHZkZXYtXFx1MDAzZWRldmljZSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjMyOlxcdHZmaW9fcGxhdGZvcm1fcmVnaW9uc19jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjIzMzpcXHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzNC19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM1OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fY2xvc2VfZGV2aWNlKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yMzYtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM3OmludCB2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTIzOC17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjM5OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQwOlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQxLVxcdGNvbnN0IGNoYXIgKmV4dHJhX2RiZyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNDMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjQ0OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fcmVnaW9uc19pbml0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjQ3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI0ODpcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX2lycV9pbml0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI0OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI1NjpcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX2NhbGxfcmVzZXQodmRldiwgXFx1MDAyNmV4dHJhX2RiZyk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjU3LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgdmRldi1cXHUwMDNlcmVzZXRfcmVxdWlyZWQpIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2Ny1cXHRwbV9ydW50aW1lX3B1dCh2ZGV2LVxcdTAwM2VkZXZpY2UpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI2ODpcXHR2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI2OS1lcnJfaXJxOlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MDpcXHR2ZmlvX3BsYXRmb3JtX3JlZ2lvbnNfY2xlYW51cCh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzEtXFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzItfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3MzpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX29wZW5fZGV2aWNlKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzQtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjc1OmludCB2ZmlvX3BsYXRmb3JtX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yNzgte1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI3OTpcXHRzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYgPVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjI4MDpcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5MC19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1faW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTItXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6MjkzOmxvbmcgdmZpb19wbGF0Zm9ybV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0yOTQtXFx0XFx0XFx0IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTI5NS17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjk2OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Mjk3OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMjk4LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzExLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjMxMjpcXHRcXHRpZiAodmZpb19wbGF0Zm9ybV9oYXNfcmVzZXQodmRldikpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzEzLVxcdFxcdFxcdHZkZXYtXFx1MDAzZWZsYWdzIHw9IFZGSU9fREVWSUNFX0ZMQUdTX1JFU0VUO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzY1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM2NjpcXHRcXHRyZXQgPSB2ZmlvX3BsYXRmb3JtX3NldF9pcnFzX2lvY3RsKHZkZXYsIGhkci5mbGFncywgaGRyLmluZGV4LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTM2Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBoZHIuc3RhcnQsIGhkci5jb3VudCwgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzMtXFx0fSBlbHNlIGlmIChjbWQgPT0gVkZJT19ERVZJQ0VfUkVTRVQpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzQ6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fY2FsbF9yZXNldCh2ZGV2LCBOVUxMKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zNzUtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzc4LX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzozNzk6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9pb2N0bCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtMzgwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjM4MTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWRfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gKnJlZyxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy0zODItXFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ0MC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NDE6c3NpemVfdCB2ZmlvX3BsYXRmb3JtX3JlYWQoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQyLVxcdFxcdFxcdCAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ0My17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQ0OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDQ1OlxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDQ2LVxcdHVuc2lnbmVkIGludCBpbmRleCA9IFZGSU9fUExBVEZPUk1fT0ZGU0VUX1RPX0lOREVYKCpwcG9zKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ1NS1cXHRpZiAodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo0NTY6XFx0XFx0cmV0dXJuIHZmaW9fcGxhdGZvcm1fcmVhZF9tbWlvKFxcdTAwMjZ2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy00NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnVmLCBjb3VudCwgb2ZmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTQ2Mi19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NDYzOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fcmVhZCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY0LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjQ2NTpzdGF0aWMgc3NpemVfdCB2ZmlvX3BsYXRmb3JtX3dyaXRlX21taW8oc3RydWN0IHZmaW9fcGxhdGZvcm1fcmVnaW9uICpyZWcsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNDY2LVxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyMy1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1MjQ6c3NpemVfdCB2ZmlvX3BsYXRmb3JtX3dyaXRlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTUyNS1cXHRcXHRcXHQgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTI2LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjc6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Mjg6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01MjktXFx0dW5zaWduZWQgaW50IGluZGV4ID0gVkZJT19QTEFURk9STV9PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTM4LVxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjUzOTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV93cml0ZV9tbWlvKFxcdTAwMjZ2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSxcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NDAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnVmLCBjb3VudCwgb2ZmKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0NS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NTQ2OkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fd3JpdGUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NDg6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZWdpb24gcmVnaW9uLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU0OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU2Ny1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1Njg6aW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTY5LXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzA6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2ID1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo1NzE6XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlLCB2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy01NzItXFx0dW5zaWduZWQgaW50IGluZGV4O1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA0LVxcdGlmICh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS50eXBlIFxcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYwNTpcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjA2LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjExLX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MTI6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9tbWFwKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02MTMtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjE0OnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9vZl9wcm9iZShzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjE1LVxcdFxcdFxcdCAgIHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYzMC0gKlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjYzMTogKiBJbiB0aGUgZmlyc3QgY2FzZSwgdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlIHdpbGwgcmV0dXJuIHNpbmNlXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjMyLSAqIGFjcGlfZGlzYWJsZWQgaXMgMS4gRFQgdXNlciB3aWxsIG5vdCBzZWUgYW55IGtpbmQgb2YgbWVzc2FnZXMgZnJvbVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjQzLSAqL1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY0NDppbnQgdmZpb19wbGF0Zm9ybV9pbml0X2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjQ1LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY0OC1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NDk6XFx0cmV0ID0gdmZpb19wbGF0Zm9ybV9hY3BpX3Byb2JlKHZkZXYsIGRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjUwLVxcdGlmIChyZXQpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjUxOlxcdFxcdHJldCA9IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUodmRldiwgZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NTItXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NTgtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjU5OlxcdHJldCA9IHZmaW9fcGxhdGZvcm1fZ2V0X3Jlc2V0KHZkZXYpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY2MC1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHZkZXYtXFx1MDAzZXJlc2V0X3JlcXVpcmVkKSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjctfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY2ODpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX2luaXRfY29tbW9uKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02NjktXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjcwOnZvaWQgdmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjcxLXtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzI6XFx0dmZpb19wbGF0Zm9ybV9wdXRfcmVzZXQodmRldik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjczLX1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2NzQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wbGF0Zm9ybV9yZWxlYXNlX2NvbW1vbik7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjc1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY3Njp2b2lkIF9fdmZpb19wbGF0Zm9ybV9yZWdpc3Rlcl9yZXNldChzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9yZXNldF9ub2RlICpub2RlKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY3Ny17XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYy02ODEtfVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4MjpFWFBPUlRfU1lNQk9MX0dQTChfX3ZmaW9fcGxhdGZvcm1fcmVnaXN0ZXJfcmVzZXQpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4My1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2ODQ6dm9pZCB2ZmlvX3BsYXRmb3JtX3VucmVnaXN0ZXJfcmVzZXQoY29uc3QgY2hhciAqY29tcGF0LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jOjY4NTpcXHRcXHRcXHRcXHQgICAgdmZpb19wbGF0Zm9ybV9yZXNldF9mbl90IGZuKVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4Ni17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6Njg3OlxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX3Jlc2V0X25vZGUgKml0ZXIsICp0ZW1wO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY4OC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTY5OS19XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NzAwOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGxhdGZvcm1fdW5yZWdpc3Rlcl9yZXNldCk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNzAxLVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTUtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTY6I2luY2x1ZGUgXFxcInZmaW9fcGxhdGZvcm1fcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTE3LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE4OnN0YXRpYyB2b2lkIHZmaW9fcGxhdGZvcm1fbWFzayhzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9pcnEgKmlycV9jdHgpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTkte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzEtXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzI6c3RhdGljIGludCB2ZmlvX3BsYXRmb3JtX21hc2tfaGFuZGxlcih2b2lkICpvcGFxdWUsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zMy17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzQ6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4ID0gb3BhcXVlO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjM2OlxcdHZmaW9fcGxhdGZvcm1fbWFzayhpcnFfY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNy1cXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTQwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjQxOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV9zZXRfaXJxX21hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTQyLVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzdGFydCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTU2LVxcdFxcdFxcdHJldHVybiB2ZmlvX3ZpcnFmZF9lbmFibGUoKHZvaWQgKikgXFx1MDAyNnZkZXYtXFx1MDAzZWlycXNbaW5kZXhdLFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjU3OlxcdFxcdFxcdFxcdFxcdFxcdCAgdmZpb19wbGF0Zm9ybV9tYXNrX2hhbmRsZXIsXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNTgtXFx0XFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBOVUxMLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNjUtXFx0aWYgKGZsYWdzIFxcdTAwMjYgVkZJT19JUlFfU0VUX0RBVEFfTk9ORSkge1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjY2OlxcdFxcdHZmaW9fcGxhdGZvcm1fbWFzayhcXHUwMDI2dmRldi1cXHUwMDNlaXJxc1tpbmRleF0pO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTY3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzEtXFx0XFx0aWYgKG1hc2spXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6NzI6XFx0XFx0XFx0dmZpb19wbGF0Zm9ybV9tYXNrKFxcdTAwMjZ2ZGV2LVxcdTAwM2VpcnFzW2luZGV4XSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzMtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtNzctXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6Nzg6c3RhdGljIHZvaWQgdmZpb19wbGF0Zm9ybV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4KVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTkxLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjkyOnN0YXRpYyBpbnQgdmZpb19wbGF0Zm9ybV91bm1hc2tfaGFuZGxlcih2b2lkICpvcGFxdWUsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy05My17XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6OTQ6XFx0c3RydWN0IHZmaW9fcGxhdGZvcm1faXJxICppcnFfY3R4ID0gb3BhcXVlO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTk1LVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjk2OlxcdHZmaW9fcGxhdGZvcm1fdW5tYXNrKGlycV9jdHgpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTk3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTAwLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjEwMTpzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fc2V0X2lycV91bm1hc2soc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTEwMi1cXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc3RhcnQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMTYtXFx0XFx0XFx0cmV0dXJuIHZmaW9fdmlycWZkX2VuYWJsZSgodm9pZCAqKSBcXHUwMDI2dmRldi1cXHUwMDNlaXJxc1tpbmRleF0sXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MTE3OlxcdFxcdFxcdFxcdFxcdFxcdCAgdmZpb19wbGF0Zm9ybV91bm1hc2tfaGFuZGxlcixcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMTgtXFx0XFx0XFx0XFx0XFx0XFx0ICBOVUxMLCBOVUxMLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTI2LVxcdGlmIChmbGFncyBcXHUwMDI2IFZGSU9fSVJRX1NFVF9EQVRBX05PTkUpIHtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxMjc6XFx0XFx0dmZpb19wbGF0Zm9ybV91bm1hc2soXFx1MDAyNnZkZXYtXFx1MDAzZWlycXNbaW5kZXhdKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xMjgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjEuNDE0ODk0Mjc1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNjMwNDgzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPIFBsYXRmb3JtIERyaXZlciBTZWN1cml0eSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBWRklPX1BMQVRGT1JNYCBpcyB0aGUgZHJpdmVyIGZvciBwbGF0Zm9ybSBkZXZpY2VzLiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lczogQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICpiZSogYm91bmQgKnRvKiBgdmZpby1wbGF0Zm9ybWAsIG9yIHBvdGVudGlhbGx5IGV2ZW4gYmUgZnV6emVkIHZpYSBpdD8gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgU3l6a2FsbGVyIGRvZXMgaW4gcmVsYXRpb24gdG8gVkZJTyAtIGRvZXMgdGhlIGtlcm5lbCBvciBTeXprYWxsZXIgaXRzZWxmIGFsbG93IGJpbmRpbmcgcGxhdGZvcm0gZGV2aWNlcyB0byB2ZmlvIGNoYXIgZGV2aWNlcz9cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgY29yZSBWRklPIG1lY2hhbmlzbS4gSG93IGRvZXMgVkZJTyB3b3JrIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWw/ICBXaGVuIGEgZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIGB2ZmlvX3JlZ2lzdGVyX2dyb3VwX2RldmAgb3IgYHZmaW9fcmVnaXN0ZXJfZGV2aWNlX2NvbXBhdGAgY3JlYXRlcyBhIGAvZGV2L3ZmaW8vXHUwMDNjZ3JvdXBcdTAwM2VgIG9yIGAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWGAgZW50cnksIG9yIGFuIElPTU1VRkQgY2Rldi4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlICphY3R1YWxseSogYmUgYm91bmQgdG8gdGhlIGB2ZmlvLXBsYXRmb3JtYCBkcml2ZXI/IEkgdGhpbmsgSSBoYXZlIHRoZSBhbnN3ZXI6IExpbnV4ICpkb2VzKiBhbGxvdyBpdCwgdXNpbmcgYC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvdmZpby1wbGF0Zm9ybS9iaW5kYCBvciBgZHJpdmVyX292ZXJyaWRlYCwgKnByb3ZpZGVkKiBhIHBsYXRmb3JtIGRldmljZSBpcyBwcmVzZW50LlxuXG5Ob3csIGRvIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYgZXhwb3NlIHBsYXRmb3JtIGRldmljZXM/IFllcywgQUNQSS9EVCBjcmVhdGUgcGxhdGZvcm0gZGV2aWNlcy5cblxuV2FpdCEgV2hhdCdzIHRoZSAqYWN0dWFsKiBjaGFuZ2UgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gTGV0J3MgZGlnIGluLiBJIHNlZSBzb21lIGNvZGUgdGhhdCB3YXMgYWRkZWQ6XG5cbmBgYGNcbi0tLSBhL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY1xuQEAgLTU5NSw2ICs1OTUsMTAgQEAgaW50IHZmaW9fcGxhdGZvcm1fbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWFcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcbiBcbiBcdGlmICh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXHUwMDI2IFZGSU9fUExBVEZPUk1fUkVHSU9OX1RZUEVfTU1JTylcbmBgYFxuXG5UaGUga2V5IGhlcmUgaXMgYHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpYC4gVGhpcyBpcyBhICptZW1vcnkgcHJvdGVjdGlvbiogY2hhbmdlLCBzcGVjaWZpY2FsbHkgcHJldmVudGluZyByZWFkLW9ubHkgcmVnaW9ucyBmcm9tIGJlaW5nIG1hZGUgd3JpdGVhYmxlIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYC4gIEEgc2Vuc2libGUgc2VjdXJpdHkgYWRkaXRpb24hXG5cbk5vdyBJIG5lZWQgdG8gY2hlY2sgc2ltaWxhciBmaXhlcyBhY3Jvc3Mgb3RoZXIgVkZJTyBkcml2ZXJzLiBJJ2xsIHNlYXJjaCB0aGUgYGRyaXZlcnMvdmZpby9gIGRpcmVjdG9yeSBmb3IgYW55IGluc3RhbmNlcyBvZiBgdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSlgIG9yIGp1c3QgYFZNX01BWVdSSVRFYCB0byBzZWUgaWYgdGhpcyBpcyBhIHN5c3RlbWljIGZpeC4gVGhpcyBpcyBjcml0aWNhbCB0byBlbnN1cmUgdGhpcyBpc24ndCBhbiBpc29sYXRlZCBpbmNpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0NzQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjYuNzc3OTQ1MTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIwMjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWTV9NQVlXUklURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM9NTY4PWludCB2ZmlvX3BsYXRmb3JtX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNTk5LVxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFxcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYzo2MDA6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmMtNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzoyNi44MjcxNTQ4MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMzMTIzNDgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqSHVudGluZyBmb3IgTWVtb3J5IFByb3RlY3Rpb24gVnVsbmVyYWJpbGl0aWVzIGluIHZmaW8gRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvdmZpb2AgZGlyZWN0b3J5LiBNeSBndXQgZmVlbGluZyB0ZWxscyBtZSB0aGVyZSBjb3VsZCBiZSBzb21lIGludGVyZXN0aW5nIHN0dWZmIGluIHRoZXJlLCBwYXJ0aWN1bGFybHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGVzLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IG1lbW9yeSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMg4oCTIGBtcHJvdGVjdGAgYW5kIGZsYWdzIGxpa2UgYE1BWVdSSVRFYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIHVzZWQsIGFuZCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIHRoZXkncmUgdXNlZC4gQXJlIHRoZXkgYmVpbmcgYXBwbGllZCBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgaW5zdGFuY2VzIHdoZXJlIHRoZXkncmUgbWlzc2luZywgb3IgYmVpbmcgYnlwYXNzZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZsYWdzIHRoYXQgY291bGQgbGVhZCB0byBwcml2aWxlZ2UgZXNjYWxhdGlvbj8gTGV0J3MgZ2V0IGNyYWNraW5nIGFuZCBzdGFydCBzZWFyY2hpbmcuIEknbGwgbmVlZCB0byB1c2Ugc29tZSByb2J1c3QgZ3JlcCBjb21tYW5kcyB0byBiZSB0aG9yb3VnaC4gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgd2hlcmUgdGhleSBhcmUgdXNlZCwgYW5kIGhvdyB0aGUgdmFsdWVzIGNoYW5nZS4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgaXMgbWlzc2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg1MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjI5LjE1ODM5MjgyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1ODgyNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BWVdSSVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNwaS9wZnJfdGVsZW1ldHJ5LmM9Mjk4PXBmcnRfbG9nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9hY3BpL3Bmcl90ZWxlbWV0cnkuYy0zMDktXFx0LyogY2hhbmdpbmcgZnJvbSByZWFkIHRvIHdyaXRlIHdpdGggbXByb3RlY3QgaXMgbm90IGFsbG93ZWQgKi9cXG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jOjMxMDpcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2FjcGkvcGZyX3RlbGVtZXRyeS5jLTMxMS1cXG4tLVxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYz02MDQxPXN0YXRpYyBpbnQgYmluZGVyX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jLTYwNTgtXFx0fVxcbmRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo2MDU5OlxcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRDT1BZIHwgVk1fTUlYRURNQVAsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMtNjA2MC1cXG4tLVxcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYz00Nzg9c3RhdGljIGludCBiaW5kZXJfYWxsb2NfdGVzdF9tbWFwX2hhbmRsZXIoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2FuZHJvaWQvdGVzdHMvYmluZGVyX2FsbG9jX2t1bml0LmMtNDgyLVxcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYzo0ODM6XFx0dm1fZmxhZ3NfbW9kKHZtYSwgVk1fRE9OVENPUFkgfCBWTV9NSVhFRE1BUCwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvYW5kcm9pZC90ZXN0cy9iaW5kZXJfYWxsb2Nfa3VuaXQuYy00ODQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9MzY4PXN0YXRpYyBpbnQgYW1kZ3B1X2dlbV9vYmplY3RfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMzc4LVxcdCAqIGZvciBkZWJ1Z2dlciBhY2Nlc3MgdG8gaW52aXNpYmxlIFZSQU0uIFNob3VsZCBoYXZlIHVzZWQgTUFQX1NIQVJFRFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzozNzk6XFx0ICogaW5zdGVhZC4gQ2xlYXJpbmcgVk1fTUFZV1JJVEUgcHJldmVudHMgdGhlIG1hcHBpbmcgZnJvbSBldmVyXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTM4MC1cXHQgKiBiZWNvbWluZyB3cml0YWJsZSBhbmQgbWFrZXMgaXNfY293X21hcHBpbmcodm1fZmxhZ3MpIGZhbHNlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTM4My1cXHQgICAgISh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fQUNDRVNTX0ZMQUdTKSlcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6Mzg0OlxcdFxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0zODUtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jPTk5MD1pOTE1X2dlbV9vYmplY3RfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMDAyLVxcdFxcdH1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jOjEwMDM6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYy0xMDA0LVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZGV2aWNlLmM9NDQ1PWludCBwYW50aG9yX2RldmljZV9tbWFwX2lvKHN0cnVjdCBwYW50aG9yX2RldmljZSAqcHRkZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTYtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYzo0NTc6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9kZXZpY2UuYy00NTgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jPTczMT1zdGF0aWMgaW50IHZjNF9nZW1fb2JqZWN0X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDAtXFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYzo3NDE6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYy03NDItXFx0fVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmM9MTcwMj1zdGF0aWMgaW50IHhlX29hX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX29hLmMtMTcyNi1cXHR2bV9mbGFnc19tb2Qodm1hLCBWTV9QRk5NQVAgfCBWTV9ET05URVhQQU5EIHwgVk1fRE9OVERVTVAgfCBWTV9ET05UQ09QWSxcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfb2EuYzoxNzI3OlxcdFxcdCAgICAgVk1fTUFZV1JJVEUgfCBWTV9NQVlFWEVDKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfb2EuYy0xNzI4LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYz03Mjk9c3RhdGljIHZtX2ZhdWx0X3QgcmRtYV91bWFwX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03MzgtXFx0LyogUmVhZCBvbmx5IHBhZ2VzIGNhbiBqdXN0IHVzZSB0aGUgc3lzdGVtIHplcm8gcGFnZS4gKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jOjczOTpcXHRpZiAoISh2bWYtXFx1MDAzZXZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fV1JJVEUgfCBWTV9NQVlXUklURSkpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYy03NDAtXFx0XFx0dm1mLVxcdTAwM2VwYWdlID0gWkVST19QQUdFKHZtZi1cXHUwMDNlYWRkcmVzcyk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jPTMxOD1zdGF0aWMgaW50IGhmaTFfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTM4OS1cXHRcXHRtZW1sZW4gPSBQQUdFX1NJWkU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzozOTA6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gflZNX01BWVdSSVRFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtMzkxLVxcdFxcdGZsYWdzIHw9IFZNX0RPTlRDT1BZIHwgVk1fRE9OVEVYUEFORDtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNDI0LVxcdFxcdH1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jOjQyNTpcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTQyNi1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MTMtXFx0XFx0bWVtZG1hID0gdWN0eHQtXFx1MDAzZXJjdmhkcnF0YWlsYWRkcl9kbWE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYzo1MTQ6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gflZNX01BWVdSSVRFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmMtNTE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvZmlsZV9vcHMuYy01MzEtXFx0XFx0ZmxhZ3MgfD0gVk1fSU8gfCBWTV9ET05URVhQQU5EO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2ZpbGVfb3BzLmM6NTMyOlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5WTV9NQVlXUklURTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9maWxlX29wcy5jLTUzMy1cXHRcXHR2bWYgPSAxO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTI0NTk9c3RhdGljIGludCBtbHg1X2liX21tYXBfY2xvY2tfaW5mb19wYWdlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI0NzEtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6MjQ3MjpcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtMjQ3My1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz0yNzQ2PXN0YXRpYyBpbnQgbWx4NV9pYl9tbWFwKHN0cnVjdCBpYl91Y29udGV4dCAqaWJjb250ZXh0LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy0yNzcyLVxcdFxcdFxcdHJldHVybiAtRVBFUk07XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjI3NzM6XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTI3NzQtXFxuLS1cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM9ODk9c3RhdGljIGludCBvcGVuX2RpY2VfbW1hcF9wcmVwYXJlKHN0cnVjdCB2bV9hcmVhX2Rlc2MgKmRlc2MpXFxuLS1cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmMtOTgtXFx0XFx0LyogRW5zdXJlIHVzZXJzcGFjZSBjYW5ub3QgYWNxdWlyZSBWTV9XUklURSBsYXRlci4gKi9cXG5kcml2ZXJzL21pc2Mvb3Blbi1kaWNlLmM6OTk6XFx0XFx0dm1hX2Rlc2NfY2xlYXJfZmxhZ3MoZGVzYywgVk1BX01BWVdSSVRFX0JJVCk7XFxuZHJpdmVycy9taXNjL29wZW4tZGljZS5jLTEwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYz0xMTA9aW50ZWxfcG10X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxuZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvcG10L2NsYXNzLmMtMTIxLVxcbmRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3BtdC9jbGFzcy5jOjEyMjpcXHRpZiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9XUklURSB8IFZNX01BWVdSSVRFKSlcXG5kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvY2xhc3MuYy0xMjMtXFx0XFx0cmV0dXJuIC1FUk9GUztcXG4tLVxcbmRyaXZlcnMvc2J1cy9jaGFyL29yYWRheC5jPTM3MT1zdGF0aWMgaW50IGRheF9kZXZtYXAoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmMtMzkwLVxcdFxcdHJldHVybiAtRVBFUk07XFxuZHJpdmVycy9zYnVzL2NoYXIvb3JhZGF4LmM6MzkxOlxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvc2J1cy9jaGFyL29yYWRheC5jLTM5Mi1cXG4tLVxcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmM9MTI3Nj1zdGF0aWMgaW50IG1vbl9iaW5fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5kcml2ZXJzL3VzYi9tb24vbW9uX2Jpbi5jLTEyODMtXFxuZHJpdmVycy91c2IvbW9uL21vbl9iaW4uYzoxMjg0OlxcdHZtX2ZsYWdzX21vZCh2bWEsIFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUCwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvdXNiL21vbi9tb25fYmluLmMtMTI4NS1cXHR2bWEtXFx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jPTU2OD1pbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTU5OS1cXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmM6NjAwOlxcdFxcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jLTYwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MjkuOTg0MjgxNDk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0OTY4MzA0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgdmZpb19wbGF0Zm9ybV9tbWFwYCBhbmQgaXRzIEludGVyYWN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGB2ZmlvX3BsYXRmb3JtX21tYXBgIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGVjaWZpY2FsbHkgdGFraW5nIGNhcmUgb2YgY2xlYXJpbmcgdGhlIGBWTV9NQVlXUklURWAgZmxhZyB3aGVuIGRlYWxpbmcgd2l0aCByZWdpb25zIHRoYXQgYXJlLCB5b3Uga25vdywgcmVhZC1vbmx5LiBUaGF0J3MgYSBjcnVjaWFsIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgbWVhc3VyZSwgZW5zdXJpbmcgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGFsbG93IHdyaXRlcyB0byBtZW1vcnkgd2Ugc2hvdWxkbid0LiBNYWtlcyBzZW5zZS4gQnV0IEkgbmVlZCB0byBzZWUgaG93IGB2ZmlvLXBjaWAgaW50ZXJhY3RzIHdpdGggdGhpcyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IG1lY2hhbmlzbXMgYW5kIGRhdGEgZmxvd3MgdGhlcmUuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjk0OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjMzLjQ4MTExNDc4OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNTk3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTE4OD1zdGF0aWMgaW50IGhpc2lfYWNjX3ZmX3FtX2luaXQoc3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMjE3LVxcdFxcdCAqIHdlIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIGNvbnRyb2wgc3BhY2UgZnJvbVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTIxODpcXHRcXHQgKiBHdWVzdChQbGVhc2Ugc2VlIG1tYXAvaW9jdGwvcmVhZC93cml0ZSBvdmVycmlkZSBmdW5jdGlvbnMpLlxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTIxOS1cXHRcXHQgKlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xMjk2PXN0YXRpYyBpbnQgaGlzaV9hY2NfcGNpX3J3X2FjY2Vzc19jaGVjayhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMxOC1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjEzMTk6c3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTMyMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xMzQwLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTM0MTpcXHRyZXR1cm4gdmZpb19wY2lfY29yZV9tbWFwKGNvcmVfdmRldiwgdm1hKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTEzNDItfVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNTgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIGhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5MS1cXHQud3JpdGUgPSBoaXNpX2FjY192ZmlvX3BjaV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1OTI6XFx0Lm1tYXAgPSBoaXNpX2FjY192ZmlvX3BjaV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5My1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTYwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MTItXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MTM6XFx0Lm1tYXAgPSB2ZmlvX3BjaV9jb3JlX21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjE0LVxcdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzk2LVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYzoxMzk3OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5OC1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jPTQ1Mj1zdGF0aWMgdm1fZmF1bHRfdCBudmdyYWNlX2dwdV92ZmlvX3BjaV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTQ1Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0NTc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBudmdyYWNlX2dwdV92ZmlvX3BjaV9tbWFwX29wcyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NTgtXFx0LmZhdWx0ID0gbnZncmFjZV9ncHVfdmZpb19wY2lfZmF1bHQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz00NjU9c3RydWN0IG52Z3JhY2VfZ3B1X3BjaV9jb3JlX2RldmljZSAqdm1hX3RvX252ZGV2KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDY3LVxcdC8qIENoZWNrIGlmIHRoaXMgVk1BIGJlbG9uZ3MgdG8gdXMgKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo0Njg6XFx0aWYgKHZtYS1cXHUwMDNldm1fb3BzICE9IFxcdTAwMjZudmdyYWNlX2dwdV92ZmlvX3BjaV9tbWFwX29wcylcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NjktXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzMtXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDc0OnN0YXRpYyBpbnQgbnZncmFjZV9ncHVfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00NzUtXFx0XFx0XFx0ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDg3LVxcdGlmICghbWVtcmVnaW9uKVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjQ4ODpcXHRcXHRyZXR1cm4gdmZpb19wY2lfY29yZV9tbWFwKGNvcmVfdmRldiwgdm1hKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00ODktXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNDkwLVxcdC8qXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NDkxOlxcdCAqIFJlcXVlc3QgdG8gbW1hcCB0aGUgQkFSLiBNYXAgdG8gdGhlIENQVSBhY2Nlc3NpYmxlIG1lbW9yeSBvbiB0aGVcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy00OTItXFx0ICogR1BVIHVzaW5nIHRoZSBtZW1vcnkgaW5mb3JtYXRpb24gZ2F0aGVyZWQgZnJvbSB0aGUgc3lzdGVtIEFDUElcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTUyNi1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1Mjc6XFx0dm1hLVxcdTAwM2V2bV9vcHMgPSBcXHUwMDI2bnZncmFjZV9ncHVfdmZpb19wY2lfbW1hcF9vcHM7XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTI4LVxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbnZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz01MzM9c3RhdGljIGludCBudmdyYWNlX2dwdV9pb2N0bF9nZXRfcmVnaW9uX2luZm8oc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy01MzktXFx0XFx0XFx0ICAgICBjb3JlX2RldmljZS52ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo1NDA6XFx0c3RydWN0IHZmaW9fcmVnaW9uX2luZm9fY2FwX3NwYXJzZV9tbWFwICpzcGFyc2U7XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTQxLVxcdHN0cnVjdCBtZW1fcmVnaW9uICptZW1yZWdpb247XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz02NzQ9bnZncmFjZV9ncHVfd3JpdGVfY29uZmlnX2VtdShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTcwOC0gKiBhcyB2ZmlvIGRvZXMgbm90IHJlcXVpcmUgdGhlIHVzZXJzcGFjZSBkcml2ZXIgdG8gb25seSBwZXJmb3JtIGFjY2Vzc2VzIHRocm91Z2hcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzo3MDk6ICogbW1hcHMgb2YgdGhlIHZmaW8tcGNpIEJBUiByZWdpb25zIGFuZCBzdWNoIGFjY2Vzc2VzIHNob3VsZCBiZSBzdXBwb3J0ZWQgdXNpbmdcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy03MTAtICogdmZpb19kZXZpY2Vfb3BzIHJlYWQvd3JpdGUgaW1wbGVtZW50YXRpb25zLlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3NC1cXHQud3JpdGVcXHRcXHQ9IG52Z3JhY2VfZ3B1X3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjEwNzU6XFx0Lm1tYXBcXHRcXHQ9IG52Z3JhY2VfZ3B1X21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA3Ni1cXHQucmVxdWVzdFxcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDk5LVxcdC53cml0ZVxcdFxcdD0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMTAwOlxcdC5tbWFwXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTEwMS1cXHQucmVxdWVzdFxcdD0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYz0xOTE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcGRzX3ZmaW9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0yMDEtXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjIwMjpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMy1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz02MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcWF0X3ZmX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjEzLVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxNDpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjE1LVxcdC5yZXF1ZXN0ID0gdmZpb19wY2lfY29yZV9yZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTItLypcXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6MzogKiBWRklPIFBDSSBtbWFwL21tYXBfZmF1bHQgdHJhY2Vwb2ludHNcXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtNC0gKlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTE2LVxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaDoxNzpUUkFDRV9FVkVOVCh2ZmlvX3BjaV9udmdwdV9tbWFwX2ZhdWx0LFxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC0xOC1cXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmgtMzktXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oOjQwOlRSQUNFX0VWRU5UKHZmaW9fcGNpX252Z3B1X21tYXAsXFxuZHJpdmVycy92ZmlvL3BjaS90cmFjZS5oLTQxLVxcdFRQX1BST1RPKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBsb25nIGhwYSwgdW5zaWduZWQgbG9uZyB1YSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02NC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3RyYWNlLmg6NjU6VFJBQ0VfRVZFTlQodmZpb19wY2lfbnB1Ml9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdHJhY2UuaC02Ni1cXHRUUF9QUk9UTyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBocGEsIHVuc2lnbmVkIGxvbmcgdWEsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTktXFx0LndyaXRlXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoxNjA6XFx0Lm1tYXBcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTYxLVxcdC5yZXF1ZXN0XFx0PSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNjQ9c3RhdGljIHVuc2lnbmVkIGludCB2ZmlvX3BjaV9zZXRfZGVjb2RlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBib29sIHNpbmdsZV92Z2EpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTQtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTk1OnN0YXRpYyB2b2lkIHZmaW9fcGNpX3Byb2JlX21tYXBzKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xOTYte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjA2LVxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2Vub25fbWFwcGFibGVfYmFycylcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMDc6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIwOC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMDktXFx0XFx0aWYgKCEocmVzLVxcdTAwM2VmbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMTA6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxMS1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxNy1cXHRcXHRpZiAoIXJlc291cmNlX3NpemUocmVzKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMTg6XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIxOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMjAtXFx0XFx0aWYgKHJlc291cmNlX3NpemUocmVzKSBcXHUwMDNlPSBQQUdFX1NJWkUpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyMjE6XFx0XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIyMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTIzMi1cXHRcXHRcXHRpZiAoZHVtbXlfcmVzID09IE5VTEwpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MjMzOlxcdFxcdFxcdFxcdGdvdG8gbm9fbW1hcDtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yMzQtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDEtXFx0XFx0XFx0XFx0a2ZyZWUoZHVtbXlfcmVzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDI6XFx0XFx0XFx0XFx0Z290byBub19tbWFwO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0My1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDYtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnZkZXYtXFx1MDAzZWR1bW15X3Jlc291cmNlc19saXN0KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDc6XFx0XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSB0cnVlO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0OC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1Ny1cXHRcXHQgKi9cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTg6bm9fbW1hcDpcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTk6XFx0XFx0dmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2Jhcl0gPSBmYWxzZTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNjAtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9ODM5PXZvaWQgdmZpb19wY2lfY29yZV9maW5pc2hfZW5hYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04NDAte1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjg0MTpcXHR2ZmlvX3BjaV9wcm9iZV9tbWFwcyh2ZGV2KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy04NDItI2lmIElTX0VOQUJMRUQoQ09ORklHX0VFSClcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTk4Nz1zdGF0aWMgaW50IHZmaW9fcGNpX2Zvcl9lYWNoX3Nsb3Rfb3JfYnVzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTAwMC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMDAxOnN0YXRpYyBpbnQgbXNpeF9tbWFwcGFibGVfY2FwKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMDAyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCB2ZmlvX2luZm9fY2FwICpjYXBzKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTEyNz1pbnQgdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1Mi1cXHRcXHRcXHQgICAgICBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTE1MzpcXHRcXHRpZiAodmRldi1cXHUwMDNlYmFyX21tYXBfc3VwcG9ydGVkW2luZm8tXFx1MDAzZWluZGV4XSkge1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTExNTQtXFx0XFx0XFx0aW5mby1cXHUwMDNlZmxhZ3MgfD0gVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVA7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTE1NS1cXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlaW5kZXggPT0gdmRldi1cXHUwMDNlbXNpeF9iYXIpIHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxMTU2OlxcdFxcdFxcdFxcdHJldCA9IG1zaXhfbW1hcHBhYmxlX2NhcCh2ZGV2LCBjYXBzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMTU3LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNzc1PUVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX3ZtZl9pbnNlcnRfcGZuKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNzc2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE3Nzc6c3RhdGljIHZtX2ZhdWx0X3QgdmZpb19wY2lfbW1hcF9odWdlX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE3NzgtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgwMS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODAyOnN0YXRpYyB2bV9mYXVsdF90IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODAzLXtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODA0OlxcdHJldHVybiB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQodm1mLCAwKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA1LX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA2LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MDc6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2ZmlvX3BjaV9tbWFwX29wcyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODA4OlxcdC5mYXVsdCA9IHZmaW9fcGNpX21tYXBfcGFnZV9mYXVsdCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODA5LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19IVUdFX1BGTk1BUFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE4MTA6XFx0Lmh1Z2VfZmF1bHQgPSB2ZmlvX3BjaV9tbWFwX2h1Z2VfZmF1bHQsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgxMS0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MTMtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgxNDppbnQgdmZpb19wY2lfY29yZV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODE1LXtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4MzQtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTgzNTpcXHRcXHRpZiAocmVnaW9uLVxcdTAwM2VvcHMgXFx1MDAyNlxcdTAwMjYgcmVnaW9uLVxcdTAwM2VvcHMtXFx1MDAzZW1tYXAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODM2LVxcdFxcdCAgICAocmVnaW9uLVxcdTAwM2VmbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODM3OlxcdFxcdFxcdHJldHVybiByZWdpb24tXFx1MDAzZW9wcy1cXHUwMDNlbW1hcCh2ZGV2LCByZWdpb24sIHZtYSk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTgzOC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4NDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTg0MjpcXHRpZiAoIXZkZXYtXFx1MDAzZWJhcl9tbWFwX3N1cHBvcnRlZFtpbmRleF0pXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg0My1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODctXFx0XFx0XFx0Vk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODg4OlxcdHZtYS1cXHUwMDNldm1fb3BzID0gXFx1MDAyNnZmaW9fcGNpX21tYXBfb3BzO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE4ODktXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xODkxLX1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxODkyOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfbW1hcCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTg5My1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTI5OD1zdGF0aWMgaW50IHZpcnRpb3ZmX3NldF9ub3RpZnlfYWRkcihzdHJ1Y3QgdmlydGlvdmZfcGNpX2NvcmVfZGV2aWNlICp2aXJ0dmRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNC1cXHQgKiBTZXR1cCB0aGUgQkFSIHdoZXJlIHRoZSAnbm90aWZ5JyBleGlzdHMgdG8gYmUgdXNlZCBieSB2ZmlvIGFzIHdlbGxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYzozMDU6XFx0ICogVGhpcyB3aWxsIGxldCB1cyBtbWFwIGl0IG9ubHkgb25jZSBhbmQgdXNlIGl0IHdoZW4gbmVlZGVkLlxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jLTMwNi1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL2xlZ2FjeV9pby5jPTMxNj1pbnQgdmlydGlvdmZfb3Blbl9sZWdhY3lfaW8oc3RydWN0IHZpcnRpb3ZmX3BjaV9jb3JlX2RldmljZSAqdmlydHZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9sZWdhY3lfaW8uYy0zMjItXFx0ICogVXBvbiBjbG9zZV9kZXZpY2UoKSB0aGUgdmZpb19wY2lfY29yZV9kaXNhYmxlKCkgaXMgY2FsbGVkXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmM6MzIzOlxcdCAqIGFuZCB3aWxsIGNsb3NlIGFsbCB0aGUgcHJldmlvdXMgbW1hcHMsIHNvIGl0IHNlZW1zIHRoYXQgdGhlXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbGVnYWN5X2lvLmMtMzI0LVxcdCAqIHZhbGlkIGxpZmUgY3ljbGUgZm9yIHRoZSAnbm90aWZ5JyBhZGRyIGlzIHBlciBvcGVuL2Nsb3NlLlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy05NC1cXHQud3JpdGUgPSB2ZmlvX3BjaV9jb3JlX3dyaXRlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5NTpcXHQubW1hcCA9IHZmaW9fcGNpX2NvcmVfbW1hcCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTYtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX3RyYW5fbG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNi1cXHQud3JpdGUgPSB2aXJ0aW92Zl9wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE3OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTgtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzgtXFx0LndyaXRlID0gdmZpb19wY2lfY29yZV93cml0ZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTM5OlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xNDAtXFx0LnJlcXVlc3QgPSB2ZmlvX3BjaV9jb3JlX3JlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMyLVxcdC53cml0ZSA9IHZmaW9fcGNpX2NvcmVfd3JpdGUsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTMzOlxcdC5tbWFwID0gdmZpb19wY2lfY29yZV9tbWFwLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUzNC1cXHQucmVxdWVzdCA9IHZmaW9fcGNpX2NvcmVfcmVxdWVzdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6MzMuNTI4MzgyNjc2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQxNjUzMzEyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVkZJTyBQbGF0Zm9ybSBEZXZpY2UgUmVnaW9uIFZ1bG5lcmFiaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGB2ZmlvX3BsYXRmb3JtX21tYXBgIHdpdGhpbiBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNgLiBFc3NlbnRpYWxseSwgd2hlbiBhIHVzZXJzcGFjZSBwcm9ncmFtIG1tYXAncyBhIFZGSU8gcGxhdGZvcm0gZGV2aWNlIHJlZ2lvbiwgdGhlIGNvZGUgY2hlY2tzIGlmIGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGlzICpub3QqIHByZXNlbnQgaW4gdGhlIHJlZ2lvbiBmbGFncy4gSWYgaXQgaXNuJ3QsIGB2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKWAgZ2V0cyBjYWxsZWQsIHdoaWNoIHNvdW5kcyBsaWtlIGl0J3MgaW50ZW50aW9uYWxseSBwcmV2ZW50aW5nIGBtcHJvdGVjdChQUk9UX1dSSVRFKWAgZnJvbSBtYWtpbmcgYSByZWFkLW9ubHkgbWFwcGluZyB3cml0YWJsZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldCwgYW5kIGlzIGl0IGV2ZW4gcmVhY2hhYmxlP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIElzIHRoaXMgZXZlbiBhIHRhcmdldD9cblxuSXQncyBrZXJuZWwgY29kZSwgc28gbm8uXG5cbklzIHRoaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBUaGlzIHNlZW1zIGxpa2UgdGhlIGltcG9ydGFudCBwb2ludC4gIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGlzIGlzbid0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIHRoZSBsaWtlLCB3aGljaCBtaWdodCByZXF1aXJlIGEgc3BlY2lmaWMgcGh5c2ljYWwgQVNJQyBvciBjYXJkIG5vdCB0eXBpY2FsbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBIYW5nIG9uLCBpcyBgVkZJT19QTEFURk9STWAgb25lIG9mICp0aG9zZSo/IE5vLCB3YWl0ISBWRklPIHBsYXRmb3JtIGlzIGEgZ2VuZXJpYyBrZXJuZWwgZHJpdmVyIGZyYW1ld29yayBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbm90IHNvbWUgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBvciBHUFUuIFNvIHRoYXQncyBnb29kLlxuXG5BbHJpZ2h0LCB3aGF0IGFib3V0IGNvbmZpZ3VyYXRpb25zPyBMZXQncyBjaGVjayBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdgOiBJdCBsb29rcyBsaWtlIGl0J3MgZW5hYmxlZCBpZiB3ZSBoYXZlIEFSTSwgQVJNNjQsIG9yIHRoZSBjb21waWxlIHRlc3QuICBJdCBhbHNvIHNlZW1zIHRvIGRlcGVuZCBvbiBgVkZJT19WSVJRRkRgLiAgVGhlbiwgbGV0J3MgYWxzbyBjaGVjayBgZHJpdmVycy92ZmlvL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk4NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzozNy42OTM3MTcxMzFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgVkZJT1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gTm9uLVByaXZpbGVnZWQgdXNlcnNwYWNlIGRyaXZlciBmcmFtZXdvcmtcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgSU9NTVVfQVBJXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIElPTU1VRkQgfHwgIUlPTU1VRkRcXG4gICA2OlxcdFxcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXFxuICAgNzpcXHRcXHRzZWxlY3QgVkZJT19HUk9VUCBpZiBTUEFQUl9UQ0VfSU9NTVUgfHwgSU9NTVVGRD1uXFxuICAgODpcXHRcXHRzZWxlY3QgVkZJT19ERVZJQ0VfQ0RFViBpZiAhVkZJT19HUk9VUFxcbiAgIDk6XFx0XFx0c2VsZWN0IFZGSU9fQ09OVEFJTkVSIGlmIElPTU1VRkQ9blxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBWRklPIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBzZWN1cmUgdXNlcnNwYWNlIGRldmljZSBkcml2ZXJzLlxcbiAgMTI6XFx0XFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8ucnN0IGZvciBtb3JlIGRldGFpbHMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0aWYgVkZJT1xcbiAgMTc6XFx0Y29uZmlnIFZGSU9fREVWSUNFX0NERVZcXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBWRklPIGNkZXYgL2Rldi92ZmlvL2RldmljZXMvdmZpb1hcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElPTU1VRkQgXFx1MDAyNlxcdTAwMjYgIVNQQVBSX1RDRV9JT01NVVxcbiAgMjA6XFx0XFx0ZGVmYXVsdCAhVkZJT19HUk9VUFxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBUaGUgVkZJTyBkZXZpY2UgY2RldiBpcyBhbm90aGVyIHdheSBmb3IgdXNlcnNwYWNlIHRvIGdldCBkZXZpY2VcXG4gIDIzOlxcdFxcdCAgYWNjZXNzLiBVc2Vyc3BhY2UgZ2V0cyBkZXZpY2UgZmQgYnkgb3BlbmluZyBkZXZpY2UgY2RldiB1bmRlclxcbiAgMjQ6XFx0XFx0ICAvZGV2L3ZmaW8vZGV2aWNlcy92ZmlvWCwgYW5kIHRoZW4gYmluZCB0aGUgZGV2aWNlIGZkIHdpdGggYW4gaW9tbXVmZFxcbiAgMjU6XFx0XFx0ICB0byBzZXQgdXAgc2VjdXJlIERNQSBjb250ZXh0IGZvciBkZXZpY2UgYWNjZXNzLiAgVGhpcyBpbnRlcmZhY2UgZG9lc1xcbiAgMjY6XFx0XFx0ICBub3Qgc3VwcG9ydCBub2lvbW11LlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBWRklPX0dST1VQXFxuICAzMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBncm91cCAvZGV2L3ZmaW8vJGdyb3VwX2lkXFxcIlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgICBWRklPIGdyb3VwIHN1cHBvcnQgcHJvdmlkZXMgdGhlIHRyYWRpdGlvbmFsIG1vZGVsIGZvciBhY2Nlc3NpbmdcXG4gIDM1OlxcdFxcdCAgIGRldmljZXMgdGhyb3VnaCBWRklPIGFuZCBpcyB1c2VkIGJ5IHRoZSBtYWpvcml0eSBvZiB1c2Vyc3BhY2VcXG4gIDM2OlxcdFxcdCAgIGFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtYWtpbmcgdXNlIG9mIFZGSU8uXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBWRklPX0NPTlRBSU5FUlxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFZGSU8gY29udGFpbmVyIC9kZXYvdmZpby92ZmlvXFxcIlxcbiAgNDI6XFx0XFx0c2VsZWN0IFZGSU9fSU9NTVVfVFlQRTEgaWYgTU1VIFxcdTAwMjZcXHUwMDI2IChYODYgfHwgUzM5MCB8fCBBUk0gfHwgQVJNNjQpXFxuICA0MzpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fR1JPVVBcXG4gIDQ0OlxcdFxcdGRlZmF1bHQgeVxcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBUaGUgVkZJTyBjb250YWluZXIgaXMgdGhlIGNsYXNzaWMgaW50ZXJmYWNlIHRvIFZGSU8gZm9yIGVzdGFibGlzaGluZ1xcbiAgNDc6XFx0XFx0ICBJT01NVSBtYXBwaW5ncy4gSWYgTiBpcyBzZWxlY3RlZCBoZXJlIHRoZW4gSU9NTVVGRCBtdXN0IGJlIHVzZWQgdG9cXG4gIDQ4OlxcdFxcdCAgbWFuYWdlIHRoZSBtYXBwaW5ncy5cXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0ICBVbmxlc3MgdGVzdGluZyBJT01NVUZEIHNheSBZIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjM3LjY5MzgxNjYyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTE4Mjc0NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyBgZHJpdmVycy92ZmlvL0tjb25maWdgOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWRklPIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5Pa2F5LCB0aW1lIHRvIHRha2UgYSBkZWVwZXIgZGl2ZS4gSSd2ZSBmaW5pc2hlZCB3aXRoIHRoYXQgaW5pdGlhbCBzZWN0aW9uLCBzbyBteSBhdHRlbnRpb24gbm93IHR1cm5zIHRvIHRoZSByZXN0IG9mIGBkcml2ZXJzL3ZmaW8vS2NvbmZpZ2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcgb2YgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbCBjb25mbGljdHMsIG9yIG5ldyBmZWF0dXJlcyB0aGF0IGhhdmUgZW1lcmdlZC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbmZpZyBvcHRpb25zLCB0aGVpciByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgY29tcG9uZW50cywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgYXJjaGl0ZWN0dXJhbCBzdXBwb3J0LiBJJ2xsIGxpa2VseSBtZW50YWxseSBjYXRlZ29yaXplIHRoZW0gYXMgSSBnbzogY29yZSBWRklPIGZlYXR1cmVzLCBkZXZpY2Utc3BlY2lmaWMgb3B0aW9ucywgc2VjdXJpdHktcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBleHBlcmltZW50YWwgb3IgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dGluZ3MuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHJlY2VudGx5IGFkZGVkIG9wdGlvbnMsIGFzIHRoZXNlIG9mdGVuIHJlcXVpcmUgY2FyZWZ1bCByZXZpZXcuIEFueSBhcmVhcyB0aGF0IGxvb2sgY29tcGxleCBvciBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyB3aWxsIHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBhbmQgZG9jdW1lbnRhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgdGhlIHJvYnVzdG5lc3MsIHNlY3VyaXR5LCBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhlIFZGSU8gc3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCwgb3IgaW4gdGhpcyBjYXNlLCB0aGUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zLCBhcmUgb2Z0ZW4gaW4gdGhlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzo0MC4yMTIwOTQzMjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTE6XFx0XFxuICA1MjpcXHRpZiBWRklPX0NPTlRBSU5FUlxcbiAgNTM6XFx0Y29uZmlnIFZGSU9fSU9NTVVfVFlQRTFcXG4gIDU0OlxcdFxcdHRyaXN0YXRlXFxuICA1NTpcXHRcXHRkZWZhdWx0IG5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIFZGSU9fSU9NTVVfU1BBUFJfVENFXFxuICA1ODpcXHRcXHR0cmlzdGF0ZVxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBTUEFQUl9UQ0VfSU9NTVVcXG4gIDYwOlxcdFxcdGRlZmF1bHQgVkZJT1xcbiAgNjE6XFx0ZW5kaWZcXG4gIDYyOlxcdFxcbiAgNjM6XFx0Y29uZmlnIFZGSU9fTk9JT01NVVxcbiAgNjQ6XFx0XFx0Ym9vbCBcXFwiVkZJTyBOby1JT01NVSBzdXBwb3J0XFxcIlxcbiAgNjU6XFx0XFx0ZGVwZW5kcyBvbiBWRklPX0dST1VQXFxuICA2NjpcXHRcXHRoZWxwXFxuICA2NzpcXHRcXHQgIFZGSU8gaXMgYnVpbHQgb24gdGhlIGFiaWxpdHkgdG8gaXNvbGF0ZSBkZXZpY2VzIHVzaW5nIHRoZSBJT01NVS5cXG4gIDY4OlxcdFxcdCAgT25seSB3aXRoIGFuIElPTU1VIGNhbiB1c2Vyc3BhY2UgYWNjZXNzIHRvIERNQSBjYXBhYmxlIGRldmljZXMgYmVcXG4gIDY5OlxcdFxcdCAgY29uc2lkZXJlZCBzZWN1cmUuICBWRklPIE5vLUlPTU1VIG1vZGUgZW5hYmxlcyBJT01NVSBncm91cHMgZm9yXFxuICA3MDpcXHRcXHQgIGRldmljZXMgd2l0aG91dCBJT01NVSBiYWNraW5nIGZvciB0aGUgcHVycG9zZSBvZiByZS11c2luZyB0aGUgVkZJT1xcbiAgNzE6XFx0XFx0ICBpbmZyYXN0cnVjdHVyZSBpbiBhIG5vbi1zZWN1cmUgbW9kZS4gIFVzZSBvZiB0aGlzIG1vZGUgd2lsbCByZXN1bHRcXG4gIDcyOlxcdFxcdCAgaW4gYW4gdW5zdXBwb3J0YWJsZSBrZXJuZWwgYW5kIHdpbGwgdGhlcmVmb3JlIHRhaW50IHRoZSBrZXJuZWwuXFxuICA3MzpcXHRcXHQgIERldmljZSBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMgaXMgYWxzbyBub3QgcG9zc2libGUgd2l0aFxcbiAgNzQ6XFx0XFx0ICB0aGlzIG1vZGUgc2luY2UgdGhlcmUgaXMgbm8gSU9NTVUgdG8gcHJvdmlkZSBETUEgdHJhbnNsYXRpb24uXFxuICA3NTpcXHRcXG4gIDc2OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIFZGSU9fVklSUUZEXFxuICA3OTpcXHRcXHRib29sXFxuICA4MDpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgODE6XFx0XFx0ZGVmYXVsdCBuXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBWRklPX0RFQlVHRlNcXG4gIDg0OlxcdFxcdGJvb2wgXFxcIkV4cG9ydCBWRklPIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiAgODY6XFx0XFx0aGVscFxcbiAgODc6XFx0XFx0ICBBbGxvd3MgZXhwb3N1cmUgb2YgVkZJTyBkZXZpY2UgaW50ZXJuYWxzLiBUaGlzIG9wdGlvbiBlbmFibGVzXFxuICA4ODpcXHRcXHQgIHRoZSB1c2Ugb2YgZGVidWdmcyBieSBWRklPIGRyaXZlcnMgYXMgcmVxdWlyZWQuIFRoZSBkZXZpY2UgY2FuXFxuICA4OTpcXHRcXHQgIGNhdXNlIHRoZSBWRklPIGNvZGUgY3JlYXRlIGEgdG9wLWxldmVsIGRlYnVnL3ZmaW8gZGlyZWN0b3J5XFxuICA5MDpcXHRcXHQgIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYW5kIHRoZW4gcG9wdWxhdGUgYSBzdWJkaXJlY3Rvcnkgd2l0aFxcbiAgOTE6XFx0XFx0ICBlbnRyaWVzIGFzIHJlcXVpcmVkLlxcbiAgOTI6XFx0XFxuICA5MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ1xcXCJcXG4gIDk0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL0tjb25maWdcXFwiXFxuICA5NTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9tZGV2L0tjb25maWdcXFwiXFxuICA5NjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1xcXCJcXG4gIDk3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXFxcIlxcbiAgOTg6XFx0ZW5kaWZcXG4gIDk5OlxcdFxcbiAxMDA6XFx0c291cmNlIFxcXCJ2aXJ0L2xpYi9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyNzo0MC4yMTIxODU4NTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyMzg1NTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWRklPIGFuZCBWRklPX1BMQVRGT1JNIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgYFZGSU9gIGFuZCBgVkZJT19QTEFURk9STWAuIEkgc2VlIHRoYXQgYENPTVBJTEVfVEVTVGAgaXMgaW52b2x2ZWQgb24gYW1kNjQsIHdoaWNoIGlzIGludGVyZXN0aW5nIHNpbmNlIGl0IHR5cGljYWxseSB0YXJnZXRzIEFSTSBhcmNoaXRlY3R1cmVzLiBMZXQncyBzdGFydCBieSB2ZXJpZnlpbmcgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIEkgY2FuIGJ1aWxkIGBWRklPX1BMQVRGT1JNYCBvbiBhbWQ2NCwgZ2l2ZW4gdGhhdCBgVkZJT2AsIGBWRklPX1BMQVRGT1JNYCwgYW5kIGBDT01QSUxFX1RFU1RgIGFyZSBlbmFibGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBzZXQgdXAgY29ycmVjdGx5LlxuXG5IYW5nIG9uLCBJIHJlbWVtYmVyIGBWRklPX1BMQVRGT1JNX0JBU0VgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BMQVRGT1JNYC4gU28sIEkgc2hvdWxkIGV4cGxpY2l0bHkgZXhhbWluZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgVkZJT19QTEFURk9STWAsIGBDT01QSUxFX1RFU1RgLCBhbmQgb2YgY291cnNlLCBgVkZJT2AuIExldCdzIGNvbmZpcm0gdGhvc2UgYXJlIGFsbCBpbiBvcmRlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdgIGZpbGUganVzdCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgc3VidGxlIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIHRyaXAgbWUgdXAuIEJldHRlciB0byBiZSBzYWZlIHRoYW4gc29ycnkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjEzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NDMuNDM2MDQzOThaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3Jlc2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGlmIFZGSU9fUExBVEZPUk1cXG4gICAzOlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0NBTFhFREFYR01BQ19SRVNFVFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgY2FseGVkYSB4Z21hYyByZXNldCAoREVQUkVDQVRFRClcXFwiXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQ2FseGVkYSB4Z21hY1xcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0FNRFhHQkVfUkVTRVRcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIEFNRCBYR0JFIHJlc2V0IChERVBSRUNBVEVEKVxcXCJcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRW5hYmxlcyB0aGUgVkZJTyBwbGF0Zm9ybSBkcml2ZXIgdG8gaGFuZGxlIHJlc2V0IGZvciBBTUQgWEdCRVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBWRklPX1BMQVRGT1JNX0JDTUZMRVhSTV9SRVNFVFxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQnJvYWRjb20gRmxleFJNIHJlc2V0IChERVBSRUNBVEVEKVxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gQVJDSF9CQ01fSVBST0MgfHwgQ09NUElMRV9URVNUXFxuICAyMDpcXHRcXHRkZWZhdWx0IEFSQ0hfQkNNX0lQUk9DXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIEVuYWJsZXMgdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGhhbmRsZSByZXNldCBmb3IgQnJvYWRjb20gRmxleFJNXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDI1OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjQzLjQzNjEwOTgzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MDAxMTk4MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBWRklPIFBsYXRmb3JtIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgaXMgb24gdGhlIGB2ZmlvX3BsYXRmb3JtX21tYXBgIGZ1bmN0aW9uLiBJJ20gaW52ZXN0aWdhdGluZyBhIHNwZWNpZmljIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uY2AgZmlsZS4gVGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5LCBhZGRyZXNzZXMgaG93IHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyAoVkZJTykgcGxhdGZvcm0gZHJpdmVyIGhhbmRsZXMgbWVtb3J5IG1hcHBpbmcgKGBtbWFwYCkgb2YgZGV2aWNlIHJlZ2lvbnMuXG5cbkVzc2VudGlhbGx5LCBJIHNlZSB0aGF0IGB2ZmlvX3BsYXRmb3JtX21tYXBgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGhhbmRsaW5nIGBtbWFwKClgIGNhbGxzIG1hZGUgYnkgdXNlcnNwYWNlIHByb2Nlc3NlcyB0aGF0IGhhdmUgZmlsZSBkZXNjcmlwdG9ycyBmb3IgVkZJTyBwbGF0Zm9ybSBkZXZpY2VzLiBUaGlzIGZ1bmN0aW9uIHRoZW4gaW50ZXJhY3RzIHdpdGggdGhlIFZGSU8gY29yZS4gTm93LCB0aGUgY3JpdGljYWwgY2hhbmdlOiB0aGUgY29kZSBub3cgKmNsZWFycyogdGhlIGBWTV9NQVlXUklURWAgZmxhZyBvbiBhIGB2bWFgICh2aXJ0dWFsIG1lbW9yeSBhcmVhKSBpZiB0aGUgbWFwcGVkIHJlZ2lvbiBkb2Vzbid0IGhhdmUgdGhlIGBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEVgIGZsYWcgc2V0LiBUaGlzIGlzIGNsZXZlci4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHVzZXJzcGFjZSBmcm9tIGxhdGVyIHVzaW5nIGBtcHJvdGVjdCgpYCB0byBlc2NhbGF0ZSByZWFkLW9ubHkgbWFwcGluZ3MgaW50byB3cml0ZWFibGUgb25lcywgdGh1cyBlbmZvcmNpbmcgcmVhZC1vbmx5IGFjY2VzcyB3aGVyZSBhcHByb3ByaWF0ZS5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4gSSdtIGFzc2Vzc2luZyB0aGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmc6XG5cbiogICAqKlJlYWNoYWJsZSBjb2RlOioqIFRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIHJlYWNoYWJsZSwgaXQncyBjYWxsZWQgZHVyaW5nIGBtbWFwYCBoYW5kbGluZyBmb3IgVkZJTyBwbGF0Zm9ybSBkZXZpY2VzLlxuKiAgICoqVk1BIG1hbmlwdWxhdGlvbjoqKiBJdCBkaXJlY3RseSBtYW5pcHVsYXRlcyBWTUEgZmxhZ3MgKGBWTV9NQVlXUklURWApLCB3aGljaCBkaXJlY3RseSBhbHRlcnMgbWVtb3J5IG1hbmFnZW1lbnQgYmVoYXZpb3IgZm9yIHVzZXJzcGFjZSBkZXZpY2UgbWFwcGluZ3MuXG4qICAgKipUZXN0YWJpbGl0eToqKiBJdCdzIHJlYWRpbHkgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucyBsaWtlIGBtbWFwYCwgYG1wcm90ZWN0YCwgYW5kIHRyaWdnZXJzIHdyaXRlIGZhdWx0cy5cbiogICAqKldvcnRoRnV6emluZyA9IFRydWU6KiogQmFzZWQgb24gdGhlIGFib3ZlLCBJJ20gY29uZmlkZW50IHRoaXMgaXMgYSB2YWx1YWJsZSB0YXJnZXQuXG5cbkkndmUgYWxzbyBjb25maXJtZWQgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9uczogYFZGSU9gLCBgVkZJT19QTEFURk9STWAsIGFuZCBgQ09NUElMRV9URVNUYC4gVGhlIGxhc3Qgb25lIGlzIG5lY2Vzc2FyeSBvbiBhbWQ2NCBhcyBWRklPIHBsYXRmb3JtIGhhcyBhIGRlcGVuZGVuY3kgb24gZWl0aGVyIGBBUk1gLCBgQVJNNjRgLCBvciBgQ09NUElMRV9URVNUYC5cblxuU28sIHRoZSBrZXkgc3ltYm9sIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmZpb19wbGF0Zm9ybV9tbWFwYC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQncyB0aGUgb25seSBvbmUgZGlyZWN0bHkgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gTXkgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzIGFyZSBnb2luZyB0byBiZTpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBgdHJ1ZWBcbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX3BsYXRmb3JtX21tYXBgIHRvIGNsZWFyIGBWTV9NQVlXUklURWAgb24gVk1BcyBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIGBtcHJvdGVjdCgpYCB1cGdyYWRlcy4gVGhpcyBkaXJlY3RseSB0b3VjaGVzIHJlYWNoYWJsZSBWRlMvTU0tZmFjaW5nIGRldmljZSBkcml2ZXIgY29kZSBhbmQgYWx0ZXJzIFZNQSBmbGFnIGhhbmRsaW5nLlxuKiAgIGBGb2N1c1N5bWJvbHNgOiBgW1widmZpb19wbGF0Zm9ybV9tbWFwXCJdYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtcIlZGSU9cIiwgXCJWRklPX1BMQVRGT1JNXCIsIFwiQ09NUElMRV9URVNUXCJdYFxuXG5FdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEknbSBjb25maWRlbnQgaW4gdGhlc2UgZmluZGluZ3MuIE5vdywgSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0NzQsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuMzM2MjMyNDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEyMDkyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QTEFURk9STVwiLFxuICAgIFwiQ09NUElMRV9URVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wbGF0Zm9ybV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdmZpb19wbGF0Zm9ybV9tbWFwKCkgaW4gdGhlIFZGSU8gcGxhdGZvcm0gZHJpdmVyIHRvIGNsZWFyIFZNX01BWVdSSVRFIGZvciByZWFkLW9ubHkgZGV2aWNlIHJlZ2lvbnMsIHByZXZlbnRpbmcgdXNlcnNwYWNlIGZyb20gdXBncmFkaW5nIHBlcm1pc3Npb25zIHRvIHdyaXRhYmxlIHZpYSBtcHJvdGVjdCgpLiBUaGlzIGNoYW5nZXMgVk1BIHBlcm1pc3Npb24gaGFuZGxpbmcgb24gYSByZWFjaGFibGUgc3lzY2FsbCBlbnRyeXBvaW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUExBVEZPUk1cIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGxhdGZvcm1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHZmaW9fcGxhdGZvcm1fbW1hcCgpIGluIHRoZSBWRklPIHBsYXRmb3JtIGRyaXZlciB0byBjbGVhciBWTV9NQVlXUklURSBmb3IgcmVhZC1vbmx5IGRldmljZSByZWdpb25zLCBwcmV2ZW50aW5nIHVzZXJzcGFjZSBmcm9tIHVwZ3JhZGluZyBwZXJtaXNzaW9ucyB0byB3cml0YWJsZSB2aWEgbXByb3RlY3QoKS4gVGhpcyBjaGFuZ2VzIFZNQSBwZXJtaXNzaW9uIGhhbmRsaW5nIG9uIGEgcmVhY2hhYmxlIHN5c2NhbGwgZW50cnlwb2ludC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuNDE0MzU5Njk3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjY0MDEzNDgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjI3OjUwLjQxNDg4NTA4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2NjM5NjA0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdmZpb19wbGF0Zm9ybV9tbWFwKCkgdG8gY2xlYXIgdGhlIFZNX01BWVdSSVRFIGZsYWcgZnJvbSB2bWEtXFx1MDAzZXZtX2ZsYWdzIHdoZW4gdGhlIHJlZ2lvbiBkb2VzIG5vdCBoYXZlIFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSwgcHJldmVudGluZyBtcHJvdGVjdCgpIGZyb20gdXBncmFkaW5nIHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgdG8gd3JpdGFibGUuIFRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgVk1BIHBlcm1pc3Npb24gZmxhZ3MgYW5kIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSBkYXRhIGJ1ZmZlcnMsIGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBvciBpbnRyb2R1Y2UgYnJhbmNoZXMgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGtlcm5lbCBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDkyMTNhYjY2YjA4MGU5MzRmZTViNzIzZmI5MTdjZDg0NDg5ZDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MjY6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9jb21tb24uYyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG5pbmRleCBjNzJkYjVhOTllYmRhLi4yMGQ4N2MyNDRjYTI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jXG5AQCAtNTk1LDYgKzU5NSwxMCBAQCBpbnQgdmZpb19wbGF0Zm9ybV9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYVxuIFx0XHRcdFx1MDAyNlx1MDAyNiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9XUklURSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4rXHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuK1x0XHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcbitcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSB2ZGV2O1xuIFxuIFx0aWYgKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0udHlwZSBcdTAwMjYgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6Mjc6NTAuNDE0ODg3NzE3WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjExMTcwNDE0NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIE5lZWQgZm9yIEtNU0FOIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgcnVuLiBMZXQncyBkaWcgaW4uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYGRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2NvbW1vbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdmZpb19wbGF0Zm9ybV9tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBtZW1vcnkgbWFwcGluZyB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB3aGljaCBhbHdheXMgcmFpc2VzIGEgZmxhZyBmb3IgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGNvZGUgc25pcHBldC5cblxuSXQgc2VlbXMgdG8gYmUgZGVhbGluZyB3aXRoIG1lbW9yeSBwcm90ZWN0aW9uIGZsYWdzIGZvciBtYXBwaW5ncy4gSW50ZXJlc3RpbmcsIHdlIGhhdmUgYSBjaGVjayBwcmV2ZW50aW5nIHJlYWQtb25seSByZWdpb25zIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBgbXByb3RlY3QoKWAuIFRoYXQncyBnb29kLCBleHBsaWNpdGx5IGxpbWl0aW5nIHBlcm1pc3Npb25zIGlzIGFsd2F5cyBhIHdpbiBmb3Igc2VjdXJpdHkuIFRoZSBgdm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YWAgYXNzaWdubWVudCBpcyBzdGFuZGFyZCwgYW5kIHRoZSBgVkZJT19QTEFURk9STV9SRUdJT05fVFlQRV9NTUlPYCBjaGVjayBpcyBhIGNydWNpYWwgaW5kaWNhdG9yLiBUaGUgcHJlc2VuY2Ugb2YgTU1JTyBtYXBwaW5ncyBpbiBWRklPIGlzIG9mdGVuIGEgaGlnaC1yaXNrIGFyZWEsIEkga25vdyB0aGF0IGZyb20gcGFzdCBleHBlcmllbmNlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb2RlIHdpdGhpbiB0aGUgYnJvYWRlciBWRklPIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZSByZWdpb25zIGFyZSBzZXQgdXAgb3IgbWFuYWdlZD8gRG9lcyB0aGlzIGNvZGUgaW50ZXJhY3Qgd2l0aCBhbnkgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBNTUlPIHJlZ2lvbnM/IFRoaXMgaXMgYWxsIHByZXR0eSBoaWdoLWxldmVsLCBhbmQgYSBzaW1wbGUgaXNvbGF0ZWQgdmlldyBpc24ndCBlbm91Z2ggdG8gYXNzZXNzIHByb3Blcmx5LiBJIHdpbGwgZ28gYW5kIGRpdmUgYSBiaXQgZGVlcGVyLCBjaGVjayBmb3Igc2lkZSBlZmZlY3RzIGFuZCBtYXliZSBkbyBhIHF1aWNrIHNlYXJjaCB0byBkaXNjb3ZlciB3aGF0IG90aGVycyBoYXZlIHByZXZpb3VzbHkgZGlzY292ZXJlZCBpbiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowMS41ODUzMDcyNTlaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1fY29tbW9uLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTcwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTcwOlxcdFxcdHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiA9XFxuIDU3MTpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UsIHZkZXYpO1xcbiA1NzI6XFx0XFx0dW5zaWduZWQgaW50IGluZGV4O1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fUExBVEZPUk1fT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuIDU3NTpcXHRcXG4gNTc2OlxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX2VuZCBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQpXFxuIDU3NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTc4OlxcdFxcdGlmICghKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9TSEFSRUQpKVxcbiA1Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU4MDpcXHRcXHRpZiAoaW5kZXggXFx1MDAzZT0gdmRldi1cXHUwMDNlbnVtX3JlZ2lvbnMpXFxuIDU4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTgyOlxcdFxcdGlmICh2bWEtXFx1MDAzZXZtX3N0YXJ0IFxcdTAwMjYgflBBR0VfTUFTSylcXG4gNTgzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODQ6XFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZW5kIFxcdTAwMjYgflBBR0VfTUFTSylcXG4gNTg1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODY6XFx0XFxuIDU4NzpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQKSlcXG4gNTg4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1ODk6XFx0XFxuIDU5MDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKVxcbiA1OTE6XFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9SRUFEKSlcXG4gNTkyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1OTM6XFx0XFxuIDU5NDpcXHRcXHRpZiAoISh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSlcXG4gNTk1OlxcdFxcdFxcdFxcdFxcdTAwMjZcXHUwMDI2ICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fV1JJVEUpKVxcbiA1OTY6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU5NzpcXHRcXG4gNTk4OlxcdFxcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xcbiA1OTk6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbiA2MDA6XFx0XFx0XFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gdmRldjtcXG4gNjAzOlxcdFxcbiA2MDQ6XFx0XFx0aWYgKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX01NSU8pXFxuIDYwNTpcXHRcXHRcXHRyZXR1cm4gdmZpb19wbGF0Zm9ybV9tbWFwX21taW8odmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XFxuIDYwNjpcXHRcXG4gNjA3OlxcdFxcdGVsc2UgaWYgKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLnR5cGUgXFx1MDAyNiBWRklPX1BMQVRGT1JNX1JFR0lPTl9UWVBFX1BJTylcXG4gNjA4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMOyAvKiBub3QgaW1wbGVtZW50ZWQgKi9cXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDYxMTpcXHR9XFxuIDYxMjpcXHRFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BsYXRmb3JtX21tYXApO1xcbiA2MTM6XFx0XFxuIDYxNDpcXHRzdGF0aWMgaW50IHZmaW9fcGxhdGZvcm1fb2ZfcHJvYmUoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2LFxcbiA2MTU6XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRldmljZSAqZGV2KVxcbiA2MTY6XFx0e1xcbiA2MTc6XFx0XFx0aW50IHJldDtcXG4gNjE4OlxcdFxcbiA2MTk6XFx0XFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldiwgXFxcImNvbXBhdGlibGVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowMS41ODUzOTQ4MzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ2OTA3MDgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBWRklPIFBsYXRmb3JtIE1NSU8gTWFwcGluZyBTZWN1cml0eSBGaXgqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHZmaW9fcGxhdGZvcm1fbW1hcCgpYCBtb2RpZmljYXRpb24sIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2Ugd2UncmUgaGFyZGVuaW5nIHNlY3VyaXR5IGJ5IHByZXZlbnRpbmcgYSByZWFkLW9ubHkgVkZJTyBwbGF0Zm9ybSBNTUlPIG1hcHBpbmcgZnJvbSBiZWluZyBlbGV2YXRlZCB0byBhIHdyaXRhYmxlIHN0YXRlIHZpYSBgbXByb3RlY3QoKWAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhhdCBpdCdzIGNsZWFyaW5nIHRoZSBgVk1fTUFZV1JJVEVgIGZsYWcgd2l0aGluIHRoZSBgdm1hYCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lvbidzIGZsYWdzIGRvbid0IHBlcm1pdCB3cml0ZSBhY2Nlc3MuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLiBBZnRlciBjYXJlZnVsIHJldmlldywgbXkgY29uY2x1c2lvbiBpcyBhIGRlZmluaXRpdmUgXCJuby5cIiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHRoZXJlJ3Mgbm8gY29weWluZyBvZiBrZXJuZWwgbWVtb3J5IGludG8gdXNlciBzcGFjZSwgYW5kIG5vIGJyYW5jaGluZyBsb2dpYyByZWxpZXMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJ3JlIHB1cmVseSBhZGp1c3RpbmcgcGVybWlzc2lvbnMg4oCTIHNwZWNpZmljYWxseSBhIGJpdCBmbGFnIOKAkyBiYXNlZCBvbiBleGlzdGluZyByZWdpb24gcHJvcGVydGllcy4gSXQncyBhIGNsZWFuIG9wZXJhdGlvbi5cblxuVGhpbmtpbmcgdGhyb3VnaCB0aGUgS01TQU4gY3JpdGVyaWEsIGl0IGRvZXNuJ3QgbWVldCBhbnkgb2YgdGhlIFwibmVlZHMgS01TQU49dHJ1ZVwiIGNyaXRlcmlhLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIGludHJvZHVjdGlvbiBvZiB1bmluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIHNoZW5hbmlnYW5zIHdpdGggYm91bmRzIGNoZWNrcyB0aGF0IG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGJ5dGVzLiBDb252ZXJzZWx5LCB0aGUgcGF0Y2ggZml0cyBuaWNlbHkgaW50byB0aGUgXCJOZWVkc0tNU0FOPWZhbHNlXCIgY2F0ZWdvcnksIGFzIHdlJ3JlIGZ1bmRhbWVudGFsbHkgbWl0aWdhdGluZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgYnkgcmVzdHJpY3RpbmcgYWNjZXNzLiBUaGUgY29kZSBjaGFuZ2UgaXMsIGluIGVzc2VuY2UsIHByZXZlbnRpbmcgYW4gdW5uZWNlc3NhcnkgaW5jcmVhc2UgaW4gcGVybWlzc2lvbnMuXG5cblRoZXJlZm9yZSwgbXkgcmVhc29uaW5nIGlzIGFzIGZvbGxvd3M6IHRoZSBwYXRjaCB1cGRhdGVzIGB2ZmlvX3BsYXRmb3JtX21tYXAoKWAgdG8gZW5mb3JjZSByZWFkLW9ubHkgTU1JTyBtYXBwaW5nIHBlcm1pc3Npb25zIG1vcmUgcm9idXN0bHkuIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBubyBrZXJuZWwgZGF0YSBpcyBleHBvc2VkLCBhbmQgdGhlcmUncyBubyBkZXBlbmRlbmNlIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGlzIGlzIHN0cmljdGx5IGEgcGVybWlzc2lvbnMgYWRqdXN0bWVudCBmb3Igc2VjdXJpdHkuIENvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgaGVyZSB0aGF0IHdhcnJhbnQgYSBzcGVjaWZpYyBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFN0YW5kYXJkIEtBU0FOIGNvdmVyYWdlIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIHByYWN0aWNlcyBzaG91bGQgYmUgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gncyBjb3JyZWN0bmVzcy4gTGV0J3MgY2FsbCBpdCBhIGRheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4OCwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyODowNy4wNTQ0NjkxOVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHZmaW9fcGxhdGZvcm1fbW1hcCgpIHRvIGNsZWFyIHRoZSBWTV9NQVlXUklURSBmbGFnIGZyb20gdm1hLVxcdTAwM2V2bV9mbGFncyB3aGVuIHRoZSByZWdpb24gZG9lcyBub3QgaGF2ZSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUsIHByZXZlbnRpbmcgbXByb3RlY3QoKSBmcm9tIHVwZ3JhZGluZyByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIHRvIHdyaXRhYmxlLiBUaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIFZNQSBwZXJtaXNzaW9uIGZsYWdzIGFuZCBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgZGF0YSBidWZmZXJzLCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgb3IgaW50cm9kdWNlIGJyYW5jaGVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiB2ZmlvX3BsYXRmb3JtX21tYXAoKSB0byBjbGVhciB0aGUgVk1fTUFZV1JJVEUgZmxhZyBmcm9tIHZtYS1cXHUwMDNldm1fZmxhZ3Mgd2hlbiB0aGUgcmVnaW9uIGRvZXMgbm90IGhhdmUgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFLCBwcmV2ZW50aW5nIG1wcm90ZWN0KCkgZnJvbSB1cGdyYWRpbmcgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyB0byB3cml0YWJsZS4gVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBWTUEgcGVybWlzc2lvbiBmbGFncyBhbmQgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIGRhdGEgYnVmZmVycywgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIG9yIGludHJvZHVjZSBicmFuY2hlcyBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowf5hsk[1] Phase: Succeeded StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 08:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 08:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2] Phase: Succeeded StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 08:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-04 08:28:17 +0000 UTC FinishedAt: 2026-09-04 08:28:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2879110349/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-04 08:28:28 +0000 UTC FinishedAt: 2026-09-04 08:44:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-04 08:28:28 +0000 UTC FinishedAt: 2026-09-04 08:44:39 +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:*30a68f0c-f23f-4bcd-88ef-78bf95183ff3,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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2879110349/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": "01ceee20-0363-45a7-8c53-78d042002bde", "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-workflowf5hsk/series-workflowf5hsk-build-action-764411203/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-04 08:28:28 +0000 UTC FinishedAt: 2026-09-04 08:44:29 +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:*30a68f0c-f23f-4bcd-88ef-78bf95183ff3,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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2879110349/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": "01ceee20-0363-45a7-8c53-78d042002bde", "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-workflowf5hsk/series-workflowf5hsk-build-action-764411203/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-04 08:44:39 +0000 UTC FinishedAt: 2026-09-04 08:44:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-04 08:44:39 +0000 UTC FinishedAt: 2026-09-04 08:44:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-04 08:44:39 +0000 UTC FinishedAt: 2026-09-04 08:44:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-04 08:44:39 +0000 UTC FinishedAt: 2026-09-04 08:44:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2925008680/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-04 08:44:49 +0000 UTC FinishedAt: 2026-09-04 08:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-04 08:44:49 +0000 UTC FinishedAt: 2026-09-04 08:46:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*01ceee20-0363-45a7-8c53-78d042002bde,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-workflowf5hsk/series-workflowf5hsk-build-action-764411203/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-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-04 08:46:44 +0000 UTC FinishedAt: 2026-09-04 08:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-04 08:46:44 +0000 UTC FinishedAt: 2026-09-04 08:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-04 08:46:44 +0000 UTC FinishedAt: 2026-09-04 09:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-04 08:46:44 +0000 UTC FinishedAt: 2026-09-04 09:07:19 +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:*30a68f0c-f23f-4bcd-88ef-78bf95183ff3,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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2925008680/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": "e40187d6-7f71-436c-b7da-7a4fd15ad5e6", "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-workflowf5hsk/series-workflowf5hsk-build-action-1570837716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-04 08:46:44 +0000 UTC FinishedAt: 2026-09-04 09:07:09 +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:*30a68f0c-f23f-4bcd-88ef-78bf95183ff3,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-workflowf5hsk/series-workflowf5hsk-convert-artifact-2925008680/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": "e40187d6-7f71-436c-b7da-7a4fd15ad5e6", "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-workflowf5hsk/series-workflowf5hsk-build-action-1570837716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-04 09:07:19 +0000 UTC FinishedAt: 2026-09-04 09:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-04 09:07:19 +0000 UTC FinishedAt: 2026-09-04 09:07:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-04 09:07:19 +0000 UTC FinishedAt: 2026-09-04 09:09:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-04 09:07:19 +0000 UTC FinishedAt: 2026-09-04 09:09:03 +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:*e40187d6-7f71-436c-b7da-7a4fd15ad5e6,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-workflowf5hsk/series-workflowf5hsk-build-action-1570837716/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-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +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":["vfio_platform_mmap"],"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:*01ceee20-0363-45a7-8c53-78d042002bde,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e40187d6-7f71-436c-b7da-7a4fd15ad5e6,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-workflowf5hsk/series-workflowf5hsk-build-action-764411203/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-workflowf5hsk/series-workflowf5hsk-build-action-1570837716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:09:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:09:19 +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":["vfio_platform_mmap"],"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-workflowf5hsk/series-workflowf5hsk-convert-artifact-3298654049/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:09:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:09:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-04 09:09:13 +0000 UTC FinishedAt: 2026-09-04 09:09:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-04 09:09:23 +0000 UTC FinishedAt: 2026-09-04 09:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5hsk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_platform_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PLATFORM","COMPILE_TEST"],"series_id":"b2ef21b0-9aac-4d2a-8413-aa8a9929e4da","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-04 09:09:23 +0000 UTC FinishedAt: 2026-09-04 09:42:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*01ceee20-0363-45a7-8c53-78d042002bde,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e40187d6-7f71-436c-b7da-7a4fd15ad5e6,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-workflowf5hsk/series-workflowf5hsk-build-action-764411203/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-workflowf5hsk/series-workflowf5hsk-build-action-1570837716/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-workflowf5hsk/series-workflowf5hsk-convert-artifact-3298654049/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,}