Name: series-workflow46d29 Phase: Succeeded StartedAt: 2026-06-20 20:01:09 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[0] Phase: Succeeded StartedAt: 2026-06-20 20:01:09 +0000 UTC FinishedAt: 2026-06-20 20:10:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 20:01:09 +0000 UTC FinishedAt: 2026-06-20 20:10:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211_WEXT", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211_WEXT", "MAC80211_HWSIM" ], "series_id": "f3abba13-e9fb-4bda-bc24-9aad6335c24c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_wext_siwscan" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRjZGQ2NWE3ZDc0M2Q2Mzk3MGE5OTNlY2QxNDJkYjAzMGI2MWNjOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAyMDoxMDowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLjM4MDAxNjg0MDE0ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTM2MTIsOCAmIzQzOzM2MTIsMTAgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogdHJhbnNsYXRlIFwmIzM0O1NjYW4gZm9yIFNTSURcJiMzNDsgcmVxdWVzdCAqL1xuIFx0aWYgKHdyZXEpIHtcbiBcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5mbGFncyBcdTAwMjYgSVdfU0NBTl9USElTX0VTU0lEKSB7XG4tXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKVxuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdGlmICh3cmVxLVx1MDAzZWVzc2lkX2xlbiBcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xuJiM0MztcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRtZW1jcHkoY3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cdTAwM2Vlc3NpZCxcbiBcdFx0XHQgICAgICAgd3JlcS1cdTAwM2Vlc3NpZF9sZW4pO1xuIFx0XHRcdGNyZXEtXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cdTAwM2Vlc3NpZF9sZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTFfV0VYVCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3dleHRfc2l3c2NhbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkY2RkNjVhN2Q3NDNkNjM5NzBhOTkzZWNkMTQyZGIwMzBiNjFjYzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMjA6MTA6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uYwppbmRleCAwNWI3ZGM2Yjc2NmNlOS4uMzgwMDE2ODQwMTRkOTQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uYwpAQCAtMzYxMiw4ICYjNDM7MzYxMiwxMCBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogdHJhbnNsYXRlICYjMzQ7U2NhbiBmb3IgU1NJRCYjMzQ7IHJlcXVlc3QgKi8KIAlpZiAod3JlcSkgewogCQlpZiAod3JxdS0mZ3Q7ZGF0YS5mbGFncyAmYW1wOyBJV19TQ0FOX1RISVNfRVNTSUQpIHsKLQkJCWlmICh3cmVxLSZndDtlc3NpZF9sZW4gJmd0OyBJRUVFODAyMTFfTUFYX1NTSURfTEVOKQotCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCWlmICh3cmVxLSZndDtlc3NpZF9sZW4gJmd0OyBJRUVFODAyMTFfTUFYX1NTSURfTEVOKSB7CiYjNDM7CQkJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KIAkJCW1lbWNweShjcmVxLSZndDtyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS0mZ3Q7ZXNzaWQsCiAJCQkgICAgICAgd3JlcS0mZ3Q7ZXNzaWRfbGVuKTsKIAkJCWNyZXEtJmd0O3JlcS5zc2lkc1swXS5zc2lkX2xlbiA9IHdyZXEtJmd0O2Vzc2lkX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBTY2FuIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3dpcmVsZXNzL3NjYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIGhhbmRsaW5nIG9mIFNTSUQgbGVuZ3RocyBpbiBhIHNjYW4gcmVxdWVzdC4gSW5pdGlhbGx5LCB0aGUgY29kZSBoYWQgYSBzaW1wbGUgY2hlY2s6IGlmIHRoZSBFU1NJRCBsZW5ndGggaW4gdGhlIHJlcXVlc3QgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkLCBpdCBpbW1lZGlhdGVseSByZXR1cm5lZCBgLUVJTlZBTGAuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBhIHByb2JsZW0uIFJldHVybmluZyBlYXJseSBsaWtlIHRoYXQgY291bGQgYnlwYXNzIHNvbWUgbmVjZXNzYXJ5IGNsZWFudXAgcHJvY2VkdXJlcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIG1lbW9yeSBsZWFrIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBsYWNrIG9mIHByb3BlciByZXNvdXJjZSByZWxlYXNlLgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIGVsZWdhbnQuIEluc3RlYWQgb2YgdGhlIGRpcmVjdCByZXR1cm4sIGl0IG5vdyBhc3NpZ25zIGAtRUlOVkFMYCB0byBhbiBlcnJvciB2YXJpYWJsZSwgYGVycmAsIGFuZCB1c2VzIGEgYGdvdG8gb3V0O2Agc3RhdGVtZW50LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXJyb3IgY29kZSBpcyBzZXQgKmFuZCogdGhhdCB0aGUgY29kZSBqdW1wcyB0byBhIGNsZWFudXAgc2VjdGlvbiwgYG91dGAsIGJlZm9yZSBleGl0aW5nIHRoZSBmdW5jdGlvbi4gQnkgc2VwYXJhdGluZyB0aGUgZXJyb3IgYXNzaWdubWVudCBmcm9tIHRoZSBleGl0LCBpdCBhbGxvd3MgZm9yIGNsZWFudXAgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IG90aGVyd2lzZSBoYXZlIGJlZW4gc2tpcHBlZC4gSSBjYW4gc2VlIHRoZSBpbnRlbnQgY2xlYXJseSDigJMgZW5zdXJpbmcgYWxsIHJlc291cmNlcyBhcmUgcHJvcGVybHkgaGFuZGxlZCwgZXZlbiBpbiBlcnJvciBjYXNlcy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGl0c2VsZiB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHJlc291cmNlcyBtaWdodCBoYXZlIGJlZW4gYXQgcmlzayB3aXRob3V0IHRoaXMgY2hhbmdlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3dleHRfc2l3c2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYz0zNDkwPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaW50IGlmaW5kZXgpXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNTA4OmludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzUwOS1cdFx0XHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIFdpLUZpIFNjYW4gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY2FuIHByb2Nlc3MgYSBsaXR0bGUgYmV0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIGRyaXZlciBsZXZlbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBMaW5lIDM1MDggZmVlbHMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGxpa2VseSB3aGVyZSB0aGUgY29yZSBvZiBhIHBhcnRpY3VsYXIgc2NhbiBmdW5jdGlvbiBvciBzdGF0ZSB0cmFuc2l0aW9uIG9jY3Vycy4gRnJvbSB0aGVyZSwgSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlOiBpbml0aWF0aW9uLCBjaGFubmVsIHNlbGVjdGlvbiwgZnJhbWUgY29uc3RydWN0aW9uLCB0cmFuc21pc3Npb24sIHBvdGVudGlhbCByZWNlcHRpb24sIGFuZCBtYXliZSBzb21lIHNvcnQgb2YgZGF0YSBwcm9jZXNzaW5nLCBlcnJvciBoYW5kbGluZywgYW5kIHRpbWVvdXQgbWVjaGFuaXNtLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgaXQgZXhwb3NlcyBhbnkgY3JpdGljYWwgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBtaWdodCBiZSB0aGUgcGxhY2Ugd2hlcmUgZGlmZmVyZW50IHNjYW4gdHlwZXMsIHN1Y2ggYXMgYWN0aXZlIHZlcnN1cyBwYXNzaXZlIHNjYW5zLCBhcmUgZGlmZmVyZW50aWF0ZWQgb3Igd2hlcmUgY2hhbm5lbCBob3BwaW5nIGxvZ2ljIGlzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdyB0aGV5JiMzOTtyZSBiZWluZyBtYW5pcHVsYXRlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgZGV0YWlsZWQgZGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTA4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTA4Olx0aW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuMzUwOTpcdFx0XHRcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcbjM1MTA6XHRcdFx0XHQgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKVxuMzUxMTpcdHtcbjM1MTI6XHRcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcbjM1MTM6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHk7XG4zNTE0Olx0XHRzdHJ1Y3QgaXdfc2Nhbl9yZXEgKndyZXEgPSBOVUxMO1xuMzUxNTpcdFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdF9pbnQgKmNyZXE7XG4zNTE2Olx0XHRpbnQgaSwgZXJyLCBuX2NoYW5uZWxzID0gMDtcbjM1MTc6XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG4zNTE4Olx0XG4zNTE5Olx0XHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcbjM1MjA6XHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbjM1MjE6XHRcbjM1MjI6XHRcdGlmICh3cnF1LVx1MDAzZWRhdGEubGVuZ3RoID09IHNpemVvZihzdHJ1Y3QgaXdfc2Nhbl9yZXEpKVxuMzUyMzpcdFx0XHR3cmVxID0gKHN0cnVjdCBpd19zY2FuX3JlcSAqKWV4dHJhO1xuMzUyNDpcdFxuMzUyNTpcdFx0cmRldiA9IGNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KGRldl9uZXQoZGV2KSwgZGV2LVx1MDAzZWlmaW5kZXgpO1xuMzUyNjpcdFxuMzUyNzpcdFx0aWYgKElTX0VSUihyZGV2KSlcbjM1Mjg6XHRcdFx0cmV0dXJuIFBUUl9FUlIocmRldik7XG4zNTI5Olx0XG4zNTMwOlx0XHRpZiAocmRldi1cdTAwM2VzY2FuX3JlcSB8fCByZGV2LVx1MDAzZXNjYW5fbXNnKVxuMzUzMTpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMzUzMjpcdFxuMzUzMzpcdFx0d2lwaHkgPSBcdTAwMjZyZGV2LVx1MDAzZXdpcGh5O1xuMzUzNDpcdFxuMzUzNTpcdFx0LyogRGV0ZXJtaW5lIG51bWJlciBvZiBjaGFubmVscywgbmVlZGVkIHRvIGFsbG9jYXRlIGNyZXEgKi9cbjM1MzY6XHRcdGlmICh3cmVxIFx1MDAyNlx1MDAyNiB3cmVxLVx1MDAzZW51bV9jaGFubmVscykge1xuMzUzNzpcdFx0XHQvKiBQYXNzZWQgZnJvbSB1c2Vyc3BhY2Ugc28gc2hvdWxkIGJlIGNoZWNrZWQgKi9cbjM1Mzg6XHRcdFx0aWYgKHVubGlrZWx5KHdyZXEtXHUwMDNlbnVtX2NoYW5uZWxzIFx1MDAzZSBJV19NQVhfRlJFUVVFTkNJRVMpKVxuMzUzOTpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzU0MDpcdFx0XHRuX2NoYW5uZWxzID0gd3JlcS1cdTAwM2VudW1fY2hhbm5lbHM7XG4zNTQxOlx0XHR9IGVsc2Uge1xuMzU0MjpcdFx0XHRuX2NoYW5uZWxzID0gaWVlZTgwMjExX2dldF9udW1fc3VwcG9ydGVkX2NoYW5uZWxzKHdpcGh5KTtcbjM1NDM6XHRcdH1cbjM1NDQ6XHRcbjM1NDU6XHRcdGNyZXEgPSBremFsbG9jKHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscykgJiM0MztcbjM1NDY6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgY2ZnODAyMTFfc3NpZCksXG4zNTQ3Olx0XHRcdCAgICAgICBHRlBfQVRPTUlDKTtcbjM1NDg6XHRcdGlmICghY3JlcSlcbjM1NDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTUwOlx0XG4zNTUxOlx0XHRjcmVxLVx1MDAzZXJlcS53aXBoeSA9IHdpcGh5O1xuMzU1MjpcdFx0Y3JlcS1cdTAwM2VyZXEud2RldiA9IGRldi1cdTAwM2VpZWVlODAyMTFfcHRyO1xuMzU1MzpcdFx0LyogU1NJRHMgY29tZSBhZnRlciBjaGFubmVscyAqL1xuMzU1NDpcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHMgPSAodm9pZCAqKWNyZXEgJiM0MztcbjM1NTU6XHRcdFx0XHQgIHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscyk7XG4zNTU2Olx0XHRjcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzID0gbl9jaGFubmVscztcbjM1NTc6XHRcdGNyZXEtXHUwMDNlcmVxLm5fc3NpZHMgPSAxO1xuMzU1ODpcdFx0Y3JlcS1cdTAwM2VyZXEuc2Nhbl9zdGFydCA9IGppZmZpZXM7XG4zNTU5Olx0XG4zNTYwOlx0XHQvKiB0cmFuc2xhdGUgXCYjMzQ7U2NhbiBvbiBmcmVxdWVuY2llc1wmIzM0OyByZXF1ZXN0ICovXG4zNTYxOlx0XHRpID0gMDtcbjM1NjI6XHRcdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuMzU2MzpcdFx0XHRpbnQgajtcbjM1NjQ6XHRcbjM1NjU6XHRcdFx0aWYgKCF3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXSlcbjM1NjY6XHRcdFx0XHRjb250aW51ZTtcbjM1Njc6XHRcbjM1Njg6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2Mgd2lwaHktXHUwMDNlYmFuZHNbYmFuZF0tXHUwMDNlbl9jaGFubmVsczsgaiYjNDM7JiM0MzspIHtcbjM1Njk6XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW47XG4zNTcwOlx0XG4zNTcxOlx0XHRcdFx0LyogaWdub3JlIGRpc2FibGVkIGNoYW5uZWxzICovXG4zNTcyOlx0XHRcdFx0Y2hhbiA9IFx1MDAyNndpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLVx1MDAzZWNoYW5uZWxzW2pdO1xuMzU3MzpcdFx0XHRcdGlmIChjaGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCB8fFxuMzU3NDpcdFx0XHRcdCAgICAhY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQoY3JlcS1cdTAwM2VyZXEud2RldiwgY2hhbikpXG4zNTc1Olx0XHRcdFx0XHRjb250aW51ZTtcbjM1NzY6XHRcbjM1Nzc6XHRcdFx0XHQvKiBJZiB3ZSBoYXZlIGEgd2lyZWxlc3MgcmVxdWVzdCBzdHJ1Y3R1cmUgYW5kIHRoZVxuMzU3ODpcdFx0XHRcdCAqIHdpcmVsZXNzIHJlcXVlc3Qgc3BlY2lmaWVzIGZyZXF1ZW5jaWVzLCB0aGVuIHNlYXJjaFxuMzU3OTpcdFx0XHRcdCAqIGZvciB0aGUgbWF0Y2hpbmcgaGFyZHdhcmUgY2hhbm5lbC5cbjM1ODA6XHRcdFx0XHQgKi9cbjM1ODE6XHRcdFx0XHRpZiAod3JlcSBcdTAwMjZcdTAwMjYgd3JlcS1cdTAwM2VudW1fY2hhbm5lbHMpIHtcbjM1ODI6XHRcdFx0XHRcdGludCBrO1xuMzU4MzpcdFx0XHRcdFx0aW50IHdpcGh5X2ZyZXEgPSB3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXS1cdTAwM2VjaGFubmVsc1tqXS5jZW50ZXJfZnJlcTtcbjM1ODQ6XHRcdFx0XHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIHdyZXEtXHUwMDNlbnVtX2NoYW5uZWxzOyBrJiM0MzsmIzQzOykge1xuMzU4NTpcdFx0XHRcdFx0XHRzdHJ1Y3QgaXdfZnJlcSAqZnJlcSA9XG4zNTg2Olx0XHRcdFx0XHRcdFx0XHUwMDI2d3JlcS1cdTAwM2VjaGFubmVsX2xpc3Rba107XG4zNTg3Olx0XHRcdFx0XHRcdGludCB3ZXh0X2ZyZXEgPVxuMzU4ODpcdFx0XHRcdFx0XHRcdGNmZzgwMjExX3dleHRfZnJlcShmcmVxKTtcbjM1ODk6XHRcbjM1OTA6XHRcdFx0XHRcdFx0aWYgKHdleHRfZnJlcSA9PSB3aXBoeV9mcmVxKVxuMzU5MTpcdFx0XHRcdFx0XHRcdGdvdG8gd2V4dF9mcmVxX2ZvdW5kO1xuMzU5MjpcdFx0XHRcdFx0fVxuMzU5MzpcdFx0XHRcdFx0Z290byB3ZXh0X2ZyZXFfbm90X2ZvdW5kO1xuMzU5NDpcdFx0XHRcdH1cbjM1OTU6XHRcbjM1OTY6XHRcdFx0d2V4dF9mcmVxX2ZvdW5kOlxuMzU5NzpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLmNoYW5uZWxzW2ldID1cbjM1OTg6XHRcdFx0XHRcdFx1MDAyNndpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLVx1MDAzZWNoYW5uZWxzW2pdO1xuMzU5OTpcdFx0XHRcdGkmIzQzOyYjNDM7O1xuMzYwMDpcdFx0XHR3ZXh0X2ZyZXFfbm90X2ZvdW5kOiA7XG4zNjAxOlx0XHRcdH1cbjM2MDI6XHRcdH1cbjM2MDM6XHRcdC8qIE5vIGNoYW5uZWxzIGZvdW5kPyAqL1xuMzYwNDpcdFx0aWYgKCFpKSB7XG4zNjA1Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4zNjA2Olx0XHRcdGdvdG8gb3V0O1xuMzYwNzpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFkb3B0aW5nIHRoZSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuCgoqKkFuYWx5emluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgdGhlIGdlbmVyYWwgY29udGV4dCBsb2NrZWQgaW4uIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gSXQmIzM5O3MgdGltZSB0byBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMgYW5kIGdyYXNwIGhvdyB0aGlzIGZ1bmN0aW9uIGFjaGlldmVzIGl0cyBwdXJwb3NlLiBUaGUgYmlnIHBpY3R1cmUgaXMgc2V0LCBzbyBsZXQmIzM5O3MgcGFyc2UgdGhyb3VnaCB0aGUgbGluZXMgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBmaXQgdG9nZXRoZXIgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBvdXRwdXQsIG9yIGluIHRoaXMgY2FzZSwgY29udGludWUgb3VyIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzYwOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzYwODpcdFxuMzYwOTpcdFx0LyogU2V0IHJlYWwgbnVtYmVyIG9mIGNoYW5uZWxzIHNwZWNpZmllZCBpbiBjcmVxLVx1MDAzZXJlcS5jaGFubmVsc1tdICovXG4zNjEwOlx0XHRjcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzID0gaTtcbjM2MTE6XHRcbjM2MTI6XHRcdC8qIHRyYW5zbGF0ZSBcJiMzNDtTY2FuIGZvciBTU0lEXCYjMzQ7IHJlcXVlc3QgKi9cbjM2MTM6XHRcdGlmICh3cmVxKSB7XG4zNjE0Olx0XHRcdGlmICh3cnF1LVx1MDAzZWRhdGEuZmxhZ3MgXHUwMDI2IElXX1NDQU5fVEhJU19FU1NJRCkge1xuMzYxNTpcdFx0XHRcdGlmICh3cmVxLVx1MDAzZWVzc2lkX2xlbiBcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xuMzYxNjpcdFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjM2MTc6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMzYxODpcdFx0XHRcdH1cbjM2MTk6XHRcdFx0XHRtZW1jcHkoY3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cdTAwM2Vlc3NpZCxcbjM2MjA6XHRcdFx0XHQgICAgICAgd3JlcS1cdTAwM2Vlc3NpZF9sZW4pO1xuMzYyMTpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cdTAwM2Vlc3NpZF9sZW47XG4zNjIyOlx0XHRcdH1cbjM2MjM6XHRcdFx0aWYgKHdyZXEtXHUwMDNlc2Nhbl90eXBlID09IElXX1NDQU5fVFlQRV9QQVNTSVZFKSB7XG4zNjI0Olx0XHRcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHMgPSBOVUxMO1xuMzYyNTpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLm5fc3NpZHMgPSAwO1xuMzYyNjpcdFx0XHR9XG4zNjI3Olx0XHR9XG4zNjI4Olx0XG4zNjI5Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgaSYjNDM7JiM0MzspXG4zNjMwOlx0XHRcdGlmICh3aXBoeS1cdTAwM2ViYW5kc1tpXSlcbjM2MzE6XHRcdFx0XHRjcmVxLVx1MDAzZXJlcS5yYXRlc1tpXSA9XG4zNjMyOlx0XHRcdFx0XHQoMSBcdTAwM2NcdTAwM2Mgd2lwaHktXHUwMDNlYmFuZHNbaV0tXHUwMDNlbl9iaXRyYXRlcykgLSAxO1xuMzYzMzpcdFxuMzYzNDpcdFx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGNyZXEtXHUwMDNlcmVxLmJzc2lkKTtcbjM2MzU6XHRcbjM2MzY6XHRcdHNjb3BlZF9ndWFyZCh3aXBoeSwgXHUwMDI2cmRldi1cdTAwM2V3aXBoeSkge1xuMzYzNzpcdFx0XHRyZGV2LVx1MDAzZXNjYW5fcmVxID0gY3JlcTtcbjM2Mzg6XHRcdFx0ZXJyID0gcmRldl9zY2FuKHJkZXYsIGNyZXEpO1xuMzYzOTpcdFx0XHRpZiAoZXJyKSB7XG4zNjQwOlx0XHRcdFx0cmRldi1cdTAwM2VzY2FuX3JlcSA9IE5VTEw7XG4zNjQxOlx0XHRcdFx0LyogY3JlcSB3aWxsIGJlIGZyZWVkIGJlbG93ICovXG4zNjQyOlx0XHRcdH0gZWxzZSB7XG4zNjQzOlx0XHRcdFx0bmw4MDIxMV9zZW5kX3NjYW5fc3RhcnQocmRldiwgZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIpO1xuMzY0NDpcdFx0XHRcdC8qIGNyZXEgbm93IG93bmVkIGJ5IGRyaXZlciAqL1xuMzY0NTpcdFx0XHRcdGNyZXEgPSBOVUxMO1xuMzY0NjpcdFx0XHRcdGRldl9ob2xkKGRldik7XG4zNjQ3Olx0XHRcdH1cbjM2NDg6XHRcdH1cbjM2NDk6XHRcbjM2NTA6XHQgb3V0OlxuMzY1MTpcdFx0a2ZyZWUoY3JlcSk7XG4zNjUyOlx0XHRyZXR1cm4gZXJyO1xuMzY1MzpcdH1cbjM2NTQ6XHRcbjM2NTU6XHRzdGF0aWMgY2hhciAqaWVlZTgwMjExX3NjYW5fYWRkX2llcyhzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuMzY1NjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICppZXMsXG4zNjU3Olx0XHRcdFx0XHQgICAgY2hhciAqY3VycmVudF9ldiwgY2hhciAqZW5kX2J1ZilcbjM2NTg6XHR7XG4zNjU5Olx0XHRjb25zdCB1OCAqcG9zLCAqZW5kLCAqbmV4dDtcbjM2NjA6XHRcdHN0cnVjdCBpd19ldmVudCBpd2U7XG4zNjYxOlx0XG4zNjYyOlx0XHRpZiAoIWllcylcbjM2NjM6XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjY0Olx0XG4zNjY1Olx0XHQvKlxuMzY2NjpcdFx0ICogSWYgbmVlZGVkLCBmcmFnbWVudCB0aGUgSUVzIGJ1ZmZlciAoYXQgSUUgYm91bmRhcmllcykgaW50byBzaG9ydFxuMzY2NzpcdFx0ICogZW5vdWdoIGZyYWdtZW50cyB0byBmaXQgaW50byBJV19HRU5FUklDX0lFX01BWCBvY3RldCBtZXNzYWdlcy5cbjM2Njg6XHRcdCAqL1xuMzY2OTpcdFx0cG9zID0gaWVzLVx1MDAzZWRhdGE7XG4zNjcwOlx0XHRlbmQgPSBwb3MgJiM0MzsgaWVzLVx1MDAzZWxlbjtcbjM2NzE6XHRcbjM2NzI6XHRcdHdoaWxlIChlbmQgLSBwb3MgXHUwMDNlIElXX0dFTkVSSUNfSUVfTUFYKSB7XG4zNjczOlx0XHRcdG5leHQgPSBwb3MgJiM0MzsgMiAmIzQzOyBwb3NbMV07XG4zNjc0Olx0XHRcdHdoaWxlIChuZXh0ICYjNDM7IDIgJiM0MzsgbmV4dFsxXSAtIHBvcyBcdTAwM2MgSVdfR0VORVJJQ19JRV9NQVgpXG4zNjc1Olx0XHRcdFx0bmV4dCA9IG5leHQgJiM0MzsgMiAmIzQzOyBuZXh0WzFdO1xuMzY3NjpcdFxuMzY3NzpcdFx0XHRtZW1zZXQoXHUwMDI2aXdlLCAwLCBzaXplb2YoaXdlKSk7XG4zNjc4Olx0XHRcdGl3ZS5jbWQgPSBJV0VWR0VOSUU7XG4zNjc5Olx0XHRcdGl3ZS51LmRhdGEubGVuZ3RoID0gbmV4dCAtIHBvcztcbjM2ODA6XHRcdFx0Y3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX3BvaW50X2NoZWNrKGluZm8sIGN1cnJlbnRfZXYsXG4zNjgxOlx0XHRcdFx0XHRcdFx0XHRlbmRfYnVmLCBcdTAwMjZpd2UsXG4zNjgyOlx0XHRcdFx0XHRcdFx0XHQodm9pZCAqKXBvcyk7XG4zNjgzOlx0XHRcdGlmIChJU19FUlIoY3VycmVudF9ldikpXG4zNjg0Olx0XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjg1Olx0XHRcdHBvcyA9IG5leHQ7XG4zNjg2Olx0XHR9XG4zNjg3Olx0XG4zNjg4Olx0XHRpZiAoZW5kIFx1MDAzZSBwb3MpIHtcbjM2ODk6XHRcdFx0bWVtc2V0KFx1MDAyNml3ZSwgMCwgc2l6ZW9mKGl3ZSkpO1xuMzY5MDpcdFx0XHRpd2UuY21kID0gSVdFVkdFTklFO1xuMzY5MTpcdFx0XHRpd2UudS5kYXRhLmxlbmd0aCA9IGVuZCAtIHBvcztcbjM2OTI6XHRcdFx0Y3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX3BvaW50X2NoZWNrKGluZm8sIGN1cnJlbnRfZXYsXG4zNjkzOlx0XHRcdFx0XHRcdFx0XHRlbmRfYnVmLCBcdTAwMjZpd2UsXG4zNjk0Olx0XHRcdFx0XHRcdFx0XHQodm9pZCAqKXBvcyk7XG4zNjk1Olx0XHRcdGlmIChJU19FUlIoY3VycmVudF9ldikpXG4zNjk2Olx0XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjk3Olx0XHR9XG4zNjk4Olx0XG4zNjk5Olx0XHRyZXR1cm4gY3VycmVudF9ldjtcbjM3MDA6XHR9XG4zNzAxOlx0XG4zNzAyOlx0c3RhdGljIGNoYXIgKlxuMzcwMzpcdGllZWU4MDIxMV9ic3Moc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcbjM3MDQ6XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9pbnRlcm5hbF9ic3MgKmJzcywgY2hhciAqY3VycmVudF9ldixcbjM3MDU6XHRcdCAgICAgIGNoYXIgKmVuZF9idWYpXG4zNzA2Olx0e1xuMzcwNzpcdFx0Y29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIEZpeCBpbiBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIGlzc3VlIGlzIHRoZSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLiBUaGlzIGZ1bmN0aW9uLCByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIFNJT0NTSVdTQ0FOIFdpcmVsZXNzIEV4dGVuc2lvbnMgaW9jdGwsIGlzIHRoZSBlbnRyeSBwb2ludC4gVGhlIGNydWNpYWwgcGFydCBpcyBob3cgaXQgYWxsb2NhdGVzIGBjcmVxYCB1c2luZyBga3phbGxvY2AgYXQgbGluZSAzNTQ1LiBUaGUgdnVsbmVyYWJpbGl0eSBhcmlzZXMgd2hlbiBgd3JlcS0mZ3Q7ZXNzaWRfbGVuYCBleGNlZWRzIGBJRUVFODAyMTFfTUFYX1NTSURfTEVOYC4gUHJldmlvdXNseSwgdGhlIGNvZGUgd291bGQgc2ltcGx5IHJldHVybiBgLUVJTlZBTGAgZGlyZWN0bHksIGxlYXZpbmcgYGNyZXFgIGxlYWtlZC4gVGhlIGZpeCBpbnRyb2R1Y2VzIGBlcnIgPSAtRUlOVkFMOyBnb3RvIG91dDtgLCBlbnN1cmluZyBgY3JlcWAgaXMgZnJlZWQgYXQgdGhlIGBvdXRgIGxhYmVsLCBzcGVjaWZpY2FsbHkgbGluZSAzNjUxLgoKRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50IOKAkyBhIGNydWNpYWwgbWVtb3J5IGxlYWsgYmVpbmcgcGx1Z2dlZC4gSW1wb3J0YW50bHksIHRoaXMgbG9naWMgaXMgY29yZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IFdpcmVsZXNzIEV4dGVuc2lvbnMsIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggaW9jdGwgb24gd2lyZWxlc3MgaW50ZXJmYWNlcy4gVGhlIGdvb2QgbmV3cyAob3IgYmFkLCBkZXBlbmRpbmcgb24geW91ciBwZXJzcGVjdGl2ZSkgaXMgdGhhdCB3ZSBjYW4gcmVhY2ggdGhpcyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLgoKVGhpcyBzY3JlYW1zIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGhhdmUgYSBjbGVhbiwgcmVhY2hhYmxlIHBhdGggdGhhdCB3YXMgbGVha3ksIGFuZCBub3cgaXMgZml4ZWQuIEdpdmVuIG91ciBleHBlcnRpc2UsIGZ1enppbmcgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi4gU3BlY2lmaWNhbGx5LCBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBpcyB0aGUgdGFyZ2V0LCBhbmQgd2UmIzM5O2xsIHdhbnQgdG8gZW5hYmxlIHRoZSBjb25maWdzIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUuIEJlZm9yZSBydW5uaW5nIHRoZSBmdXp6ZXIsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAgdG8gZW5zdXJlIHdlIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGdldCB0byBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q0ZHODAyMTFfV0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02LVx0ZGVmX2Jvb2wgeVxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTgtXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTc3PWNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTEzPWNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSAmIzQzOz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz01NDY9c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy02MzMtXHRcdFx0ICBjZmc4MDIxMV9kZnNfY2hhbm5lbHNfdXBkYXRlX3dvcmspO1xubmV0L3dpcmVsZXNzL2NvcmUuYzo2MzQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvY29yZS5jLTYzNS1cdHJkZXYtXHUwMDNld2lwaHkud2V4dCA9IFx1MDAyNmNmZzgwMjExX3dleHRfaGFuZGxlcjtcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0MDQ9c3RhdGljIHZvaWQgX2NmZzgwMjExX3VucmVnaXN0ZXJfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTQ0My1cbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTQ0NS1cdGtmcmVlX3NlbnNpdGl2ZSh3ZGV2LVx1MDAzZXdleHQua2V5cyk7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNDk4PXZvaWQgY2ZnODAyMTFfbGVhdmVfbG9ja2VkKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjItXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE1MjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjQtXHRcdGtmcmVlKHdkZXYtXHUwMDNld2V4dC5pZSk7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNjA5PXZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE3LVxubmV0L3dpcmVsZXNzL2NvcmUuYzoxNjE4OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE5LVx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0gLTE7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNzAyPXN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE3NzYtXHRcdHN3aXRjaCAod2Rldi1cdTAwM2VpZnR5cGUpIHtcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTc3NzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTc3OC1cdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5PXZvaWQgX19jZmc4MDIxMV9pYnNzX2pvaW5lZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0yMy1cdHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcztcbm5ldC93aXJlbGVzcy9pYnNzLmM6MjQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTI1LVx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xuLS1cbm5ldC93aXJlbGVzcy9pYnNzLmMtNTEtXHRcdFx0XHRHRlBfS0VSTkVMKTtcbm5ldC93aXJlbGVzcy9pYnNzLmM6NTI6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTUzLVx0bWVtc2V0KFx1MDAyNndycXUsIDAsIHNpemVvZih3cnF1KSk7XG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYz04Nz1pbnQgX19jZmc4MDIxMV9qb2luX2lic3Moc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9pYnNzLmMtMTQwLVxubmV0L3dpcmVsZXNzL2lic3MuYzoxNDE6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE0Mi1cdHdkZXYtXHUwMDNld2V4dC5pYnNzLmNoYW5kZWYgPSBwYXJhbXMtXHUwMDNlY2hhbmRlZjtcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE1Nj12b2lkIGNmZzgwMjExX2NsZWFyX2lic3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBub3dleHQpXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0xODQtXHRtZW1zZXQoXHUwMDI2d2Rldi1cdTAwM2V1Lmlic3MuY2hhbmRlZiwgMCwgc2l6ZW9mKHdkZXYtXHUwMDNldS5pYnNzLmNoYW5kZWYpKTtcbm5ldC93aXJlbGVzcy9pYnNzLmM6MTg1OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL2lic3MuYy0xODYtXHRpZiAoIW5vd2V4dClcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5Mj1pbnQgY2ZnODAyMTFfbGVhdmVfaWJzcyhzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0yMTMtXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjIxNDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjE1LWludCBjZmc4MDIxMV9pYnNzX3dleHRfam9pbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL21sbWUuYz0yMzQ9dm9pZCBjZmc4MDIxMV9taWNoYWVsX21pY19mYWlsdXJlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuLS1cbm5ldC93aXJlbGVzcy9tbG1lLmMtMjM5LVx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2ID0gd2lwaHlfdG9fcmRldih3aXBoeSk7XG5uZXQvd2lyZWxlc3MvbWxtZS5jOjI0MDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9tbG1lLmMtMjQxLVx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ1OT1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTUwMjojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMy1cdFx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0ga2V5LmlkeDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjQtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1MjU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjYtXHRcdHdkZXYtXHUwMDNld2V4dC5kZWZhdWx0X21nbXRfa2V5ID0ga2V5LmlkeDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU2Mzc9c3RhdGljIGludCBubDgwMjExX2RlbF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODYtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU2ODc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODgtXHRpZiAoIWVycikge1xuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MTExND12b2lkIF9fX2NmZzgwMjExX3NjYW5fZG9uZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTE5LVx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbm5ldC93aXJlbGVzcy9zY2FuLmM6MTEyMDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zY2FuLmMtMTEyMS1cdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExNjItXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExNjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExNjQtXHRpZiAod2Rldi1cdTAwM2VuZXRkZXYgXHUwMDI2XHUwMDI2ICFyZXF1ZXN0LVx1MDAzZWluZm8uYWJvcnRlZCkge1xuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MzQxND12b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODctXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjM0ODg6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODktc3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTczNT12b2lkIF9fY2ZnODAyMTFfY29ubmVjdF9yZXN1bHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzQzLVx0dTggY291bnRyeV9kYXRhbGVuO1xubmV0L3dpcmVsZXNzL3NtZS5jOjc0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy03NDUtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTc3NC1cbm5ldC93aXJlbGVzcy9zbWUuYzo3NzU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzc2LVx0aWYgKHdleHRldiBcdTAwMjZcdTAwMjYgIWNyLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTEwNzk9dm9pZCBfX2NmZzgwMjExX3JvYW1lZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYy0xMDgxLXtcbm5ldC93aXJlbGVzcy9zbWUuYzoxMDgyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3NtZS5jLTEwODMtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTExMzQtXG5uZXQvd2lyZWxlc3Mvc21lLmM6MTEzNTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM2LVx0aWYgKCFpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTEzNDM9dm9pZCBfX2NmZzgwMjExX2Rpc2Nvbm5lY3RlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqaWUsXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNDgtXHRpbnQgaTtcbm5ldC93aXJlbGVzcy9zbWUuYzoxMzQ5OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNTAtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTQtXG5uZXQvd2lyZWxlc3Mvc21lLmM6MTM5NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy0xMzk2LVx0bWVtc2V0KFx1MDAyNndycXUsIDAsIHNpemVvZih3cnF1KSk7XG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTYzNz1FWFBPUlRfU1lNQk9MKHdpcmVsZXNzX3NlbmRfZXZlbnQpO1xubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTYzOC1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo2Mzk6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjQwLXN0YXRpYyB2b2lkIHdpcmVsZXNzX3dhcm5fY2ZnODAyMTFfd2V4dCh2b2lkKVxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYz02NDk9c3RydWN0IGl3X3N0YXRpc3RpY3MgKmdldF93aXJlbGVzc19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYy02NTYtXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM6NjU3OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTY1OC1cdGlmIChkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM9Njk3PXN0YXRpYyBpd19oYW5kbGVyIGdldF9oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTcwMi1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo3MDM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNzA0LVx0aWYgKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2V3aXBoeSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgY2ZnODAyMTFfd2V4dF9zaXdzY2FuIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGNmZzgwMjExYCBzdHVmZiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGV4dGVuc2lvbnMgaW50ZXJmYWNlIChgV0VYVGApLiBUaGUgY29yZSBvZiBteSBpbnRlcmVzdCBpcyB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLiAgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBpdCYjMzk7cyBjb25kaXRpb25hbCwgdGhhdCBpdCBsaXZlcyB3aXRoaW4gYW4gYCNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVGAgYmxvY2suIE1ha2VzIHNlbnNlLCByaWdodD8gSXQmIzM5O3Mgb25seSBjb21waWxlZCBpbiBpZiB0aGUgYENGRzgwMjExX1dFWFRgIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCBoZWxwcyBrZWVwIHRoZSBrZXJuZWwgc2xpbS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgbGluZSBudW1iZXIgaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBJdCYjMzk7cyBsaW5lIDM0ODguIE9rYXksIGdvb2QuIFRoYXQgY29uZmlybXMgdGhlIGJsb2NrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGludGVncmF0aW9uIHdpdGggV0VYVCBpcyBoYW5kbGVkIGZvciBzY2FucyB3aGVuIHRoaXMgb3B0aW9uIGlzIHNldC4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIHRoYXQgYmxvY2smIzM5O3MgY29kZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0ODA6XHRcdFx0YnNzLVx1MDAzZXB1Yi5jaGFubmVsID0gY2hhbjtcbjM0ODE6XHRcdFx0Y2ZnODAyMTFfcmVoYXNoX2JzcyhyZGV2LCBic3MpO1xuMzQ4MjpcdFx0fVxuMzQ4MzpcdFxuMzQ4NDpcdGRvbmU6XG4zNDg1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZyZGV2LVx1MDAzZWJzc19sb2NrKTtcbjM0ODY6XHR9XG4zNDg3Olx0XG4zNDg4Olx0I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG4zNDg5Olx0c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXG4zNDkwOlx0Y2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcbjM0OTE6XHR7XG4zNDkyOlx0XHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XG4zNDkzOlx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuMzQ5NDpcdFxuMzQ5NTpcdFx0QVNTRVJUX1JUTkwoKTtcbjM0OTY6XHRcbjM0OTc6XHRcdGRldiA9IGRldl9nZXRfYnlfaW5kZXgobmV0LCBpZmluZGV4KTtcbjM0OTg6XHRcdGlmICghZGV2KVxuMzQ5OTpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbjM1MDA6XHRcdGlmIChkZXYtXHUwMDNlaWVlZTgwMjExX3B0cilcbjM1MDE6XHRcdFx0cmRldiA9IHdpcGh5X3RvX3JkZXYoZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNld2lwaHkpO1xuMzUwMjpcdFx0ZWxzZVxuMzUwMzpcdFx0XHRyZGV2ID0gRVJSX1BUUigtRU5PREVWKTtcbjM1MDQ6XHRcdGRldl9wdXQoZGV2KTtcbjM1MDU6XHRcdHJldHVybiByZGV2O1xuMzUwNjpcdH1cbjM1MDc6XHRcbjM1MDg6XHRpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4zNTA5Olx0XHRcdFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuMzUxMDpcdFx0XHRcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXG4zNTExOlx0e1xuMzUxMjpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xuMzUxMzpcdFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcbjM1MTQ6XHRcdHN0cnVjdCBpd19zY2FuX3JlcSAqd3JlcSA9IE5VTEw7XG4zNTE1Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0X2ludCAqY3JlcTtcbjM1MTY6XHRcdGludCBpLCBlcnIsIG5fY2hhbm5lbHMgPSAwO1xuMzUxNzpcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbjM1MTg6XHRcbjM1MTk6XHRcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuMzUyMDpcdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuMzUyMTpcdFxuMzUyMjpcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBpd19zY2FuX3JlcSkpXG4zNTIzOlx0XHRcdHdyZXEgPSAoc3RydWN0IGl3X3NjYW5fcmVxICopZXh0cmE7XG4zNTI0Olx0XG4zNTI1Olx0XHRyZGV2ID0gY2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoZGV2X25ldChkZXYpLCBkZXYtXHUwMDNlaWZpbmRleCk7XG4zNTI2Olx0XG4zNTI3Olx0XHRpZiAoSVNfRVJSKHJkZXYpKVxuMzUyODpcdFx0XHRyZXR1cm4gUFRSX0VSUihyZGV2KTtcbjM1Mjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2xlYXJseSB3cmFwcGVkIGluIGFuIGAjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRgIGJsb2NrLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCB0aGlzIHdvcmtpbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBgQ0ZHODAyMTFfV0VYVGAgZW5hYmxlZCwgb2J2aW91c2x5LiBBbmQsIG9mIGNvdXJzZSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUsIGNhbiYjMzk7dCBmb3JnZXQgdGhhdC4gSSB0aGluayBgTUFDODAyMTFfSFdTSU1gIHdvdWxkIGJlIGhlbHBmdWwgdG9vLCBlc3BlY2lhbGx5IGZvciBxdWlja2x5IGNyZWF0aW5nIHRob3NlIHZpcnR1YWwgV2ktRmkgZGV2aWNlcyBmb3IgdGVzdGluZy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENGRzgwMjExX1dFWFRgLiBRdWljayB0cmlwIHRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEFoLCBqdXN0IGEgc2ltcGxlIGJvb2xlYW4uIE5vIG90aGVyIGV4cGxpY2l0IGRlcGVuZGVuY2llcy4gR29vZCB0byBrbm93LgoKQWxyaWdodCwgbm93IGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgTUFDODAyMTFfSFdTSU1gLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcyLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgzOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg0LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNDg4Olx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDkyPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwODpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNC1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NDpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMzpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYxNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmluZyB0aGUgV2lyZWxlc3MgU3RhY2sqKgoKQWxyaWdodCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgTUFDODAyMTFfSFdTSU1gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBoZXJlLiBCdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgbGV0JiMzOTtzIGxpc3QgdGhlbSBhbGwuIFNvLCB3ZSYjMzk7cmUgdGFsa2luZyBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gQWgsIHJpZ2h0LCBgQ0ZHODAyMTFgIGlzIGFscmVhZHkgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlLCBzbyBpdCYjMzk7cyBwcm9iYWJseSByZWR1bmRhbnQgdG8gaW5jbHVkZSwgYnV0IEkmIzM5O2xsIGxlYXZlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIHRvIGVuc3VyZSBJJiMzOTt2ZSBjb3ZlcmVkIGV2ZXJ5dGhpbmcuIFVsdGltYXRlbHksIEkmIzM5O2xsIG5lZWQgYENGRzgwMjExX1dFWFRgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmVkLgoKTm93LCBiZWZvcmUgSSBjb21taXQgdG8gdGhpcywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgdGhhdCBJJiMzOTttIG1pc3NpbmcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLCBmb3IgaW5zdGFuY2UsIGlzbiYjMzk7dCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgbGlrZSBgd2V4dC1jb21wYXQuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IGl0IGlzbiYjMzk7dCBhIHJlcXVpcmVkIGZsYWcuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MzQ5MD1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMzUwNy1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzUwODppbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDktXHRcdFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jPTE0ODQ9c3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgY2ZnODAyMTFfaGFuZGxlcnNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYy0xNDkzLVx0SVdfSEFORExFUihTSU9DU0lXTUxNRSxcdFx0Y2ZnODAyMTFfd2V4dF9zaXdtbG1lKSxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jOjE0OTQ6XHRJV19IQU5ETEVSKFNJT0NTSVdTQ0FOLFx0XHRjZmc4MDIxMV93ZXh0X3Npd3NjYW4pLFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5NS1cdElXX0hBTkRMRVIoU0lPQ0dJV1NDQU4sXHRcdGNmZzgwMjExX3dleHRfZ2l3c2NhbiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzc3CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNJT0NTSVdTQ0FOIEhhbmRsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgYFNJT0NTSVdTQ0FOYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCB3aXJlbGVzcyBleHRlbnNpb24gaW9jdGwuIExldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBwYXRjaC4KClJpZ2h0LCB0aGUgY29kZSBzbmlwcGV0IGNsZWFybHkgc2hvd3MgYSBidWcgZml4IHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhay4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBkaWRuJiMzOTt0IGhhbmRsZSB0aGUgZXJyb3IgY2FzZSBwcm9wZXJseSB3aGVuIHRoZSBFU1NJRCBsZW5ndGggd2FzIGludmFsaWQuIFRoaXMgbWVhbnMgdGhlIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBjYWxsIHdpdGggYFNJT0NTSVdTQ0FOYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIGltcHJvdmVtZW50IHRvIHRoZSBkcml2ZXIuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgdGhpcyBpcyAqKndvcnRoIGZ1enppbmcqKi4gSSYjMzk7bGwgbm90ZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBhcyBhIGZvY3VzIHN5bWJvbCBmb3IgdGVzdGluZy4gVGhlIGBDRkc4MDIxMV9XRVhUYCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmF0aW9ucyBzZWVtIHJlbGV2YW50IGhlcmUgZm9yIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBXSVJFTEVTU19FWFRgIGlzbiYjMzk7dCBhIGhhcmQgcmVxdWlyZW1lbnQuIENoZWNraW5nIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgY29uZmlybXMgYENGRzgwMjExX1dFWFRgIGlzIHN1ZmZpY2llbnQuIEdvb2QuCgpJJiMzOTt2ZSByZXZpZXdlZCB0aGUgcGF0Y2g7IHRoZXJlIGFyZSBubyBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgYmV5b25kIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLiBUaGUgY29yZSBvZiBpdCBhbGwgaXM6IHRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciwgd2hpY2ggaXMgd2l0aGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUsIGJ5IG1ha2luZyBzdXJlIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBwcm9wZXJseSBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0JiMzOTtzIGEgZ29vZCBmaXguIExldCYjMzk7cyBjYWxsIHRoaXMgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMV9XRVhUJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfd2V4dF9zaXdzY2FuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIFNJT0NTSVdTQ0FOIGlvY3RsIGhhbmRsZXIgKGNmZzgwMjExX3dleHRfc2l3c2NhbikgYnkgZW5zdXJpbmcgdGhlIGFsbG9jYXRlZCBzY2FuIHJlcXVlc3Qgc3RydWN0dXJlIGlzIGZyZWVkIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgaW9jdGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjA0LjY5MDEzNzYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1MTc2MjgyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV93ZXh0X3Npd3NjYW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDowNC42OTAxODE2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNjEyNzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGNkZDY1YTdkNzQzZDYzOTcwYTk5M2VjZDE0MmRiMDMwYjYxY2M5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyMCAyMDoxMDowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li4zODAwMTY4NDAxNGQ5NCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbkBAIC0zNjEyLDggKzM2MTIsMTAgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHQvKiB0cmFuc2xhdGUgXFxcIlNjYW4gZm9yIFNTSURcXFwiIHJlcXVlc3QgKi9cXG4gXFx0aWYgKHdyZXEpIHtcXG4gXFx0XFx0aWYgKHdycXUtXFx1MDAzZWRhdGEuZmxhZ3MgXFx1MDAyNiBJV19TQ0FOX1RISVNfRVNTSUQpIHtcXG4tXFx0XFx0XFx0aWYgKHdyZXEtXFx1MDAzZWVzc2lkX2xlbiBcXHUwMDNlIElFRUU4MDIxMV9NQVhfU1NJRF9MRU4pXFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRpZiAod3JlcS1cXHUwMDNlZXNzaWRfbGVuIFxcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRtZW1jcHkoY3JlcS1cXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWQsIHdyZXEtXFx1MDAzZWVzc2lkLFxcbiBcXHRcXHRcXHQgICAgICAgd3JlcS1cXHUwMDNlZXNzaWRfbGVuKTtcXG4gXFx0XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cXHUwMDNlZXNzaWRfbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDowNS4xNTM0NjU2MDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDU0MjkwODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkY2RkNjVhN2Q3NDNkNjM5NzBhOTkzZWNkMTQyZGIwMzBiNjFjYzk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMjA6MTA6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLjM4MDAxNjg0MDE0ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTM2MTIsOCArMzYxMiwxMCBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHQvKiB0cmFuc2xhdGUgXCJTY2FuIGZvciBTU0lEXCIgcmVxdWVzdCAqL1xuIFx0aWYgKHdyZXEpIHtcbiBcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5mbGFncyBcdTAwMjYgSVdfU0NBTl9USElTX0VTU0lEKSB7XG4tXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKVxuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKSB7XG4rXHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuIFx0XHRcdG1lbWNweShjcmVxLVx1MDAzZXJlcS5zc2lkc1swXS5zc2lkLCB3cmVxLVx1MDAzZWVzc2lkLFxuIFx0XHRcdCAgICAgICB3cmVxLVx1MDAzZWVzc2lkX2xlbik7XG4gXHRcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZF9sZW4gPSB3cmVxLVx1MDAzZWVzc2lkX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjA1LjE1MzQ2ODU2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODQwNDA5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgU2NhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgcmVsYXRlZCB0byB0aGUgaGFuZGxpbmcgb2YgU1NJRCBsZW5ndGhzIGluIGEgc2NhbiByZXF1ZXN0LiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCBhIHNpbXBsZSBjaGVjazogaWYgdGhlIEVTU0lEIGxlbmd0aCBpbiB0aGUgcmVxdWVzdCBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQsIGl0IGltbWVkaWF0ZWx5IHJldHVybmVkIGAtRUlOVkFMYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRoaW5raW5nIHRoZXJlIG1pZ2h0IGJlIGEgcHJvYmxlbS4gUmV0dXJuaW5nIGVhcmx5IGxpa2UgdGhhdCBjb3VsZCBieXBhc3Mgc29tZSBuZWNlc3NhcnkgY2xlYW51cCBwcm9jZWR1cmVzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgbWVtb3J5IGxlYWsgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIGxhY2sgb2YgcHJvcGVyIHJlc291cmNlIHJlbGVhc2UuXG5cblRoZSBwYXRjaCdzIHNvbHV0aW9uIGlzIGVsZWdhbnQuIEluc3RlYWQgb2YgdGhlIGRpcmVjdCByZXR1cm4sIGl0IG5vdyBhc3NpZ25zIGAtRUlOVkFMYCB0byBhbiBlcnJvciB2YXJpYWJsZSwgYGVycmAsIGFuZCB1c2VzIGEgYGdvdG8gb3V0O2Agc3RhdGVtZW50LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXJyb3IgY29kZSBpcyBzZXQgKmFuZCogdGhhdCB0aGUgY29kZSBqdW1wcyB0byBhIGNsZWFudXAgc2VjdGlvbiwgYG91dGAsIGJlZm9yZSBleGl0aW5nIHRoZSBmdW5jdGlvbi4gQnkgc2VwYXJhdGluZyB0aGUgZXJyb3IgYXNzaWdubWVudCBmcm9tIHRoZSBleGl0LCBpdCBhbGxvd3MgZm9yIGNsZWFudXAgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IG90aGVyd2lzZSBoYXZlIGJlZW4gc2tpcHBlZC4gSSBjYW4gc2VlIHRoZSBpbnRlbnQgY2xlYXJseSDigJMgZW5zdXJpbmcgYWxsIHJlc291cmNlcyBhcmUgcHJvcGVybHkgaGFuZGxlZCwgZXZlbiBpbiBlcnJvciBjYXNlcy5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZ28gYmFjayBhbmQgZXhhbWluZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBpdHNlbGYgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCByZXNvdXJjZXMgbWlnaHQgaGF2ZSBiZWVuIGF0IHJpc2sgd2l0aG91dCB0aGlzIGNoYW5nZS4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MDkuOTM3NTExNTk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODI1MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3dleHRfc2l3c2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmM9MzQ5MD1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzUwODppbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA5LVxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MDkuOTk2MzUyMDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NTUyNTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgV2ktRmkgU2NhbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY2FuIHByb2Nlc3MgYSBsaXR0bGUgYmV0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaGFuZGxlZCBhdCB0aGUgZHJpdmVyIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYC4gTGluZSAzNTA4IGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgb2YgYSBwYXJ0aWN1bGFyIHNjYW4gZnVuY3Rpb24gb3Igc3RhdGUgdHJhbnNpdGlvbiBvY2N1cnMuIEZyb20gdGhlcmUsIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBzZXF1ZW5jZTogaW5pdGlhdGlvbiwgY2hhbm5lbCBzZWxlY3Rpb24sIGZyYW1lIGNvbnN0cnVjdGlvbiwgdHJhbnNtaXNzaW9uLCBwb3RlbnRpYWwgcmVjZXB0aW9uLCBhbmQgbWF5YmUgc29tZSBzb3J0IG9mIGRhdGEgcHJvY2Vzc2luZywgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aW1lb3V0IG1lY2hhbmlzbS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgaXQgZXhwb3NlcyBhbnkgY3JpdGljYWwgY29uZmlndXJhdGlvbnMuIEknbSBndWVzc2luZyB0aGlzIG1pZ2h0IGJlIHRoZSBwbGFjZSB3aGVyZSBkaWZmZXJlbnQgc2NhbiB0eXBlcywgc3VjaCBhcyBhY3RpdmUgdmVyc3VzIHBhc3NpdmUgc2NhbnMsIGFyZSBkaWZmZXJlbnRpYXRlZCBvciB3aGVyZSBjaGFubmVsIGhvcHBpbmcgbG9naWMgaXMgaW1wbGVtZW50ZWQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSdyZSBiZWluZyBtYW5pcHVsYXRlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgZGV0YWlsZWQgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjEzLjA5MTg3OTg2MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MDgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTA4OlxcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zNTA5OlxcdFxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG4zNTEwOlxcdFxcdFxcdFxcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXFxuMzUxMTpcXHR7XFxuMzUxMjpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XFxuMzUxMzpcXHRcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xcbjM1MTQ6XFx0XFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcXG4zNTE1OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xcbjM1MTY6XFx0XFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XFxuMzUxNzpcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xcbjM1MTg6XFx0XFxuMzUxOTpcXHRcXHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcXG4zNTIwOlxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuMzUyMTpcXHRcXG4zNTIyOlxcdFxcdGlmICh3cnF1LVxcdTAwM2VkYXRhLmxlbmd0aCA9PSBzaXplb2Yoc3RydWN0IGl3X3NjYW5fcmVxKSlcXG4zNTIzOlxcdFxcdFxcdHdyZXEgPSAoc3RydWN0IGl3X3NjYW5fcmVxICopZXh0cmE7XFxuMzUyNDpcXHRcXG4zNTI1OlxcdFxcdHJkZXYgPSBjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChkZXZfbmV0KGRldiksIGRldi1cXHUwMDNlaWZpbmRleCk7XFxuMzUyNjpcXHRcXG4zNTI3OlxcdFxcdGlmIChJU19FUlIocmRldikpXFxuMzUyODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihyZGV2KTtcXG4zNTI5OlxcdFxcbjM1MzA6XFx0XFx0aWYgKHJkZXYtXFx1MDAzZXNjYW5fcmVxIHx8IHJkZXYtXFx1MDAzZXNjYW5fbXNnKVxcbjM1MzE6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4zNTMyOlxcdFxcbjM1MzM6XFx0XFx0d2lwaHkgPSBcXHUwMDI2cmRldi1cXHUwMDNld2lwaHk7XFxuMzUzNDpcXHRcXG4zNTM1OlxcdFxcdC8qIERldGVybWluZSBudW1iZXIgb2YgY2hhbm5lbHMsIG5lZWRlZCB0byBhbGxvY2F0ZSBjcmVxICovXFxuMzUzNjpcXHRcXHRpZiAod3JlcSBcXHUwMDI2XFx1MDAyNiB3cmVxLVxcdTAwM2VudW1fY2hhbm5lbHMpIHtcXG4zNTM3OlxcdFxcdFxcdC8qIFBhc3NlZCBmcm9tIHVzZXJzcGFjZSBzbyBzaG91bGQgYmUgY2hlY2tlZCAqL1xcbjM1Mzg6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHdyZXEtXFx1MDAzZW51bV9jaGFubmVscyBcXHUwMDNlIElXX01BWF9GUkVRVUVOQ0lFUykpXFxuMzUzOTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTQwOlxcdFxcdFxcdG5fY2hhbm5lbHMgPSB3cmVxLVxcdTAwM2VudW1fY2hhbm5lbHM7XFxuMzU0MTpcXHRcXHR9IGVsc2Uge1xcbjM1NDI6XFx0XFx0XFx0bl9jaGFubmVscyA9IGllZWU4MDIxMV9nZXRfbnVtX3N1cHBvcnRlZF9jaGFubmVscyh3aXBoeSk7XFxuMzU0MzpcXHRcXHR9XFxuMzU0NDpcXHRcXG4zNTQ1OlxcdFxcdGNyZXEgPSBremFsbG9jKHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscykgK1xcbjM1NDY6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgY2ZnODAyMTFfc3NpZCksXFxuMzU0NzpcXHRcXHRcXHQgICAgICAgR0ZQX0FUT01JQyk7XFxuMzU0ODpcXHRcXHRpZiAoIWNyZXEpXFxuMzU0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTUwOlxcdFxcbjM1NTE6XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLndpcGh5ID0gd2lwaHk7XFxuMzU1MjpcXHRcXHRjcmVxLVxcdTAwM2VyZXEud2RldiA9IGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cjtcXG4zNTUzOlxcdFxcdC8qIFNTSURzIGNvbWUgYWZ0ZXIgY2hhbm5lbHMgKi9cXG4zNTU0OlxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkcyA9ICh2b2lkICopY3JlcSArXFxuMzU1NTpcXHRcXHRcXHRcXHQgIHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscyk7XFxuMzU1NjpcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyA9IG5fY2hhbm5lbHM7XFxuMzU1NzpcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9zc2lkcyA9IDE7XFxuMzU1ODpcXHRcXHRjcmVxLVxcdTAwM2VyZXEuc2Nhbl9zdGFydCA9IGppZmZpZXM7XFxuMzU1OTpcXHRcXG4zNTYwOlxcdFxcdC8qIHRyYW5zbGF0ZSBcXFwiU2NhbiBvbiBmcmVxdWVuY2llc1xcXCIgcmVxdWVzdCAqL1xcbjM1NjE6XFx0XFx0aSA9IDA7XFxuMzU2MjpcXHRcXHRmb3IgKGJhbmQgPSAwOyBiYW5kIFxcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xcbjM1NjM6XFx0XFx0XFx0aW50IGo7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdFxcdFxcdGlmICghd2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdKVxcbjM1NjY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzU2NzpcXHRcXG4zNTY4OlxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyB3aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0tXFx1MDAzZW5fY2hhbm5lbHM7IGorKykge1xcbjM1Njk6XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xcbjM1NzA6XFx0XFxuMzU3MTpcXHRcXHRcXHRcXHQvKiBpZ25vcmUgZGlzYWJsZWQgY2hhbm5lbHMgKi9cXG4zNTcyOlxcdFxcdFxcdFxcdGNoYW4gPSBcXHUwMDI2d2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdLVxcdTAwM2VjaGFubmVsc1tqXTtcXG4zNTczOlxcdFxcdFxcdFxcdGlmIChjaGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEIHx8XFxuMzU3NDpcXHRcXHRcXHRcXHQgICAgIWNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKGNyZXEtXFx1MDAzZXJlcS53ZGV2LCBjaGFuKSlcXG4zNTc1OlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM1NzY6XFx0XFxuMzU3NzpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBoYXZlIGEgd2lyZWxlc3MgcmVxdWVzdCBzdHJ1Y3R1cmUgYW5kIHRoZVxcbjM1Nzg6XFx0XFx0XFx0XFx0ICogd2lyZWxlc3MgcmVxdWVzdCBzcGVjaWZpZXMgZnJlcXVlbmNpZXMsIHRoZW4gc2VhcmNoXFxuMzU3OTpcXHRcXHRcXHRcXHQgKiBmb3IgdGhlIG1hdGNoaW5nIGhhcmR3YXJlIGNoYW5uZWwuXFxuMzU4MDpcXHRcXHRcXHRcXHQgKi9cXG4zNTgxOlxcdFxcdFxcdFxcdGlmICh3cmVxIFxcdTAwMjZcXHUwMDI2IHdyZXEtXFx1MDAzZW51bV9jaGFubmVscykge1xcbjM1ODI6XFx0XFx0XFx0XFx0XFx0aW50IGs7XFxuMzU4MzpcXHRcXHRcXHRcXHRcXHRpbnQgd2lwaHlfZnJlcSA9IHdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXS1cXHUwMDNlY2hhbm5lbHNbal0uY2VudGVyX2ZyZXE7XFxuMzU4NDpcXHRcXHRcXHRcXHRcXHRmb3IgKGsgPSAwOyBrIFxcdTAwM2Mgd3JlcS1cXHUwMDNlbnVtX2NoYW5uZWxzOyBrKyspIHtcXG4zNTg1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpd19mcmVxICpmcmVxID1cXG4zNTg2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ3cmVxLVxcdTAwM2VjaGFubmVsX2xpc3Rba107XFxuMzU4NzpcXHRcXHRcXHRcXHRcXHRcXHRpbnQgd2V4dF9mcmVxID1cXG4zNTg4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNmZzgwMjExX3dleHRfZnJlcShmcmVxKTtcXG4zNTg5OlxcdFxcbjM1OTA6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHdleHRfZnJlcSA9PSB3aXBoeV9mcmVxKVxcbjM1OTE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z290byB3ZXh0X2ZyZXFfZm91bmQ7XFxuMzU5MjpcXHRcXHRcXHRcXHRcXHR9XFxuMzU5MzpcXHRcXHRcXHRcXHRcXHRnb3RvIHdleHRfZnJlcV9ub3RfZm91bmQ7XFxuMzU5NDpcXHRcXHRcXHRcXHR9XFxuMzU5NTpcXHRcXG4zNTk2OlxcdFxcdFxcdHdleHRfZnJlcV9mb3VuZDpcXG4zNTk3OlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5jaGFubmVsc1tpXSA9XFxuMzU5ODpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2d2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdLVxcdTAwM2VjaGFubmVsc1tqXTtcXG4zNTk5OlxcdFxcdFxcdFxcdGkrKztcXG4zNjAwOlxcdFxcdFxcdHdleHRfZnJlcV9ub3RfZm91bmQ6IDtcXG4zNjAxOlxcdFxcdFxcdH1cXG4zNjAyOlxcdFxcdH1cXG4zNjAzOlxcdFxcdC8qIE5vIGNoYW5uZWxzIGZvdW5kPyAqL1xcbjM2MDQ6XFx0XFx0aWYgKCFpKSB7XFxuMzYwNTpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjM2MDY6XFx0XFx0XFx0Z290byBvdXQ7XFxuMzYwNzpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjEzLjA5MjA2ODUyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTgzMTI3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFkb3B0aW5nIHRoZSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqQW5hbHl6aW5nIEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhlIGdlbmVyYWwgY29udGV4dCBsb2NrZWQgaW4uIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gSXQncyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29yZSBsb2dpYyBhbmQgZ3Jhc3AgaG93IHRoaXMgZnVuY3Rpb24gYWNoaWV2ZXMgaXRzIHB1cnBvc2UuIFRoZSBiaWcgcGljdHVyZSBpcyBzZXQsIHNvIGxldCdzIHBhcnNlIHRocm91Z2ggdGhlIGxpbmVzIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIExldCdzIHNlZSBob3cgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBmaXQgdG9nZXRoZXIgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBvdXRwdXQsIG9yIGluIHRoaXMgY2FzZSwgY29udGludWUgb3VyIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjE1LjQ1MDM4MzE5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MDgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNjA4OlxcdFxcbjM2MDk6XFx0XFx0LyogU2V0IHJlYWwgbnVtYmVyIG9mIGNoYW5uZWxzIHNwZWNpZmllZCBpbiBjcmVxLVxcdTAwM2VyZXEuY2hhbm5lbHNbXSAqL1xcbjM2MTA6XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLm5fY2hhbm5lbHMgPSBpO1xcbjM2MTE6XFx0XFxuMzYxMjpcXHRcXHQvKiB0cmFuc2xhdGUgXFxcIlNjYW4gZm9yIFNTSURcXFwiIHJlcXVlc3QgKi9cXG4zNjEzOlxcdFxcdGlmICh3cmVxKSB7XFxuMzYxNDpcXHRcXHRcXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5mbGFncyBcXHUwMDI2IElXX1NDQU5fVEhJU19FU1NJRCkge1xcbjM2MTU6XFx0XFx0XFx0XFx0aWYgKHdyZXEtXFx1MDAzZWVzc2lkX2xlbiBcXHUwMDNlIElFRUU4MDIxMV9NQVhfU1NJRF9MRU4pIHtcXG4zNjE2OlxcdFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMzYxNzpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNjE4OlxcdFxcdFxcdFxcdH1cXG4zNjE5OlxcdFxcdFxcdFxcdG1lbWNweShjcmVxLVxcdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cXHUwMDNlZXNzaWQsXFxuMzYyMDpcXHRcXHRcXHRcXHQgICAgICAgd3JlcS1cXHUwMDNlZXNzaWRfbGVuKTtcXG4zNjIxOlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkc1swXS5zc2lkX2xlbiA9IHdyZXEtXFx1MDAzZWVzc2lkX2xlbjtcXG4zNjIyOlxcdFxcdFxcdH1cXG4zNjIzOlxcdFxcdFxcdGlmICh3cmVxLVxcdTAwM2VzY2FuX3R5cGUgPT0gSVdfU0NBTl9UWVBFX1BBU1NJVkUpIHtcXG4zNjI0OlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkcyA9IE5VTEw7XFxuMzYyNTpcXHRcXHRcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9zc2lkcyA9IDA7XFxuMzYyNjpcXHRcXHRcXHR9XFxuMzYyNzpcXHRcXHR9XFxuMzYyODpcXHRcXG4zNjI5OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgaSsrKVxcbjM2MzA6XFx0XFx0XFx0aWYgKHdpcGh5LVxcdTAwM2ViYW5kc1tpXSlcXG4zNjMxOlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5yYXRlc1tpXSA9XFxuMzYzMjpcXHRcXHRcXHRcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyB3aXBoeS1cXHUwMDNlYmFuZHNbaV0tXFx1MDAzZW5fYml0cmF0ZXMpIC0gMTtcXG4zNjMzOlxcdFxcbjM2MzQ6XFx0XFx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGNyZXEtXFx1MDAzZXJlcS5ic3NpZCk7XFxuMzYzNTpcXHRcXG4zNjM2OlxcdFxcdHNjb3BlZF9ndWFyZCh3aXBoeSwgXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5KSB7XFxuMzYzNzpcXHRcXHRcXHRyZGV2LVxcdTAwM2VzY2FuX3JlcSA9IGNyZXE7XFxuMzYzODpcXHRcXHRcXHRlcnIgPSByZGV2X3NjYW4ocmRldiwgY3JlcSk7XFxuMzYzOTpcXHRcXHRcXHRpZiAoZXJyKSB7XFxuMzY0MDpcXHRcXHRcXHRcXHRyZGV2LVxcdTAwM2VzY2FuX3JlcSA9IE5VTEw7XFxuMzY0MTpcXHRcXHRcXHRcXHQvKiBjcmVxIHdpbGwgYmUgZnJlZWQgYmVsb3cgKi9cXG4zNjQyOlxcdFxcdFxcdH0gZWxzZSB7XFxuMzY0MzpcXHRcXHRcXHRcXHRubDgwMjExX3NlbmRfc2Nhbl9zdGFydChyZGV2LCBkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpO1xcbjM2NDQ6XFx0XFx0XFx0XFx0LyogY3JlcSBub3cgb3duZWQgYnkgZHJpdmVyICovXFxuMzY0NTpcXHRcXHRcXHRcXHRjcmVxID0gTlVMTDtcXG4zNjQ2OlxcdFxcdFxcdFxcdGRldl9ob2xkKGRldik7XFxuMzY0NzpcXHRcXHRcXHR9XFxuMzY0ODpcXHRcXHR9XFxuMzY0OTpcXHRcXG4zNjUwOlxcdCBvdXQ6XFxuMzY1MTpcXHRcXHRrZnJlZShjcmVxKTtcXG4zNjUyOlxcdFxcdHJldHVybiBlcnI7XFxuMzY1MzpcXHR9XFxuMzY1NDpcXHRcXG4zNjU1OlxcdHN0YXRpYyBjaGFyICppZWVlODAyMTFfc2Nhbl9hZGRfaWVzKHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzY1NjpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcyxcXG4zNjU3OlxcdFxcdFxcdFxcdFxcdCAgICBjaGFyICpjdXJyZW50X2V2LCBjaGFyICplbmRfYnVmKVxcbjM2NTg6XFx0e1xcbjM2NTk6XFx0XFx0Y29uc3QgdTggKnBvcywgKmVuZCwgKm5leHQ7XFxuMzY2MDpcXHRcXHRzdHJ1Y3QgaXdfZXZlbnQgaXdlO1xcbjM2NjE6XFx0XFxuMzY2MjpcXHRcXHRpZiAoIWllcylcXG4zNjYzOlxcdFxcdFxcdHJldHVybiBjdXJyZW50X2V2O1xcbjM2NjQ6XFx0XFxuMzY2NTpcXHRcXHQvKlxcbjM2NjY6XFx0XFx0ICogSWYgbmVlZGVkLCBmcmFnbWVudCB0aGUgSUVzIGJ1ZmZlciAoYXQgSUUgYm91bmRhcmllcykgaW50byBzaG9ydFxcbjM2Njc6XFx0XFx0ICogZW5vdWdoIGZyYWdtZW50cyB0byBmaXQgaW50byBJV19HRU5FUklDX0lFX01BWCBvY3RldCBtZXNzYWdlcy5cXG4zNjY4OlxcdFxcdCAqL1xcbjM2Njk6XFx0XFx0cG9zID0gaWVzLVxcdTAwM2VkYXRhO1xcbjM2NzA6XFx0XFx0ZW5kID0gcG9zICsgaWVzLVxcdTAwM2VsZW47XFxuMzY3MTpcXHRcXG4zNjcyOlxcdFxcdHdoaWxlIChlbmQgLSBwb3MgXFx1MDAzZSBJV19HRU5FUklDX0lFX01BWCkge1xcbjM2NzM6XFx0XFx0XFx0bmV4dCA9IHBvcyArIDIgKyBwb3NbMV07XFxuMzY3NDpcXHRcXHRcXHR3aGlsZSAobmV4dCArIDIgKyBuZXh0WzFdIC0gcG9zIFxcdTAwM2MgSVdfR0VORVJJQ19JRV9NQVgpXFxuMzY3NTpcXHRcXHRcXHRcXHRuZXh0ID0gbmV4dCArIDIgKyBuZXh0WzFdO1xcbjM2NzY6XFx0XFxuMzY3NzpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNml3ZSwgMCwgc2l6ZW9mKGl3ZSkpO1xcbjM2Nzg6XFx0XFx0XFx0aXdlLmNtZCA9IElXRVZHRU5JRTtcXG4zNjc5OlxcdFxcdFxcdGl3ZS51LmRhdGEubGVuZ3RoID0gbmV4dCAtIHBvcztcXG4zNjgwOlxcdFxcdFxcdGN1cnJlbnRfZXYgPSBpd2Vfc3RyZWFtX2FkZF9wb2ludF9jaGVjayhpbmZvLCBjdXJyZW50X2V2LFxcbjM2ODE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZW5kX2J1ZiwgXFx1MDAyNml3ZSxcXG4zNjgyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2b2lkICopcG9zKTtcXG4zNjgzOlxcdFxcdFxcdGlmIChJU19FUlIoY3VycmVudF9ldikpXFxuMzY4NDpcXHRcXHRcXHRcXHRyZXR1cm4gY3VycmVudF9ldjtcXG4zNjg1OlxcdFxcdFxcdHBvcyA9IG5leHQ7XFxuMzY4NjpcXHRcXHR9XFxuMzY4NzpcXHRcXG4zNjg4OlxcdFxcdGlmIChlbmQgXFx1MDAzZSBwb3MpIHtcXG4zNjg5OlxcdFxcdFxcdG1lbXNldChcXHUwMDI2aXdlLCAwLCBzaXplb2YoaXdlKSk7XFxuMzY5MDpcXHRcXHRcXHRpd2UuY21kID0gSVdFVkdFTklFO1xcbjM2OTE6XFx0XFx0XFx0aXdlLnUuZGF0YS5sZW5ndGggPSBlbmQgLSBwb3M7XFxuMzY5MjpcXHRcXHRcXHRjdXJyZW50X2V2ID0gaXdlX3N0cmVhbV9hZGRfcG9pbnRfY2hlY2soaW5mbywgY3VycmVudF9ldixcXG4zNjkzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGVuZF9idWYsIFxcdTAwMjZpd2UsXFxuMzY5NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQodm9pZCAqKXBvcyk7XFxuMzY5NTpcXHRcXHRcXHRpZiAoSVNfRVJSKGN1cnJlbnRfZXYpKVxcbjM2OTY6XFx0XFx0XFx0XFx0cmV0dXJuIGN1cnJlbnRfZXY7XFxuMzY5NzpcXHRcXHR9XFxuMzY5ODpcXHRcXG4zNjk5OlxcdFxcdHJldHVybiBjdXJyZW50X2V2O1xcbjM3MDA6XFx0fVxcbjM3MDE6XFx0XFxuMzcwMjpcXHRzdGF0aWMgY2hhciAqXFxuMzcwMzpcXHRpZWVlODAyMTFfYnNzKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzcwNDpcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpic3MsIGNoYXIgKmN1cnJlbnRfZXYsXFxuMzcwNTpcXHRcXHQgICAgICBjaGFyICplbmRfYnVmKVxcbjM3MDY6XFx0e1xcbjM3MDc6XFx0XFx0Y29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MTUuNDUwNTcxOTM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1NzY2MDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBGaXggaW4gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGNvcmUgaXNzdWUgaXMgdGhlIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB3aXRoaW4gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoaXMgZnVuY3Rpb24sIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgU0lPQ1NJV1NDQU4gV2lyZWxlc3MgRXh0ZW5zaW9ucyBpb2N0bCwgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBpdCBhbGxvY2F0ZXMgYGNyZXFgIHVzaW5nIGBremFsbG9jYCBhdCBsaW5lIDM1NDUuIFRoZSB2dWxuZXJhYmlsaXR5IGFyaXNlcyB3aGVuIGB3cmVxLVx1MDAzZWVzc2lkX2xlbmAgZXhjZWVkcyBgSUVFRTgwMjExX01BWF9TU0lEX0xFTmAuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIHNpbXBseSByZXR1cm4gYC1FSU5WQUxgIGRpcmVjdGx5LCBsZWF2aW5nIGBjcmVxYCBsZWFrZWQuIFRoZSBmaXggaW50cm9kdWNlcyBgZXJyID0gLUVJTlZBTDsgZ290byBvdXQ7YCwgZW5zdXJpbmcgYGNyZXFgIGlzIGZyZWVkIGF0IHRoZSBgb3V0YCBsYWJlbCwgc3BlY2lmaWNhbGx5IGxpbmUgMzY1MS5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50IOKAkyBhIGNydWNpYWwgbWVtb3J5IGxlYWsgYmVpbmcgcGx1Z2dlZC4gSW1wb3J0YW50bHksIHRoaXMgbG9naWMgaXMgY29yZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IFdpcmVsZXNzIEV4dGVuc2lvbnMsIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggaW9jdGwgb24gd2lyZWxlc3MgaW50ZXJmYWNlcy4gVGhlIGdvb2QgbmV3cyAob3IgYmFkLCBkZXBlbmRpbmcgb24geW91ciBwZXJzcGVjdGl2ZSkgaXMgdGhhdCB3ZSBjYW4gcmVhY2ggdGhpcyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLlxuXG5UaGlzIHNjcmVhbXMgZnV6emluZyBvcHBvcnR1bml0eS4gV2UgaGF2ZSBhIGNsZWFuLCByZWFjaGFibGUgcGF0aCB0aGF0IHdhcyBsZWFreSwgYW5kIG5vdyBpcyBmaXhlZC4gR2l2ZW4gb3VyIGV4cGVydGlzZSwgZnV6emluZyB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCBwbGFuLiBTcGVjaWZpY2FsbHksIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGlzIHRoZSB0YXJnZXQsIGFuZCB3ZSdsbCB3YW50IHRvIGVuYWJsZSB0aGUgY29uZmlncyBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgYWN0aXZlLiBCZWZvcmUgcnVubmluZyB0aGUgZnV6emVyLCBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAgdG8gZW5zdXJlIHdlIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4gTGV0J3MgZ2V0IHRvIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjExLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjAuOTA4MjM1NTc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA1NDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDRkc4MDIxMV9XRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE3Nz1jb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZT0xMz1jZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTQ6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfV0VYVCkgKz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE1LVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYz01NDY9c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTYzMy1cXHRcXHRcXHQgIGNmZzgwMjExX2Rmc19jaGFubmVsc191cGRhdGVfd29yayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYzo2MzQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy02MzUtXFx0cmRldi1cXHUwMDNld2lwaHkud2V4dCA9IFxcdTAwMjZjZmc4MDIxMV93ZXh0X2hhbmRsZXI7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0MDQ9c3RhdGljIHZvaWQgX2NmZzgwMjExX3VucmVnaXN0ZXJfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNDQzLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE0NDUtXFx0a2ZyZWVfc2Vuc2l0aXZlKHdkZXYtXFx1MDAzZXdleHQua2V5cyk7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0OTg9dm9pZCBjZmc4MDIxMV9sZWF2ZV9sb2NrZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNTIyLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTUyMzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjQtXFx0XFx0a2ZyZWUod2Rldi1cXHUwMDNld2V4dC5pZSk7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE2MDk9dm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNy1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE2MTg6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE5LVxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM9MTcwMj1zdGF0aWMgaW50IGNmZzgwMjExX25ldGRldl9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE3NzYtXFx0XFx0c3dpdGNoICh3ZGV2LVxcdTAwM2VpZnR5cGUpIHtcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE3Nzc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNzc4LVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5PXZvaWQgX19jZmc4MDIxMV9pYnNzX2pvaW5lZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTIzLVxcdHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcztcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjI0OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjUtXFx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYy01MS1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjUyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtNTMtXFx0bWVtc2V0KFxcdTAwMjZ3cnF1LCAwLCBzaXplb2Yod3JxdSkpO1xcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYz04Nz1pbnQgX19jZmc4MDIxMV9qb2luX2lic3Moc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYy0xNDAtXFxubmV0L3dpcmVsZXNzL2lic3MuYzoxNDE6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2lic3MuYy0xNDItXFx0d2Rldi1cXHUwMDNld2V4dC5pYnNzLmNoYW5kZWYgPSBwYXJhbXMtXFx1MDAzZWNoYW5kZWY7XFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE1Nj12b2lkIGNmZzgwMjExX2NsZWFyX2lic3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBub3dleHQpXFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE4NC1cXHRtZW1zZXQoXFx1MDAyNndkZXYtXFx1MDAzZXUuaWJzcy5jaGFuZGVmLCAwLCBzaXplb2Yod2Rldi1cXHUwMDNldS5pYnNzLmNoYW5kZWYpKTtcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjE4NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE4Ni1cXHRpZiAoIW5vd2V4dClcXG4tLVxcbm5ldC93aXJlbGVzcy9pYnNzLmM9MTkyPWludCBjZmc4MDIxMV9sZWF2ZV9pYnNzKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjEzLVxcbm5ldC93aXJlbGVzcy9pYnNzLmM6MjE0OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjE1LWludCBjZmc4MDIxMV9pYnNzX3dleHRfam9pbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jPTIzND12b2lkIGNmZzgwMjExX21pY2hhZWxfbWljX2ZhaWx1cmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTIzOS1cXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSB3aXBoeV90b19yZGV2KHdpcGh5KTtcXG5uZXQvd2lyZWxlc3MvbWxtZS5jOjI0MDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTI0MS1cXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU0NTk9c3RhdGljIGludCBubDgwMjExX3NldF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1MDI6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTAzLVxcdFxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSBrZXkuaWR4O1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTI0LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTUyNTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjYtXFx0XFx0d2Rldi1cXHUwMDNld2V4dC5kZWZhdWx0X21nbXRfa2V5ID0ga2V5LmlkeDtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTYzNz1zdGF0aWMgaW50IG5sODAyMTFfZGVsX2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01Njg2LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTY4NzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODgtXFx0aWYgKCFlcnIpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MTExND12b2lkIF9fX2NmZzgwMjExX3NjYW5fZG9uZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExMTktXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExMjA6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTIxLVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMTE2Mi1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExNjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTY0LVxcdGlmICh3ZGV2LVxcdTAwM2VuZXRkZXYgXFx1MDAyNlxcdTAwMjYgIXJlcXVlc3QtXFx1MDAzZWluZm8uYWJvcnRlZCkge1xcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE0PXZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDg3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzQ4ODojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODktc3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmM9NzM1PXZvaWQgX19jZmc4MDIxMV9jb25uZWN0X3Jlc3VsdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTc0My1cXHR1OCBjb3VudHJ5X2RhdGFsZW47XFxubmV0L3dpcmVsZXNzL3NtZS5jOjc0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzQ1LVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYy03NzQtXFxubmV0L3dpcmVsZXNzL3NtZS5jOjc3NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzc2LVxcdGlmICh3ZXh0ZXYgXFx1MDAyNlxcdTAwMjYgIWNyLVxcdTAwM2V2YWxpZF9saW5rcykge1xcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jPTEwNzk9dm9pZCBfX2NmZzgwMjExX3JvYW1lZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEwODEte1xcbm5ldC93aXJlbGVzcy9zbWUuYzoxMDgyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDgzLVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM0LVxcbm5ldC93aXJlbGVzcy9zbWUuYzoxMTM1OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM2LVxcdGlmICghaW5mby1cXHUwMDNldmFsaWRfbGlua3MpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYz0xMzQzPXZvaWQgX19jZmc4MDIxMV9kaXNjb25uZWN0ZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmllLFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNDgtXFx0aW50IGk7XFxubmV0L3dpcmVsZXNzL3NtZS5jOjEzNDk6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNTAtXFx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTQtXFxubmV0L3dpcmVsZXNzL3NtZS5jOjEzOTU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTYtXFx0bWVtc2V0KFxcdTAwMjZ3cnF1LCAwLCBzaXplb2Yod3JxdSkpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTYzNz1FWFBPUlRfU1lNQk9MKHdpcmVsZXNzX3NlbmRfZXZlbnQpO1xcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYy02MzgtXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jOjYzOTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjQwLXN0YXRpYyB2b2lkIHdpcmVsZXNzX3dhcm5fY2ZnODAyMTFfd2V4dCh2b2lkKVxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTY0OT1zdHJ1Y3QgaXdfc3RhdGlzdGljcyAqZ2V0X3dpcmVsZXNzX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjU2LVxcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo2NTc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTY1OC1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM9Njk3PXN0YXRpYyBpd19oYW5kbGVyIGdldF9oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNzAyLVxcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo3MDM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTcwNC1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ci1cXHUwMDNld2lwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjAuOTY5Mjk1MzQ1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDU5NzIwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBjZmc4MDIxMV93ZXh0X3Npd3NjYW4gRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGNmZzgwMjExYCBzdHVmZiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGV4dGVuc2lvbnMgaW50ZXJmYWNlIChgV0VYVGApLiBUaGUgY29yZSBvZiBteSBpbnRlcmVzdCBpcyB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLiAgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBpdCdzIGNvbmRpdGlvbmFsLCB0aGF0IGl0IGxpdmVzIHdpdGhpbiBhbiBgI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUYCBibG9jay4gTWFrZXMgc2Vuc2UsIHJpZ2h0PyBJdCdzIG9ubHkgY29tcGlsZWQgaW4gaWYgdGhlIGBDRkc4MDIxMV9XRVhUYCBjb25maWcgb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQgaGVscHMga2VlcCB0aGUga2VybmVsIHNsaW0uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBsaW5lIG51bWJlciBpbiBgbmV0L3dpcmVsZXNzL3NjYW4uY2AuIEl0J3MgbGluZSAzNDg4LiBPa2F5LCBnb29kLiBUaGF0IGNvbmZpcm1zIHRoZSBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlZ3JhdGlvbiB3aXRoIFdFWFQgaXMgaGFuZGxlZCBmb3Igc2NhbnMgd2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQuIExldCdzIGRlbHZlIGRlZXBlciBpbnRvIHRoYXQgYmxvY2sncyBjb2RlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjQuNDE1MjY5OTAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM0ODA6XFx0XFx0XFx0YnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuMzQ4MTpcXHRcXHRcXHRjZmc4MDIxMV9yZWhhc2hfYnNzKHJkZXYsIGJzcyk7XFxuMzQ4MjpcXHRcXHR9XFxuMzQ4MzpcXHRcXG4zNDg0OlxcdGRvbmU6XFxuMzQ4NTpcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xvY2spO1xcbjM0ODY6XFx0fVxcbjM0ODc6XFx0XFxuMzQ4ODpcXHQjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG4zNDg5OlxcdHN0YXRpYyBzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKlxcbjM0OTA6XFx0Y2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcXG4zNDkxOlxcdHtcXG4zNDkyOlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcXG4zNDkzOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuMzQ5NDpcXHRcXG4zNDk1OlxcdFxcdEFTU0VSVF9SVE5MKCk7XFxuMzQ5NjpcXHRcXG4zNDk3OlxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXgobmV0LCBpZmluZGV4KTtcXG4zNDk4OlxcdFxcdGlmICghZGV2KVxcbjM0OTk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuMzUwMDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyKVxcbjM1MDE6XFx0XFx0XFx0cmRldiA9IHdpcGh5X3RvX3JkZXYoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2V3aXBoeSk7XFxuMzUwMjpcXHRcXHRlbHNlXFxuMzUwMzpcXHRcXHRcXHRyZGV2ID0gRVJSX1BUUigtRU5PREVWKTtcXG4zNTA0OlxcdFxcdGRldl9wdXQoZGV2KTtcXG4zNTA1OlxcdFxcdHJldHVybiByZGV2O1xcbjM1MDY6XFx0fVxcbjM1MDc6XFx0XFxuMzUwODpcXHRpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuMzUwOTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzUxMDpcXHRcXHRcXHRcXHQgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKVxcbjM1MTE6XFx0e1xcbjM1MTI6XFx0XFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xcbjM1MTM6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcXG4zNTE0OlxcdFxcdHN0cnVjdCBpd19zY2FuX3JlcSAqd3JlcSA9IE5VTEw7XFxuMzUxNTpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0X2ludCAqY3JlcTtcXG4zNTE2OlxcdFxcdGludCBpLCBlcnIsIG5fY2hhbm5lbHMgPSAwO1xcbjM1MTc6XFx0XFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG4zNTE4OlxcdFxcbjM1MTk6XFx0XFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuMzUyMDpcXHRcXHRcXHRyZXR1cm4gLUVORVRET1dOO1xcbjM1MjE6XFx0XFxuMzUyMjpcXHRcXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBpd19zY2FuX3JlcSkpXFxuMzUyMzpcXHRcXHRcXHR3cmVxID0gKHN0cnVjdCBpd19zY2FuX3JlcSAqKWV4dHJhO1xcbjM1MjQ6XFx0XFxuMzUyNTpcXHRcXHRyZGV2ID0gY2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoZGV2X25ldChkZXYpLCBkZXYtXFx1MDAzZWlmaW5kZXgpO1xcbjM1MjY6XFx0XFxuMzUyNzpcXHRcXHRpZiAoSVNfRVJSKHJkZXYpKVxcbjM1Mjg6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmRldik7XFxuMzUyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjQuNDE1NDQ0NTAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTYzNjI1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBmdW5jdGlvbiwgYW5kIGl0J3MgY2xlYXJseSB3cmFwcGVkIGluIGFuIGAjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRgIGJsb2NrLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCB0aGlzIHdvcmtpbmcsIEknbSBnb2luZyB0byBuZWVkIGBDRkc4MDIxMV9XRVhUYCBlbmFibGVkLCBvYnZpb3VzbHkuIEFuZCwgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZSwgY2FuJ3QgZm9yZ2V0IHRoYXQuIEkgdGhpbmsgYE1BQzgwMjExX0hXU0lNYCB3b3VsZCBiZSBoZWxwZnVsIHRvbywgZXNwZWNpYWxseSBmb3IgcXVpY2tseSBjcmVhdGluZyB0aG9zZSB2aXJ0dWFsIFdpLUZpIGRldmljZXMgZm9yIHRlc3RpbmcuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFfV0VYVGAuIFF1aWNrIHRyaXAgdG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gQWgsIGp1c3QgYSBzaW1wbGUgYm9vbGVhbi4gTm8gb3RoZXIgZXhwbGljaXQgZGVwZW5kZW5jaWVzLiBHb29kIHRvIGtub3cuXG5cbkFscmlnaHQsIG5vdyBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYE1BQzgwMjExX0hXU0lNYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDoyOC44NzE4MTAwMTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NzE2MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NjgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTcxOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3Mi1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc0LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzc6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4MC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg1OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODYtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4Ny1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ4ODpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ5Mj1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDg6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYxMj1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjIxOiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MzQtXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwODQ6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODUtXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQwMj1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDExOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTM6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDoyOC45NTg1MzE4NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2NDM5OTYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmluZyB0aGUgV2lyZWxlc3MgU3RhY2sqKlxuXG5BbHJpZ2h0LCBJJ20gcHJldHR5IHN1cmUgYE1BQzgwMjExX0hXU0lNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24gaGVyZS4gQnV0LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIsIGxldCdzIGxpc3QgdGhlbSBhbGwuIFNvLCB3ZSdyZSB0YWxraW5nIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYW5kIG9mIGNvdXJzZSBgTUFDODAyMTFfSFdTSU1gLiBBaCwgcmlnaHQsIGBDRkc4MDIxMWAgaXMgYWxyZWFkeSBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGNvcmUsIHNvIGl0J3MgcHJvYmFibHkgcmVkdW5kYW50IHRvIGluY2x1ZGUsIGJ1dCBJJ2xsIGxlYXZlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIHRvIGVuc3VyZSBJJ3ZlIGNvdmVyZWQgZXZlcnl0aGluZy4gVWx0aW1hdGVseSwgSSdsbCBuZWVkIGBDRkc4MDIxMV9XRVhUYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJlZC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gdGhpcywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgbHVya2luZyB0aGF0IEknbSBtaXNzaW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCwgZm9yIGluc3RhbmNlLCBpc24ndCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgbGlrZSBgd2V4dC1jb21wYXQuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IGl0IGlzbid0IGEgcmVxdWlyZWQgZmxhZy4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjE0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjM0LjMyMjkzNDMyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMTkxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0zNDkwPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaW50IGlmaW5kZXgpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDctXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozNTA4OmludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDktXFx0XFx0XFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM9MTQ4ND1zdGF0aWMgY29uc3QgaXdfaGFuZGxlciBjZmc4MDIxMV9oYW5kbGVyc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5My1cXHRJV19IQU5ETEVSKFNJT0NTSVdNTE1FLFxcdFxcdGNmZzgwMjExX3dleHRfc2l3bWxtZSksXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM6MTQ5NDpcXHRJV19IQU5ETEVSKFNJT0NTSVdTQ0FOLFxcdFxcdGNmZzgwMjExX3dleHRfc2l3c2NhbiksXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5NS1cXHRJV19IQU5ETEVSKFNJT0NHSVdTQ0FOLFxcdFxcdGNmZzgwMjExX3dleHRfZ2l3c2NhbiksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjM0LjM3Nzk1OTQ3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQwNTc1NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0lPQ1NJV1NDQU4gSGFuZGxlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgdGhlIGhhbmRsZXIgZm9yIGBTSU9DU0lXU0NBTmAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgd2lyZWxlc3MgZXh0ZW5zaW9uIGlvY3RsLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBwYXRjaC5cblxuUmlnaHQsIHRoZSBjb2RlIHNuaXBwZXQgY2xlYXJseSBzaG93cyBhIGJ1ZyBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGRpZG4ndCBoYW5kbGUgdGhlIGVycm9yIGNhc2UgcHJvcGVybHkgd2hlbiB0aGUgRVNTSUQgbGVuZ3RoIHdhcyBpbnZhbGlkLiBUaGlzIG1lYW5zIHRoZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIGFuIGBpb2N0bGAgY2FsbCB3aXRoIGBTSU9DU0lXU0NBTmAuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIGltcHJvdmVtZW50IHRvIHRoZSBkcml2ZXIuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIHRoaXMgaXMgKip3b3J0aCBmdXp6aW5nKiouIEknbGwgbm90ZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBhcyBhIGZvY3VzIHN5bWJvbCBmb3IgdGVzdGluZy4gVGhlIGBDRkc4MDIxMV9XRVhUYCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmF0aW9ucyBzZWVtIHJlbGV2YW50IGhlcmUgZm9yIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYFdJUkVMRVNTX0VYVGAgaXNuJ3QgYSBoYXJkIHJlcXVpcmVtZW50LiBDaGVja2luZyBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGNvbmZpcm1zIGBDRkc4MDIxMV9XRVhUYCBpcyBzdWZmaWNpZW50LiBHb29kLlxuXG5JJ3ZlIHJldmlld2VkIHRoZSBwYXRjaDsgdGhlcmUgYXJlIG5vIG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZCBiZXlvbmQgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoZSBjb3JlIG9mIGl0IGFsbCBpczogdGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyLCB3aGljaCBpcyB3aXRoaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSwgYnkgbWFraW5nIHN1cmUgdGhlIGFsbG9jYXRlZCBzY2FuIHJlcXVlc3Qgc3RydWN0dXJlIGlzIHByb3Blcmx5IGZyZWVkIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IuIFRoYXQncyBhIGdvb2QgZml4LiBMZXQncyBjYWxsIHRoaXMgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzc3LCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDo0MS4xMTg1Mzc3NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTIxMjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV93ZXh0X3Npd3NjYW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow46d29[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 20:01:09 +0000 UTC FinishedAt: 2026-06-20 20:10:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211_WEXT", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1a3746ccbb0a97bed3c06ccde6b880013b1dddc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211_WEXT", "MAC80211_HWSIM" ], "series_id": "f3abba13-e9fb-4bda-bc24-9aad6335c24c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_wext_siwscan" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRjZGQ2NWE3ZDc0M2Q2Mzk3MGE5OTNlY2QxNDJkYjAzMGI2MWNjOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAyMDoxMDowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLjM4MDAxNjg0MDE0ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTM2MTIsOCAmIzQzOzM2MTIsMTAgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogdHJhbnNsYXRlIFwmIzM0O1NjYW4gZm9yIFNTSURcJiMzNDsgcmVxdWVzdCAqL1xuIFx0aWYgKHdyZXEpIHtcbiBcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5mbGFncyBcdTAwMjYgSVdfU0NBTl9USElTX0VTU0lEKSB7XG4tXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKVxuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdGlmICh3cmVxLVx1MDAzZWVzc2lkX2xlbiBcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xuJiM0MztcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRtZW1jcHkoY3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cdTAwM2Vlc3NpZCxcbiBcdFx0XHQgICAgICAgd3JlcS1cdTAwM2Vlc3NpZF9sZW4pO1xuIFx0XHRcdGNyZXEtXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cdTAwM2Vlc3NpZF9sZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTFfV0VYVCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmZzgwMjExX3dleHRfc2l3c2NhbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkY2RkNjVhN2Q3NDNkNjM5NzBhOTkzZWNkMTQyZGIwMzBiNjFjYzk2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMjA6MTA6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uYwppbmRleCAwNWI3ZGM2Yjc2NmNlOS4uMzgwMDE2ODQwMTRkOTQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3NjYW4uYwpAQCAtMzYxMiw4ICYjNDM7MzYxMiwxMCBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogdHJhbnNsYXRlICYjMzQ7U2NhbiBmb3IgU1NJRCYjMzQ7IHJlcXVlc3QgKi8KIAlpZiAod3JlcSkgewogCQlpZiAod3JxdS0mZ3Q7ZGF0YS5mbGFncyAmYW1wOyBJV19TQ0FOX1RISVNfRVNTSUQpIHsKLQkJCWlmICh3cmVxLSZndDtlc3NpZF9sZW4gJmd0OyBJRUVFODAyMTFfTUFYX1NTSURfTEVOKQotCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCWlmICh3cmVxLSZndDtlc3NpZF9sZW4gJmd0OyBJRUVFODAyMTFfTUFYX1NTSURfTEVOKSB7CiYjNDM7CQkJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gb3V0OwomIzQzOwkJCX0KIAkJCW1lbWNweShjcmVxLSZndDtyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS0mZ3Q7ZXNzaWQsCiAJCQkgICAgICAgd3JlcS0mZ3Q7ZXNzaWRfbGVuKTsKIAkJCWNyZXEtJmd0O3JlcS5zc2lkc1swXS5zc2lkX2xlbiA9IHdyZXEtJmd0O2Vzc2lkX2xlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBTY2FuIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3dpcmVsZXNzL3NjYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIGhhbmRsaW5nIG9mIFNTSUQgbGVuZ3RocyBpbiBhIHNjYW4gcmVxdWVzdC4gSW5pdGlhbGx5LCB0aGUgY29kZSBoYWQgYSBzaW1wbGUgY2hlY2s6IGlmIHRoZSBFU1NJRCBsZW5ndGggaW4gdGhlIHJlcXVlc3QgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkLCBpdCBpbW1lZGlhdGVseSByZXR1cm5lZCBgLUVJTlZBTGAuIFRoaXMgaXMgd2hlcmUgSSBzdGFydCB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBhIHByb2JsZW0uIFJldHVybmluZyBlYXJseSBsaWtlIHRoYXQgY291bGQgYnlwYXNzIHNvbWUgbmVjZXNzYXJ5IGNsZWFudXAgcHJvY2VkdXJlcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIG1lbW9yeSBsZWFrIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBsYWNrIG9mIHByb3BlciByZXNvdXJjZSByZWxlYXNlLgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIGVsZWdhbnQuIEluc3RlYWQgb2YgdGhlIGRpcmVjdCByZXR1cm4sIGl0IG5vdyBhc3NpZ25zIGAtRUlOVkFMYCB0byBhbiBlcnJvciB2YXJpYWJsZSwgYGVycmAsIGFuZCB1c2VzIGEgYGdvdG8gb3V0O2Agc3RhdGVtZW50LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXJyb3IgY29kZSBpcyBzZXQgKmFuZCogdGhhdCB0aGUgY29kZSBqdW1wcyB0byBhIGNsZWFudXAgc2VjdGlvbiwgYG91dGAsIGJlZm9yZSBleGl0aW5nIHRoZSBmdW5jdGlvbi4gQnkgc2VwYXJhdGluZyB0aGUgZXJyb3IgYXNzaWdubWVudCBmcm9tIHRoZSBleGl0LCBpdCBhbGxvd3MgZm9yIGNsZWFudXAgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IG90aGVyd2lzZSBoYXZlIGJlZW4gc2tpcHBlZC4gSSBjYW4gc2VlIHRoZSBpbnRlbnQgY2xlYXJseSDigJMgZW5zdXJpbmcgYWxsIHJlc291cmNlcyBhcmUgcHJvcGVybHkgaGFuZGxlZCwgZXZlbiBpbiBlcnJvciBjYXNlcy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGl0c2VsZiB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHJlc291cmNlcyBtaWdodCBoYXZlIGJlZW4gYXQgcmlzayB3aXRob3V0IHRoaXMgY2hhbmdlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3dleHRfc2l3c2NhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3NjYW4uYz0zNDkwPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaW50IGlmaW5kZXgpXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA3LVxubmV0L3dpcmVsZXNzL3NjYW4uYzozNTA4OmludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy9zY2FuLmMtMzUwOS1cdFx0XHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIFdpLUZpIFNjYW4gUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY2FuIHByb2Nlc3MgYSBsaXR0bGUgYmV0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGl0JiMzOTtzIGhhbmRsZWQgYXQgdGhlIGRyaXZlciBsZXZlbC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBMaW5lIDM1MDggZmVlbHMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGxpa2VseSB3aGVyZSB0aGUgY29yZSBvZiBhIHBhcnRpY3VsYXIgc2NhbiBmdW5jdGlvbiBvciBzdGF0ZSB0cmFuc2l0aW9uIG9jY3Vycy4gRnJvbSB0aGVyZSwgSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHNlcXVlbmNlOiBpbml0aWF0aW9uLCBjaGFubmVsIHNlbGVjdGlvbiwgZnJhbWUgY29uc3RydWN0aW9uLCB0cmFuc21pc3Npb24sIHBvdGVudGlhbCByZWNlcHRpb24sIGFuZCBtYXliZSBzb21lIHNvcnQgb2YgZGF0YSBwcm9jZXNzaW5nLCBlcnJvciBoYW5kbGluZywgYW5kIHRpbWVvdXQgbWVjaGFuaXNtLiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgaXQgZXhwb3NlcyBhbnkgY3JpdGljYWwgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBtaWdodCBiZSB0aGUgcGxhY2Ugd2hlcmUgZGlmZmVyZW50IHNjYW4gdHlwZXMsIHN1Y2ggYXMgYWN0aXZlIHZlcnN1cyBwYXNzaXZlIHNjYW5zLCBhcmUgZGlmZmVyZW50aWF0ZWQgb3Igd2hlcmUgY2hhbm5lbCBob3BwaW5nIGxvZ2ljIGlzIGltcGxlbWVudGVkLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdyB0aGV5JiMzOTtyZSBiZWluZyBtYW5pcHVsYXRlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgZGV0YWlsZWQgZGl2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTA4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTA4Olx0aW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuMzUwOTpcdFx0XHRcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcbjM1MTA6XHRcdFx0XHQgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKVxuMzUxMTpcdHtcbjM1MTI6XHRcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcbjM1MTM6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHk7XG4zNTE0Olx0XHRzdHJ1Y3QgaXdfc2Nhbl9yZXEgKndyZXEgPSBOVUxMO1xuMzUxNTpcdFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdF9pbnQgKmNyZXE7XG4zNTE2Olx0XHRpbnQgaSwgZXJyLCBuX2NoYW5uZWxzID0gMDtcbjM1MTc6XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XG4zNTE4Olx0XG4zNTE5Olx0XHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcbjM1MjA6XHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbjM1MjE6XHRcbjM1MjI6XHRcdGlmICh3cnF1LVx1MDAzZWRhdGEubGVuZ3RoID09IHNpemVvZihzdHJ1Y3QgaXdfc2Nhbl9yZXEpKVxuMzUyMzpcdFx0XHR3cmVxID0gKHN0cnVjdCBpd19zY2FuX3JlcSAqKWV4dHJhO1xuMzUyNDpcdFxuMzUyNTpcdFx0cmRldiA9IGNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KGRldl9uZXQoZGV2KSwgZGV2LVx1MDAzZWlmaW5kZXgpO1xuMzUyNjpcdFxuMzUyNzpcdFx0aWYgKElTX0VSUihyZGV2KSlcbjM1Mjg6XHRcdFx0cmV0dXJuIFBUUl9FUlIocmRldik7XG4zNTI5Olx0XG4zNTMwOlx0XHRpZiAocmRldi1cdTAwM2VzY2FuX3JlcSB8fCByZGV2LVx1MDAzZXNjYW5fbXNnKVxuMzUzMTpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuMzUzMjpcdFxuMzUzMzpcdFx0d2lwaHkgPSBcdTAwMjZyZGV2LVx1MDAzZXdpcGh5O1xuMzUzNDpcdFxuMzUzNTpcdFx0LyogRGV0ZXJtaW5lIG51bWJlciBvZiBjaGFubmVscywgbmVlZGVkIHRvIGFsbG9jYXRlIGNyZXEgKi9cbjM1MzY6XHRcdGlmICh3cmVxIFx1MDAyNlx1MDAyNiB3cmVxLVx1MDAzZW51bV9jaGFubmVscykge1xuMzUzNzpcdFx0XHQvKiBQYXNzZWQgZnJvbSB1c2Vyc3BhY2Ugc28gc2hvdWxkIGJlIGNoZWNrZWQgKi9cbjM1Mzg6XHRcdFx0aWYgKHVubGlrZWx5KHdyZXEtXHUwMDNlbnVtX2NoYW5uZWxzIFx1MDAzZSBJV19NQVhfRlJFUVVFTkNJRVMpKVxuMzUzOTpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzU0MDpcdFx0XHRuX2NoYW5uZWxzID0gd3JlcS1cdTAwM2VudW1fY2hhbm5lbHM7XG4zNTQxOlx0XHR9IGVsc2Uge1xuMzU0MjpcdFx0XHRuX2NoYW5uZWxzID0gaWVlZTgwMjExX2dldF9udW1fc3VwcG9ydGVkX2NoYW5uZWxzKHdpcGh5KTtcbjM1NDM6XHRcdH1cbjM1NDQ6XHRcbjM1NDU6XHRcdGNyZXEgPSBremFsbG9jKHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscykgJiM0MztcbjM1NDY6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgY2ZnODAyMTFfc3NpZCksXG4zNTQ3Olx0XHRcdCAgICAgICBHRlBfQVRPTUlDKTtcbjM1NDg6XHRcdGlmICghY3JlcSlcbjM1NDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4zNTUwOlx0XG4zNTUxOlx0XHRjcmVxLVx1MDAzZXJlcS53aXBoeSA9IHdpcGh5O1xuMzU1MjpcdFx0Y3JlcS1cdTAwM2VyZXEud2RldiA9IGRldi1cdTAwM2VpZWVlODAyMTFfcHRyO1xuMzU1MzpcdFx0LyogU1NJRHMgY29tZSBhZnRlciBjaGFubmVscyAqL1xuMzU1NDpcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHMgPSAodm9pZCAqKWNyZXEgJiM0MztcbjM1NTU6XHRcdFx0XHQgIHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscyk7XG4zNTU2Olx0XHRjcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzID0gbl9jaGFubmVscztcbjM1NTc6XHRcdGNyZXEtXHUwMDNlcmVxLm5fc3NpZHMgPSAxO1xuMzU1ODpcdFx0Y3JlcS1cdTAwM2VyZXEuc2Nhbl9zdGFydCA9IGppZmZpZXM7XG4zNTU5Olx0XG4zNTYwOlx0XHQvKiB0cmFuc2xhdGUgXCYjMzQ7U2NhbiBvbiBmcmVxdWVuY2llc1wmIzM0OyByZXF1ZXN0ICovXG4zNTYxOlx0XHRpID0gMDtcbjM1NjI6XHRcdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuMzU2MzpcdFx0XHRpbnQgajtcbjM1NjQ6XHRcbjM1NjU6XHRcdFx0aWYgKCF3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXSlcbjM1NjY6XHRcdFx0XHRjb250aW51ZTtcbjM1Njc6XHRcbjM1Njg6XHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2Mgd2lwaHktXHUwMDNlYmFuZHNbYmFuZF0tXHUwMDNlbl9jaGFubmVsczsgaiYjNDM7JiM0MzspIHtcbjM1Njk6XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW47XG4zNTcwOlx0XG4zNTcxOlx0XHRcdFx0LyogaWdub3JlIGRpc2FibGVkIGNoYW5uZWxzICovXG4zNTcyOlx0XHRcdFx0Y2hhbiA9IFx1MDAyNndpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLVx1MDAzZWNoYW5uZWxzW2pdO1xuMzU3MzpcdFx0XHRcdGlmIChjaGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCB8fFxuMzU3NDpcdFx0XHRcdCAgICAhY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQoY3JlcS1cdTAwM2VyZXEud2RldiwgY2hhbikpXG4zNTc1Olx0XHRcdFx0XHRjb250aW51ZTtcbjM1NzY6XHRcbjM1Nzc6XHRcdFx0XHQvKiBJZiB3ZSBoYXZlIGEgd2lyZWxlc3MgcmVxdWVzdCBzdHJ1Y3R1cmUgYW5kIHRoZVxuMzU3ODpcdFx0XHRcdCAqIHdpcmVsZXNzIHJlcXVlc3Qgc3BlY2lmaWVzIGZyZXF1ZW5jaWVzLCB0aGVuIHNlYXJjaFxuMzU3OTpcdFx0XHRcdCAqIGZvciB0aGUgbWF0Y2hpbmcgaGFyZHdhcmUgY2hhbm5lbC5cbjM1ODA6XHRcdFx0XHQgKi9cbjM1ODE6XHRcdFx0XHRpZiAod3JlcSBcdTAwMjZcdTAwMjYgd3JlcS1cdTAwM2VudW1fY2hhbm5lbHMpIHtcbjM1ODI6XHRcdFx0XHRcdGludCBrO1xuMzU4MzpcdFx0XHRcdFx0aW50IHdpcGh5X2ZyZXEgPSB3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXS1cdTAwM2VjaGFubmVsc1tqXS5jZW50ZXJfZnJlcTtcbjM1ODQ6XHRcdFx0XHRcdGZvciAoayA9IDA7IGsgXHUwMDNjIHdyZXEtXHUwMDNlbnVtX2NoYW5uZWxzOyBrJiM0MzsmIzQzOykge1xuMzU4NTpcdFx0XHRcdFx0XHRzdHJ1Y3QgaXdfZnJlcSAqZnJlcSA9XG4zNTg2Olx0XHRcdFx0XHRcdFx0XHUwMDI2d3JlcS1cdTAwM2VjaGFubmVsX2xpc3Rba107XG4zNTg3Olx0XHRcdFx0XHRcdGludCB3ZXh0X2ZyZXEgPVxuMzU4ODpcdFx0XHRcdFx0XHRcdGNmZzgwMjExX3dleHRfZnJlcShmcmVxKTtcbjM1ODk6XHRcbjM1OTA6XHRcdFx0XHRcdFx0aWYgKHdleHRfZnJlcSA9PSB3aXBoeV9mcmVxKVxuMzU5MTpcdFx0XHRcdFx0XHRcdGdvdG8gd2V4dF9mcmVxX2ZvdW5kO1xuMzU5MjpcdFx0XHRcdFx0fVxuMzU5MzpcdFx0XHRcdFx0Z290byB3ZXh0X2ZyZXFfbm90X2ZvdW5kO1xuMzU5NDpcdFx0XHRcdH1cbjM1OTU6XHRcbjM1OTY6XHRcdFx0d2V4dF9mcmVxX2ZvdW5kOlxuMzU5NzpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLmNoYW5uZWxzW2ldID1cbjM1OTg6XHRcdFx0XHRcdFx1MDAyNndpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLVx1MDAzZWNoYW5uZWxzW2pdO1xuMzU5OTpcdFx0XHRcdGkmIzQzOyYjNDM7O1xuMzYwMDpcdFx0XHR3ZXh0X2ZyZXFfbm90X2ZvdW5kOiA7XG4zNjAxOlx0XHRcdH1cbjM2MDI6XHRcdH1cbjM2MDM6XHRcdC8qIE5vIGNoYW5uZWxzIGZvdW5kPyAqL1xuMzYwNDpcdFx0aWYgKCFpKSB7XG4zNjA1Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4zNjA2Olx0XHRcdGdvdG8gb3V0O1xuMzYwNzpcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFkb3B0aW5nIHRoZSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuCgoqKkFuYWx5emluZyBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgdGhlIGdlbmVyYWwgY29udGV4dCBsb2NrZWQgaW4uIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gSXQmIzM5O3MgdGltZSB0byBkaXZlIGludG8gdGhlIGNvcmUgbG9naWMgYW5kIGdyYXNwIGhvdyB0aGlzIGZ1bmN0aW9uIGFjaGlldmVzIGl0cyBwdXJwb3NlLiBUaGUgYmlnIHBpY3R1cmUgaXMgc2V0LCBzbyBsZXQmIzM5O3MgcGFyc2UgdGhyb3VnaCB0aGUgbGluZXMgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBmaXQgdG9nZXRoZXIgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBvdXRwdXQsIG9yIGluIHRoaXMgY2FzZSwgY29udGludWUgb3VyIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvc2Nhbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzYwOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzYwODpcdFxuMzYwOTpcdFx0LyogU2V0IHJlYWwgbnVtYmVyIG9mIGNoYW5uZWxzIHNwZWNpZmllZCBpbiBjcmVxLVx1MDAzZXJlcS5jaGFubmVsc1tdICovXG4zNjEwOlx0XHRjcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzID0gaTtcbjM2MTE6XHRcbjM2MTI6XHRcdC8qIHRyYW5zbGF0ZSBcJiMzNDtTY2FuIGZvciBTU0lEXCYjMzQ7IHJlcXVlc3QgKi9cbjM2MTM6XHRcdGlmICh3cmVxKSB7XG4zNjE0Olx0XHRcdGlmICh3cnF1LVx1MDAzZWRhdGEuZmxhZ3MgXHUwMDI2IElXX1NDQU5fVEhJU19FU1NJRCkge1xuMzYxNTpcdFx0XHRcdGlmICh3cmVxLVx1MDAzZWVzc2lkX2xlbiBcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xuMzYxNjpcdFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjM2MTc6XHRcdFx0XHRcdGdvdG8gb3V0O1xuMzYxODpcdFx0XHRcdH1cbjM2MTk6XHRcdFx0XHRtZW1jcHkoY3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cdTAwM2Vlc3NpZCxcbjM2MjA6XHRcdFx0XHQgICAgICAgd3JlcS1cdTAwM2Vlc3NpZF9sZW4pO1xuMzYyMTpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cdTAwM2Vlc3NpZF9sZW47XG4zNjIyOlx0XHRcdH1cbjM2MjM6XHRcdFx0aWYgKHdyZXEtXHUwMDNlc2Nhbl90eXBlID09IElXX1NDQU5fVFlQRV9QQVNTSVZFKSB7XG4zNjI0Olx0XHRcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHMgPSBOVUxMO1xuMzYyNTpcdFx0XHRcdGNyZXEtXHUwMDNlcmVxLm5fc3NpZHMgPSAwO1xuMzYyNjpcdFx0XHR9XG4zNjI3Olx0XHR9XG4zNjI4Olx0XG4zNjI5Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgaSYjNDM7JiM0MzspXG4zNjMwOlx0XHRcdGlmICh3aXBoeS1cdTAwM2ViYW5kc1tpXSlcbjM2MzE6XHRcdFx0XHRjcmVxLVx1MDAzZXJlcS5yYXRlc1tpXSA9XG4zNjMyOlx0XHRcdFx0XHQoMSBcdTAwM2NcdTAwM2Mgd2lwaHktXHUwMDNlYmFuZHNbaV0tXHUwMDNlbl9iaXRyYXRlcykgLSAxO1xuMzYzMzpcdFxuMzYzNDpcdFx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGNyZXEtXHUwMDNlcmVxLmJzc2lkKTtcbjM2MzU6XHRcbjM2MzY6XHRcdHNjb3BlZF9ndWFyZCh3aXBoeSwgXHUwMDI2cmRldi1cdTAwM2V3aXBoeSkge1xuMzYzNzpcdFx0XHRyZGV2LVx1MDAzZXNjYW5fcmVxID0gY3JlcTtcbjM2Mzg6XHRcdFx0ZXJyID0gcmRldl9zY2FuKHJkZXYsIGNyZXEpO1xuMzYzOTpcdFx0XHRpZiAoZXJyKSB7XG4zNjQwOlx0XHRcdFx0cmRldi1cdTAwM2VzY2FuX3JlcSA9IE5VTEw7XG4zNjQxOlx0XHRcdFx0LyogY3JlcSB3aWxsIGJlIGZyZWVkIGJlbG93ICovXG4zNjQyOlx0XHRcdH0gZWxzZSB7XG4zNjQzOlx0XHRcdFx0bmw4MDIxMV9zZW5kX3NjYW5fc3RhcnQocmRldiwgZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIpO1xuMzY0NDpcdFx0XHRcdC8qIGNyZXEgbm93IG93bmVkIGJ5IGRyaXZlciAqL1xuMzY0NTpcdFx0XHRcdGNyZXEgPSBOVUxMO1xuMzY0NjpcdFx0XHRcdGRldl9ob2xkKGRldik7XG4zNjQ3Olx0XHRcdH1cbjM2NDg6XHRcdH1cbjM2NDk6XHRcbjM2NTA6XHQgb3V0OlxuMzY1MTpcdFx0a2ZyZWUoY3JlcSk7XG4zNjUyOlx0XHRyZXR1cm4gZXJyO1xuMzY1MzpcdH1cbjM2NTQ6XHRcbjM2NTU6XHRzdGF0aWMgY2hhciAqaWVlZTgwMjExX3NjYW5fYWRkX2llcyhzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuMzY1NjpcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICppZXMsXG4zNjU3Olx0XHRcdFx0XHQgICAgY2hhciAqY3VycmVudF9ldiwgY2hhciAqZW5kX2J1ZilcbjM2NTg6XHR7XG4zNjU5Olx0XHRjb25zdCB1OCAqcG9zLCAqZW5kLCAqbmV4dDtcbjM2NjA6XHRcdHN0cnVjdCBpd19ldmVudCBpd2U7XG4zNjYxOlx0XG4zNjYyOlx0XHRpZiAoIWllcylcbjM2NjM6XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjY0Olx0XG4zNjY1Olx0XHQvKlxuMzY2NjpcdFx0ICogSWYgbmVlZGVkLCBmcmFnbWVudCB0aGUgSUVzIGJ1ZmZlciAoYXQgSUUgYm91bmRhcmllcykgaW50byBzaG9ydFxuMzY2NzpcdFx0ICogZW5vdWdoIGZyYWdtZW50cyB0byBmaXQgaW50byBJV19HRU5FUklDX0lFX01BWCBvY3RldCBtZXNzYWdlcy5cbjM2Njg6XHRcdCAqL1xuMzY2OTpcdFx0cG9zID0gaWVzLVx1MDAzZWRhdGE7XG4zNjcwOlx0XHRlbmQgPSBwb3MgJiM0MzsgaWVzLVx1MDAzZWxlbjtcbjM2NzE6XHRcbjM2NzI6XHRcdHdoaWxlIChlbmQgLSBwb3MgXHUwMDNlIElXX0dFTkVSSUNfSUVfTUFYKSB7XG4zNjczOlx0XHRcdG5leHQgPSBwb3MgJiM0MzsgMiAmIzQzOyBwb3NbMV07XG4zNjc0Olx0XHRcdHdoaWxlIChuZXh0ICYjNDM7IDIgJiM0MzsgbmV4dFsxXSAtIHBvcyBcdTAwM2MgSVdfR0VORVJJQ19JRV9NQVgpXG4zNjc1Olx0XHRcdFx0bmV4dCA9IG5leHQgJiM0MzsgMiAmIzQzOyBuZXh0WzFdO1xuMzY3NjpcdFxuMzY3NzpcdFx0XHRtZW1zZXQoXHUwMDI2aXdlLCAwLCBzaXplb2YoaXdlKSk7XG4zNjc4Olx0XHRcdGl3ZS5jbWQgPSBJV0VWR0VOSUU7XG4zNjc5Olx0XHRcdGl3ZS51LmRhdGEubGVuZ3RoID0gbmV4dCAtIHBvcztcbjM2ODA6XHRcdFx0Y3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX3BvaW50X2NoZWNrKGluZm8sIGN1cnJlbnRfZXYsXG4zNjgxOlx0XHRcdFx0XHRcdFx0XHRlbmRfYnVmLCBcdTAwMjZpd2UsXG4zNjgyOlx0XHRcdFx0XHRcdFx0XHQodm9pZCAqKXBvcyk7XG4zNjgzOlx0XHRcdGlmIChJU19FUlIoY3VycmVudF9ldikpXG4zNjg0Olx0XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjg1Olx0XHRcdHBvcyA9IG5leHQ7XG4zNjg2Olx0XHR9XG4zNjg3Olx0XG4zNjg4Olx0XHRpZiAoZW5kIFx1MDAzZSBwb3MpIHtcbjM2ODk6XHRcdFx0bWVtc2V0KFx1MDAyNml3ZSwgMCwgc2l6ZW9mKGl3ZSkpO1xuMzY5MDpcdFx0XHRpd2UuY21kID0gSVdFVkdFTklFO1xuMzY5MTpcdFx0XHRpd2UudS5kYXRhLmxlbmd0aCA9IGVuZCAtIHBvcztcbjM2OTI6XHRcdFx0Y3VycmVudF9ldiA9IGl3ZV9zdHJlYW1fYWRkX3BvaW50X2NoZWNrKGluZm8sIGN1cnJlbnRfZXYsXG4zNjkzOlx0XHRcdFx0XHRcdFx0XHRlbmRfYnVmLCBcdTAwMjZpd2UsXG4zNjk0Olx0XHRcdFx0XHRcdFx0XHQodm9pZCAqKXBvcyk7XG4zNjk1Olx0XHRcdGlmIChJU19FUlIoY3VycmVudF9ldikpXG4zNjk2Olx0XHRcdFx0cmV0dXJuIGN1cnJlbnRfZXY7XG4zNjk3Olx0XHR9XG4zNjk4Olx0XG4zNjk5Olx0XHRyZXR1cm4gY3VycmVudF9ldjtcbjM3MDA6XHR9XG4zNzAxOlx0XG4zNzAyOlx0c3RhdGljIGNoYXIgKlxuMzcwMzpcdGllZWU4MDIxMV9ic3Moc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcbjM3MDQ6XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9pbnRlcm5hbF9ic3MgKmJzcywgY2hhciAqY3VycmVudF9ldixcbjM3MDU6XHRcdCAgICAgIGNoYXIgKmVuZF9idWYpXG4zNzA2Olx0e1xuMzcwNzpcdFx0Y29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIEZpeCBpbiBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIGlzc3VlIGlzIHRoZSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLiBUaGlzIGZ1bmN0aW9uLCByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIFNJT0NTSVdTQ0FOIFdpcmVsZXNzIEV4dGVuc2lvbnMgaW9jdGwsIGlzIHRoZSBlbnRyeSBwb2ludC4gVGhlIGNydWNpYWwgcGFydCBpcyBob3cgaXQgYWxsb2NhdGVzIGBjcmVxYCB1c2luZyBga3phbGxvY2AgYXQgbGluZSAzNTQ1LiBUaGUgdnVsbmVyYWJpbGl0eSBhcmlzZXMgd2hlbiBgd3JlcS0mZ3Q7ZXNzaWRfbGVuYCBleGNlZWRzIGBJRUVFODAyMTFfTUFYX1NTSURfTEVOYC4gUHJldmlvdXNseSwgdGhlIGNvZGUgd291bGQgc2ltcGx5IHJldHVybiBgLUVJTlZBTGAgZGlyZWN0bHksIGxlYXZpbmcgYGNyZXFgIGxlYWtlZC4gVGhlIGZpeCBpbnRyb2R1Y2VzIGBlcnIgPSAtRUlOVkFMOyBnb3RvIG91dDtgLCBlbnN1cmluZyBgY3JlcWAgaXMgZnJlZWQgYXQgdGhlIGBvdXRgIGxhYmVsLCBzcGVjaWZpY2FsbHkgbGluZSAzNjUxLgoKRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50IOKAkyBhIGNydWNpYWwgbWVtb3J5IGxlYWsgYmVpbmcgcGx1Z2dlZC4gSW1wb3J0YW50bHksIHRoaXMgbG9naWMgaXMgY29yZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IFdpcmVsZXNzIEV4dGVuc2lvbnMsIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggaW9jdGwgb24gd2lyZWxlc3MgaW50ZXJmYWNlcy4gVGhlIGdvb2QgbmV3cyAob3IgYmFkLCBkZXBlbmRpbmcgb24geW91ciBwZXJzcGVjdGl2ZSkgaXMgdGhhdCB3ZSBjYW4gcmVhY2ggdGhpcyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLgoKVGhpcyBzY3JlYW1zIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGhhdmUgYSBjbGVhbiwgcmVhY2hhYmxlIHBhdGggdGhhdCB3YXMgbGVha3ksIGFuZCBub3cgaXMgZml4ZWQuIEdpdmVuIG91ciBleHBlcnRpc2UsIGZ1enppbmcgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi4gU3BlY2lmaWNhbGx5LCBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBpcyB0aGUgdGFyZ2V0LCBhbmQgd2UmIzM5O2xsIHdhbnQgdG8gZW5hYmxlIHRoZSBjb25maWdzIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBhY3RpdmUuIEJlZm9yZSBydW5uaW5nIHRoZSBmdXp6ZXIsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAgdG8gZW5zdXJlIHdlIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGdldCB0byBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q0ZHODAyMTFfV0VYVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02LVx0ZGVmX2Jvb2wgeVxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfV0VYVCB8fCBXSVJFTEVTU19FWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTgtXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTc3PWNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTEzPWNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSAmIzQzOz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz01NDY9c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy02MzMtXHRcdFx0ICBjZmc4MDIxMV9kZnNfY2hhbm5lbHNfdXBkYXRlX3dvcmspO1xubmV0L3dpcmVsZXNzL2NvcmUuYzo2MzQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvY29yZS5jLTYzNS1cdHJkZXYtXHUwMDNld2lwaHkud2V4dCA9IFx1MDAyNmNmZzgwMjExX3dleHRfaGFuZGxlcjtcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0MDQ9c3RhdGljIHZvaWQgX2NmZzgwMjExX3VucmVnaXN0ZXJfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9jb3JlLmMtMTQ0My1cbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTQ0NS1cdGtmcmVlX3NlbnNpdGl2ZSh3ZGV2LVx1MDAzZXdleHQua2V5cyk7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNDk4PXZvaWQgY2ZnODAyMTFfbGVhdmVfbG9ja2VkKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjItXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE1MjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjQtXHRcdGtmcmVlKHdkZXYtXHUwMDNld2V4dC5pZSk7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNjA5PXZvaWQgY2ZnODAyMTFfaW5pdF93ZGV2KHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE3LVxubmV0L3dpcmVsZXNzL2NvcmUuYzoxNjE4OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE5LVx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0gLTE7XG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYz0xNzAyPXN0YXRpYyBpbnQgY2ZnODAyMTFfbmV0ZGV2X25vdGlmaWVyX2NhbGwoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE3NzYtXHRcdHN3aXRjaCAod2Rldi1cdTAwM2VpZnR5cGUpIHtcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTc3NzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTc3OC1cdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5PXZvaWQgX19jZmc4MDIxMV9pYnNzX2pvaW5lZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0yMy1cdHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcztcbm5ldC93aXJlbGVzcy9pYnNzLmM6MjQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTI1LVx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xuLS1cbm5ldC93aXJlbGVzcy9pYnNzLmMtNTEtXHRcdFx0XHRHRlBfS0VSTkVMKTtcbm5ldC93aXJlbGVzcy9pYnNzLmM6NTI6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTUzLVx0bWVtc2V0KFx1MDAyNndycXUsIDAsIHNpemVvZih3cnF1KSk7XG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYz04Nz1pbnQgX19jZmc4MDIxMV9qb2luX2lic3Moc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9pYnNzLmMtMTQwLVxubmV0L3dpcmVsZXNzL2lic3MuYzoxNDE6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE0Mi1cdHdkZXYtXHUwMDNld2V4dC5pYnNzLmNoYW5kZWYgPSBwYXJhbXMtXHUwMDNlY2hhbmRlZjtcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE1Nj12b2lkIGNmZzgwMjExX2NsZWFyX2lic3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBub3dleHQpXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0xODQtXHRtZW1zZXQoXHUwMDI2d2Rldi1cdTAwM2V1Lmlic3MuY2hhbmRlZiwgMCwgc2l6ZW9mKHdkZXYtXHUwMDNldS5pYnNzLmNoYW5kZWYpKTtcbm5ldC93aXJlbGVzcy9pYnNzLmM6MTg1OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL2lic3MuYy0xODYtXHRpZiAoIW5vd2V4dClcbi0tXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5Mj1pbnQgY2ZnODAyMTFfbGVhdmVfaWJzcyhzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL2lic3MuYy0yMTMtXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjIxNDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjE1LWludCBjZmc4MDIxMV9pYnNzX3dleHRfam9pbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL21sbWUuYz0yMzQ9dm9pZCBjZmc4MDIxMV9taWNoYWVsX21pY19mYWlsdXJlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuLS1cbm5ldC93aXJlbGVzcy9tbG1lLmMtMjM5LVx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2ID0gd2lwaHlfdG9fcmRldih3aXBoeSk7XG5uZXQvd2lyZWxlc3MvbWxtZS5jOjI0MDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9tbG1lLmMtMjQxLVx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTQ1OT1zdGF0aWMgaW50IG5sODAyMTFfc2V0X2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTUwMjojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMy1cdFx0d2Rldi1cdTAwM2V3ZXh0LmRlZmF1bHRfa2V5ID0ga2V5LmlkeDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjQtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1MjU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjYtXHRcdHdkZXYtXHUwMDNld2V4dC5kZWZhdWx0X21nbXRfa2V5ID0ga2V5LmlkeDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU2Mzc9c3RhdGljIGludCBubDgwMjExX2RlbF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODYtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU2ODc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODgtXHRpZiAoIWVycikge1xuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MTExND12b2lkIF9fX2NmZzgwMjExX3NjYW5fZG9uZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTE5LVx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbm5ldC93aXJlbGVzcy9zY2FuLmM6MTEyMDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zY2FuLmMtMTEyMS1cdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExNjItXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExNjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExNjQtXHRpZiAod2Rldi1cdTAwM2VuZXRkZXYgXHUwMDI2XHUwMDI2ICFyZXF1ZXN0LVx1MDAzZWluZm8uYWJvcnRlZCkge1xuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmM9MzQxND12b2lkIGNmZzgwMjExX3VwZGF0ZV9hc3NvY19ic3NfZW50cnkoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODctXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjM0ODg6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODktc3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTczNT12b2lkIF9fY2ZnODAyMTFfY29ubmVjdF9yZXN1bHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzQzLVx0dTggY291bnRyeV9kYXRhbGVuO1xubmV0L3dpcmVsZXNzL3NtZS5jOjc0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy03NDUtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTc3NC1cbm5ldC93aXJlbGVzcy9zbWUuYzo3NzU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzc2LVx0aWYgKHdleHRldiBcdTAwMjZcdTAwMjYgIWNyLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTEwNzk9dm9pZCBfX2NmZzgwMjExX3JvYW1lZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9zbWUuYy0xMDgxLXtcbm5ldC93aXJlbGVzcy9zbWUuYzoxMDgyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3NtZS5jLTEwODMtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTExMzQtXG5uZXQvd2lyZWxlc3Mvc21lLmM6MTEzNTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM2LVx0aWYgKCFpbmZvLVx1MDAzZXZhbGlkX2xpbmtzKSB7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jPTEzNDM9dm9pZCBfX2NmZzgwMjExX2Rpc2Nvbm5lY3RlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqaWUsXG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNDgtXHRpbnQgaTtcbm5ldC93aXJlbGVzcy9zbWUuYzoxMzQ5OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNTAtXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XG4tLVxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTQtXG5uZXQvd2lyZWxlc3Mvc21lLmM6MTM5NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9zbWUuYy0xMzk2LVx0bWVtc2V0KFx1MDAyNndycXUsIDAsIHNpemVvZih3cnF1KSk7XG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTYzNz1FWFBPUlRfU1lNQk9MKHdpcmVsZXNzX3NlbmRfZXZlbnQpO1xubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTYzOC1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo2Mzk6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjQwLXN0YXRpYyB2b2lkIHdpcmVsZXNzX3dhcm5fY2ZnODAyMTFfd2V4dCh2b2lkKVxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYz02NDk9c3RydWN0IGl3X3N0YXRpc3RpY3MgKmdldF93aXJlbGVzc19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYy02NTYtXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM6NjU3OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTY1OC1cdGlmIChkZXYtXHUwMDNlaWVlZTgwMjExX3B0ciBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM9Njk3PXN0YXRpYyBpd19oYW5kbGVyIGdldF9oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTcwMi1cbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo3MDM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNzA0LVx0aWYgKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlaWVlZTgwMjExX3B0ci1cdTAwM2V3aXBoeSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA1OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgY2ZnODAyMTFfd2V4dF9zaXdzY2FuIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGNmZzgwMjExYCBzdHVmZiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGV4dGVuc2lvbnMgaW50ZXJmYWNlIChgV0VYVGApLiBUaGUgY29yZSBvZiBteSBpbnRlcmVzdCBpcyB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLiAgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBpdCYjMzk7cyBjb25kaXRpb25hbCwgdGhhdCBpdCBsaXZlcyB3aXRoaW4gYW4gYCNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVGAgYmxvY2suIE1ha2VzIHNlbnNlLCByaWdodD8gSXQmIzM5O3Mgb25seSBjb21waWxlZCBpbiBpZiB0aGUgYENGRzgwMjExX1dFWFRgIGNvbmZpZyBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCBoZWxwcyBrZWVwIHRoZSBrZXJuZWwgc2xpbS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgbGluZSBudW1iZXIgaW4gYG5ldC93aXJlbGVzcy9zY2FuLmNgLiBJdCYjMzk7cyBsaW5lIDM0ODguIE9rYXksIGdvb2QuIFRoYXQgY29uZmlybXMgdGhlIGJsb2NrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGludGVncmF0aW9uIHdpdGggV0VYVCBpcyBoYW5kbGVkIGZvciBzY2FucyB3aGVuIHRoaXMgb3B0aW9uIGlzIHNldC4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIHRoYXQgYmxvY2smIzM5O3MgY29kZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0ODA6XHRcdFx0YnNzLVx1MDAzZXB1Yi5jaGFubmVsID0gY2hhbjtcbjM0ODE6XHRcdFx0Y2ZnODAyMTFfcmVoYXNoX2JzcyhyZGV2LCBic3MpO1xuMzQ4MjpcdFx0fVxuMzQ4MzpcdFxuMzQ4NDpcdGRvbmU6XG4zNDg1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZyZGV2LVx1MDAzZWJzc19sb2NrKTtcbjM0ODY6XHR9XG4zNDg3Olx0XG4zNDg4Olx0I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXG4zNDg5Olx0c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXG4zNDkwOlx0Y2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcbjM0OTE6XHR7XG4zNDkyOlx0XHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XG4zNDkzOlx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuMzQ5NDpcdFxuMzQ5NTpcdFx0QVNTRVJUX1JUTkwoKTtcbjM0OTY6XHRcbjM0OTc6XHRcdGRldiA9IGRldl9nZXRfYnlfaW5kZXgobmV0LCBpZmluZGV4KTtcbjM0OTg6XHRcdGlmICghZGV2KVxuMzQ5OTpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbjM1MDA6XHRcdGlmIChkZXYtXHUwMDNlaWVlZTgwMjExX3B0cilcbjM1MDE6XHRcdFx0cmRldiA9IHdpcGh5X3RvX3JkZXYoZGV2LVx1MDAzZWllZWU4MDIxMV9wdHItXHUwMDNld2lwaHkpO1xuMzUwMjpcdFx0ZWxzZVxuMzUwMzpcdFx0XHRyZGV2ID0gRVJSX1BUUigtRU5PREVWKTtcbjM1MDQ6XHRcdGRldl9wdXQoZGV2KTtcbjM1MDU6XHRcdHJldHVybiByZGV2O1xuMzUwNjpcdH1cbjM1MDc6XHRcbjM1MDg6XHRpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4zNTA5Olx0XHRcdFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuMzUxMDpcdFx0XHRcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXG4zNTExOlx0e1xuMzUxMjpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xuMzUxMzpcdFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcbjM1MTQ6XHRcdHN0cnVjdCBpd19zY2FuX3JlcSAqd3JlcSA9IE5VTEw7XG4zNTE1Olx0XHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0X2ludCAqY3JlcTtcbjM1MTY6XHRcdGludCBpLCBlcnIsIG5fY2hhbm5lbHMgPSAwO1xuMzUxNzpcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbjM1MTg6XHRcbjM1MTk6XHRcdGlmICghbmV0aWZfcnVubmluZyhkZXYpKVxuMzUyMDpcdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuMzUyMTpcdFxuMzUyMjpcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBpd19zY2FuX3JlcSkpXG4zNTIzOlx0XHRcdHdyZXEgPSAoc3RydWN0IGl3X3NjYW5fcmVxICopZXh0cmE7XG4zNTI0Olx0XG4zNTI1Olx0XHRyZGV2ID0gY2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoZGV2X25ldChkZXYpLCBkZXYtXHUwMDNlaWZpbmRleCk7XG4zNTI2Olx0XG4zNTI3Olx0XHRpZiAoSVNfRVJSKHJkZXYpKVxuMzUyODpcdFx0XHRyZXR1cm4gUFRSX0VSUihyZGV2KTtcbjM1Mjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2xlYXJseSB3cmFwcGVkIGluIGFuIGAjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRgIGJsb2NrLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCB0aGlzIHdvcmtpbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBgQ0ZHODAyMTFfV0VYVGAgZW5hYmxlZCwgb2J2aW91c2x5LiBBbmQsIG9mIGNvdXJzZSwgYENGRzgwMjExYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUsIGNhbiYjMzk7dCBmb3JnZXQgdGhhdC4gSSB0aGluayBgTUFDODAyMTFfSFdTSU1gIHdvdWxkIGJlIGhlbHBmdWwgdG9vLCBlc3BlY2lhbGx5IGZvciBxdWlja2x5IGNyZWF0aW5nIHRob3NlIHZpcnR1YWwgV2ktRmkgZGV2aWNlcyBmb3IgdGVzdGluZy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENGRzgwMjExX1dFWFRgLiBRdWljayB0cmlwIHRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEFoLCBqdXN0IGEgc2ltcGxlIGJvb2xlYW4uIE5vIG90aGVyIGV4cGxpY2l0IGRlcGVuZGVuY2llcy4gR29vZCB0byBrbm93LgoKQWxyaWdodCwgbm93IGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBgTUFDODAyMTFfSFdTSU1gLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcyLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgzOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg0LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNDg4Olx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDkyPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwODpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNC1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NDpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMzpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYxNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmluZyB0aGUgV2lyZWxlc3MgU3RhY2sqKgoKQWxyaWdodCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgTUFDODAyMTFfSFdTSU1gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBoZXJlLiBCdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgbGV0JiMzOTtzIGxpc3QgdGhlbSBhbGwuIFNvLCB3ZSYjMzk7cmUgdGFsa2luZyBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExX0hXU0lNYC4gQWgsIHJpZ2h0LCBgQ0ZHODAyMTFgIGlzIGFscmVhZHkgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBjb3JlLCBzbyBpdCYjMzk7cyBwcm9iYWJseSByZWR1bmRhbnQgdG8gaW5jbHVkZSwgYnV0IEkmIzM5O2xsIGxlYXZlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIHRvIGVuc3VyZSBJJiMzOTt2ZSBjb3ZlcmVkIGV2ZXJ5dGhpbmcuIFVsdGltYXRlbHksIEkmIzM5O2xsIG5lZWQgYENGRzgwMjExX1dFWFRgLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmVkLgoKTm93LCBiZWZvcmUgSSBjb21taXQgdG8gdGhpcywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgdGhhdCBJJiMzOTttIG1pc3NpbmcuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLCBmb3IgaW5zdGFuY2UsIGlzbiYjMzk7dCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgbGlrZSBgd2V4dC1jb21wYXQuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IGl0IGlzbiYjMzk7dCBhIHJlcXVpcmVkIGZsYWcuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9zY2FuLmM9MzQ5MD1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxuLS1cbm5ldC93aXJlbGVzcy9zY2FuLmMtMzUwNy1cbm5ldC93aXJlbGVzcy9zY2FuLmM6MzUwODppbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDktXHRcdFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jPTE0ODQ9c3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgY2ZnODAyMTFfaGFuZGxlcnNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYy0xNDkzLVx0SVdfSEFORExFUihTSU9DU0lXTUxNRSxcdFx0Y2ZnODAyMTFfd2V4dF9zaXdtbG1lKSxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jOjE0OTQ6XHRJV19IQU5ETEVSKFNJT0NTSVdTQ0FOLFx0XHRjZmc4MDIxMV93ZXh0X3Npd3NjYW4pLFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5NS1cdElXX0hBTkRMRVIoU0lPQ0dJV1NDQU4sXHRcdGNmZzgwMjExX3dleHRfZ2l3c2NhbiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzc3CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDQwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNJT0NTSVdTQ0FOIEhhbmRsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgYFNJT0NTSVdTQ0FOYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCB3aXJlbGVzcyBleHRlbnNpb24gaW9jdGwuIExldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBwYXRjaC4KClJpZ2h0LCB0aGUgY29kZSBzbmlwcGV0IGNsZWFybHkgc2hvd3MgYSBidWcgZml4IHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhay4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBkaWRuJiMzOTt0IGhhbmRsZSB0aGUgZXJyb3IgY2FzZSBwcm9wZXJseSB3aGVuIHRoZSBFU1NJRCBsZW5ndGggd2FzIGludmFsaWQuIFRoaXMgbWVhbnMgdGhlIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBjYWxsIHdpdGggYFNJT0NTSVdTQ0FOYC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIGltcHJvdmVtZW50IHRvIHRoZSBkcml2ZXIuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgdGhpcyBpcyAqKndvcnRoIGZ1enppbmcqKi4gSSYjMzk7bGwgbm90ZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBhcyBhIGZvY3VzIHN5bWJvbCBmb3IgdGVzdGluZy4gVGhlIGBDRkc4MDIxMV9XRVhUYCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmF0aW9ucyBzZWVtIHJlbGV2YW50IGhlcmUgZm9yIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBXSVJFTEVTU19FWFRgIGlzbiYjMzk7dCBhIGhhcmQgcmVxdWlyZW1lbnQuIENoZWNraW5nIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgY29uZmlybXMgYENGRzgwMjExX1dFWFRgIGlzIHN1ZmZpY2llbnQuIEdvb2QuCgpJJiMzOTt2ZSByZXZpZXdlZCB0aGUgcGF0Y2g7IHRoZXJlIGFyZSBubyBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQgYmV5b25kIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gLiBUaGUgY29yZSBvZiBpdCBhbGwgaXM6IHRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciwgd2hpY2ggaXMgd2l0aGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUsIGJ5IG1ha2luZyBzdXJlIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBwcm9wZXJseSBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0JiMzOTtzIGEgZ29vZCBmaXguIExldCYjMzk7cyBjYWxsIHRoaXMgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMV9XRVhUJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnODAyMTFfd2V4dF9zaXdzY2FuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIFNJT0NTSVdTQ0FOIGlvY3RsIGhhbmRsZXIgKGNmZzgwMjExX3dleHRfc2l3c2NhbikgYnkgZW5zdXJpbmcgdGhlIGFsbG9jYXRlZCBzY2FuIHJlcXVlc3Qgc3RydWN0dXJlIGlzIGZyZWVkIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSB3aXJlbGVzcyBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgaW9jdGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjA0LjY5MDEzNzYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY1MTc2MjgyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV93ZXh0X3Npd3NjYW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDowNC42OTAxODE2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNjEyNzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGNkZDY1YTdkNzQzZDYzOTcwYTk5M2VjZDE0MmRiMDMwYjYxY2M5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1biAyMCAyMDoxMDowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbmluZGV4IDA1YjdkYzZiNzY2Y2U5Li4zODAwMTY4NDAxNGQ5NCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xcbkBAIC0zNjEyLDggKzM2MTIsMTAgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3c2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHQvKiB0cmFuc2xhdGUgXFxcIlNjYW4gZm9yIFNTSURcXFwiIHJlcXVlc3QgKi9cXG4gXFx0aWYgKHdyZXEpIHtcXG4gXFx0XFx0aWYgKHdycXUtXFx1MDAzZWRhdGEuZmxhZ3MgXFx1MDAyNiBJV19TQ0FOX1RISVNfRVNTSUQpIHtcXG4tXFx0XFx0XFx0aWYgKHdyZXEtXFx1MDAzZWVzc2lkX2xlbiBcXHUwMDNlIElFRUU4MDIxMV9NQVhfU1NJRF9MRU4pXFxuLVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRpZiAod3JlcS1cXHUwMDNlZXNzaWRfbGVuIFxcdTAwM2UgSUVFRTgwMjExX01BWF9TU0lEX0xFTikge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRtZW1jcHkoY3JlcS1cXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWQsIHdyZXEtXFx1MDAzZWVzc2lkLFxcbiBcXHRcXHRcXHQgICAgICAgd3JlcS1cXHUwMDNlZXNzaWRfbGVuKTtcXG4gXFx0XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLnNzaWRzWzBdLnNzaWRfbGVuID0gd3JlcS1cXHUwMDNlZXNzaWRfbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDowNS4xNTM0NjU2MDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDU0MjkwODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkY2RkNjVhN2Q3NDNkNjM5NzBhOTkzZWNkMTQyZGIwMzBiNjFjYzk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjAgMjA6MTA6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuaW5kZXggMDViN2RjNmI3NjZjZTkuLjM4MDAxNjg0MDE0ZDk0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uY1xuKysrIGIvbmV0L3dpcmVsZXNzL3NjYW4uY1xuQEAgLTM2MTIsOCArMzYxMiwxMCBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHQvKiB0cmFuc2xhdGUgXCJTY2FuIGZvciBTU0lEXCIgcmVxdWVzdCAqL1xuIFx0aWYgKHdyZXEpIHtcbiBcdFx0aWYgKHdycXUtXHUwMDNlZGF0YS5mbGFncyBcdTAwMjYgSVdfU0NBTl9USElTX0VTU0lEKSB7XG4tXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKVxuLVx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0aWYgKHdyZXEtXHUwMDNlZXNzaWRfbGVuIFx1MDAzZSBJRUVFODAyMTFfTUFYX1NTSURfTEVOKSB7XG4rXHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byBvdXQ7XG4rXHRcdFx0fVxuIFx0XHRcdG1lbWNweShjcmVxLVx1MDAzZXJlcS5zc2lkc1swXS5zc2lkLCB3cmVxLVx1MDAzZWVzc2lkLFxuIFx0XHRcdCAgICAgICB3cmVxLVx1MDAzZWVzc2lkX2xlbik7XG4gXHRcdFx0Y3JlcS1cdTAwM2VyZXEuc3NpZHNbMF0uc3NpZF9sZW4gPSB3cmVxLVx1MDAzZWVzc2lkX2xlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjA1LjE1MzQ2ODU2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODQwNDA5MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgU2NhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBmdW5jdGlvbiBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgcmVsYXRlZCB0byB0aGUgaGFuZGxpbmcgb2YgU1NJRCBsZW5ndGhzIGluIGEgc2NhbiByZXF1ZXN0LiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCBhIHNpbXBsZSBjaGVjazogaWYgdGhlIEVTU0lEIGxlbmd0aCBpbiB0aGUgcmVxdWVzdCBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQsIGl0IGltbWVkaWF0ZWx5IHJldHVybmVkIGAtRUlOVkFMYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRoaW5raW5nIHRoZXJlIG1pZ2h0IGJlIGEgcHJvYmxlbS4gUmV0dXJuaW5nIGVhcmx5IGxpa2UgdGhhdCBjb3VsZCBieXBhc3Mgc29tZSBuZWNlc3NhcnkgY2xlYW51cCBwcm9jZWR1cmVzLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGEgbWVtb3J5IGxlYWsgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIGxhY2sgb2YgcHJvcGVyIHJlc291cmNlIHJlbGVhc2UuXG5cblRoZSBwYXRjaCdzIHNvbHV0aW9uIGlzIGVsZWdhbnQuIEluc3RlYWQgb2YgdGhlIGRpcmVjdCByZXR1cm4sIGl0IG5vdyBhc3NpZ25zIGAtRUlOVkFMYCB0byBhbiBlcnJvciB2YXJpYWJsZSwgYGVycmAsIGFuZCB1c2VzIGEgYGdvdG8gb3V0O2Agc3RhdGVtZW50LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXJyb3IgY29kZSBpcyBzZXQgKmFuZCogdGhhdCB0aGUgY29kZSBqdW1wcyB0byBhIGNsZWFudXAgc2VjdGlvbiwgYG91dGAsIGJlZm9yZSBleGl0aW5nIHRoZSBmdW5jdGlvbi4gQnkgc2VwYXJhdGluZyB0aGUgZXJyb3IgYXNzaWdubWVudCBmcm9tIHRoZSBleGl0LCBpdCBhbGxvd3MgZm9yIGNsZWFudXAgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IG90aGVyd2lzZSBoYXZlIGJlZW4gc2tpcHBlZC4gSSBjYW4gc2VlIHRoZSBpbnRlbnQgY2xlYXJseSDigJMgZW5zdXJpbmcgYWxsIHJlc291cmNlcyBhcmUgcHJvcGVybHkgaGFuZGxlZCwgZXZlbiBpbiBlcnJvciBjYXNlcy5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZ28gYmFjayBhbmQgZXhhbWluZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBpdHNlbGYgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCByZXNvdXJjZXMgbWlnaHQgaGF2ZSBiZWVuIGF0IHJpc2sgd2l0aG91dCB0aGlzIGNoYW5nZS4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGZ1bmN0aW9uIOKAkyB0aGUgc3Vycm91bmRpbmcgY29kZSDigJMgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgaW1wYWN0IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MDkuOTM3NTExNTk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODI1MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX3dleHRfc2l3c2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9zY2FuLmM9MzQ5MD1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChzdHJ1Y3QgbmV0ICpuZXQsIGludCBpZmluZGV4KVxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzUwODppbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNTA5LVxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MDkuOTk2MzUyMDk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NTUyNTg5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgV2ktRmkgU2NhbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY2FuIHByb2Nlc3MgYSBsaXR0bGUgYmV0dGVyLCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaGFuZGxlZCBhdCB0aGUgZHJpdmVyIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIGBuZXQvd2lyZWxlc3Mvc2Nhbi5jYC4gTGluZSAzNTA4IGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgb2YgYSBwYXJ0aWN1bGFyIHNjYW4gZnVuY3Rpb24gb3Igc3RhdGUgdHJhbnNpdGlvbiBvY2N1cnMuIEZyb20gdGhlcmUsIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBzZXF1ZW5jZTogaW5pdGlhdGlvbiwgY2hhbm5lbCBzZWxlY3Rpb24sIGZyYW1lIGNvbnN0cnVjdGlvbiwgdHJhbnNtaXNzaW9uLCBwb3RlbnRpYWwgcmVjZXB0aW9uLCBhbmQgbWF5YmUgc29tZSBzb3J0IG9mIGRhdGEgcHJvY2Vzc2luZywgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aW1lb3V0IG1lY2hhbmlzbS4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaWYgaXQgZXhwb3NlcyBhbnkgY3JpdGljYWwgY29uZmlndXJhdGlvbnMuIEknbSBndWVzc2luZyB0aGlzIG1pZ2h0IGJlIHRoZSBwbGFjZSB3aGVyZSBkaWZmZXJlbnQgc2NhbiB0eXBlcywgc3VjaCBhcyBhY3RpdmUgdmVyc3VzIHBhc3NpdmUgc2NhbnMsIGFyZSBkaWZmZXJlbnRpYXRlZCBvciB3aGVyZSBjaGFubmVsIGhvcHBpbmcgbG9naWMgaXMgaW1wbGVtZW50ZWQuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSdyZSBiZWluZyBtYW5pcHVsYXRlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgZGV0YWlsZWQgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjEzLjA5MTg3OTg2MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MDgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTA4OlxcdGludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zNTA5OlxcdFxcdFxcdFxcdCAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG4zNTEwOlxcdFxcdFxcdFxcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpXFxuMzUxMTpcXHR7XFxuMzUxMjpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXY7XFxuMzUxMzpcXHRcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xcbjM1MTQ6XFx0XFx0c3RydWN0IGl3X3NjYW5fcmVxICp3cmVxID0gTlVMTDtcXG4zNTE1OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3RfaW50ICpjcmVxO1xcbjM1MTY6XFx0XFx0aW50IGksIGVyciwgbl9jaGFubmVscyA9IDA7XFxuMzUxNzpcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kO1xcbjM1MTg6XFx0XFxuMzUxOTpcXHRcXHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcXG4zNTIwOlxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuMzUyMTpcXHRcXG4zNTIyOlxcdFxcdGlmICh3cnF1LVxcdTAwM2VkYXRhLmxlbmd0aCA9PSBzaXplb2Yoc3RydWN0IGl3X3NjYW5fcmVxKSlcXG4zNTIzOlxcdFxcdFxcdHdyZXEgPSAoc3RydWN0IGl3X3NjYW5fcmVxICopZXh0cmE7XFxuMzUyNDpcXHRcXG4zNTI1OlxcdFxcdHJkZXYgPSBjZmc4MDIxMV9nZXRfZGV2X2Zyb21faWZpbmRleChkZXZfbmV0KGRldiksIGRldi1cXHUwMDNlaWZpbmRleCk7XFxuMzUyNjpcXHRcXG4zNTI3OlxcdFxcdGlmIChJU19FUlIocmRldikpXFxuMzUyODpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihyZGV2KTtcXG4zNTI5OlxcdFxcbjM1MzA6XFx0XFx0aWYgKHJkZXYtXFx1MDAzZXNjYW5fcmVxIHx8IHJkZXYtXFx1MDAzZXNjYW5fbXNnKVxcbjM1MzE6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4zNTMyOlxcdFxcbjM1MzM6XFx0XFx0d2lwaHkgPSBcXHUwMDI2cmRldi1cXHUwMDNld2lwaHk7XFxuMzUzNDpcXHRcXG4zNTM1OlxcdFxcdC8qIERldGVybWluZSBudW1iZXIgb2YgY2hhbm5lbHMsIG5lZWRlZCB0byBhbGxvY2F0ZSBjcmVxICovXFxuMzUzNjpcXHRcXHRpZiAod3JlcSBcXHUwMDI2XFx1MDAyNiB3cmVxLVxcdTAwM2VudW1fY2hhbm5lbHMpIHtcXG4zNTM3OlxcdFxcdFxcdC8qIFBhc3NlZCBmcm9tIHVzZXJzcGFjZSBzbyBzaG91bGQgYmUgY2hlY2tlZCAqL1xcbjM1Mzg6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHdyZXEtXFx1MDAzZW51bV9jaGFubmVscyBcXHUwMDNlIElXX01BWF9GUkVRVUVOQ0lFUykpXFxuMzUzOTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zNTQwOlxcdFxcdFxcdG5fY2hhbm5lbHMgPSB3cmVxLVxcdTAwM2VudW1fY2hhbm5lbHM7XFxuMzU0MTpcXHRcXHR9IGVsc2Uge1xcbjM1NDI6XFx0XFx0XFx0bl9jaGFubmVscyA9IGllZWU4MDIxMV9nZXRfbnVtX3N1cHBvcnRlZF9jaGFubmVscyh3aXBoeSk7XFxuMzU0MzpcXHRcXHR9XFxuMzU0NDpcXHRcXG4zNTQ1OlxcdFxcdGNyZXEgPSBremFsbG9jKHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscykgK1xcbjM1NDY6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgY2ZnODAyMTFfc3NpZCksXFxuMzU0NzpcXHRcXHRcXHQgICAgICAgR0ZQX0FUT01JQyk7XFxuMzU0ODpcXHRcXHRpZiAoIWNyZXEpXFxuMzU0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zNTUwOlxcdFxcbjM1NTE6XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLndpcGh5ID0gd2lwaHk7XFxuMzU1MjpcXHRcXHRjcmVxLVxcdTAwM2VyZXEud2RldiA9IGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cjtcXG4zNTUzOlxcdFxcdC8qIFNTSURzIGNvbWUgYWZ0ZXIgY2hhbm5lbHMgKi9cXG4zNTU0OlxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkcyA9ICh2b2lkICopY3JlcSArXFxuMzU1NTpcXHRcXHRcXHRcXHQgIHN0cnVjdF9zaXplKGNyZXEsIHJlcS5jaGFubmVscywgbl9jaGFubmVscyk7XFxuMzU1NjpcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9jaGFubmVscyA9IG5fY2hhbm5lbHM7XFxuMzU1NzpcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9zc2lkcyA9IDE7XFxuMzU1ODpcXHRcXHRjcmVxLVxcdTAwM2VyZXEuc2Nhbl9zdGFydCA9IGppZmZpZXM7XFxuMzU1OTpcXHRcXG4zNTYwOlxcdFxcdC8qIHRyYW5zbGF0ZSBcXFwiU2NhbiBvbiBmcmVxdWVuY2llc1xcXCIgcmVxdWVzdCAqL1xcbjM1NjE6XFx0XFx0aSA9IDA7XFxuMzU2MjpcXHRcXHRmb3IgKGJhbmQgPSAwOyBiYW5kIFxcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xcbjM1NjM6XFx0XFx0XFx0aW50IGo7XFxuMzU2NDpcXHRcXG4zNTY1OlxcdFxcdFxcdGlmICghd2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdKVxcbjM1NjY6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzU2NzpcXHRcXG4zNTY4OlxcdFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyB3aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0tXFx1MDAzZW5fY2hhbm5lbHM7IGorKykge1xcbjM1Njk6XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuO1xcbjM1NzA6XFx0XFxuMzU3MTpcXHRcXHRcXHRcXHQvKiBpZ25vcmUgZGlzYWJsZWQgY2hhbm5lbHMgKi9cXG4zNTcyOlxcdFxcdFxcdFxcdGNoYW4gPSBcXHUwMDI2d2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdLVxcdTAwM2VjaGFubmVsc1tqXTtcXG4zNTczOlxcdFxcdFxcdFxcdGlmIChjaGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEIHx8XFxuMzU3NDpcXHRcXHRcXHRcXHQgICAgIWNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKGNyZXEtXFx1MDAzZXJlcS53ZGV2LCBjaGFuKSlcXG4zNTc1OlxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjM1NzY6XFx0XFxuMzU3NzpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBoYXZlIGEgd2lyZWxlc3MgcmVxdWVzdCBzdHJ1Y3R1cmUgYW5kIHRoZVxcbjM1Nzg6XFx0XFx0XFx0XFx0ICogd2lyZWxlc3MgcmVxdWVzdCBzcGVjaWZpZXMgZnJlcXVlbmNpZXMsIHRoZW4gc2VhcmNoXFxuMzU3OTpcXHRcXHRcXHRcXHQgKiBmb3IgdGhlIG1hdGNoaW5nIGhhcmR3YXJlIGNoYW5uZWwuXFxuMzU4MDpcXHRcXHRcXHRcXHQgKi9cXG4zNTgxOlxcdFxcdFxcdFxcdGlmICh3cmVxIFxcdTAwMjZcXHUwMDI2IHdyZXEtXFx1MDAzZW51bV9jaGFubmVscykge1xcbjM1ODI6XFx0XFx0XFx0XFx0XFx0aW50IGs7XFxuMzU4MzpcXHRcXHRcXHRcXHRcXHRpbnQgd2lwaHlfZnJlcSA9IHdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXS1cXHUwMDNlY2hhbm5lbHNbal0uY2VudGVyX2ZyZXE7XFxuMzU4NDpcXHRcXHRcXHRcXHRcXHRmb3IgKGsgPSAwOyBrIFxcdTAwM2Mgd3JlcS1cXHUwMDNlbnVtX2NoYW5uZWxzOyBrKyspIHtcXG4zNTg1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpd19mcmVxICpmcmVxID1cXG4zNTg2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ3cmVxLVxcdTAwM2VjaGFubmVsX2xpc3Rba107XFxuMzU4NzpcXHRcXHRcXHRcXHRcXHRcXHRpbnQgd2V4dF9mcmVxID1cXG4zNTg4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNmZzgwMjExX3dleHRfZnJlcShmcmVxKTtcXG4zNTg5OlxcdFxcbjM1OTA6XFx0XFx0XFx0XFx0XFx0XFx0aWYgKHdleHRfZnJlcSA9PSB3aXBoeV9mcmVxKVxcbjM1OTE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z290byB3ZXh0X2ZyZXFfZm91bmQ7XFxuMzU5MjpcXHRcXHRcXHRcXHRcXHR9XFxuMzU5MzpcXHRcXHRcXHRcXHRcXHRnb3RvIHdleHRfZnJlcV9ub3RfZm91bmQ7XFxuMzU5NDpcXHRcXHRcXHRcXHR9XFxuMzU5NTpcXHRcXG4zNTk2OlxcdFxcdFxcdHdleHRfZnJlcV9mb3VuZDpcXG4zNTk3OlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5jaGFubmVsc1tpXSA9XFxuMzU5ODpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2d2lwaHktXFx1MDAzZWJhbmRzW2JhbmRdLVxcdTAwM2VjaGFubmVsc1tqXTtcXG4zNTk5OlxcdFxcdFxcdFxcdGkrKztcXG4zNjAwOlxcdFxcdFxcdHdleHRfZnJlcV9ub3RfZm91bmQ6IDtcXG4zNjAxOlxcdFxcdFxcdH1cXG4zNjAyOlxcdFxcdH1cXG4zNjAzOlxcdFxcdC8qIE5vIGNoYW5uZWxzIGZvdW5kPyAqL1xcbjM2MDQ6XFx0XFx0aWYgKCFpKSB7XFxuMzYwNTpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjM2MDY6XFx0XFx0XFx0Z290byBvdXQ7XFxuMzYwNzpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjEzLjA5MjA2ODUyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTgzMTI3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFkb3B0aW5nIHRoZSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqQW5hbHl6aW5nIEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhlIGdlbmVyYWwgY29udGV4dCBsb2NrZWQgaW4uIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIGluIGRldGFpbC4gSXQncyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29yZSBsb2dpYyBhbmQgZ3Jhc3AgaG93IHRoaXMgZnVuY3Rpb24gYWNoaWV2ZXMgaXRzIHB1cnBvc2UuIFRoZSBiaWcgcGljdHVyZSBpcyBzZXQsIHNvIGxldCdzIHBhcnNlIHRocm91Z2ggdGhlIGxpbmVzIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIExldCdzIHNlZSBob3cgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBmaXQgdG9nZXRoZXIgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBvdXRwdXQsIG9yIGluIHRoaXMgY2FzZSwgY29udGludWUgb3VyIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjE1LjQ1MDM4MzE5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MDgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNjA4OlxcdFxcbjM2MDk6XFx0XFx0LyogU2V0IHJlYWwgbnVtYmVyIG9mIGNoYW5uZWxzIHNwZWNpZmllZCBpbiBjcmVxLVxcdTAwM2VyZXEuY2hhbm5lbHNbXSAqL1xcbjM2MTA6XFx0XFx0Y3JlcS1cXHUwMDNlcmVxLm5fY2hhbm5lbHMgPSBpO1xcbjM2MTE6XFx0XFxuMzYxMjpcXHRcXHQvKiB0cmFuc2xhdGUgXFxcIlNjYW4gZm9yIFNTSURcXFwiIHJlcXVlc3QgKi9cXG4zNjEzOlxcdFxcdGlmICh3cmVxKSB7XFxuMzYxNDpcXHRcXHRcXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5mbGFncyBcXHUwMDI2IElXX1NDQU5fVEhJU19FU1NJRCkge1xcbjM2MTU6XFx0XFx0XFx0XFx0aWYgKHdyZXEtXFx1MDAzZWVzc2lkX2xlbiBcXHUwMDNlIElFRUU4MDIxMV9NQVhfU1NJRF9MRU4pIHtcXG4zNjE2OlxcdFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMzYxNzpcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4zNjE4OlxcdFxcdFxcdFxcdH1cXG4zNjE5OlxcdFxcdFxcdFxcdG1lbWNweShjcmVxLVxcdTAwM2VyZXEuc3NpZHNbMF0uc3NpZCwgd3JlcS1cXHUwMDNlZXNzaWQsXFxuMzYyMDpcXHRcXHRcXHRcXHQgICAgICAgd3JlcS1cXHUwMDNlZXNzaWRfbGVuKTtcXG4zNjIxOlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkc1swXS5zc2lkX2xlbiA9IHdyZXEtXFx1MDAzZWVzc2lkX2xlbjtcXG4zNjIyOlxcdFxcdFxcdH1cXG4zNjIzOlxcdFxcdFxcdGlmICh3cmVxLVxcdTAwM2VzY2FuX3R5cGUgPT0gSVdfU0NBTl9UWVBFX1BBU1NJVkUpIHtcXG4zNjI0OlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5zc2lkcyA9IE5VTEw7XFxuMzYyNTpcXHRcXHRcXHRcXHRjcmVxLVxcdTAwM2VyZXEubl9zc2lkcyA9IDA7XFxuMzYyNjpcXHRcXHRcXHR9XFxuMzYyNzpcXHRcXHR9XFxuMzYyODpcXHRcXG4zNjI5OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgaSsrKVxcbjM2MzA6XFx0XFx0XFx0aWYgKHdpcGh5LVxcdTAwM2ViYW5kc1tpXSlcXG4zNjMxOlxcdFxcdFxcdFxcdGNyZXEtXFx1MDAzZXJlcS5yYXRlc1tpXSA9XFxuMzYzMjpcXHRcXHRcXHRcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyB3aXBoeS1cXHUwMDNlYmFuZHNbaV0tXFx1MDAzZW5fYml0cmF0ZXMpIC0gMTtcXG4zNjMzOlxcdFxcbjM2MzQ6XFx0XFx0ZXRoX2Jyb2FkY2FzdF9hZGRyKGNyZXEtXFx1MDAzZXJlcS5ic3NpZCk7XFxuMzYzNTpcXHRcXG4zNjM2OlxcdFxcdHNjb3BlZF9ndWFyZCh3aXBoeSwgXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5KSB7XFxuMzYzNzpcXHRcXHRcXHRyZGV2LVxcdTAwM2VzY2FuX3JlcSA9IGNyZXE7XFxuMzYzODpcXHRcXHRcXHRlcnIgPSByZGV2X3NjYW4ocmRldiwgY3JlcSk7XFxuMzYzOTpcXHRcXHRcXHRpZiAoZXJyKSB7XFxuMzY0MDpcXHRcXHRcXHRcXHRyZGV2LVxcdTAwM2VzY2FuX3JlcSA9IE5VTEw7XFxuMzY0MTpcXHRcXHRcXHRcXHQvKiBjcmVxIHdpbGwgYmUgZnJlZWQgYmVsb3cgKi9cXG4zNjQyOlxcdFxcdFxcdH0gZWxzZSB7XFxuMzY0MzpcXHRcXHRcXHRcXHRubDgwMjExX3NlbmRfc2Nhbl9zdGFydChyZGV2LCBkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpO1xcbjM2NDQ6XFx0XFx0XFx0XFx0LyogY3JlcSBub3cgb3duZWQgYnkgZHJpdmVyICovXFxuMzY0NTpcXHRcXHRcXHRcXHRjcmVxID0gTlVMTDtcXG4zNjQ2OlxcdFxcdFxcdFxcdGRldl9ob2xkKGRldik7XFxuMzY0NzpcXHRcXHRcXHR9XFxuMzY0ODpcXHRcXHR9XFxuMzY0OTpcXHRcXG4zNjUwOlxcdCBvdXQ6XFxuMzY1MTpcXHRcXHRrZnJlZShjcmVxKTtcXG4zNjUyOlxcdFxcdHJldHVybiBlcnI7XFxuMzY1MzpcXHR9XFxuMzY1NDpcXHRcXG4zNjU1OlxcdHN0YXRpYyBjaGFyICppZWVlODAyMTFfc2Nhbl9hZGRfaWVzKHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzY1NjpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcyxcXG4zNjU3OlxcdFxcdFxcdFxcdFxcdCAgICBjaGFyICpjdXJyZW50X2V2LCBjaGFyICplbmRfYnVmKVxcbjM2NTg6XFx0e1xcbjM2NTk6XFx0XFx0Y29uc3QgdTggKnBvcywgKmVuZCwgKm5leHQ7XFxuMzY2MDpcXHRcXHRzdHJ1Y3QgaXdfZXZlbnQgaXdlO1xcbjM2NjE6XFx0XFxuMzY2MjpcXHRcXHRpZiAoIWllcylcXG4zNjYzOlxcdFxcdFxcdHJldHVybiBjdXJyZW50X2V2O1xcbjM2NjQ6XFx0XFxuMzY2NTpcXHRcXHQvKlxcbjM2NjY6XFx0XFx0ICogSWYgbmVlZGVkLCBmcmFnbWVudCB0aGUgSUVzIGJ1ZmZlciAoYXQgSUUgYm91bmRhcmllcykgaW50byBzaG9ydFxcbjM2Njc6XFx0XFx0ICogZW5vdWdoIGZyYWdtZW50cyB0byBmaXQgaW50byBJV19HRU5FUklDX0lFX01BWCBvY3RldCBtZXNzYWdlcy5cXG4zNjY4OlxcdFxcdCAqL1xcbjM2Njk6XFx0XFx0cG9zID0gaWVzLVxcdTAwM2VkYXRhO1xcbjM2NzA6XFx0XFx0ZW5kID0gcG9zICsgaWVzLVxcdTAwM2VsZW47XFxuMzY3MTpcXHRcXG4zNjcyOlxcdFxcdHdoaWxlIChlbmQgLSBwb3MgXFx1MDAzZSBJV19HRU5FUklDX0lFX01BWCkge1xcbjM2NzM6XFx0XFx0XFx0bmV4dCA9IHBvcyArIDIgKyBwb3NbMV07XFxuMzY3NDpcXHRcXHRcXHR3aGlsZSAobmV4dCArIDIgKyBuZXh0WzFdIC0gcG9zIFxcdTAwM2MgSVdfR0VORVJJQ19JRV9NQVgpXFxuMzY3NTpcXHRcXHRcXHRcXHRuZXh0ID0gbmV4dCArIDIgKyBuZXh0WzFdO1xcbjM2NzY6XFx0XFxuMzY3NzpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNml3ZSwgMCwgc2l6ZW9mKGl3ZSkpO1xcbjM2Nzg6XFx0XFx0XFx0aXdlLmNtZCA9IElXRVZHRU5JRTtcXG4zNjc5OlxcdFxcdFxcdGl3ZS51LmRhdGEubGVuZ3RoID0gbmV4dCAtIHBvcztcXG4zNjgwOlxcdFxcdFxcdGN1cnJlbnRfZXYgPSBpd2Vfc3RyZWFtX2FkZF9wb2ludF9jaGVjayhpbmZvLCBjdXJyZW50X2V2LFxcbjM2ODE6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZW5kX2J1ZiwgXFx1MDAyNml3ZSxcXG4zNjgyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2b2lkICopcG9zKTtcXG4zNjgzOlxcdFxcdFxcdGlmIChJU19FUlIoY3VycmVudF9ldikpXFxuMzY4NDpcXHRcXHRcXHRcXHRyZXR1cm4gY3VycmVudF9ldjtcXG4zNjg1OlxcdFxcdFxcdHBvcyA9IG5leHQ7XFxuMzY4NjpcXHRcXHR9XFxuMzY4NzpcXHRcXG4zNjg4OlxcdFxcdGlmIChlbmQgXFx1MDAzZSBwb3MpIHtcXG4zNjg5OlxcdFxcdFxcdG1lbXNldChcXHUwMDI2aXdlLCAwLCBzaXplb2YoaXdlKSk7XFxuMzY5MDpcXHRcXHRcXHRpd2UuY21kID0gSVdFVkdFTklFO1xcbjM2OTE6XFx0XFx0XFx0aXdlLnUuZGF0YS5sZW5ndGggPSBlbmQgLSBwb3M7XFxuMzY5MjpcXHRcXHRcXHRjdXJyZW50X2V2ID0gaXdlX3N0cmVhbV9hZGRfcG9pbnRfY2hlY2soaW5mbywgY3VycmVudF9ldixcXG4zNjkzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGVuZF9idWYsIFxcdTAwMjZpd2UsXFxuMzY5NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQodm9pZCAqKXBvcyk7XFxuMzY5NTpcXHRcXHRcXHRpZiAoSVNfRVJSKGN1cnJlbnRfZXYpKVxcbjM2OTY6XFx0XFx0XFx0XFx0cmV0dXJuIGN1cnJlbnRfZXY7XFxuMzY5NzpcXHRcXHR9XFxuMzY5ODpcXHRcXG4zNjk5OlxcdFxcdHJldHVybiBjdXJyZW50X2V2O1xcbjM3MDA6XFx0fVxcbjM3MDE6XFx0XFxuMzcwMjpcXHRzdGF0aWMgY2hhciAqXFxuMzcwMzpcXHRpZWVlODAyMTFfYnNzKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzcwNDpcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfaW50ZXJuYWxfYnNzICpic3MsIGNoYXIgKmN1cnJlbnRfZXYsXFxuMzcwNTpcXHRcXHQgICAgICBjaGFyICplbmRfYnVmKVxcbjM3MDY6XFx0e1xcbjM3MDc6XFx0XFx0Y29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmllcztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MTUuNDUwNTcxOTM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ1NzY2MDk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBGaXggaW4gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGNvcmUgaXNzdWUgaXMgdGhlIGZpeCBmb3IgYSBtZW1vcnkgbGVhayB3aXRoaW4gYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoaXMgZnVuY3Rpb24sIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgU0lPQ1NJV1NDQU4gV2lyZWxlc3MgRXh0ZW5zaW9ucyBpb2N0bCwgaXMgdGhlIGVudHJ5IHBvaW50LiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBpdCBhbGxvY2F0ZXMgYGNyZXFgIHVzaW5nIGBremFsbG9jYCBhdCBsaW5lIDM1NDUuIFRoZSB2dWxuZXJhYmlsaXR5IGFyaXNlcyB3aGVuIGB3cmVxLVx1MDAzZWVzc2lkX2xlbmAgZXhjZWVkcyBgSUVFRTgwMjExX01BWF9TU0lEX0xFTmAuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIHNpbXBseSByZXR1cm4gYC1FSU5WQUxgIGRpcmVjdGx5LCBsZWF2aW5nIGBjcmVxYCBsZWFrZWQuIFRoZSBmaXggaW50cm9kdWNlcyBgZXJyID0gLUVJTlZBTDsgZ290byBvdXQ7YCwgZW5zdXJpbmcgYGNyZXFgIGlzIGZyZWVkIGF0IHRoZSBgb3V0YCBsYWJlbCwgc3BlY2lmaWNhbGx5IGxpbmUgMzY1MS5cblxuRnJvbSBhIGZ1bmN0aW9uYWwgc3RhbmRwb2ludCwgdGhpcyBpcyBhIGRlZmluaXRlIGltcHJvdmVtZW50IOKAkyBhIGNydWNpYWwgbWVtb3J5IGxlYWsgYmVpbmcgcGx1Z2dlZC4gSW1wb3J0YW50bHksIHRoaXMgbG9naWMgaXMgY29yZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IFdpcmVsZXNzIEV4dGVuc2lvbnMsIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggaW9jdGwgb24gd2lyZWxlc3MgaW50ZXJmYWNlcy4gVGhlIGdvb2QgbmV3cyAob3IgYmFkLCBkZXBlbmRpbmcgb24geW91ciBwZXJzcGVjdGl2ZSkgaXMgdGhhdCB3ZSBjYW4gcmVhY2ggdGhpcyBldmVuIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLlxuXG5UaGlzIHNjcmVhbXMgZnV6emluZyBvcHBvcnR1bml0eS4gV2UgaGF2ZSBhIGNsZWFuLCByZWFjaGFibGUgcGF0aCB0aGF0IHdhcyBsZWFreSwgYW5kIG5vdyBpcyBmaXhlZC4gR2l2ZW4gb3VyIGV4cGVydGlzZSwgZnV6emluZyB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCBwbGFuLiBTcGVjaWZpY2FsbHksIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGlzIHRoZSB0YXJnZXQsIGFuZCB3ZSdsbCB3YW50IHRvIGVuYWJsZSB0aGUgY29uZmlncyBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGFuZCBgTUFDODAyMTFfSFdTSU1gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhcmUgYWN0aXZlLiBCZWZvcmUgcnVubmluZyB0aGUgZnV6emVyLCBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAgdG8gZW5zdXJlIHdlIGhhdmUgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcy4gTGV0J3MgZ2V0IHRvIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjExLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjAuOTA4MjM1NTc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA1NDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDRkc4MDIxMV9XRVhUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE3Nz1jb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZT0xMz1jZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTQ6Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfV0VYVCkgKz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE1LVxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYz01NDY9c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTYzMy1cXHRcXHRcXHQgIGNmZzgwMjExX2Rmc19jaGFubmVsc191cGRhdGVfd29yayk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYzo2MzQ6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy02MzUtXFx0cmRldi1cXHUwMDNld2lwaHkud2V4dCA9IFxcdTAwMjZjZmc4MDIxMV93ZXh0X2hhbmRsZXI7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0MDQ9c3RhdGljIHZvaWQgX2NmZzgwMjExX3VucmVnaXN0ZXJfd2RldihzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNDQzLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTQ0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE0NDUtXFx0a2ZyZWVfc2Vuc2l0aXZlKHdkZXYtXFx1MDAzZXdleHQua2V5cyk7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE0OTg9dm9pZCBjZmc4MDIxMV9sZWF2ZV9sb2NrZWQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNTIyLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM6MTUyMzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE1MjQtXFx0XFx0a2ZyZWUod2Rldi1cXHUwMDNld2V4dC5pZSk7XFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTE2MDk9dm9pZCBjZmc4MDIxMV9pbml0X3dkZXYoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldilcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtMTYxNy1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE2MTg6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNjE5LVxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSAtMTtcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmM9MTcwMj1zdGF0aWMgaW50IGNmZzgwMjExX25ldGRldl9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTE3NzYtXFx0XFx0c3dpdGNoICh3ZGV2LVxcdTAwM2VpZnR5cGUpIHtcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjE3Nzc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2NvcmUuYy0xNzc4LVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQURIT0M6XFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE5PXZvaWQgX19jZmc4MDIxMV9pYnNzX2pvaW5lZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYnNzaWQsXFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTIzLVxcdHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcztcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjI0OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjUtXFx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYy01MS1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjUyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtNTMtXFx0bWVtc2V0KFxcdTAwMjZ3cnF1LCAwLCBzaXplb2Yod3JxdSkpO1xcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYz04Nz1pbnQgX19jZmc4MDIxMV9qb2luX2lic3Moc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL2lic3MuYy0xNDAtXFxubmV0L3dpcmVsZXNzL2lic3MuYzoxNDE6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL2lic3MuYy0xNDItXFx0d2Rldi1cXHUwMDNld2V4dC5pYnNzLmNoYW5kZWYgPSBwYXJhbXMtXFx1MDAzZWNoYW5kZWY7XFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jPTE1Nj12b2lkIGNmZzgwMjExX2NsZWFyX2lic3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBub3dleHQpXFxuLS1cXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE4NC1cXHRtZW1zZXQoXFx1MDAyNndkZXYtXFx1MDAzZXUuaWJzcy5jaGFuZGVmLCAwLCBzaXplb2Yod2Rldi1cXHUwMDNldS5pYnNzLmNoYW5kZWYpKTtcXG5uZXQvd2lyZWxlc3MvaWJzcy5jOjE4NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvaWJzcy5jLTE4Ni1cXHRpZiAoIW5vd2V4dClcXG4tLVxcbm5ldC93aXJlbGVzcy9pYnNzLmM9MTkyPWludCBjZmc4MDIxMV9sZWF2ZV9pYnNzKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjEzLVxcbm5ldC93aXJlbGVzcy9pYnNzLmM6MjE0OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9pYnNzLmMtMjE1LWludCBjZmc4MDIxMV9pYnNzX3dleHRfam9pbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jPTIzND12b2lkIGNmZzgwMjExX21pY2hhZWxfbWljX2ZhaWx1cmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTIzOS1cXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSB3aXBoeV90b19yZGV2KHdpcGh5KTtcXG5uZXQvd2lyZWxlc3MvbWxtZS5jOjI0MDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTI0MS1cXHR1bmlvbiBpd3JlcV9kYXRhIHdycXU7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTU0NTk9c3RhdGljIGludCBubDgwMjExX3NldF9rZXkoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNTUwMS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjU1MDI6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTAzLVxcdFxcdHdkZXYtXFx1MDAzZXdleHQuZGVmYXVsdF9rZXkgPSBrZXkuaWR4O1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01NTI0LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTUyNTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU1MjYtXFx0XFx0d2Rldi1cXHUwMDNld2V4dC5kZWZhdWx0X21nbXRfa2V5ID0ga2V5LmlkeDtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NTYzNz1zdGF0aWMgaW50IG5sODAyMTFfZGVsX2tleShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy01Njg2LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NTY4NzojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTU2ODgtXFx0aWYgKCFlcnIpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmM9MTExND12b2lkIF9fX2NmZzgwMjExX3NjYW5fZG9uZShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTExMTktXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExMjA6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTIxLVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zY2FuLmMtMTE2Mi1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jOjExNjM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0xMTY0LVxcdGlmICh3ZGV2LVxcdTAwM2VuZXRkZXYgXFx1MDAyNlxcdTAwMjYgIXJlcXVlc3QtXFx1MDAzZWluZm8uYWJvcnRlZCkge1xcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYz0zNDE0PXZvaWQgY2ZnODAyMTFfdXBkYXRlX2Fzc29jX2Jzc19lbnRyeShzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NjYW4uYy0zNDg3LVxcbm5ldC93aXJlbGVzcy9zY2FuLmM6MzQ4ODojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM0ODktc3RhdGljIHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc21lLmM9NzM1PXZvaWQgX19jZmc4MDIxMV9jb25uZWN0X3Jlc3VsdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTc0My1cXHR1OCBjb3VudHJ5X2RhdGFsZW47XFxubmV0L3dpcmVsZXNzL3NtZS5jOjc0NDojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzQ1LVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYy03NzQtXFxubmV0L3dpcmVsZXNzL3NtZS5jOjc3NTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvc21lLmMtNzc2LVxcdGlmICh3ZXh0ZXYgXFx1MDAyNlxcdTAwMjYgIWNyLVxcdTAwM2V2YWxpZF9saW5rcykge1xcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jPTEwNzk9dm9pZCBfX2NmZzgwMjExX3JvYW1lZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEwODEte1xcbm5ldC93aXJlbGVzcy9zbWUuYzoxMDgyOiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMDgzLVxcdHVuaW9uIGl3cmVxX2RhdGEgd3JxdTtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM0LVxcbm5ldC93aXJlbGVzcy9zbWUuYzoxMTM1OiNpZmRlZiBDT05GSUdfQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9zbWUuYy0xMTM2LVxcdGlmICghaW5mby1cXHUwMDNldmFsaWRfbGlua3MpIHtcXG4tLVxcbm5ldC93aXJlbGVzcy9zbWUuYz0xMzQzPXZvaWQgX19jZmc4MDIxMV9kaXNjb25uZWN0ZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmllLFxcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNDgtXFx0aW50IGk7XFxubmV0L3dpcmVsZXNzL3NtZS5jOjEzNDk6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzNTAtXFx0dW5pb24gaXdyZXFfZGF0YSB3cnF1O1xcbi0tXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTQtXFxubmV0L3dpcmVsZXNzL3NtZS5jOjEzOTU6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3NtZS5jLTEzOTYtXFx0bWVtc2V0KFxcdTAwMjZ3cnF1LCAwLCBzaXplb2Yod3JxdSkpO1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTYzNz1FWFBPUlRfU1lNQk9MKHdpcmVsZXNzX3NlbmRfZXZlbnQpO1xcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYy02MzgtXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jOjYzOTojaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjQwLXN0YXRpYyB2b2lkIHdpcmVsZXNzX3dhcm5fY2ZnODAyMTFfd2V4dCh2b2lkKVxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jPTY0OT1zdHJ1Y3QgaXdfc3RhdGlzdGljcyAqZ2V0X3dpcmVsZXNzX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNjU2LVxcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo2NTc6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTY1OC1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmM9Njk3PXN0YXRpYyBpd19oYW5kbGVyIGdldF9oYW5kbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjbWQpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb3JlLmMtNzAyLVxcbm5ldC93aXJlbGVzcy93ZXh0LWNvcmUuYzo3MDM6I2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL3dleHQtY29yZS5jLTcwNC1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ci1cXHUwMDNld2lwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjAuOTY5Mjk1MzQ1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDU5NzIwNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBjZmc4MDIxMV93ZXh0X3Npd3NjYW4gRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGNmZzgwMjExYCBzdHVmZiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGV4dGVuc2lvbnMgaW50ZXJmYWNlIChgV0VYVGApLiBUaGUgY29yZSBvZiBteSBpbnRlcmVzdCBpcyB0aGlzIGBjZmc4MDIxMV93ZXh0X3Npd3NjYW5gIGZ1bmN0aW9uLiAgSSByZW1lbWJlciBzZWVpbmcgdGhhdCBpdCdzIGNvbmRpdGlvbmFsLCB0aGF0IGl0IGxpdmVzIHdpdGhpbiBhbiBgI2lmZGVmIENPTkZJR19DRkc4MDIxMV9XRVhUYCBibG9jay4gTWFrZXMgc2Vuc2UsIHJpZ2h0PyBJdCdzIG9ubHkgY29tcGlsZWQgaW4gaWYgdGhlIGBDRkc4MDIxMV9XRVhUYCBjb25maWcgb3B0aW9uIGlzIGVuYWJsZWQuIFRoYXQgaGVscHMga2VlcCB0aGUga2VybmVsIHNsaW0uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBsaW5lIG51bWJlciBpbiBgbmV0L3dpcmVsZXNzL3NjYW4uY2AuIEl0J3MgbGluZSAzNDg4LiBPa2F5LCBnb29kLiBUaGF0IGNvbmZpcm1zIHRoZSBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlZ3JhdGlvbiB3aXRoIFdFWFQgaXMgaGFuZGxlZCBmb3Igc2NhbnMgd2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQuIExldCdzIGRlbHZlIGRlZXBlciBpbnRvIHRoYXQgYmxvY2sncyBjb2RlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjQuNDE1MjY5OTAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3Mvc2Nhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM0ODA6XFx0XFx0XFx0YnNzLVxcdTAwM2VwdWIuY2hhbm5lbCA9IGNoYW47XFxuMzQ4MTpcXHRcXHRcXHRjZmc4MDIxMV9yZWhhc2hfYnNzKHJkZXYsIGJzcyk7XFxuMzQ4MjpcXHRcXHR9XFxuMzQ4MzpcXHRcXG4zNDg0OlxcdGRvbmU6XFxuMzQ4NTpcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cmRldi1cXHUwMDNlYnNzX2xvY2spO1xcbjM0ODY6XFx0fVxcbjM0ODc6XFx0XFxuMzQ4ODpcXHQjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRcXG4zNDg5OlxcdHN0YXRpYyBzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKlxcbjM0OTA6XFx0Y2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoc3RydWN0IG5ldCAqbmV0LCBpbnQgaWZpbmRleClcXG4zNDkxOlxcdHtcXG4zNDkyOlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcXG4zNDkzOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuMzQ5NDpcXHRcXG4zNDk1OlxcdFxcdEFTU0VSVF9SVE5MKCk7XFxuMzQ5NjpcXHRcXG4zNDk3OlxcdFxcdGRldiA9IGRldl9nZXRfYnlfaW5kZXgobmV0LCBpZmluZGV4KTtcXG4zNDk4OlxcdFxcdGlmICghZGV2KVxcbjM0OTk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7XFxuMzUwMDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyKVxcbjM1MDE6XFx0XFx0XFx0cmRldiA9IHdpcGh5X3RvX3JkZXYoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2V3aXBoeSk7XFxuMzUwMjpcXHRcXHRlbHNlXFxuMzUwMzpcXHRcXHRcXHRyZGV2ID0gRVJSX1BUUigtRU5PREVWKTtcXG4zNTA0OlxcdFxcdGRldl9wdXQoZGV2KTtcXG4zNTA1OlxcdFxcdHJldHVybiByZGV2O1xcbjM1MDY6XFx0fVxcbjM1MDc6XFx0XFxuMzUwODpcXHRpbnQgY2ZnODAyMTFfd2V4dF9zaXdzY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuMzUwOTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuMzUxMDpcXHRcXHRcXHRcXHQgIHVuaW9uIGl3cmVxX2RhdGEgKndycXUsIGNoYXIgKmV4dHJhKVxcbjM1MTE6XFx0e1xcbjM1MTI6XFx0XFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xcbjM1MTM6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcXG4zNTE0OlxcdFxcdHN0cnVjdCBpd19zY2FuX3JlcSAqd3JlcSA9IE5VTEw7XFxuMzUxNTpcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0X2ludCAqY3JlcTtcXG4zNTE2OlxcdFxcdGludCBpLCBlcnIsIG5fY2hhbm5lbHMgPSAwO1xcbjM1MTc6XFx0XFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcXG4zNTE4OlxcdFxcbjM1MTk6XFx0XFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuMzUyMDpcXHRcXHRcXHRyZXR1cm4gLUVORVRET1dOO1xcbjM1MjE6XFx0XFxuMzUyMjpcXHRcXHRpZiAod3JxdS1cXHUwMDNlZGF0YS5sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBpd19zY2FuX3JlcSkpXFxuMzUyMzpcXHRcXHRcXHR3cmVxID0gKHN0cnVjdCBpd19zY2FuX3JlcSAqKWV4dHJhO1xcbjM1MjQ6XFx0XFxuMzUyNTpcXHRcXHRyZGV2ID0gY2ZnODAyMTFfZ2V0X2Rldl9mcm9tX2lmaW5kZXgoZGV2X25ldChkZXYpLCBkZXYtXFx1MDAzZWlmaW5kZXgpO1xcbjM1MjY6XFx0XFxuMzUyNzpcXHRcXHRpZiAoSVNfRVJSKHJkZXYpKVxcbjM1Mjg6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmRldik7XFxuMzUyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMjA6MTA6MjQuNDE1NDQ0NTAxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTYzNjI1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBNdXNpbmdzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBmdW5jdGlvbiwgYW5kIGl0J3MgY2xlYXJseSB3cmFwcGVkIGluIGFuIGAjaWZkZWYgQ09ORklHX0NGRzgwMjExX1dFWFRgIGJsb2NrLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCB0aGlzIHdvcmtpbmcsIEknbSBnb2luZyB0byBuZWVkIGBDRkc4MDIxMV9XRVhUYCBlbmFibGVkLCBvYnZpb3VzbHkuIEFuZCwgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZSwgY2FuJ3QgZm9yZ2V0IHRoYXQuIEkgdGhpbmsgYE1BQzgwMjExX0hXU0lNYCB3b3VsZCBiZSBoZWxwZnVsIHRvbywgZXNwZWNpYWxseSBmb3IgcXVpY2tseSBjcmVhdGluZyB0aG9zZSB2aXJ0dWFsIFdpLUZpIGRldmljZXMgZm9yIHRlc3RpbmcuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFfV0VYVGAuIFF1aWNrIHRyaXAgdG8gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gQWgsIGp1c3QgYSBzaW1wbGUgYm9vbGVhbi4gTm8gb3RoZXIgZXhwbGljaXQgZGVwZW5kZW5jaWVzLiBHb29kIHRvIGtub3cuXG5cbkFscmlnaHQsIG5vdyBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYE1BQzgwMjExX0hXU0lNYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0J3Mgc2V0IHVwIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDoyOC44NzE4MTAwMTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NzE2MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NjgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTcxOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3Mi1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc0LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Nzc6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4MC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg1OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODYtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4Ny1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ4ODpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDg5LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ5Mj1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDg6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTYxMj1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjIxOiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MzQtXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwODQ6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODUtXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQwMj1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDExOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0MTM6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDoyOC45NTg1MzE4NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2NDM5OTYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maWd1cmluZyB0aGUgV2lyZWxlc3MgU3RhY2sqKlxuXG5BbHJpZ2h0LCBJJ20gcHJldHR5IHN1cmUgYE1BQzgwMjExX0hXU0lNYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24gaGVyZS4gQnV0LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIsIGxldCdzIGxpc3QgdGhlbSBhbGwuIFNvLCB3ZSdyZSB0YWxraW5nIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYW5kIG9mIGNvdXJzZSBgTUFDODAyMTFfSFdTSU1gLiBBaCwgcmlnaHQsIGBDRkc4MDIxMWAgaXMgYWxyZWFkeSBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGNvcmUsIHNvIGl0J3MgcHJvYmFibHkgcmVkdW5kYW50IHRvIGluY2x1ZGUsIGJ1dCBJJ2xsIGxlYXZlIGl0IGluIHRoZSBsaXN0IGZvciBub3csIHRvIGVuc3VyZSBJJ3ZlIGNvdmVyZWQgZXZlcnl0aGluZy4gVWx0aW1hdGVseSwgSSdsbCBuZWVkIGBDRkc4MDIxMV9XRVhUYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJlZC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gdGhpcywgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgbHVya2luZyB0aGF0IEknbSBtaXNzaW5nLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCwgZm9yIGluc3RhbmNlLCBpc24ndCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgbGlrZSBgd2V4dC1jb21wYXQuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGF0IGl0IGlzbid0IGEgcmVxdWlyZWQgZmxhZy4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjE0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjM0LjMyMjkzNDMyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMTkxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3NjYW4uYz0zNDkwPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pZmluZGV4KHN0cnVjdCBuZXQgKm5ldCwgaW50IGlmaW5kZXgpXFxuLS1cXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDctXFxubmV0L3dpcmVsZXNzL3NjYW4uYzozNTA4OmludCBjZmc4MDIxMV93ZXh0X3Npd3NjYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvc2Nhbi5jLTM1MDktXFx0XFx0XFx0ICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM9MTQ4ND1zdGF0aWMgY29uc3QgaXdfaGFuZGxlciBjZmc4MDIxMV9oYW5kbGVyc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5My1cXHRJV19IQU5ETEVSKFNJT0NTSVdNTE1FLFxcdFxcdGNmZzgwMjExX3dleHRfc2l3bWxtZSksXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM6MTQ5NDpcXHRJV19IQU5ETEVSKFNJT0NTSVdTQ0FOLFxcdFxcdGNmZzgwMjExX3dleHRfc2l3c2NhbiksXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTQ5NS1cXHRJV19IQU5ETEVSKFNJT0NHSVdTQ0FOLFxcdFxcdGNmZzgwMjExX3dleHRfZ2l3c2NhbiksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDIwOjEwOjM0LjM3Nzk1OTQ3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzQwNTc1NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0lPQ1NJV1NDQU4gSGFuZGxlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgaXMgdGhlIGhhbmRsZXIgZm9yIGBTSU9DU0lXU0NBTmAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgd2lyZWxlc3MgZXh0ZW5zaW9uIGlvY3RsLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBwYXRjaC5cblxuUmlnaHQsIHRoZSBjb2RlIHNuaXBwZXQgY2xlYXJseSBzaG93cyBhIGJ1ZyBmaXggdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGRpZG4ndCBoYW5kbGUgdGhlIGVycm9yIGNhc2UgcHJvcGVybHkgd2hlbiB0aGUgRVNTSUQgbGVuZ3RoIHdhcyBpbnZhbGlkLiBUaGlzIG1lYW5zIHRoZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIGFuIGBpb2N0bGAgY2FsbCB3aXRoIGBTSU9DU0lXU0NBTmAuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSByZWFsIGltcHJvdmVtZW50IHRvIHRoZSBkcml2ZXIuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIHRoaXMgaXMgKip3b3J0aCBmdXp6aW5nKiouIEknbGwgbm90ZSBgY2ZnODAyMTFfd2V4dF9zaXdzY2FuYCBhcyBhIGZvY3VzIHN5bWJvbCBmb3IgdGVzdGluZy4gVGhlIGBDRkc4MDIxMV9XRVhUYCBhbmQgYE1BQzgwMjExX0hXU0lNYCBjb25maWd1cmF0aW9ucyBzZWVtIHJlbGV2YW50IGhlcmUgZm9yIGVuYWJsaW5nIGFuZCB0ZXN0aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYFdJUkVMRVNTX0VYVGAgaXNuJ3QgYSBoYXJkIHJlcXVpcmVtZW50LiBDaGVja2luZyBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGNvbmZpcm1zIGBDRkc4MDIxMV9XRVhUYCBpcyBzdWZmaWNpZW50LiBHb29kLlxuXG5JJ3ZlIHJldmlld2VkIHRoZSBwYXRjaDsgdGhlcmUgYXJlIG5vIG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZCBiZXlvbmQgYGNmZzgwMjExX3dleHRfc2l3c2NhbmAuIFRoZSBjb3JlIG9mIGl0IGFsbCBpczogdGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgd2l0aGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyLCB3aGljaCBpcyB3aXRoaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSwgYnkgbWFraW5nIHN1cmUgdGhlIGFsbG9jYXRlZCBzY2FuIHJlcXVlc3Qgc3RydWN0dXJlIGlzIHByb3Blcmx5IGZyZWVkIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IuIFRoYXQncyBhIGdvb2QgZml4LiBMZXQncyBjYWxsIHRoaXMgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzc3LCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQyMDoxMDo0MS4xMTg1Mzc3NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTIxMjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjZmc4MDIxMV93ZXh0X3Npd3NjYW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBTSU9DU0lXU0NBTiBpb2N0bCBoYW5kbGVyIChjZmc4MDIxMV93ZXh0X3Npd3NjYW4pIGJ5IGVuc3VyaW5nIHRoZSBhbGxvY2F0ZWQgc2NhbiByZXF1ZXN0IHN0cnVjdHVyZSBpcyBmcmVlZCBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgd2lyZWxlc3MgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgdmlhIGlvY3RsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdzY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgU0lPQ1NJV1NDQU4gaW9jdGwgaGFuZGxlciAoY2ZnODAyMTFfd2V4dF9zaXdzY2FuKSBieSBlbnN1cmluZyB0aGUgYWxsb2NhdGVkIHNjYW4gcmVxdWVzdCBzdHJ1Y3R1cmUgaXMgZnJlZWQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIHdpcmVsZXNzIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIHZpYSBpb2N0bC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow46d29[1] Phase: Succeeded StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-20 20:10:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-20 20:10:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2] Phase: Succeeded StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-20 20:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-20 20:10:52 +0000 UTC FinishedAt: 2026-06-20 20:10:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow46d29/series-workflow46d29-convert-artifact-4153674223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-20 20:11:02 +0000 UTC FinishedAt: 2026-06-20 20:33:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-20 20:11:02 +0000 UTC FinishedAt: 2026-06-20 20:33:10 +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:*aa6a540b-1b62-4967-a6d3-76085abccc6b,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-workflow46d29/series-workflow46d29-convert-artifact-4153674223/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": "31c8477b-aa2e-4d79-a8b8-60556873bc3d", "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-workflow46d29/series-workflow46d29-build-action-1871890101/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-20 20:11:02 +0000 UTC FinishedAt: 2026-06-20 20:33:00 +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:*aa6a540b-1b62-4967-a6d3-76085abccc6b,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-workflow46d29/series-workflow46d29-convert-artifact-4153674223/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": "31c8477b-aa2e-4d79-a8b8-60556873bc3d", "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-workflow46d29/series-workflow46d29-build-action-1871890101/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-20 20:33:10 +0000 UTC FinishedAt: 2026-06-20 20:33:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-20 20:33:10 +0000 UTC FinishedAt: 2026-06-20 20:33:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-20 20:33:10 +0000 UTC FinishedAt: 2026-06-20 20:33:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-20 20:33:10 +0000 UTC FinishedAt: 2026-06-20 20:33:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow46d29/series-workflow46d29-convert-artifact-2387687230/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-20 20:33:20 +0000 UTC FinishedAt: 2026-06-20 20:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-20 20:33:20 +0000 UTC FinishedAt: 2026-06-20 20:35:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*31c8477b-aa2e-4d79-a8b8-60556873bc3d,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-workflow46d29/series-workflow46d29-build-action-1871890101/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-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-20 20:35:40 +0000 UTC FinishedAt: 2026-06-20 20:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-20 20:35:40 +0000 UTC FinishedAt: 2026-06-20 20:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-20 20:35:40 +0000 UTC FinishedAt: 2026-06-20 20:58:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-20 20:35:40 +0000 UTC FinishedAt: 2026-06-20 20:58:26 +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:*aa6a540b-1b62-4967-a6d3-76085abccc6b,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-workflow46d29/series-workflow46d29-convert-artifact-2387687230/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": "b4de3eab-d2d4-49bf-bb86-0c5a5e950413", "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-workflow46d29/series-workflow46d29-build-action-145485970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-20 20:35:40 +0000 UTC FinishedAt: 2026-06-20 20:58:16 +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:*aa6a540b-1b62-4967-a6d3-76085abccc6b,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-workflow46d29/series-workflow46d29-convert-artifact-2387687230/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": "b4de3eab-d2d4-49bf-bb86-0c5a5e950413", "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-workflow46d29/series-workflow46d29-build-action-145485970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-20 20:58:26 +0000 UTC FinishedAt: 2026-06-20 20:58:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-20 20:58:26 +0000 UTC FinishedAt: 2026-06-20 20:58:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-20 20:58:26 +0000 UTC FinishedAt: 2026-06-20 21:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-20 20:58:26 +0000 UTC FinishedAt: 2026-06-20 21:00:10 +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:*b4de3eab-d2d4-49bf-bb86-0c5a5e950413,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-workflow46d29/series-workflow46d29-build-action-145485970/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-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"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:*31c8477b-aa2e-4d79-a8b8-60556873bc3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b4de3eab-d2d4-49bf-bb86-0c5a5e950413,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-workflow46d29/series-workflow46d29-build-action-1871890101/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-workflow46d29/series-workflow46d29-build-action-145485970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-20 21:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-20 21:00:25 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"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-workflow46d29/series-workflow46d29-convert-artifact-4000480323/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-20 21:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-20 21:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-20 21:00:20 +0000 UTC FinishedAt: 2026-06-20 21:00:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-20 21:00:30 +0000 UTC FinishedAt: 2026-06-21 00:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow46d29[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_wext_siwscan"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1a3746ccbb0a97bed3c06ccde6b880013b1dddc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211_WEXT","MAC80211_HWSIM"],"series_id":"f3abba13-e9fb-4bda-bc24-9aad6335c24c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-20 21:00:30 +0000 UTC FinishedAt: 2026-06-21 00:03:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*31c8477b-aa2e-4d79-a8b8-60556873bc3d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b4de3eab-d2d4-49bf-bb86-0c5a5e950413,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-workflow46d29/series-workflow46d29-build-action-1871890101/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-workflow46d29/series-workflow46d29-build-action-145485970/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-workflow46d29/series-workflow46d29-convert-artifact-4000480323/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,}