Name: series-workflowbtx2c Phase: Succeeded StartedAt: 2026-08-19 08:46:14 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[0] Phase: Succeeded StartedAt: 2026-08-19 08:46:14 +0000 UTC FinishedAt: 2026-08-19 08:50:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 08:46:14 +0000 UTC FinishedAt: 2026-08-19 08:50:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e2466392a0b8496000e12181cb1ee1535eb0da25", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET", "NET_VENDOR_QUALCOMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e2466392a0b8496000e12181cb1ee1535eb0da25", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET", "NET_VENDOR_QUALCOMM" ], "series_id": "963c80fb-1095-414d-8bc1-38fa675ad1ef" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rmnet_changelink", "rmnet_vnd_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDssCiAgICAmIzM0O05FVF9WRU5ET1JfUVVBTENPTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3JtbmV0X3ZuZF9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ3OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbmluZGV4IDc4ZDRkZjU1NzQwYTEuLjk3M2Q0YzQ0YTYzYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbkBAIC0zMTIsNiAmIzQzOzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLFxuJiM0MztcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuJiM0MztcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbiYjNDM7XHRcdHJldHVybiAtRVBFUk07XG4mIzQzO1xuIFx0cG9ydCA9IHJtbmV0X2dldF9wb3J0X3J0bmwocmVhbF9kZXYpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9STU5FVF9NVVhfSURdKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDssCiAgICAmIzM0O05FVF9WRU5ET1JfUVVBTENPTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3JtbmV0X3ZuZF9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ3OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwppbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwpAQCAtMzEyLDYgJiM0MzszMTIsMTQgQEAgc3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCiAJaWYgKCFybW5ldF9pc19yZWFsX2Rldl9yZWdpc3RlcmVkKHJlYWxfZGV2KSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKJiM0MzsJLyoKJiM0MzsJICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLAomIzQzOwkgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2gKJiM0MzsJICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpCiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwogCXBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTsKIAogCWlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgcm1uZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgcm1uZXRfY29uZmlnLmNgIGluIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgbm93IGVuc3VyaW5nIHRoYXQgd2hvZXZlciYjMzk7cyB0cnlpbmcgdG8gdHdlYWsgdGhlIGxpbmsgcHJvcGVydGllcyBoYXMgYENBUF9ORVRfQURNSU5gIHByaXZpbGVnZXMgaW4gdGhlICp0YXJnZXQqIG5ldHdvcmsgbmFtZXNwYWNlLCBub3QganVzdCB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgc21hcnQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgcHJpdmlsZWdlIGVzY2FsYXRpb24uIFRoZSBjb21tZW50IGNsYXJpZmllcyB0aGUgJiMzNDtyZWFsX2RldiYjMzQ7IGxpdmVzIGluIHRoZSBkaWZmZXJlbnQgbmV0bnMgdG8gd2hpY2ggdGhlIGNhcGFiaWxpdGllcyBjaGVjayBub3cgcmVmZXJzLiBTbywgZnVuY3Rpb25hbGx5LCB0aGlzIGNoYW5nZSBpcyBhIHNvbGlkIHNlY3VyaXR5IGltcHJvdmVtZW50LgoKTXkgbmV4dCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBgcm1uZXRgIGlzLCBhZnRlciBhbGwsIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXTigJlzIGNyZWF0ZWQgYW5kIG1hbmFnZWQgdGhyb3VnaCBuZXRsaW5rLCBsaWtlbHkgdmlhIHJ0bmwuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIGF0dGFjayBzdXJmYWNlcy4gTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYHJtbmV0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIHNldCB1cCBhbmQgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBjcmFmdGVkIG5ldGxpbmsgbWVzc2FnZXMsIHBvdGVudGlhbGx5IGJ5cGFzc2luZyB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgY2FwYWJpbGl0eSBjaGVjay4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUk1ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBSTU5FVGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBwcm9iYWJseSBkbyBhIHF1aWNrIHNjYW4gb2YgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoaXMgYFJNTkVUYCB0aGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHByb2plY3QgaXMgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgc2VhcmNoLiBMZXQmIzM5O3MgbG9vayBmb3IgaW5zdGFuY2VzIG9mIGBSTU5FVGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBkZXBlbmRlbmNpZXMuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gZm9ybXVsYXRlIGEgbXVjaCBiZXR0ZXIgcGxhbi4gSSBiZXQgaXQgaXMgZGVmaW5lZCBpbiByZWxhdGlvbiB0byBhIHNwZWNpZmljIGludGVyZmFjZSBvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJNTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWc6NjptZW51Y29uZmlnIFJNTkVUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtSbU5ldCBNQVAgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFJNTkVUIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBgUk1ORVRgJiMzOTtzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIG91dCBpdHMgbGluZWFnZSwgc2VlaW5nIHdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBzZXJ2aWNlcyBpdCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgbm90IGp1c3QgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGJ1dCBhbHNvIGNvbnNpZGVyIHRoZSB0cmFuc2l0aXZlIG9uZXPigJR3aGF0IGRvZXMgKnRob3NlKiBkZXBlbmQgb24/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgYW5kIGRlYnVnZ2luZyBhbnkgZnV0dXJlIGlzc3Vlcy4gVGhpcyBpcyBhIGNvbW1vbiBmaXJzdCBzdGVwLCBlc3BlY2lhbGx5IHdoZW4gd29ya2luZyB3aXRoIGxlZ2FjeSBzeXN0ZW1zLiBJJiMzOTtsbCBuZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbWFuZGF0b3J5IGRlcGVuZGVuY2llcyBhbmQgdGhvc2UgdGhhdCBhcmUgb3B0aW9uYWwgb3IgY29uZGl0aW9uYWxseSBsb2FkZWQuIFRoYXQmIzM5O2xsIGxldCBtZSBwcmlvcml0aXplIHdoaWNoIHRvIGZvY3VzIG9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgbWlnaHQgYmUgbmVlZGVkIGZvciBkaWZmZXJlbnQgdXNlIGNhc2VzLiBJJiMzOTtsbCBtYWtlIGEgbm90ZSBvZiB0aGUgdmVyc2lvbnMgb2YgYW55IGV4dGVybmFsIGNvbXBvbmVudHMgYW5kIGNoZWNrIGlmIHRoZXkgYXJlIHVwIHRvIGRhdGUgYW5kIHBhdGNoZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBSTU5FVCBNQVAgZHJpdmVyXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUk1ORVRcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JtTmV0IE1BUCBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgblxuICAgOTpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcbiAgMTI6XHRcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcbiAgMTM6XHRcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXG4gIDE0Olx0XHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEZXZpY2UgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IHRpZWQgdG8gYW55IHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50OyBpdCYjMzk7cyBhIHZpcnR1YWwgZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlIHRleHQgbWVudGlvbnMgJiMzNDtSTU5FVCBkZXZpY2VzIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgSVAgbW9kZSBwaHlzaWNhbCBkZXZpY2UsJiMzNDsgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBUaGlzIG1vZHVsYXJpdHkgaW1wbGllcyBhIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGludGVyZmFjaW5nIHdpdGggZGlmZmVyZW50IHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgbmV0d29yayBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgYXBwZWFycyB0byBiZSBgcm1uZXRfY2hhbmdlbGlua2AuIFRpbWUgdG8gY2hlY2sgd2hldGhlciBpdOKAmXMgZXhwb3J0ZWQgb3Igc3RhdGljOyB0aGF0JiMzOTtsbCBkZXRlcm1pbmUgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBob29rIGludG8gYW5kIGFuYWx5emUuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBhdmVudWUgZm9yIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JtbmV0X2NoYW5nZWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yODA9c3RhdGljIGludCBybW5ldF9ydG5sX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoyOTk6c3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0zMDAtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTYtXHQuZ2V0X3NpemVcdD0gcm1uZXRfZ2V0X3NpemUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTc6XHQuY2hhbmdlbGluayAgICAgPSBybW5ldF9jaGFuZ2VsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE4LVx0LnBvbGljeVx0XHQ9IHJtbmV0X3BvbGljeSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHJtbmV0IExpbmsgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcm1uZXRfY2hhbmdlbGlua2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgdGhhdCwgZ2l2ZW4gaXRzIHVzZSBhcyBgLmNoYW5nZWxpbmtgIHdpdGhpbiBgcm1uZXRfbGlua19vcHNgLCB3ZSBzaG91bGQgcmVhbGx5IGJlIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZW4mIzM5O3Qgc3RhdGljLCBzdWNoIGFzIGBybW5ldF9uZXdsaW5rYCBvciwgZmFpbGluZyB0aGF0LCBgcm1uZXRfY2hhbmdlbGlua2AuIFdhaXQsIGEgc2Vjb25kLCBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYWN0dWFsbHkgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgcmlnaHQ/IFdoaWNoIG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQuIEJ1dCBpdCYjMzk7cyBzdGlsbCBzdGF0aWMuLi4gT2theSwgc28gd2hhdCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlIHRvIG1lPyBMZXQgbWUgZ28gYW5kIGNoZWNrIHRoZSBgcm1uZXRfbGlua19vcHNgIHN0cnVjdHVyZSBhZ2FpbiwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cm1uZXRfbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9Mzc4PXN0YXRpYyBpbnQgcm1uZXRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDA4OnN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MDktXHQua2luZFx0XHQ9IFwmIzM0O3JtbmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTUwOT1zdGF0aWMgaW50IF9faW5pdCBybW5ldF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NTE3Olx0cmMgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2cm1uZXRfbGlua19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE4LVx0aWYgKHJjICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz01MjU9c3RhdGljIHZvaWQgX19leGl0IHJtbmV0X2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTUyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo1Mjc6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZybW5ldF9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy01MjgtXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZybW5ldF9kZXZfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oPTMzPXN0cnVjdCBybW5ldF9wb3J0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaC01NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oOjU2OmV4dGVybiBzdHJ1Y3QgcnRubF9saW5rX29wcyBybW5ldF9saW5rX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oLTU3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jPTI5OD1pbnQgcm1uZXRfdm5kX25ld2xpbmsodTggaWQsIHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM6MzMzOlx0XHRybW5ldF9kZXYtXHUwMDNlcnRubF9saW5rX29wcyA9IFx1MDAyNnJtbmV0X2xpbmtfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIHRoZSBGdW5jdGlvbiBQb2ludGVyIGZvciBOZXR3b3JrIExpbmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBiZWluZyB0cmVhdGVkIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyLiBUaGF0JiMzOTtzIGZpbmUgaW4gbWFueSBjYXNlcywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZC4gSG93ZXZlciwgSSYjMzk7bSBjb25jZXJuZWQgdGhhdCBzeXprYWxsZXIgbWlnaHQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyBhIHN0YXRpYyBmdW5jdGlvbiBkaXJlY3RseS4gQWx0aG91Z2gsIHdhaXQsIGl0ICpzaG91bGQqIGJlIGFibGUgdG8gaWYgdGhlIHN5bWJvbCBpcyBpbiB0aGUgdGFibGUuIEhtbS4gVGhlIGRvY3VtZW50YXRpb24gZGlkIHNheSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlcnMsIHRob3VnaC4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIHNlZS4uLiBwZXJoYXBzIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcz8gSG93IGFib3V0IGBybW5ldF9uZXdsaW5rYD8gVGhhdCAqc291bmRzKiBsaWtlIGl0IGNvdWxkIGJlIHJlbGF0ZWQuIFRpbWUgdG8gY3JhY2sgb3BlbiBgcm1uZXRfY29uZmlnLmNgIGFuZCBzZWUgaWYgdGhhdCYjMzk7cyBhIHZpYWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JtbmV0X25ld2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz05MT1zdGF0aWMgdm9pZCBybW5ldF91bnJlZ2lzdGVyX2JyaWRnZShzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoxMjA6c3RhdGljIGludCBybW5ldF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMjEtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDEzLVx0LnZhbGlkYXRlXHQ9IHJtbmV0X3J0bmxfdmFsaWRhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTQ6XHQubmV3bGlua1x0PSBybW5ldF9uZXdsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE1LVx0LmRlbGxpbmtcdD0gcm1uZXRfZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBSTU5FVCBMaW5rIE1hbmFnZW1lbnQqKgoKSG1tLCBzbyBib3RoIGBybW5ldF9uZXdsaW5rYCBhbmQgYHJtbmV0X2NoYW5nZWxpbmtgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEgY29tbW9uIHBhdHRlcm4gaW4ga2VybmVsIG5ldHdvcmtpbmcsIHVzdWFsbHkgaW5kaWNhdGluZyB0aGV5JiMzOTtyZSBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgcm1uZXQgc3Vic3lzdGVtLiBCdXQgdGhlIGZvY3VzIGhlcmUgaXMgYWJvdXQgUk1ORVQgbGluayBtYW5hZ2VtZW50IGFuZCB0aGUgZmFjdCB0aGF0IHRoZXkgYXJlIHN0YXRpYy4gVGhpcyBtYWtlcyBzZW5zZS4KCkJ1dCB3YWl0LCB3aGF0IGFib3V0IGBybW5ldF92bmRfbmV3bGlua2A/IFRoYXQgbmFtZSBpcyBpbnRlcmVzdGluZywgYW5kIHRoZSBtZW50aW9uIG9mIGBybW5ldF92bmQuY2AgaXMgaW1wb3J0YW50IHRvIHRoZSBjb250ZXh0IG9mIG15IHRob3VnaHRzLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIHJvdXRpbmUgaXMgbm90IHN0YXRpYyBvciBhdCB0aGUgdmVyeSBsZWFzdCBpcyBub3QgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIG90aGVyIHJvdXRpbmVzLiBUaGF0IGZpbGVuYW1lIHBvaW50cyB0byB0aGUgVmVuZG9yLVNwZWNpZmljIE5ldHdvcmsgRGV2aWNlIGludGVyZmFjZSwgcmlnaHQ/IElzIHRoYXQgZnVuY3Rpb24gYXZhaWxhYmxlIHRvIGFub3RoZXIgbGF5ZXIsIHN1Y2ggYXMgdmVuZG9yIHNwZWNpZmljIG1vZGVtIGRyaXZlcnM/CgpUaGlzIGNvdWxkIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2ZW5kb3JzIGV4dGVuZCBvciBjdXN0b21pemUgcm1uZXQuIEkgbmVlZCB0byBkaWcgaW50byBgcm1uZXRfdm5kX25ld2xpbmtgIGFuZCBpdHMgY29udGV4dCB3aXRoaW4gYHJtbmV0X3ZuZC5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHB1YmxpYy1mYWNpbmcgQVBJIG9yIGlmIGl0JiMzOTtzIHN0aWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2UuIFRoaXMgaXMgYSB2ZXJ5IGludGVyZXN0aW5nIGF2ZW51ZSBvZiBleHBsb3JhdGlvbiB0aGF0IEkgbmVlZCB0byBkbyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF92bmRfbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0xMjA9c3RhdGljIGludCBybW5ldF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMTU2LVx0cG9ydCA9IHJtbmV0X2dldF9wb3J0X3J0bmwocmVhbF9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTU3Olx0ZXJyID0gcm1uZXRfdm5kX25ld2xpbmsobXV4X2lkLCBkZXYsIHBvcnQsIHJlYWxfZGV2LCBlcCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTE1OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM9MjcyPXZvaWQgcm1uZXRfdm5kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMjk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM6Mjk4OmludCBybW5ldF92bmRfbmV3bGluayh1OCBpZCwgc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5OS1cdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmg9MTA9aW50IHJtbmV0X3ZuZF9kb19mbG93X2NvbnRyb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGVuYWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaDoxMTppbnQgcm1uZXRfdm5kX25ld2xpbmsodTggaWQsIHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaC0xMi1cdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIFJNTkVUIENoYW5nZXMgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgcm1uZXRfY2hhbmdlbGlua2AgaGVyZSDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZC4gVGhlIGdvb2QgbmV3cyBpcywgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBpZGVhbC4gVGhhdCBtZWFucyBJIGNhbiBjb25maWRlbnRseSBkZXNpZ25hdGUgYm90aCBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF9uZXdsaW5rYCBhcyBGb2N1c1N5bWJvbHMgd2l0aGluIFN5emthbGxlci4gSXQmIzM5O3MgcGVyZmVjdGx5IGNhcGFibGUgb2YgaGFuZGxpbmcgc3RhdGljIGZ1bmN0aW9ucyBhcyBsb25nIGFzIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLCBhbmQgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0aHJvdWdoIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGRlZmluaXRlbHkgKmFyZW4mIzM5O3QqIGlubGluZWQuIFRoaXMgbWFrZXMgaW50ZWdyYXRpb24gbXVjaCBjbGVhbmVyLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uLiBJdCBsb29rcyBsaWtlIGBSTU5FVGAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmbGFnIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIFNvLCB0aGF0IG1lYW5zIGBFbmFibGVDb25maWdzYCBzaG91bGQgYWJzb2x1dGVseSBiZSBzZXQgdG8gYFJNTkVUYCBpbiB0aGUgU3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcHJvamVjdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBuZWVkIGF0dGVudGlvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHRvIGluY2x1ZGUgdG8gbWFrZSBzdXJlIFN5emthbGxlciBoYXMgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBEZXBlbmRlbmN5IEFub21hbHkgaW4gdGhlIEtjb25maWcqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJNTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gSXQmIzM5O3Mgc3VwcG9zZWQgdG8gYmUgYSBjb3JlIGNvbXBvbmVudCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIHNvbWUgZGVwZW5kZW5jaWVzLiBUaGUgS2NvbmZpZyBzdHJ1Y3R1cmUgbG9va3MgYSBiaXQuLi5jbGVhbiwgc3VycHJpc2luZ2x5IHNvLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgcG9zc2libGUgSSYjMzk7bSBtaXNyZW1lbWJlcmluZyB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGEgcmVjZW50IGNoYW5nZSBpbnRyb2R1Y2VkIGEgY29uZmlndXJhdGlvbiBvdmVyc2lnaHQuIFRpbWUgdG8gZGl2ZSBiYWNrIGluIGFuZCBzY3J1dGluaXplIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgZmluZCwgYW5kIEkgbmVlZCB0byBjb25maXJtIHRoZSBleHBlY3RlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUk1ORVQgTUFQIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFJNTkVUXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSbU5ldCBNQVAgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IG5cbiAgIDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IHNlbGVjdCB0aGlzLCB5b3Ugd2lsbCBlbmFibGUgdGhlIFJNTkVUIG1vZHVsZSB3aGljaCBpcyB1c2VkXG4gIDEyOlx0XHQgIGZvciBoYW5kbGluZyBkYXRhIGluIHRoZSBtdWx0aXBsZXhpbmcgYW5kIGFnZ3JlZ2F0aW9uIHByb3RvY29sIChNQVApXG4gIDEzOlx0XHQgIGZvcm1hdCBpbiB0aGUgZW1iZWRkZWQgZGF0YSBwYXRoLiBSTU5FVCBkZXZpY2VzIGNhbiBiZSBhdHRhY2hlZCB0b1xuICAxNDpcdFx0ICBhbnkgSVAgbW9kZSBwaHlzaWNhbCBkZXZpY2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRXhhbWluaW5nIEtjb25maWcgRGVwZW5kZW5jeSBMb2NhdGlvbioqCgpPa2F5LCBzbyB0aGlzIG1vZHVsZSBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGRlY2xhcmUgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCB3aGljaCBpcyBhIGJpdCB1bnVzdWFsLiBCdXQsIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIG9mdGVuIHVzZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byBpbXBseSBkZXBlbmRlbmNpZXMuIExldCBtZSBnbyB0YWtlIGEgbG9vayBhdCB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGFyZSBkZWZpbmVkIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgbWlnaHQgaW5kaXJlY3RseSBnb3Zlcm4gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBRdWFsY29tbSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX1FVQUxDT01NXG4gICA3Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBRdWFsY29tbSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxuICAxNTpcdFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNjpcdFxuICAxNzpcdGlmIE5FVF9WRU5ET1JfUVVBTENPTU1cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgUUNBNzAwMFxuICAyMDpcdFx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUXVhbGNvbW0gTmV0d29yayBWZW5kb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgSSBzZWUgdGhlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIG5lc3RsZWQgdW5kZXIgYW4gYGlmIE5FVF9WRU5ET1JfUVVBTENPTU1gIGNvbmRpdGlvbmFsLiBTbywgdGhlIGZpcnN0IGtleSB0YWtlYXdheSBpcyB0aGF0IGBORVRfVkVORE9SX1FVQUxDT01NYCAqbXVzdCogYmUgZGVmaW5lZCBmb3IgdGhpcyBzZWN0aW9uIHRvIGJlIGFjdGl2ZS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcHJlcmVxdWlzaXRlLCBidXQgaXQgYmVncyB0aGUgcXVlc3Rpb24g4oCTIHdoYXQgZXhhY3RseSAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvdGhlciBkZWZpbmVzLCBvciBoYXJkd2FyZSBwbGF0Zm9ybSBzZXR0aW5ncyB0aGF0IGluZGlyZWN0bHkgdHJpZ2dlciBgTkVUX1ZFTkRPUl9RVUFMQ09NTWA/IE9yIGlzIGl0IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBmZWF0dXJlIHNldCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIEkmIzM5O20gaW50cm9kdWNpbmcgKG9yIHJlbW92aW5nKSBpZiBJIG1hbmlwdWxhdGUgYE5FVF9WRU5ET1JfUVVBTENPTU1gLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSBkZWZpbml0aW9uIGFuZCBpdHMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9WRU5ET1JfUVVBTENPTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJNTkVUIENhcGFiaWxpdHkgQ2hlY2sgRml4KioKCk9rYXksIHNvIHRoZSBjaGFuZ2UgZGVmYXVsdHMgdG8gYHlgLCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYC4gR29vZCB0byBrbm93LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBhcHBlYXJzIHRvIGJlIGlzb2xhdGVkIHRvIGBybW5ldF9jaGFuZ2VsaW5rYC4gWWVwLCBqdXN0IHRoYXQgZnVuY3Rpb24uCgpBbHJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHRoaXM6CgpgYGBjCgkvKgoJICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLAoJICogYnV0IHRoZSBwb3J0IHN0YXRlIG11dGF0ZWQgYmVsb3cgaXMgYXR0YWNoZWQgdG8gcmVhbF9kZXYsIHdoaWNoCgkgKiBtYXkgbGl2ZSBpbiBhIGRpZmZlcmVudCBuZXRucy4KCSAqLwoJaWYgKCFydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlKGRldiwgZGV2X25ldChyZWFsX2RldikpKQoJCXJldHVybiAtRVBFUk07CmBgYAoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRkaXRpb24sIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgbWlzc2luZyBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkmIzM5O3JlIGVuc3VyaW5nIGBDQVBfTkVUX0FETUlOYCBpcyBwcm9wZXJseSBlbmZvcmNlZCBhY3Jvc3MgbmV0IG5hbWVzcGFjZXMgd2hlbiBgcm1uZXRfY2hhbmdlbGlua2Agb3BlcmF0ZXMgb24gYHJlYWxfZGV2YC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXggZG9lcyBpdHMgam9iIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgdmVjdG9ycyBvciBieXBhc3Nlcy4gSXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhIGZvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMuCgpGb2N1c2luZyBpbiwgYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfbmV3bGlua2AgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgd2UgYXJlIHdvcmtpbmcgd2l0aCBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAgZW5hYmxlZC4KCldhaXQgYSBzZWNvbmTigKYgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaXNu4oCZdCBkaXJlY3RseSBjYWxsYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIGNoZWNrPyBBaCwgYHJtbmV0X3ZuZF9uZXdsaW5rYCBpcyBub24tc3RhdGljLiBMZXTigJlzIGludmVzdGlnYXRlIHdoZXRoZXIgYHJtbmV0X2NoYW5nZWxpbmtgIGNhbGxzIGFueXRoaW5nIG5vbi1zdGF0aWMsIGxpa2UgYHJtbmV0X3ZuZF9uZXdsaW5rYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjb2RlIHJldmlldyBhcHByb2FjaCwgbG9va2luZyBmb3IgcG90ZW50aWFsIGludGVyY29ubmVjdGlvbnMgb3Igc2lkZS1lZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9MjgwPXN0YXRpYyBpbnQgcm1uZXRfcnRubF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6Mjk5OnN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzAwLVx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE2LVx0LmdldF9zaXplXHQ9IHJtbmV0X2dldF9zaXplLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDE3Olx0LmNoYW5nZWxpbmsgICAgID0gcm1uZXRfY2hhbmdlbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxOC1cdC5wb2xpY3lcdFx0PSBybW5ldF9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEaXZpbmcgaW50byBgcm1uZXRfY2hhbmdlbGlua2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgYHJtbmV0X2NoYW5nZWxpbmtgLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQmIzM5O3MgZ29pbmcgdG8gYmUgaW4gaGVyZS4gVGhpcyBmdW5jdGlvbiwgZ2l2ZW4gaXRzIG5hbWUsIGxpa2VseSBoYW5kbGVzIGNoYW5nZXMgdG8gdGhlIFJlbW90ZSBNb2JpbGUgTmV0d29yayBJbnRlcmZhY2UgKFJNTkVUKSBsaW5rcy4gSSYjMzk7bSBndWVzc2luZyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cywgYnJpbmdpbmcgYW4gaW50ZXJmYWNlIHVwIG9yIGRvd24sIG9yIHBlcmhhcHMgZXZlbiBoYW5kbGluZyBsaW5rLWxldmVsIGV2ZW50cy4gSSBiZXQgaXQgdGFrZXMgYSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY2hhbmdlcyBhcyBpbnB1dCDigJMgbWF5YmUgYSBkZXNjcmlwdG9yIHNwZWNpZnlpbmcgdGhlIG5ldyBNVFUsIElQIGFkZHJlc3MsIG9yIGxpbmsgc3RhdGUuIFByb2JhYmx5IHVzZXMgc29tZSBzb3J0IG9mIG5ldGxpbmsgaW50ZXJmYWNlLCBvciBwZXJoYXBzIGlvY3RscyBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGZ1bmN0aW9uLiBSTU5FVCBpcyBjcnVjaWFsIGZvciBkYXRhIGNvbm5lY3Rpdml0eSBvbiBRdWFsY29tbSBwbGF0Zm9ybXMsIHNvIGZhaWx1cmVzIGhlcmUgYXJlIGEgYmlnIGRlYWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtb2RlbSBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgYXN5bmNocm9ub3VzIGNhbGxzIG9yIHdvcmtxdWV1ZXMgaW52b2x2ZWQuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQgYW5kIHNlZSBpZiBteSBhc3N1bXB0aW9ucyBob2xkIHRydWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5OTpcdHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIDMwMDpcdFx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4gMzAxOlx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiAzMDI6XHR7XG4gMzAzOlx0XHRzdHJ1Y3Qgcm1uZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gMzA0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXY7XG4gMzA1Olx0XHRzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydDtcbiAzMDY6XHRcdHUxNiBtdXhfaWQ7XG4gMzA3Olx0XG4gMzA4Olx0XHRpZiAoIWRldilcbiAzMDk6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMzEwOlx0XG4gMzExOlx0XHRyZWFsX2RldiA9IHByaXYtXHUwMDNlcmVhbF9kZXY7XG4gMzEyOlx0XHRpZiAoIXJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQocmVhbF9kZXYpKVxuIDMxMzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAzMTQ6XHRcbiAzMTU6XHRcdC8qXG4gMzE2Olx0XHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXG4gMzE3Olx0XHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcbiAzMTg6XHRcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxuIDMxOTpcdFx0ICovXG4gMzIwOlx0XHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXG4gMzIxOlx0XHRcdHJldHVybiAtRVBFUk07XG4gMzIyOlx0XG4gMzIzOlx0XHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XG4gMzI0Olx0XG4gMzI1Olx0XHRpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHtcbiAzMjY6XHRcdFx0bXV4X2lkID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pO1xuIDMyNzpcdFxuIDMyODpcdFx0XHRpZiAobXV4X2lkICE9IHByaXYtXHUwMDNlbXV4X2lkKSB7XG4gMzI5Olx0XHRcdFx0c3RydWN0IHJtbmV0X2VuZHBvaW50ICplcDtcbiAzMzA6XHRcbiAzMzE6XHRcdFx0XHRlcCA9IHJtbmV0X2dldF9lbmRwb2ludChwb3J0LCBwcml2LVx1MDAzZW11eF9pZCk7XG4gMzMyOlx0XHRcdFx0aWYgKCFlcClcbiAzMzM6XHRcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuIDMzNDpcdFxuIDMzNTpcdFx0XHRcdGlmIChybW5ldF9nZXRfZW5kcG9pbnQocG9ydCwgbXV4X2lkKSkge1xuIDMzNjpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbiAzMzc6XHRcdFx0XHRcdFx0XHQgICBcJiMzNDtNVVggSUQgYWxyZWFkeSBleGlzdHNcJiMzNDspO1xuIDMzODpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzM5Olx0XHRcdFx0fVxuIDM0MDpcdFxuIDM0MTpcdFx0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlcC1cdTAwM2VobG5vZGUpO1xuIDM0MjpcdFx0XHRcdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZlcC1cdTAwM2VobG5vZGUsXG4gMzQzOlx0XHRcdFx0XHRcdCAgIFx1MDAyNnBvcnQtXHUwMDNlbXV4ZWRfZXBbbXV4X2lkXSk7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRcdFx0ZXAtXHUwMDNlbXV4X2lkID0gbXV4X2lkO1xuIDM0NjpcdFx0XHRcdHByaXYtXHUwMDNlbXV4X2lkID0gbXV4X2lkO1xuIDM0NzpcdFx0XHR9XG4gMzQ4Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzAxCgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipNeSBBbmFseXNpcyBvZiB0aGUgYHJtbmV0YCBNb2R1bGUgTW9kaWZpY2F0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyAqdGhlKiBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGUgb25seSBvbmUgdGhhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgdGhlIGNvcmUgb2Ygd2hhdGV2ZXIgdGhlIG1vZGlmaWNhdGlvbiBlbnRhaWxzLiBUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIG5vLWJyYWluZXIuCgpOb3csIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbGluayBjaGFuZ2VzLCB3ZSYjMzk7bGwgbmVlZCBhIG1lY2hhbmlzbSBmb3IgKmNyZWF0aW5nKiB0aGUgZGV2aWNlIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgcmF0aGVyLCB0aGUgZW50cnlwb2ludCBmb3IgdGhhdCBmdW5jdGlvbi4gYHJtbmV0X3ZuZF9uZXdsaW5rYCBmaXRzIHRoZSBiaWxsIGFzIGl0JiMzOTtzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVzZSBuZXcgZGV2aWNlcy4gU2luY2UgYGNoYW5nZWxpbmtgIGlzIGEgcHJlcmVxdWlzaXRlLCBJJiMzOTtsbCBhZGQgdGhhdCB0byBgRm9jdXNTeW1ib2xzYCBhcyB3ZWxsLgoKSG93ZXZlciwgSSBuZWVkIHRvIGJlIGNhcmVmdWwgb2YgcG90ZW50aWFsIHNpZGUtZWZmZWN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGVsc2UgdGhhdCBpcyBub24tc3RhdGljIGluIGBybW5ldF9jb25maWcuY2AuIFRoZXJlIGNvdWxkIGJlIG90aGVyIHJlbGF0ZWQgZW50cnkgcG9pbnRzIG9yIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNoYW5nZSwgZXZlbiBpZiB0aGV5IGFyZW4mIzM5O3QgZGlyZWN0bHkgbW9kaWZpZWQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGF0IGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBCZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0d29yayBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBybW5ldF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yND1zdGF0aWMgaW50IHJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnJlYWxfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTI5LS8qIE5lZWRzIHJ0bmwgbG9jayAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MzA6c3RydWN0IHJtbmV0X3BvcnQqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0zMS1ybW5ldF9nZXRfcG9ydF9ydG5sKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpyZWFsX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MjI6c3RydWN0IHJtbmV0X3BvcnQgKnJtbmV0X2dldF9wb3J0X3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MjMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQzMDpzdHJ1Y3Qgcm1uZXRfZW5kcG9pbnQgKnJtbmV0X2dldF9lbmRwb2ludChzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTggbXV4X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0NDI6aW50IHJtbmV0X2FkZF9icmlkZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ0My1cdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQ5NjppbnQgcm1uZXRfZGVsX2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDk3LVx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzkwCgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgUk1ORVQgRHJpdmVyKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBybW5ldGAgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGBydG5sYCAocm91dGluZyBuZXRsaW5rKSBpbnRlcmZhY2UuIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYHJtbmV0X2FkZF9icmlkZ2VgLCBgcm1uZXRfZGVsX2JyaWRnZWAsIGBybW5ldF9nZXRfZW5kcG9pbnRgLCBgcm1uZXRfZ2V0X3BvcnRfcmN1YCwgYW5kIGBybW5ldF9nZXRfcG9ydF9ydG5sYCBhcmUgbm90IGRlY2xhcmVkIHN0YXRpYywgYnV0IHRoZSBtYWluIG9uZXMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGZvciBgcnRubGAgb3BlcmF0aW9ucyBhcmUgYHJtbmV0X25ld2xpbmtgIGFuZCBgcm1uZXRfY2hhbmdlbGlua2AuCgpOb3csIHdoaWxlIGBybW5ldF9jaGFuZ2VsaW5rYCAqaXMqIHN0YXRpYywgaXQgaXMgYXNzaWduZWQgdG8gYHJ0bmxfbGlua19vcHNgLiBUaGF0JiMzOTtzIHRoZSBjcnVjaWFsIGRldGFpbC4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0IHRocm91Z2ggYW4gYFJUTV9ORVdMSU5LYCBtZXNzYWdlIHdpdGggYElGTEFfSU5GT19LSU5EYCBzZXQgdG8gJiMzNDtybW5ldCYjMzQ7LiBTbywgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGluZGVlZCBhIHZpYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIHdoaWNoIGlzIGdyZWF0LiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyBjb25zaWRlcnMgdGhlIGBybW5ldF92bmRfbmV3bGlua2AuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRvIGNvbnNpZGVyIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM6IGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYC4gR29vZCwgaXQgbG9va3MgbGlrZSBgUk1ORVRgIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIuCgpBbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBwbGFuIGlzIHNvbGlkLiBJJiMzOTt2ZSBnb3QgdGhpcyBqc29uIGNvbmZpZyBmaWxlIHRoYXQgbGF5cyBvdXQgbXkgYXBwcm9hY2guIEkmIzM5O3ZlIHNldCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHRvIHRydWUsIGFuZCBteSAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7IGFyZSBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF92bmRfbmV3bGlua2AuIEkmIzM5O3ZlIGluY2x1ZGVkIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBpbiAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0Oy4KClRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IGJlaGluZCBhbGwgb2YgdGhpcz8gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHN0b3AgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbWVzc2luZyB3aXRoIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aGVyZWZvcmUsIG5lZWRzIHJpZ29yb3VzIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIGlzIHNvbGlkIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMuIEkmIzM5O20ga2VlbiB0byBzZWUgaWYgdGhpcyBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSTU5FVCYjMzQ7LAogICAgJiMzNDtORVRfVkVORE9SX1FVQUxDT01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtybW5ldF92bmRfbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayB0byBybW5ldF9jaGFuZ2VsaW5rIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbW9kaWZ5aW5nIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2FwYWJpbGl0eSBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Uk1ORVQmIzM0OywKICAgICYjMzQ7TkVUX1ZFTkRPUl9RVUFMQ09NTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JtbmV0X2NoYW5nZWxpbmsmIzM0OywKICAgICYjMzQ7cm1uZXRfdm5kX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgdG8gcm1uZXRfY2hhbmdlbGluayB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCB1c2VycyBmcm9tIG1vZGlmeWluZyB0aGUgbGluayBwcm9wZXJ0aWVzIG9mIGFuIHJtbmV0IGRldmljZSBpbiBhIGRpZmZlcmVudCBuZXR3b3JrIG5hbWVzcGFjZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNhcGFiaWxpdHkgY2hlY2sgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5OTYzOGUxMThmMzk1NTg1OTA1ZWM1MTU3YjVjY2YxNjZjNGExNjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NzozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKaW5kZXggNzhkNGRmNTU3NDBhMS4uOTczZDRjNDRhNjNiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKQEAgLTMxMiw2ICYjNDM7MzEyLDE0IEBAIHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCWlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSwKJiM0MzsJICogYnV0IHRoZSBwb3J0IHN0YXRlIG11dGF0ZWQgYmVsb3cgaXMgYXR0YWNoZWQgdG8gcmVhbF9kZXYsIHdoaWNoCiYjNDM7CSAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlKGRldiwgZGV2X25ldChyZWFsX2RldikpKQomIzQzOwkJcmV0dXJuIC1FUEVSTTsKJiM0MzsKIAlwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7CiAKIAlpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJNTkVUIFNlY3VyaXR5IFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYHJtbmV0X2NoYW5nZWxpbmsoKWAgbG9va3MgbGlrZSBhIHNvbGlkIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYSB1c2VyIHdpdGggYENBUF9ORVRfQURNSU5gIGluICpvbmUqIG5ldHdvcmsgbmFtZXNwYWNlIGZyb20gbWVzc2luZyB3aXRoIHRoZSBwb3J0IHN0YXRlIG9mIGEgYHJlYWxfZGV2YCByZXNpZGluZyBpbiAqYW5vdGhlciogbmV0bnMuIFRoaXMgaXMgYSBjb21tb24gYW5kIGltcG9ydGFudCBzZWN1cml0eSBjb25jZXJuLCBhbmQgdGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZlY3RpdmUuCgpUaGUgYWRkZWQgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoKWAgY2hlY2sgaXMgdGhlIGtleS4gSXQmIzM5O3MgcHJvcGVybHkgdmVyaWZ5aW5nIHBlcm1pc3Npb25zIGFnYWluc3QgdGhlIGByZWFsX2RldmAmIzM5O3MgbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBvbmUgd2hlcmUgdGhlIG9yaWdpbmFsIGBkZXZgIGV4aXN0cy4gTWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHZ1bG5lcmFiaWxpdHkgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4KCk5vdywgYXMgYW4gZXhwZXJ0LCBJJiMzOTttIGFscmVhZHkgbG9va2luZyBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGNvZGUgaXRzZWxmIGlzIGNsZWFuIGFuZCBjb25jaXNlLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IHN0cnVjdHVyZXMgaW50cm9kdWNlZCwgYW5kIEkgc2VlIG5vIGluZGljYXRpb24gb2YgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgY2hhbmdlIGlzIHNpbXBseSBhIHBlcm1pc3Npb24gY2hlY2sgYmVmb3JlIHRoZSBjcml0aWNhbCBwb3J0IHN0YXRlIG1vZGlmaWNhdGlvbi4gVGhlIGNvbW1lbnQgYmxvY2sgY2xhcmlmaWVzIHRoZSByYXRpb25hbGUsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gcXVpY2tseS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IHJlcXVpcmVkIGhlcmUuIEl0JiMzOTtzIGEgcGVybWlzc2lvbiBjaGVjaywgbm90IHNvbWV0aGluZyB0aGF0IHdvdWxkIGludHJvZHVjZSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4KClRoZXJlZm9yZSwgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYE5lZWRzS01TQU49ZmFsc2VgLiBJdCYjMzk7cyBhIHdlbGwtc2NvcGVkIGFuZCB3ZWxsLWltcGxlbWVudGVkIHNlY3VyaXR5IGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuMjAyNDUyNDU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3MjI1MDgyMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCIsXG4gICAgXCJORVRfVkVORE9SX1FVQUxDT01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICAgIFwicm1uZXRfdm5kX25ld2xpbmtcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIGBydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlYCBpbiBgcm1uZXRfY2hhbmdlbGlua2AgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgbXV0YXRpb24gb2YgcG9ydCBzdGF0ZSBhY3Jvc3MgbmV0d29yayBuYW1lc3BhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjMzLjIwMjQ2MDEzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyNzM0NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXFxuaW5kZXggNzhkNGRmNTU3NDBhMS4uOTczZDRjNDRhNjNiYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXFxuQEAgLTMxMiw2ICszMTIsMTQgQEAgc3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuIFxcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLFxcbitcXHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcXG4rXFx0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXFxuK1xcdFxcdHJldHVybiAtRVBFUk07XFxuK1xcbiBcXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuNjk1OTMxMjQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI5MDY3MzQ0MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCIsXG4gICAgXCJORVRfVkVORE9SX1FVQUxDT01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICAgIFwicm1uZXRfdm5kX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayB0byBybW5ldF9jaGFuZ2VsaW5rIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbW9kaWZ5aW5nIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2FwYWJpbGl0eSBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTk2MzhlMTE4ZjM5NTU4NTkwNWVjNTE1N2I1Y2NmMTY2YzRhMTYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDg6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5pbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5AQCAtMzEyLDYgKzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuK1x0LypcbitcdCAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSxcbitcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuK1x0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXG4rXHQgKi9cbitcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcbiBcdHBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuNjk1OTMyNDU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3ODYzODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJtbmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBybW5ldF9jb25maWcuY2AgaW4gdGhlIFF1YWxjb21tIEV0aGVybmV0IGRyaXZlci4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGVuc3VyaW5nIHRoYXQgd2hvZXZlcidzIHRyeWluZyB0byB0d2VhayB0aGUgbGluayBwcm9wZXJ0aWVzIGhhcyBgQ0FQX05FVF9BRE1JTmAgcHJpdmlsZWdlcyBpbiB0aGUgKnRhcmdldCogbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBjdXJyZW50IG9uZS4gVGhpcyBpcyBzbWFydCwgcHJldmVudGluZyBhIHBvdGVudGlhbCBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIGNvbW1lbnQgY2xhcmlmaWVzIHRoZSBcInJlYWxfZGV2XCIgbGl2ZXMgaW4gdGhlIGRpZmZlcmVudCBuZXRucyB0byB3aGljaCB0aGUgY2FwYWJpbGl0aWVzIGNoZWNrIG5vdyByZWZlcnMuIFNvLCBmdW5jdGlvbmFsbHksIHRoaXMgY2hhbmdlIGlzIGEgc29saWQgc2VjdXJpdHkgaW1wcm92ZW1lbnQuXG5cbk15IG5leHQgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gYHJtbmV0YCBpcywgYWZ0ZXIgYWxsLCBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl04oCZcyBjcmVhdGVkIGFuZCBtYW5hZ2VkIHRocm91Z2ggbmV0bGluaywgbGlrZWx5IHZpYSBydG5sLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIGF0dGFjayBzdXJmYWNlcy4gTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYHJtbmV0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIHNldCB1cCBhbmQgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBjcmFmdGVkIG5ldGxpbmsgbWVzc2FnZXMsIHBvdGVudGlhbGx5IGJ5cGFzc2luZyB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgY2FwYWJpbGl0eSBjaGVjay4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NzozOS4wNzQ1NzM1NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0MDExOTg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUk1ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzkuMzc4NTk1MzE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMzY5NzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBSTU5FVGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2NhbiBvZiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGJlc3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhpcyBgUk1ORVRgIHRoaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgcHJvamVjdCBpcyB0byBzZWUgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyB1c2VkLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIExldCdzIGxvb2sgZm9yIGluc3RhbmNlcyBvZiBgUk1ORVRgIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgZGVwZW5kZW5jaWVzLiBJIGNhbiB0aGVuIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGZvcm11bGF0ZSBhIG11Y2ggYmV0dGVyIHBsYW4uIEkgYmV0IGl0IGlzIGRlZmluZWQgaW4gcmVsYXRpb24gdG8gYSBzcGVjaWZpYyBpbnRlcmZhY2Ugb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6NDIuMDAyMjk0MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNDM5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJNTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZzo2Om1lbnVjb25maWcgUk1ORVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlJtTmV0IE1BUCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQyLjA0OTY0MjU3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjIzNDEzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFJNTkVUIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGBSTU5FVGAncyBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIG91dCBpdHMgbGluZWFnZSwgc2VlaW5nIHdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBzZXJ2aWNlcyBpdCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEknbGwgbmVlZCB0byBpZGVudGlmeSBub3QganVzdCB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gY29uc2lkZXIgdGhlIHRyYW5zaXRpdmUgb25lc+KAlHdoYXQgZG9lcyAqdGhvc2UqIGRlcGVuZCBvbj8gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiBjaGFuZ2VzLCBhbmQgZGVidWdnaW5nIGFueSBmdXR1cmUgaXNzdWVzLiBUaGlzIGlzIGEgY29tbW9uIGZpcnN0IHN0ZXAsIGVzcGVjaWFsbHkgd2hlbiB3b3JraW5nIHdpdGggbGVnYWN5IHN5c3RlbXMuIEknbGwgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1hbmRhdG9yeSBkZXBlbmRlbmNpZXMgYW5kIHRob3NlIHRoYXQgYXJlIG9wdGlvbmFsIG9yIGNvbmRpdGlvbmFsbHkgbG9hZGVkLiBUaGF0J2xsIGxldCBtZSBwcmlvcml0aXplIHdoaWNoIHRvIGZvY3VzIG9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgbWlnaHQgYmUgbmVlZGVkIGZvciBkaWZmZXJlbnQgdXNlIGNhc2VzLiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoZSB2ZXJzaW9ucyBvZiBhbnkgZXh0ZXJuYWwgY29tcG9uZW50cyBhbmQgY2hlY2sgaWYgdGhleSBhcmUgdXAgdG8gZGF0ZSBhbmQgcGF0Y2hlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6NDUuMjExOTg2NDk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSTU5FVCBNQVAgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgUk1ORVRcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJSbU5ldCBNQVAgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCBuXFxuICAgOTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBzZWxlY3QgdGhpcywgeW91IHdpbGwgZW5hYmxlIHRoZSBSTU5FVCBtb2R1bGUgd2hpY2ggaXMgdXNlZFxcbiAgMTI6XFx0XFx0ICBmb3IgaGFuZGxpbmcgZGF0YSBpbiB0aGUgbXVsdGlwbGV4aW5nIGFuZCBhZ2dyZWdhdGlvbiBwcm90b2NvbCAoTUFQKVxcbiAgMTM6XFx0XFx0ICBmb3JtYXQgaW4gdGhlIGVtYmVkZGVkIGRhdGEgcGF0aC4gUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG9cXG4gIDE0OlxcdFxcdCAgYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo0NS4yMTIwNTMxOTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAzMDQyOTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgRGV2aWNlIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXNuJ3QgdGllZCB0byBhbnkgcGFydGljdWxhciBoYXJkd2FyZSBjb21wb25lbnQ7IGl0J3MgYSB2aXJ0dWFsIGRldmljZSBkcml2ZXIsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFRoZSB0ZXh0IG1lbnRpb25zIFwiUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLFwiIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIFwiZnV6emluZyB0YXJnZXQuXCIgVGhpcyBtb2R1bGFyaXR5IGltcGxpZXMgYSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBpbnRlcmZhY2luZyB3aXRoIGRpZmZlcmVudCB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuIFRoZSBjb3JlIGZ1bmN0aW9uIG9mIGludGVyZXN0IGFwcGVhcnMgdG8gYmUgYHJtbmV0X2NoYW5nZWxpbmtgLiBUaW1lIHRvIGNoZWNrIHdoZXRoZXIgaXTigJlzIGV4cG9ydGVkIG9yIHN0YXRpYzsgdGhhdCdsbCBkZXRlcm1pbmUgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBob29rIGludG8gYW5kIGFuYWx5emUuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBhdmVudWUgZm9yIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQ4LjcxNTA5OTU1NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNTczNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yODA9c3RhdGljIGludCBybW5ldF9ydG5sX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoyOTk6c3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzAwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxNi1cXHQuZ2V0X3NpemVcXHQ9IHJtbmV0X2dldF9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQxNzpcXHQuY2hhbmdlbGluayAgICAgPSBybW5ldF9jaGFuZ2VsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxOC1cXHQucG9saWN5XFx0XFx0PSBybW5ldF9wb2xpY3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQ4Ljc2MTE2MzMwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQxMTAwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcm1uZXQgTGluayBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcm1uZXRfY2hhbmdlbGlua2AgZnVuY3Rpb24sIGFuZCBpdCdzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayB0aGF0LCBnaXZlbiBpdHMgdXNlIGFzIGAuY2hhbmdlbGlua2Agd2l0aGluIGBybW5ldF9saW5rX29wc2AsIHdlIHNob3VsZCByZWFsbHkgYmUgZm9jdXNpbmcgb24gZnVuY3Rpb25zIHRoYXQgYXJlbid0IHN0YXRpYywgc3VjaCBhcyBgcm1uZXRfbmV3bGlua2Agb3IsIGZhaWxpbmcgdGhhdCwgYHJtbmV0X2NoYW5nZWxpbmtgLiBXYWl0LCBhIHNlY29uZCwgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGFjdHVhbGx5IHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBXaGljaCBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQuIEJ1dCBpdCdzIHN0aWxsIHN0YXRpYy4uLiBPa2F5LCBzbyB3aGF0IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBhdmFpbGFibGUgdG8gbWU/IExldCBtZSBnbyBhbmQgY2hlY2sgdGhlIGBybW5ldF9saW5rX29wc2Agc3RydWN0dXJlIGFnYWluLCBsZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1My4yMDIyNjcwMzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTg2MDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0zNzg9c3RhdGljIGludCBybW5ldF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MDg6c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MDktXFx0LmtpbmRcXHRcXHQ9IFxcXCJybW5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz01MDk9c3RhdGljIGludCBfX2luaXQgcm1uZXRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjUxNzpcXHRyYyA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2cm1uZXRfbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTUxOC1cXHRpZiAocmMgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NTI1PXN0YXRpYyB2b2lkIF9fZXhpdCBybW5ldF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo1Mjc6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnJtbmV0X2xpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy01MjgtXFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXFx1MDAyNnJtbmV0X2Rldl9ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaD0zMz1zdHJ1Y3Qgcm1uZXRfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaC01NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaDo1NjpleHRlcm4gc3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYz0yOTg9aW50IHJtbmV0X3ZuZF9uZXdsaW5rKHU4IGlkLCBzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jOjMzMzpcXHRcXHRybW5ldF9kZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMgPSBcXHUwMDI2cm1uZXRfbGlua19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1My4yNDg4NTgwMjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMDU0NDA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyB0aGUgRnVuY3Rpb24gUG9pbnRlciBmb3IgTmV0d29yayBMaW5rIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCdzIGJlaW5nIHRyZWF0ZWQgbGlrZSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQncyBmaW5lIGluIG1hbnkgY2FzZXMsIGVzcGVjaWFsbHkgaWYgaXQncyBub3QgYmVpbmcgaW5saW5lZC4gSG93ZXZlciwgSSdtIGNvbmNlcm5lZCB0aGF0IHN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgcmVzb2x2aW5nIGEgc3RhdGljIGZ1bmN0aW9uIGRpcmVjdGx5LiBBbHRob3VnaCwgd2FpdCwgaXQgKnNob3VsZCogYmUgYWJsZSB0byBpZiB0aGUgc3ltYm9sIGlzIGluIHRoZSB0YWJsZS4gSG1tLiBUaGUgZG9jdW1lbnRhdGlvbiBkaWQgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVycywgdGhvdWdoLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUuIExldCBtZSBzZWUuLi4gcGVyaGFwcyB0aGVyZSdzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcz8gSG93IGFib3V0IGBybW5ldF9uZXdsaW5rYD8gVGhhdCAqc291bmRzKiBsaWtlIGl0IGNvdWxkIGJlIHJlbGF0ZWQuIFRpbWUgdG8gY3JhY2sgb3BlbiBgcm1uZXRfY29uZmlnLmNgIGFuZCBzZWUgaWYgdGhhdCdzIGEgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1OC4zNzk0MDQ1NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTE2NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9OTE9c3RhdGljIHZvaWQgcm1uZXRfdW5yZWdpc3Rlcl9icmlkZ2Uoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTIwOnN0YXRpYyBpbnQgcm1uZXRfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTEyMS1cXHRcXHRcXHQgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTQwOD1zdHJ1Y3QgcnRubF9saW5rX29wcyBybW5ldF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDEzLVxcdC52YWxpZGF0ZVxcdD0gcm1uZXRfcnRubF92YWxpZGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTQ6XFx0Lm5ld2xpbmtcXHQ9IHJtbmV0X25ld2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE1LVxcdC5kZWxsaW5rXFx0PSBybW5ldF9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1OC40MjY5MjM5NzNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMTA3NzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFJNTkVUIExpbmsgTWFuYWdlbWVudCoqXG5cbkhtbSwgc28gYm90aCBgcm1uZXRfbmV3bGlua2AgYW5kIGBybW5ldF9jaGFuZ2VsaW5rYCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCdzIGEgY29tbW9uIHBhdHRlcm4gaW4ga2VybmVsIG5ldHdvcmtpbmcsIHVzdWFsbHkgaW5kaWNhdGluZyB0aGV5J3JlIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoZSBybW5ldCBzdWJzeXN0ZW0uIEJ1dCB0aGUgZm9jdXMgaGVyZSBpcyBhYm91dCBSTU5FVCBsaW5rIG1hbmFnZW1lbnQgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgc3RhdGljLiBUaGlzIG1ha2VzIHNlbnNlLlxuXG5CdXQgd2FpdCwgd2hhdCBhYm91dCBgcm1uZXRfdm5kX25ld2xpbmtgPyBUaGF0IG5hbWUgaXMgaW50ZXJlc3RpbmcsIGFuZCB0aGUgbWVudGlvbiBvZiBgcm1uZXRfdm5kLmNgIGlzIGltcG9ydGFudCB0byB0aGUgY29udGV4dCBvZiBteSB0aG91Z2h0cy4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyByb3V0aW5lIGlzIG5vdCBzdGF0aWMgb3IgYXQgdGhlIHZlcnkgbGVhc3QgaXMgbm90IGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSBvdGhlciByb3V0aW5lcy4gVGhhdCBmaWxlbmFtZSBwb2ludHMgdG8gdGhlIFZlbmRvci1TcGVjaWZpYyBOZXR3b3JrIERldmljZSBpbnRlcmZhY2UsIHJpZ2h0PyBJcyB0aGF0IGZ1bmN0aW9uIGF2YWlsYWJsZSB0byBhbm90aGVyIGxheWVyLCBzdWNoIGFzIHZlbmRvciBzcGVjaWZpYyBtb2RlbSBkcml2ZXJzP1xuXG5UaGlzIGNvdWxkIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2ZW5kb3JzIGV4dGVuZCBvciBjdXN0b21pemUgcm1uZXQuIEkgbmVlZCB0byBkaWcgaW50byBgcm1uZXRfdm5kX25ld2xpbmtgIGFuZCBpdHMgY29udGV4dCB3aXRoaW4gYHJtbmV0X3ZuZC5jYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgcHVibGljLWZhY2luZyBBUEkgb3IgaWYgaXQncyBzdGlsbCBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlLiBUaGlzIGlzIGEgdmVyeSBpbnRlcmVzdGluZyBhdmVudWUgb2YgZXhwbG9yYXRpb24gdGhhdCBJIG5lZWQgdG8gZG8gcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcwNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ4OjA0LjEzODAwMzc3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3OTAzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm1uZXRfdm5kX25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTEyMD1zdGF0aWMgaW50IHJtbmV0X25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTE1Ni1cXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTU3OlxcdGVyciA9IHJtbmV0X3ZuZF9uZXdsaW5rKG11eF9pZCwgZGV2LCBwb3J0LCByZWFsX2RldiwgZXAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMTU4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYz0yNzI9dm9pZCBybW5ldF92bmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYzoyOTg6aW50IHJtbmV0X3ZuZF9uZXdsaW5rKHU4IGlkLCBzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5OS1cXHRcXHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5oPTEwPWludCBybW5ldF92bmRfZG9fZmxvd19jb250cm9sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5oOjExOmludCBybW5ldF92bmRfbmV3bGluayh1OCBpZCwgc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaC0xMi1cXHRcXHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MDQuMTg2Nzk5NTk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDI5MDgyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIFJNTkVUIENoYW5nZXMgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYHJtbmV0X2NoYW5nZWxpbmtgIGhlcmUg4oCTIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBUaGUgZ29vZCBuZXdzIGlzLCBpdCdzIHN0YXRpYywgd2hpY2ggaXMgaWRlYWwuIFRoYXQgbWVhbnMgSSBjYW4gY29uZmlkZW50bHkgZGVzaWduYXRlIGJvdGggYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfbmV3bGlua2AgYXMgRm9jdXNTeW1ib2xzIHdpdGhpbiBTeXprYWxsZXIuIEl0J3MgcGVyZmVjdGx5IGNhcGFibGUgb2YgaGFuZGxpbmcgc3RhdGljIGZ1bmN0aW9ucyBhcyBsb25nIGFzIHRoZXkgYXJlbid0IGlubGluZWQsIGFuZCBzaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFzc2lnbmVkIHRocm91Z2ggYSBzdHJ1Y3Qgb2YgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgZGVmaW5pdGVseSAqYXJlbid0KiBpbmxpbmVkLiBUaGlzIG1ha2VzIGludGVncmF0aW9uIG11Y2ggY2xlYW5lci5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIEl0IGxvb2tzIGxpa2UgYFJNTkVUYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGZsYWcgd2UncmUgZGVhbGluZyB3aXRoLiBTbywgdGhhdCBtZWFucyBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgYmUgc2V0IHRvIGBSTU5FVGAgaW4gdGhlIFN5emthbGxlciBjb25maWd1cmF0aW9uLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwcm9qZWN0IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgbmVlZCBhdHRlbnRpb24uIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIHRvIGluY2x1ZGUgdG8gbWFrZSBzdXJlIFN5emthbGxlciBoYXMgZXZlcnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0ODowOC43Mjk3MTA4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNTUxOTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MDguNzc4Nzc2MjY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTk2ODc5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kgQW5vbWFseSBpbiB0aGUgS2NvbmZpZyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IHRoaXMgYFJNTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc29tZXRoaW5nIGlzbid0IHF1aXRlIGNsaWNraW5nLiBJdCdzIHN1cHBvc2VkIHRvIGJlIGEgY29yZSBjb21wb25lbnQgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIEkgd291bGQgaGF2ZSBleHBlY3RlZCBzb21lIGRlcGVuZGVuY2llcy4gVGhlIEtjb25maWcgc3RydWN0dXJlIGxvb2tzIGEgYml0Li4uY2xlYW4sIHN1cnByaXNpbmdseSBzby4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgcG9zc2libGUgSSdtIG1pc3JlbWVtYmVyaW5nIHRoZSBkZXBlbmRlbmNpZXMsIG9yIHBlcmhhcHMgYSByZWNlbnQgY2hhbmdlIGludHJvZHVjZWQgYSBjb25maWd1cmF0aW9uIG92ZXJzaWdodC4gVGltZSB0byBkaXZlIGJhY2sgaW4gYW5kIHNjcnV0aW5pemUgdGhlIGJ1aWxkIGVudmlyb25tZW50LiBUaGlzIGNvdWxkIGJlIGFuIGltcG9ydGFudCBmaW5kLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTM1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MTIuMTc4NDY3MjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSTU5FVCBNQVAgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgUk1ORVRcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJSbU5ldCBNQVAgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCBuXFxuICAgOTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBzZWxlY3QgdGhpcywgeW91IHdpbGwgZW5hYmxlIHRoZSBSTU5FVCBtb2R1bGUgd2hpY2ggaXMgdXNlZFxcbiAgMTI6XFx0XFx0ICBmb3IgaGFuZGxpbmcgZGF0YSBpbiB0aGUgbXVsdGlwbGV4aW5nIGFuZCBhZ2dyZWdhdGlvbiBwcm90b2NvbCAoTUFQKVxcbiAgMTM6XFx0XFx0ICBmb3JtYXQgaW4gdGhlIGVtYmVkZGVkIGRhdGEgcGF0aC4gUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG9cXG4gIDE0OlxcdFxcdCAgYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0ODoxMi4xNzg1MzgxOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQzNDg1MzQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY3kgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIG1vZHVsZSBkb2Vzbid0IGV4cGxpY2l0bHkgZGVjbGFyZSBhIGBkZXBlbmRzIG9uYCBjbGF1c2UsIHdoaWNoIGlzIGEgYml0IHVudXN1YWwuIEJ1dCwgaXQncyBsb2NhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdgIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgS2NvbmZpZyBmaWxlcyBvZnRlbiB1c2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gaW1wbHkgZGVwZW5kZW5jaWVzLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgYXQgdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB0aGUgcmVsYXRpb25zaGlwcyBhcmUgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZGlyZWN0bHkgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MTUuNjEzMzkzNjg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUXVhbGNvbW0gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgUXVhbGNvbW0gY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcXG4gIDE1OlxcdFxcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgUUNBNzAwMFxcbiAgMjA6XFx0XFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MTUuNjEzNDU1MDQ3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjExODk0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUXVhbGNvbW0gTmV0d29yayBWZW5kb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBJIHNlZSB0aGUgZnVuY3Rpb25hbGl0eSBJJ20gaW50ZXJlc3RlZCBpbiBpcyBuZXN0bGVkIHVuZGVyIGFuIGBpZiBORVRfVkVORE9SX1FVQUxDT01NYCBjb25kaXRpb25hbC4gU28sIHRoZSBmaXJzdCBrZXkgdGFrZWF3YXkgaXMgdGhhdCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAgKm11c3QqIGJlIGRlZmluZWQgZm9yIHRoaXMgc2VjdGlvbiB0byBiZSBhY3RpdmUuIFRoYXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcHJlcmVxdWlzaXRlLCBidXQgaXQgYmVncyB0aGUgcXVlc3Rpb24g4oCTIHdoYXQgZXhhY3RseSAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvdGhlciBkZWZpbmVzLCBvciBoYXJkd2FyZSBwbGF0Zm9ybSBzZXR0aW5ncyB0aGF0IGluZGlyZWN0bHkgdHJpZ2dlciBgTkVUX1ZFTkRPUl9RVUFMQ09NTWA/IE9yIGlzIGl0IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBmZWF0dXJlIHNldCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIEknbSBpbnRyb2R1Y2luZyAob3IgcmVtb3ZpbmcpIGlmIEkgbWFuaXB1bGF0ZSBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIGRlZmluaXRpb24gYW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToxOS43MzQ2NDY3MzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTg0MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVkVORE9SX1FVQUxDT01NXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWctNy1cXHRib29sIFxcXCJRdWFsY29tbSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToxOS43Nzk4MzQxMTJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAwMjg3OTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUk1ORVQgQ2FwYWJpbGl0eSBDaGVjayBGaXgqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGRlZmF1bHRzIHRvIGB5YCwgc28gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIEdvb2QgdG8ga25vdy4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBhcHBlYXJzIHRvIGJlIGlzb2xhdGVkIHRvIGBybW5ldF9jaGFuZ2VsaW5rYC4gWWVwLCBqdXN0IHRoYXQgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhpczpcblxuYGBgY1xuXHQvKlxuXHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXG5cdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuXHQgKiBtYXkgbGl2ZSBpbiBhIGRpZmZlcmVudCBuZXRucy5cblx0ICovXG5cdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcblx0XHRyZXR1cm4gLUVQRVJNO1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGFkZGl0aW9uLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIG1pc3NpbmcgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkncmUgZW5zdXJpbmcgYENBUF9ORVRfQURNSU5gIGlzIHByb3Blcmx5IGVuZm9yY2VkIGFjcm9zcyBuZXQgbmFtZXNwYWNlcyB3aGVuIGBybW5ldF9jaGFuZ2VsaW5rYCBvcGVyYXRlcyBvbiBgcmVhbF9kZXZgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZpeCBkb2VzIGl0cyBqb2IgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYXR0YWNrIHZlY3RvcnMgb3IgYnlwYXNzZXMuIEl0J3MgYSBjcml0aWNhbCBhcmVhIGZvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMuXG5cbkZvY3VzaW5nIGluLCBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF9uZXdsaW5rYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMsIGFuZCB3ZSBhcmUgd29ya2luZyB3aXRoIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBlbmFibGVkLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGBybW5ldF9jaGFuZ2VsaW5rYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGlzbuKAmXQgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBjaGVjaz8gQWgsIGBybW5ldF92bmRfbmV3bGlua2AgaXMgbm9uLXN0YXRpYy4gTGV04oCZcyBpbnZlc3RpZ2F0ZSB3aGV0aGVyIGBybW5ldF9jaGFuZ2VsaW5rYCBjYWxscyBhbnl0aGluZyBub24tc3RhdGljLCBsaWtlIGBybW5ldF92bmRfbmV3bGlua2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29kZSByZXZpZXcgYXBwcm9hY2gsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBpbnRlcmNvbm5lY3Rpb25zIG9yIHNpZGUtZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE0OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToyNi43ODI3MTU2NzFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTQ3OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X2NoYW5nZWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9MjgwPXN0YXRpYyBpbnQgcm1uZXRfcnRubF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6Mjk5OnN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTMwMC1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTYtXFx0LmdldF9zaXplXFx0PSBybW5ldF9nZXRfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTc6XFx0LmNoYW5nZWxpbmsgICAgID0gcm1uZXRfY2hhbmdlbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTgtXFx0LnBvbGljeVxcdFxcdD0gcm1uZXRfcG9saWN5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToyNi44Mjc4Njc3MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk3OTQzMzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkRpdmluZyBpbnRvIGBybW5ldF9jaGFuZ2VsaW5rYCoqXG5cbkFscmlnaHQsIGxldCdzIHB1bGwgdXAgYHJtbmV0X2NoYW5nZWxpbmtgLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCdzIGdvaW5nIHRvIGJlIGluIGhlcmUuIFRoaXMgZnVuY3Rpb24sIGdpdmVuIGl0cyBuYW1lLCBsaWtlbHkgaGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBSZW1vdGUgTW9iaWxlIE5ldHdvcmsgSW50ZXJmYWNlIChSTU5FVCkgbGlua3MuIEknbSBndWVzc2luZyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cywgYnJpbmdpbmcgYW4gaW50ZXJmYWNlIHVwIG9yIGRvd24sIG9yIHBlcmhhcHMgZXZlbiBoYW5kbGluZyBsaW5rLWxldmVsIGV2ZW50cy4gSSBiZXQgaXQgdGFrZXMgYSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY2hhbmdlcyBhcyBpbnB1dCDigJMgbWF5YmUgYSBkZXNjcmlwdG9yIHNwZWNpZnlpbmcgdGhlIG5ldyBNVFUsIElQIGFkZHJlc3MsIG9yIGxpbmsgc3RhdGUuIFByb2JhYmx5IHVzZXMgc29tZSBzb3J0IG9mIG5ldGxpbmsgaW50ZXJmYWNlLCBvciBwZXJoYXBzIGlvY3RscyBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoZSBmdW5jdGlvbi4gUk1ORVQgaXMgY3J1Y2lhbCBmb3IgZGF0YSBjb25uZWN0aXZpdHkgb24gUXVhbGNvbW0gcGxhdGZvcm1zLCBzbyBmYWlsdXJlcyBoZXJlIGFyZSBhIGJpZyBkZWFsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtb2RlbSBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgYXN5bmNocm9ub3VzIGNhbGxzIG9yIHdvcmtxdWV1ZXMgaW52b2x2ZWQuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQgYW5kIHNlZSBpZiBteSBhc3N1bXB0aW9ucyBob2xkIHRydWUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMjQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OTozMS44MDczMDQ1MDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjk5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjk5OlxcdHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiAzMDA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4gMzAxOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDMwMjpcXHR7XFxuIDMwMzpcXHRcXHRzdHJ1Y3Qgcm1uZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuIDMwNDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXY7XFxuIDMwNTpcXHRcXHRzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydDtcXG4gMzA2OlxcdFxcdHUxNiBtdXhfaWQ7XFxuIDMwNzpcXHRcXG4gMzA4OlxcdFxcdGlmICghZGV2KVxcbiAzMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJlYWxfZGV2ID0gcHJpdi1cXHUwMDNlcmVhbF9kZXY7XFxuIDMxMjpcXHRcXHRpZiAoIXJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQocmVhbF9kZXYpKVxcbiAzMTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdC8qXFxuIDMxNjpcXHRcXHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXFxuIDMxNzpcXHRcXHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcXG4gMzE4OlxcdFxcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxcbiAzMTk6XFx0XFx0ICovXFxuIDMyMDpcXHRcXHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXFxuIDMyMTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xcbiAzMjY6XFx0XFx0XFx0bXV4X2lkID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pO1xcbiAzMjc6XFx0XFxuIDMyODpcXHRcXHRcXHRpZiAobXV4X2lkICE9IHByaXYtXFx1MDAzZW11eF9pZCkge1xcbiAzMjk6XFx0XFx0XFx0XFx0c3RydWN0IHJtbmV0X2VuZHBvaW50ICplcDtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0XFx0XFx0ZXAgPSBybW5ldF9nZXRfZW5kcG9pbnQocG9ydCwgcHJpdi1cXHUwMDNlbXV4X2lkKTtcXG4gMzMyOlxcdFxcdFxcdFxcdGlmICghZXApXFxuIDMzMzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzM0OlxcdFxcbiAzMzU6XFx0XFx0XFx0XFx0aWYgKHJtbmV0X2dldF9lbmRwb2ludChwb3J0LCBtdXhfaWQpKSB7XFxuIDMzNjpcXHRcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbiAzMzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcIk1VWCBJRCBhbHJlYWR5IGV4aXN0c1xcXCIpO1xcbiAzMzg6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDMzOTpcXHRcXHRcXHRcXHR9XFxuIDM0MDpcXHRcXG4gMzQxOlxcdFxcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2ZXAtXFx1MDAzZWhsbm9kZSk7XFxuIDM0MjpcXHRcXHRcXHRcXHRobGlzdF9hZGRfaGVhZF9yY3UoXFx1MDAyNmVwLVxcdTAwM2VobG5vZGUsXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cG9ydC1cXHUwMDNlbXV4ZWRfZXBbbXV4X2lkXSk7XFxuIDM0NDpcXHRcXG4gMzQ1OlxcdFxcdFxcdFxcdGVwLVxcdTAwM2VtdXhfaWQgPSBtdXhfaWQ7XFxuIDM0NjpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VtdXhfaWQgPSBtdXhfaWQ7XFxuIDM0NzpcXHRcXHRcXHR9XFxuIDM0ODpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjMxLjgwNzM5NDI5N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc5OTIwMDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IEFuYWx5c2lzIG9mIHRoZSBgcm1uZXRgIE1vZHVsZSBNb2RpZmljYXRpb25zKipcblxuQWxyaWdodCwgc28gYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQncyAqdGhlKiBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCwgYW5kIHRoZSBvbmx5IG9uZSB0aGF0J3MgYmVlbiBjaGFuZ2VkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgdGhlIGNvcmUgb2Ygd2hhdGV2ZXIgdGhlIG1vZGlmaWNhdGlvbiBlbnRhaWxzLiBUbyBiZSB0aG9yb3VnaCwgSSdsbCBpbmNsdWRlIGl0IGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1icmFpbmVyLlxuXG5Ob3csIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBsaW5rIGNoYW5nZXMsIHdlJ2xsIG5lZWQgYSBtZWNoYW5pc20gZm9yICpjcmVhdGluZyogdGhlIGRldmljZSBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHJhdGhlciwgdGhlIGVudHJ5cG9pbnQgZm9yIHRoYXQgZnVuY3Rpb24uIGBybW5ldF92bmRfbmV3bGlua2AgZml0cyB0aGUgYmlsbCBhcyBpdCdzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVzZSBuZXcgZGV2aWNlcy4gU2luY2UgYGNoYW5nZWxpbmtgIGlzIGEgcHJlcmVxdWlzaXRlLCBJJ2xsIGFkZCB0aGF0IHRvIGBGb2N1c1N5bWJvbHNgIGFzIHdlbGwuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mIHBvdGVudGlhbCBzaWRlLWVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGVsc2UgdGhhdCBpcyBub24tc3RhdGljIGluIGBybW5ldF9jb25maWcuY2AuIFRoZXJlIGNvdWxkIGJlIG90aGVyIHJlbGF0ZWQgZW50cnkgcG9pbnRzIG9yIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNoYW5nZSwgZXZlbiBpZiB0aGV5IGFyZW4ndCBkaXJlY3RseSBtb2RpZmllZC4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBCZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0d29yayBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwMSwiT3V0cHV0VG9rZW5zIjo2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MzUuODg3MzE3MjJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDc5MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHJtbmV0X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yND1zdGF0aWMgaW50IHJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnJlYWxfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMjktLyogTmVlZHMgcnRubCBsb2NrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MzA6c3RydWN0IHJtbmV0X3BvcnQqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzEtcm1uZXRfZ2V0X3BvcnRfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MjI6c3RydWN0IHJtbmV0X3BvcnQgKnJtbmV0X2dldF9wb3J0X3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MzA6c3RydWN0IHJtbmV0X2VuZHBvaW50ICpybW5ldF9nZXRfZW5kcG9pbnQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsIHU4IG11eF9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQ0MjppbnQgcm1uZXRfYWRkX2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ0My1cXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDk2OmludCBybW5ldF9kZWxfYnJpZGdlKHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDk3LVxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MzUuOTMyODA0MjQ2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTEwMzE3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIFJNTkVUIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBybW5ldGAgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGBydG5sYCAocm91dGluZyBuZXRsaW5rKSBpbnRlcmZhY2UuIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYHJtbmV0X2FkZF9icmlkZ2VgLCBgcm1uZXRfZGVsX2JyaWRnZWAsIGBybW5ldF9nZXRfZW5kcG9pbnRgLCBgcm1uZXRfZ2V0X3BvcnRfcmN1YCwgYW5kIGBybW5ldF9nZXRfcG9ydF9ydG5sYCBhcmUgbm90IGRlY2xhcmVkIHN0YXRpYywgYnV0IHRoZSBtYWluIG9uZXMgSSdtIGludGVyZXN0ZWQgaW4gZm9yIGBydG5sYCBvcGVyYXRpb25zIGFyZSBgcm1uZXRfbmV3bGlua2AgYW5kIGBybW5ldF9jaGFuZ2VsaW5rYC5cblxuTm93LCB3aGlsZSBgcm1uZXRfY2hhbmdlbGlua2AgKmlzKiBzdGF0aWMsIGl0IGlzIGFzc2lnbmVkIHRvIGBydG5sX2xpbmtfb3BzYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGRldGFpbC4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0IHRocm91Z2ggYW4gYFJUTV9ORVdMSU5LYCBtZXNzYWdlIHdpdGggYElGTEFfSU5GT19LSU5EYCBzZXQgdG8gXCJybW5ldFwiLiBTbywgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGluZGVlZCBhIHZpYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIHdoaWNoIGlzIGdyZWF0LiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyBjb25zaWRlcnMgdGhlIGBybW5ldF92bmRfbmV3bGlua2AuXG5cbkknbSBtYWtpbmcgc3VyZSB0byBjb25zaWRlciB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zOiBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIEdvb2QsIGl0IGxvb2tzIGxpa2UgYFJNTkVUYCBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyLlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBwbGFuIGlzIHNvbGlkLiBJJ3ZlIGdvdCB0aGlzIGpzb24gY29uZmlnIGZpbGUgdGhhdCBsYXlzIG91dCBteSBhcHByb2FjaC4gSSd2ZSBzZXQgXCJXb3J0aEZ1enppbmdcIiB0byB0cnVlLCBhbmQgbXkgXCJGb2N1c1N5bWJvbHNcIiBhcmUgYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfdm5kX25ld2xpbmtgLiBJJ3ZlIGluY2x1ZGVkIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBpbiBcIkVuYWJsZUNvbmZpZ3NcIi5cblxuVGhlIFwiUmVhc29uaW5nXCIgYmVoaW5kIGFsbCBvZiB0aGlzPyBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AgdG8gc3RvcCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtZXNzaW5nIHdpdGggdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZXJlZm9yZSwgbmVlZHMgcmlnb3JvdXMgZnV6emluZyB0byBlbnN1cmUgdGhlIGNhcGFiaWxpdHkgY2hlY2sgaXMgc29saWQgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHJlZ3Jlc3Npb25zLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzkwLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OTo0Mi42ODM4MzgwNzFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTQzNTExMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIixcbiAgICBcIk5FVF9WRU5ET1JfUVVBTENPTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9jaGFuZ2VsaW5rXCIsXG4gICAgXCJybW5ldF92bmRfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIixcbiAgICBcIk5FVF9WRU5ET1JfUVVBTENPTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9jaGFuZ2VsaW5rXCIsXG4gICAgXCJybW5ldF92bmRfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjQyLjc2MzI4MDE1M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2NDI0NTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjQyLjc2Mzg1NTE1M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjYzNjY1NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTk2MzhlMTE4ZjM5NTU4NTkwNWVjNTE1N2I1Y2NmMTY2YzRhMTYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDg6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5pbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5AQCAtMzEyLDYgKzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuK1x0LypcbitcdCAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSxcbitcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuK1x0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXG4rXHQgKi9cbitcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcbiBcdHBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6NDIuNzYzODU2MDUzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjM2MTE5NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUk1ORVQgU2VjdXJpdHkgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYHJtbmV0X2NoYW5nZWxpbmsoKWAgbG9va3MgbGlrZSBhIHNvbGlkIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYSB1c2VyIHdpdGggYENBUF9ORVRfQURNSU5gIGluICpvbmUqIG5ldHdvcmsgbmFtZXNwYWNlIGZyb20gbWVzc2luZyB3aXRoIHRoZSBwb3J0IHN0YXRlIG9mIGEgYHJlYWxfZGV2YCByZXNpZGluZyBpbiAqYW5vdGhlciogbmV0bnMuIFRoaXMgaXMgYSBjb21tb24gYW5kIGltcG9ydGFudCBzZWN1cml0eSBjb25jZXJuLCBhbmQgdGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZlY3RpdmUuXG5cblRoZSBhZGRlZCBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZSgpYCBjaGVjayBpcyB0aGUga2V5LiBJdCdzIHByb3Blcmx5IHZlcmlmeWluZyBwZXJtaXNzaW9ucyBhZ2FpbnN0IHRoZSBgcmVhbF9kZXZgJ3MgbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBvbmUgd2hlcmUgdGhlIG9yaWdpbmFsIGBkZXZgIGV4aXN0cy4gTWFrZXMgc2Vuc2U7IHRoYXQncyB0aGUgdnVsbmVyYWJpbGl0eSB0aGV5J3JlIGFkZHJlc3NpbmcuXG5cbk5vdywgYXMgYW4gZXhwZXJ0LCBJJ20gYWxyZWFkeSBsb29raW5nIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgY29kZSBpdHNlbGYgaXMgY2xlYW4gYW5kIGNvbmNpc2UuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgc3RydWN0dXJlcyBpbnRyb2R1Y2VkLCBhbmQgSSBzZWUgbm8gaW5kaWNhdGlvbiBvZiBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSBjaGFuZ2UgaXMgc2ltcGx5IGEgcGVybWlzc2lvbiBjaGVjayBiZWZvcmUgdGhlIGNyaXRpY2FsIHBvcnQgc3RhdGUgbW9kaWZpY2F0aW9uLiBUaGUgY29tbWVudCBibG9jayBjbGFyaWZpZXMgdGhlIHJhdGlvbmFsZSwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSBxdWlja2x5LlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgcmVxdWlyZWQgaGVyZS4gSXQncyBhIHBlcm1pc3Npb24gY2hlY2ssIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgTmVlZHNLTVNBTj1mYWxzZWAuIEl0J3MgYSB3ZWxsLXNjb3BlZCBhbmQgd2VsbC1pbXBsZW1lbnRlZCBzZWN1cml0eSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDksIk91dHB1dFRva2VucyI6MTAyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6NTAuNDI3NDk0MjUyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 08:46:14 +0000 UTC FinishedAt: 2026-08-19 08:49:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e2466392a0b8496000e12181cb1ee1535eb0da25", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET", "NET_VENDOR_QUALCOMM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e2466392a0b8496000e12181cb1ee1535eb0da25", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET", "NET_VENDOR_QUALCOMM" ], "series_id": "963c80fb-1095-414d-8bc1-38fa675ad1ef" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rmnet_changelink", "rmnet_vnd_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDssCiAgICAmIzM0O05FVF9WRU5ET1JfUVVBTENPTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3JtbmV0X3ZuZF9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ3OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbmluZGV4IDc4ZDRkZjU1NzQwYTEuLjk3M2Q0YzQ0YTYzYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbkBAIC0zMTIsNiAmIzQzOzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLFxuJiM0MztcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuJiM0MztcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbiYjNDM7XHRcdHJldHVybiAtRVBFUk07XG4mIzQzO1xuIFx0cG9ydCA9IHJtbmV0X2dldF9wb3J0X3J0bmwocmVhbF9kZXYpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9STU5FVF9NVVhfSURdKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDssCiAgICAmIzM0O05FVF9WRU5ET1JfUVVBTENPTU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3JtbmV0X3ZuZF9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ3OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwppbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYwpAQCAtMzEyLDYgJiM0MzszMTIsMTQgQEAgc3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCiAJaWYgKCFybW5ldF9pc19yZWFsX2Rldl9yZWdpc3RlcmVkKHJlYWxfZGV2KSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKJiM0MzsJLyoKJiM0MzsJICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLAomIzQzOwkgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2gKJiM0MzsJICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpCiYjNDM7CQlyZXR1cm4gLUVQRVJNOwomIzQzOwogCXBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTsKIAogCWlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgcm1uZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgcm1uZXRfY29uZmlnLmNgIGluIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgbm93IGVuc3VyaW5nIHRoYXQgd2hvZXZlciYjMzk7cyB0cnlpbmcgdG8gdHdlYWsgdGhlIGxpbmsgcHJvcGVydGllcyBoYXMgYENBUF9ORVRfQURNSU5gIHByaXZpbGVnZXMgaW4gdGhlICp0YXJnZXQqIG5ldHdvcmsgbmFtZXNwYWNlLCBub3QganVzdCB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgc21hcnQsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgcHJpdmlsZWdlIGVzY2FsYXRpb24uIFRoZSBjb21tZW50IGNsYXJpZmllcyB0aGUgJiMzNDtyZWFsX2RldiYjMzQ7IGxpdmVzIGluIHRoZSBkaWZmZXJlbnQgbmV0bnMgdG8gd2hpY2ggdGhlIGNhcGFiaWxpdGllcyBjaGVjayBub3cgcmVmZXJzLiBTbywgZnVuY3Rpb25hbGx5LCB0aGlzIGNoYW5nZSBpcyBhIHNvbGlkIHNlY3VyaXR5IGltcHJvdmVtZW50LgoKTXkgbmV4dCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBgcm1uZXRgIGlzLCBhZnRlciBhbGwsIGEgdmlydHVhbCBuZXR3b3JrIGRldmljZSBkcml2ZXIuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXTigJlzIGNyZWF0ZWQgYW5kIG1hbmFnZWQgdGhyb3VnaCBuZXRsaW5rLCBsaWtlbHkgdmlhIHJ0bmwuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIGF0dGFjayBzdXJmYWNlcy4gTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYHJtbmV0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIHNldCB1cCBhbmQgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBjcmFmdGVkIG5ldGxpbmsgbWVzc2FnZXMsIHBvdGVudGlhbGx5IGJ5cGFzc2luZyB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgY2FwYWJpbGl0eSBjaGVjay4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUk1ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBSTU5FVGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHNob3VsZCBwcm9iYWJseSBkbyBhIHF1aWNrIHNjYW4gb2YgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoaXMgYFJNTkVUYCB0aGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGlzIHByb2plY3QgaXMgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgc2VhcmNoLiBMZXQmIzM5O3MgbG9vayBmb3IgaW5zdGFuY2VzIG9mIGBSTU5FVGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBkZXBlbmRlbmNpZXMuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gZm9ybXVsYXRlIGEgbXVjaCBiZXR0ZXIgcGxhbi4gSSBiZXQgaXQgaXMgZGVmaW5lZCBpbiByZWxhdGlvbiB0byBhIHNwZWNpZmljIGludGVyZmFjZSBvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJNTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWc6NjptZW51Y29uZmlnIFJNTkVUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtSbU5ldCBNQVAgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFJNTkVUIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBgUk1ORVRgJiMzOTtzIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIG91dCBpdHMgbGluZWFnZSwgc2VlaW5nIHdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBzZXJ2aWNlcyBpdCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgbm90IGp1c3QgdGhlIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGJ1dCBhbHNvIGNvbnNpZGVyIHRoZSB0cmFuc2l0aXZlIG9uZXPigJR3aGF0IGRvZXMgKnRob3NlKiBkZXBlbmQgb24/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcywgYW5kIGRlYnVnZ2luZyBhbnkgZnV0dXJlIGlzc3Vlcy4gVGhpcyBpcyBhIGNvbW1vbiBmaXJzdCBzdGVwLCBlc3BlY2lhbGx5IHdoZW4gd29ya2luZyB3aXRoIGxlZ2FjeSBzeXN0ZW1zLiBJJiMzOTtsbCBuZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gbWFuZGF0b3J5IGRlcGVuZGVuY2llcyBhbmQgdGhvc2UgdGhhdCBhcmUgb3B0aW9uYWwgb3IgY29uZGl0aW9uYWxseSBsb2FkZWQuIFRoYXQmIzM5O2xsIGxldCBtZSBwcmlvcml0aXplIHdoaWNoIHRvIGZvY3VzIG9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgbWlnaHQgYmUgbmVlZGVkIGZvciBkaWZmZXJlbnQgdXNlIGNhc2VzLiBJJiMzOTtsbCBtYWtlIGEgbm90ZSBvZiB0aGUgdmVyc2lvbnMgb2YgYW55IGV4dGVybmFsIGNvbXBvbmVudHMgYW5kIGNoZWNrIGlmIHRoZXkgYXJlIHVwIHRvIGRhdGUgYW5kIHBhdGNoZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBSTU5FVCBNQVAgZHJpdmVyXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUk1ORVRcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JtTmV0IE1BUCBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgblxuICAgOTpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcbiAgMTI6XHRcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcbiAgMTM6XHRcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXG4gIDE0Olx0XHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBEZXZpY2UgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXNuJiMzOTt0IHRpZWQgdG8gYW55IHBhcnRpY3VsYXIgaGFyZHdhcmUgY29tcG9uZW50OyBpdCYjMzk7cyBhIHZpcnR1YWwgZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlIHRleHQgbWVudGlvbnMgJiMzNDtSTU5FVCBkZXZpY2VzIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgSVAgbW9kZSBwaHlzaWNhbCBkZXZpY2UsJiMzNDsgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBUaGlzIG1vZHVsYXJpdHkgaW1wbGllcyBhIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGludGVyZmFjaW5nIHdpdGggZGlmZmVyZW50IHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgbmV0d29yayBjb25maWd1cmF0aW9ucy4gVGhlIGNvcmUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgYXBwZWFycyB0byBiZSBgcm1uZXRfY2hhbmdlbGlua2AuIFRpbWUgdG8gY2hlY2sgd2hldGhlciBpdOKAmXMgZXhwb3J0ZWQgb3Igc3RhdGljOyB0aGF0JiMzOTtsbCBkZXRlcm1pbmUgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBob29rIGludG8gYW5kIGFuYWx5emUuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBhdmVudWUgZm9yIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JtbmV0X2NoYW5nZWxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yODA9c3RhdGljIGludCBybW5ldF9ydG5sX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoyOTk6c3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0zMDAtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTYtXHQuZ2V0X3NpemVcdD0gcm1uZXRfZ2V0X3NpemUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTc6XHQuY2hhbmdlbGluayAgICAgPSBybW5ldF9jaGFuZ2VsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE4LVx0LnBvbGljeVx0XHQ9IHJtbmV0X3BvbGljeSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHJtbmV0IExpbmsgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcm1uZXRfY2hhbmdlbGlua2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgdGhhdCwgZ2l2ZW4gaXRzIHVzZSBhcyBgLmNoYW5nZWxpbmtgIHdpdGhpbiBgcm1uZXRfbGlua19vcHNgLCB3ZSBzaG91bGQgcmVhbGx5IGJlIGZvY3VzaW5nIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZW4mIzM5O3Qgc3RhdGljLCBzdWNoIGFzIGBybW5ldF9uZXdsaW5rYCBvciwgZmFpbGluZyB0aGF0LCBgcm1uZXRfY2hhbmdlbGlua2AuIFdhaXQsIGEgc2Vjb25kLCBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYWN0dWFsbHkgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgcmlnaHQ/IFdoaWNoIG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQuIEJ1dCBpdCYjMzk7cyBzdGlsbCBzdGF0aWMuLi4gT2theSwgc28gd2hhdCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlIHRvIG1lPyBMZXQgbWUgZ28gYW5kIGNoZWNrIHRoZSBgcm1uZXRfbGlua19vcHNgIHN0cnVjdHVyZSBhZ2FpbiwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cm1uZXRfbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9Mzc4PXN0YXRpYyBpbnQgcm1uZXRfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDA4OnN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MDktXHQua2luZFx0XHQ9IFwmIzM0O3JtbmV0XCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTUwOT1zdGF0aWMgaW50IF9faW5pdCBybW5ldF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NTE3Olx0cmMgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2cm1uZXRfbGlua19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE4LVx0aWYgKHJjICE9IDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz01MjU9c3RhdGljIHZvaWQgX19leGl0IHJtbmV0X2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTUyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo1Mjc6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZybW5ldF9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy01MjgtXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZybW5ldF9kZXZfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oPTMzPXN0cnVjdCBybW5ldF9wb3J0IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaC01NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oOjU2OmV4dGVybiBzdHJ1Y3QgcnRubF9saW5rX29wcyBybW5ldF9saW5rX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5oLTU3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jPTI5OD1pbnQgcm1uZXRfdm5kX25ld2xpbmsodTggaWQsIHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM6MzMzOlx0XHRybW5ldF9kZXYtXHUwMDNlcnRubF9saW5rX29wcyA9IFx1MDAyNnJtbmV0X2xpbmtfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIHRoZSBGdW5jdGlvbiBQb2ludGVyIGZvciBOZXR3b3JrIExpbmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBiZWluZyB0cmVhdGVkIGxpa2UgYSBmdW5jdGlvbiBwb2ludGVyLiBUaGF0JiMzOTtzIGZpbmUgaW4gbWFueSBjYXNlcywgZXNwZWNpYWxseSBpZiBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZC4gSG93ZXZlciwgSSYjMzk7bSBjb25jZXJuZWQgdGhhdCBzeXprYWxsZXIgbWlnaHQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyBhIHN0YXRpYyBmdW5jdGlvbiBkaXJlY3RseS4gQWx0aG91Z2gsIHdhaXQsIGl0ICpzaG91bGQqIGJlIGFibGUgdG8gaWYgdGhlIHN5bWJvbCBpcyBpbiB0aGUgdGFibGUuIEhtbS4gVGhlIGRvY3VtZW50YXRpb24gZGlkIHNheSB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlcnMsIHRob3VnaC4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIHNlZS4uLiBwZXJoYXBzIHRoZXJlJiMzOTtzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcz8gSG93IGFib3V0IGBybW5ldF9uZXdsaW5rYD8gVGhhdCAqc291bmRzKiBsaWtlIGl0IGNvdWxkIGJlIHJlbGF0ZWQuIFRpbWUgdG8gY3JhY2sgb3BlbiBgcm1uZXRfY29uZmlnLmNgIGFuZCBzZWUgaWYgdGhhdCYjMzk7cyBhIHZpYWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JtbmV0X25ld2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz05MT1zdGF0aWMgdm9pZCBybW5ldF91bnJlZ2lzdGVyX2JyaWRnZShzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoxMjA6c3RhdGljIGludCBybW5ldF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMjEtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDEzLVx0LnZhbGlkYXRlXHQ9IHJtbmV0X3J0bmxfdmFsaWRhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTQ6XHQubmV3bGlua1x0PSBybW5ldF9uZXdsaW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE1LVx0LmRlbGxpbmtcdD0gcm1uZXRfZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBSTU5FVCBMaW5rIE1hbmFnZW1lbnQqKgoKSG1tLCBzbyBib3RoIGBybW5ldF9uZXdsaW5rYCBhbmQgYHJtbmV0X2NoYW5nZWxpbmtgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGF0JiMzOTtzIGEgY29tbW9uIHBhdHRlcm4gaW4ga2VybmVsIG5ldHdvcmtpbmcsIHVzdWFsbHkgaW5kaWNhdGluZyB0aGV5JiMzOTtyZSBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgcm1uZXQgc3Vic3lzdGVtLiBCdXQgdGhlIGZvY3VzIGhlcmUgaXMgYWJvdXQgUk1ORVQgbGluayBtYW5hZ2VtZW50IGFuZCB0aGUgZmFjdCB0aGF0IHRoZXkgYXJlIHN0YXRpYy4gVGhpcyBtYWtlcyBzZW5zZS4KCkJ1dCB3YWl0LCB3aGF0IGFib3V0IGBybW5ldF92bmRfbmV3bGlua2A/IFRoYXQgbmFtZSBpcyBpbnRlcmVzdGluZywgYW5kIHRoZSBtZW50aW9uIG9mIGBybW5ldF92bmQuY2AgaXMgaW1wb3J0YW50IHRvIHRoZSBjb250ZXh0IG9mIG15IHRob3VnaHRzLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIHJvdXRpbmUgaXMgbm90IHN0YXRpYyBvciBhdCB0aGUgdmVyeSBsZWFzdCBpcyBub3QgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIG90aGVyIHJvdXRpbmVzLiBUaGF0IGZpbGVuYW1lIHBvaW50cyB0byB0aGUgVmVuZG9yLVNwZWNpZmljIE5ldHdvcmsgRGV2aWNlIGludGVyZmFjZSwgcmlnaHQ/IElzIHRoYXQgZnVuY3Rpb24gYXZhaWxhYmxlIHRvIGFub3RoZXIgbGF5ZXIsIHN1Y2ggYXMgdmVuZG9yIHNwZWNpZmljIG1vZGVtIGRyaXZlcnM/CgpUaGlzIGNvdWxkIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2ZW5kb3JzIGV4dGVuZCBvciBjdXN0b21pemUgcm1uZXQuIEkgbmVlZCB0byBkaWcgaW50byBgcm1uZXRfdm5kX25ld2xpbmtgIGFuZCBpdHMgY29udGV4dCB3aXRoaW4gYHJtbmV0X3ZuZC5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHB1YmxpYy1mYWNpbmcgQVBJIG9yIGlmIGl0JiMzOTtzIHN0aWxsIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2UuIFRoaXMgaXMgYSB2ZXJ5IGludGVyZXN0aW5nIGF2ZW51ZSBvZiBleHBsb3JhdGlvbiB0aGF0IEkgbmVlZCB0byBkbyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF92bmRfbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0xMjA9c3RhdGljIGludCBybW5ldF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMTU2LVx0cG9ydCA9IHJtbmV0X2dldF9wb3J0X3J0bmwocmVhbF9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTU3Olx0ZXJyID0gcm1uZXRfdm5kX25ld2xpbmsobXV4X2lkLCBkZXYsIHBvcnQsIHJlYWxfZGV2LCBlcCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTE1OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM9MjcyPXZvaWQgcm1uZXRfdm5kX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMjk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmM6Mjk4OmludCBybW5ldF92bmRfbmV3bGluayh1OCBpZCwgc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5OS1cdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmg9MTA9aW50IHJtbmV0X3ZuZF9kb19mbG93X2NvbnRyb2woc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGVuYWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaDoxMTppbnQgcm1uZXRfdm5kX25ld2xpbmsodTggaWQsIHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaC0xMi1cdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIFJNTkVUIENoYW5nZXMgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgcm1uZXRfY2hhbmdlbGlua2AgaGVyZSDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZC4gVGhlIGdvb2QgbmV3cyBpcywgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCBpcyBpZGVhbC4gVGhhdCBtZWFucyBJIGNhbiBjb25maWRlbnRseSBkZXNpZ25hdGUgYm90aCBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF9uZXdsaW5rYCBhcyBGb2N1c1N5bWJvbHMgd2l0aGluIFN5emthbGxlci4gSXQmIzM5O3MgcGVyZmVjdGx5IGNhcGFibGUgb2YgaGFuZGxpbmcgc3RhdGljIGZ1bmN0aW9ucyBhcyBsb25nIGFzIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLCBhbmQgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0aHJvdWdoIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGRlZmluaXRlbHkgKmFyZW4mIzM5O3QqIGlubGluZWQuIFRoaXMgbWFrZXMgaW50ZWdyYXRpb24gbXVjaCBjbGVhbmVyLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uLiBJdCBsb29rcyBsaWtlIGBSTU5FVGAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZyBmbGFnIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIFNvLCB0aGF0IG1lYW5zIGBFbmFibGVDb25maWdzYCBzaG91bGQgYWJzb2x1dGVseSBiZSBzZXQgdG8gYFJNTkVUYCBpbiB0aGUgU3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcHJvamVjdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBuZWVkIGF0dGVudGlvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHRvIGluY2x1ZGUgdG8gbWFrZSBzdXJlIFN5emthbGxlciBoYXMgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBEZXBlbmRlbmN5IEFub21hbHkgaW4gdGhlIEtjb25maWcqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJNTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc29tZXRoaW5nIGlzbiYjMzk7dCBxdWl0ZSBjbGlja2luZy4gSXQmIzM5O3Mgc3VwcG9zZWQgdG8gYmUgYSBjb3JlIGNvbXBvbmVudCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIHNvbWUgZGVwZW5kZW5jaWVzLiBUaGUgS2NvbmZpZyBzdHJ1Y3R1cmUgbG9va3MgYSBiaXQuLi5jbGVhbiwgc3VycHJpc2luZ2x5IHNvLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgcG9zc2libGUgSSYjMzk7bSBtaXNyZW1lbWJlcmluZyB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGEgcmVjZW50IGNoYW5nZSBpbnRyb2R1Y2VkIGEgY29uZmlndXJhdGlvbiBvdmVyc2lnaHQuIFRpbWUgdG8gZGl2ZSBiYWNrIGluIGFuZCBzY3J1dGluaXplIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgZmluZCwgYW5kIEkgbmVlZCB0byBjb25maXJtIHRoZSBleHBlY3RlZCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUk1ORVQgTUFQIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFJNTkVUXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSbU5ldCBNQVAgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IG5cbiAgIDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IHNlbGVjdCB0aGlzLCB5b3Ugd2lsbCBlbmFibGUgdGhlIFJNTkVUIG1vZHVsZSB3aGljaCBpcyB1c2VkXG4gIDEyOlx0XHQgIGZvciBoYW5kbGluZyBkYXRhIGluIHRoZSBtdWx0aXBsZXhpbmcgYW5kIGFnZ3JlZ2F0aW9uIHByb3RvY29sIChNQVApXG4gIDEzOlx0XHQgIGZvcm1hdCBpbiB0aGUgZW1iZWRkZWQgZGF0YSBwYXRoLiBSTU5FVCBkZXZpY2VzIGNhbiBiZSBhdHRhY2hlZCB0b1xuICAxNDpcdFx0ICBhbnkgSVAgbW9kZSBwaHlzaWNhbCBkZXZpY2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRXhhbWluaW5nIEtjb25maWcgRGVwZW5kZW5jeSBMb2NhdGlvbioqCgpPa2F5LCBzbyB0aGlzIG1vZHVsZSBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGRlY2xhcmUgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCB3aGljaCBpcyBhIGJpdCB1bnVzdWFsLiBCdXQsIGl0JiMzOTtzIGxvY2F0ZWQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBLY29uZmlnIGZpbGVzIG9mdGVuIHVzZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byBpbXBseSBkZXBlbmRlbmNpZXMuIExldCBtZSBnbyB0YWtlIGEgbG9vayBhdCB0aGF0IGZpbGUgYW5kIHNlZSB3aGF0IHRoZSByZWxhdGlvbnNoaXBzIGFyZSBkZWZpbmVkIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgbWlnaHQgaW5kaXJlY3RseSBnb3Zlcm4gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBRdWFsY29tbSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX1FVQUxDT01NXG4gICA3Olx0XHRib29sIFwmIzM0O1F1YWxjb21tIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBRdWFsY29tbSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxuICAxNTpcdFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNjpcdFxuICAxNzpcdGlmIE5FVF9WRU5ET1JfUVVBTENPTU1cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgUUNBNzAwMFxuICAyMDpcdFx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUXVhbGNvbW0gTmV0d29yayBWZW5kb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgSSBzZWUgdGhlIGZ1bmN0aW9uYWxpdHkgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGlzIG5lc3RsZWQgdW5kZXIgYW4gYGlmIE5FVF9WRU5ET1JfUVVBTENPTU1gIGNvbmRpdGlvbmFsLiBTbywgdGhlIGZpcnN0IGtleSB0YWtlYXdheSBpcyB0aGF0IGBORVRfVkVORE9SX1FVQUxDT01NYCAqbXVzdCogYmUgZGVmaW5lZCBmb3IgdGhpcyBzZWN0aW9uIHRvIGJlIGFjdGl2ZS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcHJlcmVxdWlzaXRlLCBidXQgaXQgYmVncyB0aGUgcXVlc3Rpb24g4oCTIHdoYXQgZXhhY3RseSAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvdGhlciBkZWZpbmVzLCBvciBoYXJkd2FyZSBwbGF0Zm9ybSBzZXR0aW5ncyB0aGF0IGluZGlyZWN0bHkgdHJpZ2dlciBgTkVUX1ZFTkRPUl9RVUFMQ09NTWA/IE9yIGlzIGl0IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBmZWF0dXJlIHNldCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIEkmIzM5O20gaW50cm9kdWNpbmcgKG9yIHJlbW92aW5nKSBpZiBJIG1hbmlwdWxhdGUgYE5FVF9WRU5ET1JfUVVBTENPTU1gLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSBkZWZpbml0aW9uIGFuZCBpdHMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9WRU5ET1JfUVVBTENPTU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFJNTkVUIENhcGFiaWxpdHkgQ2hlY2sgRml4KioKCk9rYXksIHNvIHRoZSBjaGFuZ2UgZGVmYXVsdHMgdG8gYHlgLCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYC4gR29vZCB0byBrbm93LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBhcHBlYXJzIHRvIGJlIGlzb2xhdGVkIHRvIGBybW5ldF9jaGFuZ2VsaW5rYC4gWWVwLCBqdXN0IHRoYXQgZnVuY3Rpb24uCgpBbHJpZ2h0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHRoaXM6CgpgYGBjCgkvKgoJICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLAoJICogYnV0IHRoZSBwb3J0IHN0YXRlIG11dGF0ZWQgYmVsb3cgaXMgYXR0YWNoZWQgdG8gcmVhbF9kZXYsIHdoaWNoCgkgKiBtYXkgbGl2ZSBpbiBhIGRpZmZlcmVudCBuZXRucy4KCSAqLwoJaWYgKCFydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlKGRldiwgZGV2X25ldChyZWFsX2RldikpKQoJCXJldHVybiAtRVBFUk07CmBgYAoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRkaXRpb24sIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgbWlzc2luZyBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkmIzM5O3JlIGVuc3VyaW5nIGBDQVBfTkVUX0FETUlOYCBpcyBwcm9wZXJseSBlbmZvcmNlZCBhY3Jvc3MgbmV0IG5hbWVzcGFjZXMgd2hlbiBgcm1uZXRfY2hhbmdlbGlua2Agb3BlcmF0ZXMgb24gYHJlYWxfZGV2YC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXggZG9lcyBpdHMgam9iIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgdmVjdG9ycyBvciBieXBhc3Nlcy4gSXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhIGZvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMuCgpGb2N1c2luZyBpbiwgYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfbmV3bGlua2AgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgd2UgYXJlIHdvcmtpbmcgd2l0aCBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAgZW5hYmxlZC4KCldhaXQgYSBzZWNvbmTigKYgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaXNu4oCZdCBkaXJlY3RseSBjYWxsYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIGNoZWNrPyBBaCwgYHJtbmV0X3ZuZF9uZXdsaW5rYCBpcyBub24tc3RhdGljLiBMZXTigJlzIGludmVzdGlnYXRlIHdoZXRoZXIgYHJtbmV0X2NoYW5nZWxpbmtgIGNhbGxzIGFueXRoaW5nIG5vbi1zdGF0aWMsIGxpa2UgYHJtbmV0X3ZuZF9uZXdsaW5rYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjb2RlIHJldmlldyBhcHByb2FjaCwgbG9va2luZyBmb3IgcG90ZW50aWFsIGludGVyY29ubmVjdGlvbnMgb3Igc2lkZS1lZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF9jaGFuZ2VsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9MjgwPXN0YXRpYyBpbnQgcm1uZXRfcnRubF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6Mjk5OnN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzAwLVx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE2LVx0LmdldF9zaXplXHQ9IHJtbmV0X2dldF9zaXplLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDE3Olx0LmNoYW5nZWxpbmsgICAgID0gcm1uZXRfY2hhbmdlbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxOC1cdC5wb2xpY3lcdFx0PSBybW5ldF9wb2xpY3ksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSB3ZSBnby4uLgoKKipEaXZpbmcgaW50byBgcm1uZXRfY2hhbmdlbGlua2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgYHJtbmV0X2NoYW5nZWxpbmtgLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQmIzM5O3MgZ29pbmcgdG8gYmUgaW4gaGVyZS4gVGhpcyBmdW5jdGlvbiwgZ2l2ZW4gaXRzIG5hbWUsIGxpa2VseSBoYW5kbGVzIGNoYW5nZXMgdG8gdGhlIFJlbW90ZSBNb2JpbGUgTmV0d29yayBJbnRlcmZhY2UgKFJNTkVUKSBsaW5rcy4gSSYjMzk7bSBndWVzc2luZyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cywgYnJpbmdpbmcgYW4gaW50ZXJmYWNlIHVwIG9yIGRvd24sIG9yIHBlcmhhcHMgZXZlbiBoYW5kbGluZyBsaW5rLWxldmVsIGV2ZW50cy4gSSBiZXQgaXQgdGFrZXMgYSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY2hhbmdlcyBhcyBpbnB1dCDigJMgbWF5YmUgYSBkZXNjcmlwdG9yIHNwZWNpZnlpbmcgdGhlIG5ldyBNVFUsIElQIGFkZHJlc3MsIG9yIGxpbmsgc3RhdGUuIFByb2JhYmx5IHVzZXMgc29tZSBzb3J0IG9mIG5ldGxpbmsgaW50ZXJmYWNlLCBvciBwZXJoYXBzIGlvY3RscyBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGZ1bmN0aW9uLiBSTU5FVCBpcyBjcnVjaWFsIGZvciBkYXRhIGNvbm5lY3Rpdml0eSBvbiBRdWFsY29tbSBwbGF0Zm9ybXMsIHNvIGZhaWx1cmVzIGhlcmUgYXJlIGEgYmlnIGRlYWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtb2RlbSBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgYXN5bmNocm9ub3VzIGNhbGxzIG9yIHdvcmtxdWV1ZXMgaW52b2x2ZWQuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQgYW5kIHNlZSBpZiBteSBhc3N1bXB0aW9ucyBob2xkIHRydWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5OTpcdHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIDMwMDpcdFx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4gMzAxOlx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiAzMDI6XHR7XG4gMzAzOlx0XHRzdHJ1Y3Qgcm1uZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gMzA0Olx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXY7XG4gMzA1Olx0XHRzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydDtcbiAzMDY6XHRcdHUxNiBtdXhfaWQ7XG4gMzA3Olx0XG4gMzA4Olx0XHRpZiAoIWRldilcbiAzMDk6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gMzEwOlx0XG4gMzExOlx0XHRyZWFsX2RldiA9IHByaXYtXHUwMDNlcmVhbF9kZXY7XG4gMzEyOlx0XHRpZiAoIXJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQocmVhbF9kZXYpKVxuIDMxMzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAzMTQ6XHRcbiAzMTU6XHRcdC8qXG4gMzE2Olx0XHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXG4gMzE3Olx0XHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcbiAzMTg6XHRcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxuIDMxOTpcdFx0ICovXG4gMzIwOlx0XHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXG4gMzIxOlx0XHRcdHJldHVybiAtRVBFUk07XG4gMzIyOlx0XG4gMzIzOlx0XHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XG4gMzI0Olx0XG4gMzI1Olx0XHRpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHtcbiAzMjY6XHRcdFx0bXV4X2lkID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pO1xuIDMyNzpcdFxuIDMyODpcdFx0XHRpZiAobXV4X2lkICE9IHByaXYtXHUwMDNlbXV4X2lkKSB7XG4gMzI5Olx0XHRcdFx0c3RydWN0IHJtbmV0X2VuZHBvaW50ICplcDtcbiAzMzA6XHRcbiAzMzE6XHRcdFx0XHRlcCA9IHJtbmV0X2dldF9lbmRwb2ludChwb3J0LCBwcml2LVx1MDAzZW11eF9pZCk7XG4gMzMyOlx0XHRcdFx0aWYgKCFlcClcbiAzMzM6XHRcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuIDMzNDpcdFxuIDMzNTpcdFx0XHRcdGlmIChybW5ldF9nZXRfZW5kcG9pbnQocG9ydCwgbXV4X2lkKSkge1xuIDMzNjpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbiAzMzc6XHRcdFx0XHRcdFx0XHQgICBcJiMzNDtNVVggSUQgYWxyZWFkeSBleGlzdHNcJiMzNDspO1xuIDMzODpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzM5Olx0XHRcdFx0fVxuIDM0MDpcdFxuIDM0MTpcdFx0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZlcC1cdTAwM2VobG5vZGUpO1xuIDM0MjpcdFx0XHRcdGhsaXN0X2FkZF9oZWFkX3JjdShcdTAwMjZlcC1cdTAwM2VobG5vZGUsXG4gMzQzOlx0XHRcdFx0XHRcdCAgIFx1MDAyNnBvcnQtXHUwMDNlbXV4ZWRfZXBbbXV4X2lkXSk7XG4gMzQ0Olx0XG4gMzQ1Olx0XHRcdFx0ZXAtXHUwMDNlbXV4X2lkID0gbXV4X2lkO1xuIDM0NjpcdFx0XHRcdHByaXYtXHUwMDNlbXV4X2lkID0gbXV4X2lkO1xuIDM0NzpcdFx0XHR9XG4gMzQ4Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzAxCgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOgoKKipNeSBBbmFseXNpcyBvZiB0aGUgYHJtbmV0YCBNb2R1bGUgTW9kaWZpY2F0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyAqdGhlKiBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGUgb25seSBvbmUgdGhhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgdGhlIGNvcmUgb2Ygd2hhdGV2ZXIgdGhlIG1vZGlmaWNhdGlvbiBlbnRhaWxzLiBUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyBhIG5vLWJyYWluZXIuCgpOb3csIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbGluayBjaGFuZ2VzLCB3ZSYjMzk7bGwgbmVlZCBhIG1lY2hhbmlzbSBmb3IgKmNyZWF0aW5nKiB0aGUgZGV2aWNlIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgcmF0aGVyLCB0aGUgZW50cnlwb2ludCBmb3IgdGhhdCBmdW5jdGlvbi4gYHJtbmV0X3ZuZF9uZXdsaW5rYCBmaXRzIHRoZSBiaWxsIGFzIGl0JiMzOTtzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVzZSBuZXcgZGV2aWNlcy4gU2luY2UgYGNoYW5nZWxpbmtgIGlzIGEgcHJlcmVxdWlzaXRlLCBJJiMzOTtsbCBhZGQgdGhhdCB0byBgRm9jdXNTeW1ib2xzYCBhcyB3ZWxsLgoKSG93ZXZlciwgSSBuZWVkIHRvIGJlIGNhcmVmdWwgb2YgcG90ZW50aWFsIHNpZGUtZWZmZWN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGVsc2UgdGhhdCBpcyBub24tc3RhdGljIGluIGBybW5ldF9jb25maWcuY2AuIFRoZXJlIGNvdWxkIGJlIG90aGVyIHJlbGF0ZWQgZW50cnkgcG9pbnRzIG9yIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNoYW5nZSwgZXZlbiBpZiB0aGV5IGFyZW4mIzM5O3QgZGlyZWN0bHkgbW9kaWZpZWQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiB0aGF0IGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBCZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0d29yayBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBybW5ldF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yND1zdGF0aWMgaW50IHJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnJlYWxfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTI5LS8qIE5lZWRzIHJ0bmwgbG9jayAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MzA6c3RydWN0IHJtbmV0X3BvcnQqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0zMS1ybW5ldF9nZXRfcG9ydF9ydG5sKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpyZWFsX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MjI6c3RydWN0IHJtbmV0X3BvcnQgKnJtbmV0X2dldF9wb3J0X3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MjMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQzMDpzdHJ1Y3Qgcm1uZXRfZW5kcG9pbnQgKnJtbmV0X2dldF9lbmRwb2ludChzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTggbXV4X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0NDI6aW50IHJtbmV0X2FkZF9icmlkZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ0My1cdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQ5NjppbnQgcm1uZXRfZGVsX2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDk3LVx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzkwCgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgUk1ORVQgRHJpdmVyKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBybW5ldGAgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGBydG5sYCAocm91dGluZyBuZXRsaW5rKSBpbnRlcmZhY2UuIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYHJtbmV0X2FkZF9icmlkZ2VgLCBgcm1uZXRfZGVsX2JyaWRnZWAsIGBybW5ldF9nZXRfZW5kcG9pbnRgLCBgcm1uZXRfZ2V0X3BvcnRfcmN1YCwgYW5kIGBybW5ldF9nZXRfcG9ydF9ydG5sYCBhcmUgbm90IGRlY2xhcmVkIHN0YXRpYywgYnV0IHRoZSBtYWluIG9uZXMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGZvciBgcnRubGAgb3BlcmF0aW9ucyBhcmUgYHJtbmV0X25ld2xpbmtgIGFuZCBgcm1uZXRfY2hhbmdlbGlua2AuCgpOb3csIHdoaWxlIGBybW5ldF9jaGFuZ2VsaW5rYCAqaXMqIHN0YXRpYywgaXQgaXMgYXNzaWduZWQgdG8gYHJ0bmxfbGlua19vcHNgLiBUaGF0JiMzOTtzIHRoZSBjcnVjaWFsIGRldGFpbC4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0IHRocm91Z2ggYW4gYFJUTV9ORVdMSU5LYCBtZXNzYWdlIHdpdGggYElGTEFfSU5GT19LSU5EYCBzZXQgdG8gJiMzNDtybW5ldCYjMzQ7LiBTbywgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGluZGVlZCBhIHZpYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIHdoaWNoIGlzIGdyZWF0LiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyBjb25zaWRlcnMgdGhlIGBybW5ldF92bmRfbmV3bGlua2AuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRvIGNvbnNpZGVyIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnM6IGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYC4gR29vZCwgaXQgbG9va3MgbGlrZSBgUk1ORVRgIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIuCgpBbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBwbGFuIGlzIHNvbGlkLiBJJiMzOTt2ZSBnb3QgdGhpcyBqc29uIGNvbmZpZyBmaWxlIHRoYXQgbGF5cyBvdXQgbXkgYXBwcm9hY2guIEkmIzM5O3ZlIHNldCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IHRvIHRydWUsIGFuZCBteSAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7IGFyZSBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF92bmRfbmV3bGlua2AuIEkmIzM5O3ZlIGluY2x1ZGVkIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBpbiAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0Oy4KClRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IGJlaGluZCBhbGwgb2YgdGhpcz8gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHN0b3AgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbWVzc2luZyB3aXRoIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aGVyZWZvcmUsIG5lZWRzIHJpZ29yb3VzIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIGlzIHNvbGlkIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgcmVncmVzc2lvbnMuIEkmIzM5O20ga2VlbiB0byBzZWUgaWYgdGhpcyBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSTU5FVCYjMzQ7LAogICAgJiMzNDtORVRfVkVORE9SX1FVQUxDT01NJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtybW5ldF92bmRfbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayB0byBybW5ldF9jaGFuZ2VsaW5rIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbW9kaWZ5aW5nIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2FwYWJpbGl0eSBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Uk1ORVQmIzM0OywKICAgICYjMzQ7TkVUX1ZFTkRPUl9RVUFMQ09NTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JtbmV0X2NoYW5nZWxpbmsmIzM0OywKICAgICYjMzQ7cm1uZXRfdm5kX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgdG8gcm1uZXRfY2hhbmdlbGluayB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCB1c2VycyBmcm9tIG1vZGlmeWluZyB0aGUgbGluayBwcm9wZXJ0aWVzIG9mIGFuIHJtbmV0IGRldmljZSBpbiBhIGRpZmZlcmVudCBuZXR3b3JrIG5hbWVzcGFjZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGNhcGFiaWxpdHkgY2hlY2sgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5OTYzOGUxMThmMzk1NTg1OTA1ZWM1MTU3YjVjY2YxNjZjNGExNjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NzozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKaW5kZXggNzhkNGRmNTU3NDBhMS4uOTczZDRjNDRhNjNiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMKQEAgLTMxMiw2ICYjNDM7MzEyLDE0IEBAIHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCWlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CS8qCiYjNDM7CSAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSwKJiM0MzsJICogYnV0IHRoZSBwb3J0IHN0YXRlIG11dGF0ZWQgYmVsb3cgaXMgYXR0YWNoZWQgdG8gcmVhbF9kZXYsIHdoaWNoCiYjNDM7CSAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlKGRldiwgZGV2X25ldChyZWFsX2RldikpKQomIzQzOwkJcmV0dXJuIC1FUEVSTTsKJiM0MzsKIAlwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7CiAKIAlpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJNTkVUIFNlY3VyaXR5IFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYHJtbmV0X2NoYW5nZWxpbmsoKWAgbG9va3MgbGlrZSBhIHNvbGlkIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYSB1c2VyIHdpdGggYENBUF9ORVRfQURNSU5gIGluICpvbmUqIG5ldHdvcmsgbmFtZXNwYWNlIGZyb20gbWVzc2luZyB3aXRoIHRoZSBwb3J0IHN0YXRlIG9mIGEgYHJlYWxfZGV2YCByZXNpZGluZyBpbiAqYW5vdGhlciogbmV0bnMuIFRoaXMgaXMgYSBjb21tb24gYW5kIGltcG9ydGFudCBzZWN1cml0eSBjb25jZXJuLCBhbmQgdGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZlY3RpdmUuCgpUaGUgYWRkZWQgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoKWAgY2hlY2sgaXMgdGhlIGtleS4gSXQmIzM5O3MgcHJvcGVybHkgdmVyaWZ5aW5nIHBlcm1pc3Npb25zIGFnYWluc3QgdGhlIGByZWFsX2RldmAmIzM5O3MgbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBvbmUgd2hlcmUgdGhlIG9yaWdpbmFsIGBkZXZgIGV4aXN0cy4gTWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHZ1bG5lcmFiaWxpdHkgdGhleSYjMzk7cmUgYWRkcmVzc2luZy4KCk5vdywgYXMgYW4gZXhwZXJ0LCBJJiMzOTttIGFscmVhZHkgbG9va2luZyBmb3IgcG90ZW50aWFsIGlzc3Vlcy4gVGhlIGNvZGUgaXRzZWxmIGlzIGNsZWFuIGFuZCBjb25jaXNlLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IHN0cnVjdHVyZXMgaW50cm9kdWNlZCwgYW5kIEkgc2VlIG5vIGluZGljYXRpb24gb2YgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGUgY2hhbmdlIGlzIHNpbXBseSBhIHBlcm1pc3Npb24gY2hlY2sgYmVmb3JlIHRoZSBjcml0aWNhbCBwb3J0IHN0YXRlIG1vZGlmaWNhdGlvbi4gVGhlIGNvbW1lbnQgYmxvY2sgY2xhcmlmaWVzIHRoZSByYXRpb25hbGUsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gcXVpY2tseS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IHJlcXVpcmVkIGhlcmUuIEl0JiMzOTtzIGEgcGVybWlzc2lvbiBjaGVjaywgbm90IHNvbWV0aGluZyB0aGF0IHdvdWxkIGludHJvZHVjZSBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4KClRoZXJlZm9yZSwgSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggYE5lZWRzS01TQU49ZmFsc2VgLiBJdCYjMzk7cyBhIHdlbGwtc2NvcGVkIGFuZCB3ZWxsLWltcGxlbWVudGVkIHNlY3VyaXR5IGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhcGFiaWxpdHkgY2hlY2sgYHJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGVgIGluIGBybW5ldF9jaGFuZ2VsaW5rYCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBtdXRhdGlvbiBvZiBwb3J0IHN0YXRlIGFjcm9zcyBuZXR3b3JrIG5hbWVzcGFjZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuMjAyNDUyNDU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3MjI1MDgyMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCIsXG4gICAgXCJORVRfVkVORE9SX1FVQUxDT01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICAgIFwicm1uZXRfdm5kX25ld2xpbmtcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIGBydG5sX2Rldl9saW5rX25ldF9jYXBhYmxlYCBpbiBgcm1uZXRfY2hhbmdlbGlua2AgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgbXV0YXRpb24gb2YgcG9ydCBzdGF0ZSBhY3Jvc3MgbmV0d29yayBuYW1lc3BhY2VzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjMzLjIwMjQ2MDEzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkyNzM0NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTk5NjM4ZTExOGYzOTU1ODU5MDVlYzUxNTdiNWNjZjE2NmM0YTE2MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXFxuaW5kZXggNzhkNGRmNTU3NDBhMS4uOTczZDRjNDRhNjNiYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXFxuQEAgLTMxMiw2ICszMTIsMTQgQEAgc3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuIFxcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogVGhlIHJ0bmwgcGF0aCBvbmx5IGNoZWNrcyBDQVBfTkVUX0FETUlOIGFnYWluc3QgZGV2X25ldChkZXYpLFxcbitcXHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcXG4rXFx0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXFxuK1xcdFxcdHJldHVybiAtRVBFUk07XFxuK1xcbiBcXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuNjk1OTMxMjQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTI5MDY3MzQ0MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCIsXG4gICAgXCJORVRfVkVORE9SX1FVQUxDT01NXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICAgIFwicm1uZXRfdm5kX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayB0byBybW5ldF9jaGFuZ2VsaW5rIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIHVzZXJzIGZyb20gbW9kaWZ5aW5nIHRoZSBsaW5rIHByb3BlcnRpZXMgb2YgYW4gcm1uZXQgZGV2aWNlIGluIGEgZGlmZmVyZW50IG5ldHdvcmsgbmFtZXNwYWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgY2FwYWJpbGl0eSBjaGVjayB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTk2MzhlMTE4ZjM5NTU4NTkwNWVjNTE1N2I1Y2NmMTY2YzRhMTYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDg6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5pbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5AQCAtMzEyLDYgKzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuK1x0LypcbitcdCAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSxcbitcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuK1x0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXG4rXHQgKi9cbitcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcbiBcdHBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzMuNjk1OTMyNDU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3ODYzODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHJtbmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBybW5ldF9jb25maWcuY2AgaW4gdGhlIFF1YWxjb21tIEV0aGVybmV0IGRyaXZlci4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGVuc3VyaW5nIHRoYXQgd2hvZXZlcidzIHRyeWluZyB0byB0d2VhayB0aGUgbGluayBwcm9wZXJ0aWVzIGhhcyBgQ0FQX05FVF9BRE1JTmAgcHJpdmlsZWdlcyBpbiB0aGUgKnRhcmdldCogbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBjdXJyZW50IG9uZS4gVGhpcyBpcyBzbWFydCwgcHJldmVudGluZyBhIHBvdGVudGlhbCBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIGNvbW1lbnQgY2xhcmlmaWVzIHRoZSBcInJlYWxfZGV2XCIgbGl2ZXMgaW4gdGhlIGRpZmZlcmVudCBuZXRucyB0byB3aGljaCB0aGUgY2FwYWJpbGl0aWVzIGNoZWNrIG5vdyByZWZlcnMuIFNvLCBmdW5jdGlvbmFsbHksIHRoaXMgY2hhbmdlIGlzIGEgc29saWQgc2VjdXJpdHkgaW1wcm92ZW1lbnQuXG5cbk15IG5leHQgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gYHJtbmV0YCBpcywgYWZ0ZXIgYWxsLCBhIHZpcnR1YWwgbmV0d29yayBkZXZpY2UgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl04oCZcyBjcmVhdGVkIGFuZCBtYW5hZ2VkIHRocm91Z2ggbmV0bGluaywgbGlrZWx5IHZpYSBydG5sLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmaW5kaW5nIGF0dGFjayBzdXJmYWNlcy4gTm93LCBsZXQgbWUgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYHJtbmV0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIHNldCB1cCBhbmQgd2hhdCBraW5kIG9mIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBjcmFmdGVkIG5ldGxpbmsgbWVzc2FnZXMsIHBvdGVudGlhbGx5IGJ5cGFzc2luZyB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgY2FwYWJpbGl0eSBjaGVjay4gVGltZSB0byBnZXQgdG8gdGhlIGNvZGUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NzozOS4wNzQ1NzM1NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA0MDExOTg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUk1ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6MzkuMzc4NTk1MzE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyMzY5NzAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBSTU5FVGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2NhbiBvZiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIGJlc3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhpcyBgUk1ORVRgIHRoaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgcHJvamVjdCBpcyB0byBzZWUgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyB1c2VkLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIExldCdzIGxvb2sgZm9yIGluc3RhbmNlcyBvZiBgUk1ORVRgIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgZGVwZW5kZW5jaWVzLiBJIGNhbiB0aGVuIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGZvcm11bGF0ZSBhIG11Y2ggYmV0dGVyIHBsYW4uIEkgYmV0IGl0IGlzIGRlZmluZWQgaW4gcmVsYXRpb24gdG8gYSBzcGVjaWZpYyBpbnRlcmZhY2Ugb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6NDIuMDAyMjk0MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNDM5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJNTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZzo2Om1lbnVjb25maWcgUk1ORVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlJtTmV0IE1BUCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQyLjA0OTY0MjU3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjIzNDEzMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFJNTkVUIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGBSTU5FVGAncyBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIG91dCBpdHMgbGluZWFnZSwgc2VlaW5nIHdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBleHRlcm5hbCBzZXJ2aWNlcyBpdCByZWxpZXMgb24gdG8gZnVuY3Rpb24uIEknbGwgbmVlZCB0byBpZGVudGlmeSBub3QganVzdCB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gY29uc2lkZXIgdGhlIHRyYW5zaXRpdmUgb25lc+KAlHdoYXQgZG9lcyAqdGhvc2UqIGRlcGVuZCBvbj8gVGhpcyBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiBjaGFuZ2VzLCBhbmQgZGVidWdnaW5nIGFueSBmdXR1cmUgaXNzdWVzLiBUaGlzIGlzIGEgY29tbW9uIGZpcnN0IHN0ZXAsIGVzcGVjaWFsbHkgd2hlbiB3b3JraW5nIHdpdGggbGVnYWN5IHN5c3RlbXMuIEknbGwgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG1hbmRhdG9yeSBkZXBlbmRlbmNpZXMgYW5kIHRob3NlIHRoYXQgYXJlIG9wdGlvbmFsIG9yIGNvbmRpdGlvbmFsbHkgbG9hZGVkLiBUaGF0J2xsIGxldCBtZSBwcmlvcml0aXplIHdoaWNoIHRvIGZvY3VzIG9uIGFuZCB1bmRlcnN0YW5kIHdoYXQgbWlnaHQgYmUgbmVlZGVkIGZvciBkaWZmZXJlbnQgdXNlIGNhc2VzLiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoZSB2ZXJzaW9ucyBvZiBhbnkgZXh0ZXJuYWwgY29tcG9uZW50cyBhbmQgY2hlY2sgaWYgdGhleSBhcmUgdXAgdG8gZGF0ZSBhbmQgcGF0Y2hlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDc6NDUuMjExOTg2NDk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSTU5FVCBNQVAgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgUk1ORVRcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJSbU5ldCBNQVAgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCBuXFxuICAgOTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBzZWxlY3QgdGhpcywgeW91IHdpbGwgZW5hYmxlIHRoZSBSTU5FVCBtb2R1bGUgd2hpY2ggaXMgdXNlZFxcbiAgMTI6XFx0XFx0ICBmb3IgaGFuZGxpbmcgZGF0YSBpbiB0aGUgbXVsdGlwbGV4aW5nIGFuZCBhZ2dyZWdhdGlvbiBwcm90b2NvbCAoTUFQKVxcbiAgMTM6XFx0XFx0ICBmb3JtYXQgaW4gdGhlIGVtYmVkZGVkIGRhdGEgcGF0aC4gUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG9cXG4gIDE0OlxcdFxcdCAgYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo0NS4yMTIwNTMxOTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAzMDQyOTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgRGV2aWNlIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXNuJ3QgdGllZCB0byBhbnkgcGFydGljdWxhciBoYXJkd2FyZSBjb21wb25lbnQ7IGl0J3MgYSB2aXJ0dWFsIGRldmljZSBkcml2ZXIsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFRoZSB0ZXh0IG1lbnRpb25zIFwiUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLFwiIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIFwiZnV6emluZyB0YXJnZXQuXCIgVGhpcyBtb2R1bGFyaXR5IGltcGxpZXMgYSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBpbnRlcmZhY2luZyB3aXRoIGRpZmZlcmVudCB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuIFRoZSBjb3JlIGZ1bmN0aW9uIG9mIGludGVyZXN0IGFwcGVhcnMgdG8gYmUgYHJtbmV0X2NoYW5nZWxpbmtgLiBUaW1lIHRvIGNoZWNrIHdoZXRoZXIgaXTigJlzIGV4cG9ydGVkIG9yIHN0YXRpYzsgdGhhdCdsbCBkZXRlcm1pbmUgaG93IGVhc3kgaXQgd2lsbCBiZSB0byBob29rIGludG8gYW5kIGFuYWx5emUuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBhdmVudWUgZm9yIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQ4LjcxNTA5OTU1NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNTczNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm1uZXRfY2hhbmdlbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yODA9c3RhdGljIGludCBybW5ldF9ydG5sX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzoyOTk6c3RhdGljIGludCBybW5ldF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzAwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxNi1cXHQuZ2V0X3NpemVcXHQ9IHJtbmV0X2dldF9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQxNzpcXHQuY2hhbmdlbGluayAgICAgPSBybW5ldF9jaGFuZ2VsaW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQxOC1cXHQucG9saWN5XFx0XFx0PSBybW5ldF9wb2xpY3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ3OjQ4Ljc2MTE2MzMwMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDQxMTAwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcm1uZXQgTGluayBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcm1uZXRfY2hhbmdlbGlua2AgZnVuY3Rpb24sIGFuZCBpdCdzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayB0aGF0LCBnaXZlbiBpdHMgdXNlIGFzIGAuY2hhbmdlbGlua2Agd2l0aGluIGBybW5ldF9saW5rX29wc2AsIHdlIHNob3VsZCByZWFsbHkgYmUgZm9jdXNpbmcgb24gZnVuY3Rpb25zIHRoYXQgYXJlbid0IHN0YXRpYywgc3VjaCBhcyBgcm1uZXRfbmV3bGlua2Agb3IsIGZhaWxpbmcgdGhhdCwgYHJtbmV0X2NoYW5nZWxpbmtgLiBXYWl0LCBhIHNlY29uZCwgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGFjdHVhbGx5IHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIHJpZ2h0PyBXaGljaCBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQuIEJ1dCBpdCdzIHN0aWxsIHN0YXRpYy4uLiBPa2F5LCBzbyB3aGF0IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBhdmFpbGFibGUgdG8gbWU/IExldCBtZSBnbyBhbmQgY2hlY2sgdGhlIGBybW5ldF9saW5rX29wc2Agc3RydWN0dXJlIGFnYWluLCBsZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1My4yMDIyNjcwMzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTg2MDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0zNzg9c3RhdGljIGludCBybW5ldF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MDg6c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MDktXFx0LmtpbmRcXHRcXHQ9IFxcXCJybW5ldFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz01MDk9c3RhdGljIGludCBfX2luaXQgcm1uZXRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjUxNzpcXHRyYyA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2cm1uZXRfbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTUxOC1cXHRpZiAocmMgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NTI1PXN0YXRpYyB2b2lkIF9fZXhpdCBybW5ldF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo1Mjc6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnJtbmV0X2xpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy01MjgtXFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXFx1MDAyNnJtbmV0X2Rldl9ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaD0zMz1zdHJ1Y3Qgcm1uZXRfcG9ydCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaC01NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuaDo1NjpleHRlcm4gc3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYz0yOTg9aW50IHJtbmV0X3ZuZF9uZXdsaW5rKHU4IGlkLCBzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jOjMzMzpcXHRcXHRybW5ldF9kZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMgPSBcXHUwMDI2cm1uZXRfbGlua19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfdm5kLmMtMzM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1My4yNDg4NTgwMjRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMDU0NDA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyB0aGUgRnVuY3Rpb24gUG9pbnRlciBmb3IgTmV0d29yayBMaW5rIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgcm1uZXRfY2hhbmdlbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCdzIGJlaW5nIHRyZWF0ZWQgbGlrZSBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQncyBmaW5lIGluIG1hbnkgY2FzZXMsIGVzcGVjaWFsbHkgaWYgaXQncyBub3QgYmVpbmcgaW5saW5lZC4gSG93ZXZlciwgSSdtIGNvbmNlcm5lZCB0aGF0IHN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgcmVzb2x2aW5nIGEgc3RhdGljIGZ1bmN0aW9uIGRpcmVjdGx5LiBBbHRob3VnaCwgd2FpdCwgaXQgKnNob3VsZCogYmUgYWJsZSB0byBpZiB0aGUgc3ltYm9sIGlzIGluIHRoZSB0YWJsZS4gSG1tLiBUaGUgZG9jdW1lbnRhdGlvbiBkaWQgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMgb3ZlciBzdGF0aWMgaGVscGVycywgdGhvdWdoLiBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUuIExldCBtZSBzZWUuLi4gcGVyaGFwcyB0aGVyZSdzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcz8gSG93IGFib3V0IGBybW5ldF9uZXdsaW5rYD8gVGhhdCAqc291bmRzKiBsaWtlIGl0IGNvdWxkIGJlIHJlbGF0ZWQuIFRpbWUgdG8gY3JhY2sgb3BlbiBgcm1uZXRfY29uZmlnLmNgIGFuZCBzZWUgaWYgdGhhdCdzIGEgdmlhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1OC4zNzk0MDQ1NThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTE2NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9OTE9c3RhdGljIHZvaWQgcm1uZXRfdW5yZWdpc3Rlcl9icmlkZ2Uoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0xMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTIwOnN0YXRpYyBpbnQgcm1uZXRfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTEyMS1cXHRcXHRcXHQgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTQwOD1zdHJ1Y3QgcnRubF9saW5rX29wcyBybW5ldF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDEzLVxcdC52YWxpZGF0ZVxcdD0gcm1uZXRfcnRubF92YWxpZGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTQ6XFx0Lm5ld2xpbmtcXHQ9IHJtbmV0X25ld2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDE1LVxcdC5kZWxsaW5rXFx0PSBybW5ldF9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0Nzo1OC40MjY5MjM5NzNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMTA3NzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBuZXR3b3JraW5nIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFJNTkVUIExpbmsgTWFuYWdlbWVudCoqXG5cbkhtbSwgc28gYm90aCBgcm1uZXRfbmV3bGlua2AgYW5kIGBybW5ldF9jaGFuZ2VsaW5rYCBhcmUgc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCdzIGEgY29tbW9uIHBhdHRlcm4gaW4ga2VybmVsIG5ldHdvcmtpbmcsIHVzdWFsbHkgaW5kaWNhdGluZyB0aGV5J3JlIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0aGluIHRoZSBybW5ldCBzdWJzeXN0ZW0uIEJ1dCB0aGUgZm9jdXMgaGVyZSBpcyBhYm91dCBSTU5FVCBsaW5rIG1hbmFnZW1lbnQgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgc3RhdGljLiBUaGlzIG1ha2VzIHNlbnNlLlxuXG5CdXQgd2FpdCwgd2hhdCBhYm91dCBgcm1uZXRfdm5kX25ld2xpbmtgPyBUaGF0IG5hbWUgaXMgaW50ZXJlc3RpbmcsIGFuZCB0aGUgbWVudGlvbiBvZiBgcm1uZXRfdm5kLmNgIGlzIGltcG9ydGFudCB0byB0aGUgY29udGV4dCBvZiBteSB0aG91Z2h0cy4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyByb3V0aW5lIGlzIG5vdCBzdGF0aWMgb3IgYXQgdGhlIHZlcnkgbGVhc3QgaXMgbm90IGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSBvdGhlciByb3V0aW5lcy4gVGhhdCBmaWxlbmFtZSBwb2ludHMgdG8gdGhlIFZlbmRvci1TcGVjaWZpYyBOZXR3b3JrIERldmljZSBpbnRlcmZhY2UsIHJpZ2h0PyBJcyB0aGF0IGZ1bmN0aW9uIGF2YWlsYWJsZSB0byBhbm90aGVyIGxheWVyLCBzdWNoIGFzIHZlbmRvciBzcGVjaWZpYyBtb2RlbSBkcml2ZXJzP1xuXG5UaGlzIGNvdWxkIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB2ZW5kb3JzIGV4dGVuZCBvciBjdXN0b21pemUgcm1uZXQuIEkgbmVlZCB0byBkaWcgaW50byBgcm1uZXRfdm5kX25ld2xpbmtgIGFuZCBpdHMgY29udGV4dCB3aXRoaW4gYHJtbmV0X3ZuZC5jYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgcHVibGljLWZhY2luZyBBUEkgb3IgaWYgaXQncyBzdGlsbCBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlLiBUaGlzIGlzIGEgdmVyeSBpbnRlcmVzdGluZyBhdmVudWUgb2YgZXhwbG9yYXRpb24gdGhhdCBJIG5lZWQgdG8gZG8gcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcwNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ4OjA0LjEzODAwMzc3OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3OTAzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm1uZXRfdm5kX25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jPTEyMD1zdGF0aWMgaW50IHJtbmV0X25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTE1Ni1cXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MTU3OlxcdGVyciA9IHJtbmV0X3ZuZF9uZXdsaW5rKG11eF9pZCwgZGV2LCBwb3J0LCByZWFsX2RldiwgZXAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMTU4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYz0yNzI9dm9pZCBybW5ldF92bmRfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuYzoyOTg6aW50IHJtbmV0X3ZuZF9uZXdsaW5rKHU4IGlkLCBzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5jLTI5OS1cXHRcXHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5oPTEwPWludCBybW5ldF92bmRfZG9fZmxvd19jb250cm9sKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X3ZuZC5oOjExOmludCBybW5ldF92bmRfbmV3bGluayh1OCBpZCwgc3RydWN0IG5ldF9kZXZpY2UgKnJtbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF92bmQuaC0xMi1cXHRcXHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MDQuMTg2Nzk5NTk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDI5MDgyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gdGhlIFJNTkVUIENoYW5nZXMgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYHJtbmV0X2NoYW5nZWxpbmtgIGhlcmUg4oCTIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBUaGUgZ29vZCBuZXdzIGlzLCBpdCdzIHN0YXRpYywgd2hpY2ggaXMgaWRlYWwuIFRoYXQgbWVhbnMgSSBjYW4gY29uZmlkZW50bHkgZGVzaWduYXRlIGJvdGggYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfbmV3bGlua2AgYXMgRm9jdXNTeW1ib2xzIHdpdGhpbiBTeXprYWxsZXIuIEl0J3MgcGVyZmVjdGx5IGNhcGFibGUgb2YgaGFuZGxpbmcgc3RhdGljIGZ1bmN0aW9ucyBhcyBsb25nIGFzIHRoZXkgYXJlbid0IGlubGluZWQsIGFuZCBzaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFzc2lnbmVkIHRocm91Z2ggYSBzdHJ1Y3Qgb2YgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgZGVmaW5pdGVseSAqYXJlbid0KiBpbmxpbmVkLiBUaGlzIG1ha2VzIGludGVncmF0aW9uIG11Y2ggY2xlYW5lci5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24uIEl0IGxvb2tzIGxpa2UgYFJNTkVUYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIGZsYWcgd2UncmUgZGVhbGluZyB3aXRoLiBTbywgdGhhdCBtZWFucyBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgYmUgc2V0IHRvIGBSTU5FVGAgaW4gdGhlIFN5emthbGxlciBjb25maWd1cmF0aW9uLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwcm9qZWN0IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgbmVlZCBhdHRlbnRpb24uIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIHRvIGluY2x1ZGUgdG8gbWFrZSBzdXJlIFN5emthbGxlciBoYXMgZXZlcnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0ODowOC43Mjk3MTA4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwNTUxOTUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MDguNzc4Nzc2MjY1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTk2ODc5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kgQW5vbWFseSBpbiB0aGUgS2NvbmZpZyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IHRoaXMgYFJNTkVUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBhbmQgc29tZXRoaW5nIGlzbid0IHF1aXRlIGNsaWNraW5nLiBJdCdzIHN1cHBvc2VkIHRvIGJlIGEgY29yZSBjb21wb25lbnQgb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIEkgd291bGQgaGF2ZSBleHBlY3RlZCBzb21lIGRlcGVuZGVuY2llcy4gVGhlIEtjb25maWcgc3RydWN0dXJlIGxvb2tzIGEgYml0Li4uY2xlYW4sIHN1cnByaXNpbmdseSBzby4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgcG9zc2libGUgSSdtIG1pc3JlbWVtYmVyaW5nIHRoZSBkZXBlbmRlbmNpZXMsIG9yIHBlcmhhcHMgYSByZWNlbnQgY2hhbmdlIGludHJvZHVjZWQgYSBjb25maWd1cmF0aW9uIG92ZXJzaWdodC4gVGltZSB0byBkaXZlIGJhY2sgaW4gYW5kIHNjcnV0aW5pemUgdGhlIGJ1aWxkIGVudmlyb25tZW50LiBUaGlzIGNvdWxkIGJlIGFuIGltcG9ydGFudCBmaW5kLCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTM1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDg6MTIuMTc4NDY3MjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBSTU5FVCBNQVAgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgUk1ORVRcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJSbU5ldCBNQVAgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCBuXFxuICAgOTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBzZWxlY3QgdGhpcywgeW91IHdpbGwgZW5hYmxlIHRoZSBSTU5FVCBtb2R1bGUgd2hpY2ggaXMgdXNlZFxcbiAgMTI6XFx0XFx0ICBmb3IgaGFuZGxpbmcgZGF0YSBpbiB0aGUgbXVsdGlwbGV4aW5nIGFuZCBhZ2dyZWdhdGlvbiBwcm90b2NvbCAoTUFQKVxcbiAgMTM6XFx0XFx0ICBmb3JtYXQgaW4gdGhlIGVtYmVkZGVkIGRhdGEgcGF0aC4gUk1ORVQgZGV2aWNlcyBjYW4gYmUgYXR0YWNoZWQgdG9cXG4gIDE0OlxcdFxcdCAgYW55IElQIG1vZGUgcGh5c2ljYWwgZGV2aWNlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0ODoxMi4xNzg1MzgxOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQzNDg1MzQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY3kgTG9jYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIG1vZHVsZSBkb2Vzbid0IGV4cGxpY2l0bHkgZGVjbGFyZSBhIGBkZXBlbmRzIG9uYCBjbGF1c2UsIHdoaWNoIGlzIGEgYml0IHVudXN1YWwuIEJ1dCwgaXQncyBsb2NhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdgIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgS2NvbmZpZyBmaWxlcyBvZnRlbiB1c2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gaW1wbHkgZGVwZW5kZW5jaWVzLiBMZXQgbWUgZ28gdGFrZSBhIGxvb2sgYXQgdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCB0aGUgcmVsYXRpb25zaGlwcyBhcmUgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZGlyZWN0bHkgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MTUuNjEzMzkzNjg3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUXVhbGNvbW0gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgUXVhbGNvbW0gY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcXG4gIDE1OlxcdFxcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgUUNBNzAwMFxcbiAgMjA6XFx0XFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MTUuNjEzNDU1MDQ3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjExODk0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUXVhbGNvbW0gTmV0d29yayBWZW5kb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBJIHNlZSB0aGUgZnVuY3Rpb25hbGl0eSBJJ20gaW50ZXJlc3RlZCBpbiBpcyBuZXN0bGVkIHVuZGVyIGFuIGBpZiBORVRfVkVORE9SX1FVQUxDT01NYCBjb25kaXRpb25hbC4gU28sIHRoZSBmaXJzdCBrZXkgdGFrZWF3YXkgaXMgdGhhdCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAgKm11c3QqIGJlIGRlZmluZWQgZm9yIHRoaXMgc2VjdGlvbiB0byBiZSBhY3RpdmUuIFRoYXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgcHJlcmVxdWlzaXRlLCBidXQgaXQgYmVncyB0aGUgcXVlc3Rpb24g4oCTIHdoYXQgZXhhY3RseSAqZW5hYmxlcyogdGhhdCBwYXJ0aWN1bGFyIG1hY3JvPyBJIG5lZWQgdG8gY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBvdGhlciBkZWZpbmVzLCBvciBoYXJkd2FyZSBwbGF0Zm9ybSBzZXR0aW5ncyB0aGF0IGluZGlyZWN0bHkgdHJpZ2dlciBgTkVUX1ZFTkRPUl9RVUFMQ09NTWA/IE9yIGlzIGl0IGEgZGlyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFuZCB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBmZWF0dXJlIHNldCwgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIEknbSBpbnRyb2R1Y2luZyAob3IgcmVtb3ZpbmcpIGlmIEkgbWFuaXB1bGF0ZSBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIGRlZmluaXRpb24gYW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToxOS43MzQ2NDY3MzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTg0MDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVkVORE9SX1FVQUxDT01NXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9RVUFMQ09NTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWctNy1cXHRib29sIFxcXCJRdWFsY29tbSBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToxOS43Nzk4MzQxMTJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAwMjg3OTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUk1ORVQgQ2FwYWJpbGl0eSBDaGVjayBGaXgqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGRlZmF1bHRzIHRvIGB5YCwgc28gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIEdvb2QgdG8ga25vdy4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBhcHBlYXJzIHRvIGJlIGlzb2xhdGVkIHRvIGBybW5ldF9jaGFuZ2VsaW5rYC4gWWVwLCBqdXN0IHRoYXQgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhpczpcblxuYGBgY1xuXHQvKlxuXHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXG5cdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuXHQgKiBtYXkgbGl2ZSBpbiBhIGRpZmZlcmVudCBuZXRucy5cblx0ICovXG5cdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcblx0XHRyZXR1cm4gLUVQRVJNO1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGFkZGl0aW9uLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIG1pc3NpbmcgY2FwYWJpbGl0eSBjaGVjayB3aXRoaW4gYHJtbmV0X2NoYW5nZWxpbmtgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkncmUgZW5zdXJpbmcgYENBUF9ORVRfQURNSU5gIGlzIHByb3Blcmx5IGVuZm9yY2VkIGFjcm9zcyBuZXQgbmFtZXNwYWNlcyB3aGVuIGBybW5ldF9jaGFuZ2VsaW5rYCBvcGVyYXRlcyBvbiBgcmVhbF9kZXZgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZpeCBkb2VzIGl0cyBqb2IgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYXR0YWNrIHZlY3RvcnMgb3IgYnlwYXNzZXMuIEl0J3MgYSBjcml0aWNhbCBhcmVhIGZvciBwb3RlbnRpYWwgcmVncmVzc2lvbnMuXG5cbkZvY3VzaW5nIGluLCBgcm1uZXRfY2hhbmdlbGlua2AgYW5kIGBybW5ldF9uZXdsaW5rYCBhcmUgdGhlIGtleSBmdW5jdGlvbnMsIGFuZCB3ZSBhcmUgd29ya2luZyB3aXRoIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBlbmFibGVkLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGBybW5ldF9jaGFuZ2VsaW5rYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGlzbuKAmXQgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBjaGVjaz8gQWgsIGBybW5ldF92bmRfbmV3bGlua2AgaXMgbm9uLXN0YXRpYy4gTGV04oCZcyBpbnZlc3RpZ2F0ZSB3aGV0aGVyIGBybW5ldF9jaGFuZ2VsaW5rYCBjYWxscyBhbnl0aGluZyBub24tc3RhdGljLCBsaWtlIGBybW5ldF92bmRfbmV3bGlua2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29kZSByZXZpZXcgYXBwcm9hY2gsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBpbnRlcmNvbm5lY3Rpb25zIG9yIHNpZGUtZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE0OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToyNi43ODI3MTU2NzFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTQ3OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X2NoYW5nZWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9MjgwPXN0YXRpYyBpbnQgcm1uZXRfcnRubF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6Mjk5OnN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTMwMC1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM9NDA4PXN0cnVjdCBydG5sX2xpbmtfb3BzIHJtbmV0X2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTYtXFx0LmdldF9zaXplXFx0PSBybW5ldF9nZXRfc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MTc6XFx0LmNoYW5nZWxpbmsgICAgID0gcm1uZXRfY2hhbmdlbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MTgtXFx0LnBvbGljeVxcdFxcdD0gcm1uZXRfcG9saWN5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OToyNi44Mjc4Njc3MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk3OTQzMzcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSB3ZSBnby4uLlxuXG4qKkRpdmluZyBpbnRvIGBybW5ldF9jaGFuZ2VsaW5rYCoqXG5cbkFscmlnaHQsIGxldCdzIHB1bGwgdXAgYHJtbmV0X2NoYW5nZWxpbmtgLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCdzIGdvaW5nIHRvIGJlIGluIGhlcmUuIFRoaXMgZnVuY3Rpb24sIGdpdmVuIGl0cyBuYW1lLCBsaWtlbHkgaGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBSZW1vdGUgTW9iaWxlIE5ldHdvcmsgSW50ZXJmYWNlIChSTU5FVCkgbGlua3MuIEknbSBndWVzc2luZyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cywgYnJpbmdpbmcgYW4gaW50ZXJmYWNlIHVwIG9yIGRvd24sIG9yIHBlcmhhcHMgZXZlbiBoYW5kbGluZyBsaW5rLWxldmVsIGV2ZW50cy4gSSBiZXQgaXQgdGFrZXMgYSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZGV0YWlscyBvZiB0aGUgY2hhbmdlcyBhcyBpbnB1dCDigJMgbWF5YmUgYSBkZXNjcmlwdG9yIHNwZWNpZnlpbmcgdGhlIG5ldyBNVFUsIElQIGFkZHJlc3MsIG9yIGxpbmsgc3RhdGUuIFByb2JhYmx5IHVzZXMgc29tZSBzb3J0IG9mIG5ldGxpbmsgaW50ZXJmYWNlLCBvciBwZXJoYXBzIGlvY3RscyBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRoZSBmdW5jdGlvbi4gUk1ORVQgaXMgY3J1Y2lhbCBmb3IgZGF0YSBjb25uZWN0aXZpdHkgb24gUXVhbGNvbW0gcGxhdGZvcm1zLCBzbyBmYWlsdXJlcyBoZXJlIGFyZSBhIGJpZyBkZWFsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBtb2RlbSBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgYXN5bmNocm9ub3VzIGNhbGxzIG9yIHdvcmtxdWV1ZXMgaW52b2x2ZWQuIFRpbWUgdG8gZ2V0IHN0YXJ0ZWQgYW5kIHNlZSBpZiBteSBhc3N1bXB0aW9ucyBob2xkIHRydWUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMjQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OTozMS44MDczMDQ1MDZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjk5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjk5OlxcdHN0YXRpYyBpbnQgcm1uZXRfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiAzMDA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4gMzAxOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIDMwMjpcXHR7XFxuIDMwMzpcXHRcXHRzdHJ1Y3Qgcm1uZXRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuIDMwNDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXY7XFxuIDMwNTpcXHRcXHRzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydDtcXG4gMzA2OlxcdFxcdHUxNiBtdXhfaWQ7XFxuIDMwNzpcXHRcXG4gMzA4OlxcdFxcdGlmICghZGV2KVxcbiAzMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJlYWxfZGV2ID0gcHJpdi1cXHUwMDNlcmVhbF9kZXY7XFxuIDMxMjpcXHRcXHRpZiAoIXJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQocmVhbF9kZXYpKVxcbiAzMTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdC8qXFxuIDMxNjpcXHRcXHQgKiBUaGUgcnRubCBwYXRoIG9ubHkgY2hlY2tzIENBUF9ORVRfQURNSU4gYWdhaW5zdCBkZXZfbmV0KGRldiksXFxuIDMxNzpcXHRcXHQgKiBidXQgdGhlIHBvcnQgc3RhdGUgbXV0YXRlZCBiZWxvdyBpcyBhdHRhY2hlZCB0byByZWFsX2Rldiwgd2hpY2hcXG4gMzE4OlxcdFxcdCAqIG1heSBsaXZlIGluIGEgZGlmZmVyZW50IG5ldG5zLlxcbiAzMTk6XFx0XFx0ICovXFxuIDMyMDpcXHRcXHRpZiAoIXJ0bmxfZGV2X2xpbmtfbmV0X2NhcGFibGUoZGV2LCBkZXZfbmV0KHJlYWxfZGV2KSkpXFxuIDMyMTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRwb3J0ID0gcm1uZXRfZ2V0X3BvcnRfcnRubChyZWFsX2Rldik7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xcbiAzMjY6XFx0XFx0XFx0bXV4X2lkID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX1JNTkVUX01VWF9JRF0pO1xcbiAzMjc6XFx0XFxuIDMyODpcXHRcXHRcXHRpZiAobXV4X2lkICE9IHByaXYtXFx1MDAzZW11eF9pZCkge1xcbiAzMjk6XFx0XFx0XFx0XFx0c3RydWN0IHJtbmV0X2VuZHBvaW50ICplcDtcXG4gMzMwOlxcdFxcbiAzMzE6XFx0XFx0XFx0XFx0ZXAgPSBybW5ldF9nZXRfZW5kcG9pbnQocG9ydCwgcHJpdi1cXHUwMDNlbXV4X2lkKTtcXG4gMzMyOlxcdFxcdFxcdFxcdGlmICghZXApXFxuIDMzMzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzM0OlxcdFxcbiAzMzU6XFx0XFx0XFx0XFx0aWYgKHJtbmV0X2dldF9lbmRwb2ludChwb3J0LCBtdXhfaWQpKSB7XFxuIDMzNjpcXHRcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbiAzMzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcIk1VWCBJRCBhbHJlYWR5IGV4aXN0c1xcXCIpO1xcbiAzMzg6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDMzOTpcXHRcXHRcXHRcXHR9XFxuIDM0MDpcXHRcXG4gMzQxOlxcdFxcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2ZXAtXFx1MDAzZWhsbm9kZSk7XFxuIDM0MjpcXHRcXHRcXHRcXHRobGlzdF9hZGRfaGVhZF9yY3UoXFx1MDAyNmVwLVxcdTAwM2VobG5vZGUsXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cG9ydC1cXHUwMDNlbXV4ZWRfZXBbbXV4X2lkXSk7XFxuIDM0NDpcXHRcXG4gMzQ1OlxcdFxcdFxcdFxcdGVwLVxcdTAwM2VtdXhfaWQgPSBtdXhfaWQ7XFxuIDM0NjpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VtdXhfaWQgPSBtdXhfaWQ7XFxuIDM0NzpcXHRcXHRcXHR9XFxuIDM0ODpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjMxLjgwNzM5NDI5N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc5OTIwMDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IEFuYWx5c2lzIG9mIHRoZSBgcm1uZXRgIE1vZHVsZSBNb2RpZmljYXRpb25zKipcblxuQWxyaWdodCwgc28gYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQncyAqdGhlKiBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCwgYW5kIHRoZSBvbmx5IG9uZSB0aGF0J3MgYmVlbiBjaGFuZ2VkLiBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgdGhlIGNvcmUgb2Ygd2hhdGV2ZXIgdGhlIG1vZGlmaWNhdGlvbiBlbnRhaWxzLiBUbyBiZSB0aG9yb3VnaCwgSSdsbCBpbmNsdWRlIGl0IGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1icmFpbmVyLlxuXG5Ob3csIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBsaW5rIGNoYW5nZXMsIHdlJ2xsIG5lZWQgYSBtZWNoYW5pc20gZm9yICpjcmVhdGluZyogdGhlIGRldmljZSBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHJhdGhlciwgdGhlIGVudHJ5cG9pbnQgZm9yIHRoYXQgZnVuY3Rpb24uIGBybW5ldF92bmRfbmV3bGlua2AgZml0cyB0aGUgYmlsbCBhcyBpdCdzIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVzZSBuZXcgZGV2aWNlcy4gU2luY2UgYGNoYW5nZWxpbmtgIGlzIGEgcHJlcmVxdWlzaXRlLCBJJ2xsIGFkZCB0aGF0IHRvIGBGb2N1c1N5bWJvbHNgIGFzIHdlbGwuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byBiZSBjYXJlZnVsIG9mIHBvdGVudGlhbCBzaWRlLWVmZmVjdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGVsc2UgdGhhdCBpcyBub24tc3RhdGljIGluIGBybW5ldF9jb25maWcuY2AuIFRoZXJlIGNvdWxkIGJlIG90aGVyIHJlbGF0ZWQgZW50cnkgcG9pbnRzIG9yIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gdGhlIGNoYW5nZSwgZXZlbiBpZiB0aGV5IGFyZW4ndCBkaXJlY3RseSBtb2RpZmllZC4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBCZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0d29yayBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMwMSwiT3V0cHV0VG9rZW5zIjo2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MzUuODg3MzE3MjJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDc5MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHJtbmV0X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz0yND1zdGF0aWMgaW50IHJtbmV0X2lzX3JlYWxfZGV2X3JlZ2lzdGVyZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKnJlYWxfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMjktLyogTmVlZHMgcnRubCBsb2NrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6MzA6c3RydWN0IHJtbmV0X3BvcnQqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtMzEtcm1uZXRfZ2V0X3BvcnRfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYz00MDg9c3RydWN0IHJ0bmxfbGlua19vcHMgcm1uZXRfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MjI6c3RydWN0IHJtbmV0X3BvcnQgKnJtbmV0X2dldF9wb3J0X3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYzo0MzA6c3RydWN0IHJtbmV0X2VuZHBvaW50ICpybW5ldF9nZXRfZW5kcG9pbnQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQsIHU4IG11eF9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jOjQ0MjppbnQgcm1uZXRfYWRkX2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqcm1uZXRfZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jLTQ0My1cXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYy00OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmM6NDk2OmludCBybW5ldF9kZWxfYnJpZGdlKHN0cnVjdCBuZXRfZGV2aWNlICpybW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmMtNDk3LVxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6MzUuOTMyODA0MjQ2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTEwMzE3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIFJNTkVUIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBybW5ldGAgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGBydG5sYCAocm91dGluZyBuZXRsaW5rKSBpbnRlcmZhY2UuIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYHJtbmV0X2FkZF9icmlkZ2VgLCBgcm1uZXRfZGVsX2JyaWRnZWAsIGBybW5ldF9nZXRfZW5kcG9pbnRgLCBgcm1uZXRfZ2V0X3BvcnRfcmN1YCwgYW5kIGBybW5ldF9nZXRfcG9ydF9ydG5sYCBhcmUgbm90IGRlY2xhcmVkIHN0YXRpYywgYnV0IHRoZSBtYWluIG9uZXMgSSdtIGludGVyZXN0ZWQgaW4gZm9yIGBydG5sYCBvcGVyYXRpb25zIGFyZSBgcm1uZXRfbmV3bGlua2AgYW5kIGBybW5ldF9jaGFuZ2VsaW5rYC5cblxuTm93LCB3aGlsZSBgcm1uZXRfY2hhbmdlbGlua2AgKmlzKiBzdGF0aWMsIGl0IGlzIGFzc2lnbmVkIHRvIGBydG5sX2xpbmtfb3BzYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGRldGFpbC4gVGhpcyBtZWFucyBzeXprYWxsZXIgY2FuIHJlYWNoIGl0IHRocm91Z2ggYW4gYFJUTV9ORVdMSU5LYCBtZXNzYWdlIHdpdGggYElGTEFfSU5GT19LSU5EYCBzZXQgdG8gXCJybW5ldFwiLiBTbywgYHJtbmV0X2NoYW5nZWxpbmtgIGlzIGluZGVlZCBhIHZpYWJsZSB0YXJnZXQgZm9yIGZ1enppbmcsIHdoaWNoIGlzIGdyZWF0LiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgcHJvY2VzcyBjb25zaWRlcnMgdGhlIGBybW5ldF92bmRfbmV3bGlua2AuXG5cbkknbSBtYWtpbmcgc3VyZSB0byBjb25zaWRlciB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zOiBgUk1ORVRgIGFuZCBgTkVUX1ZFTkRPUl9RVUFMQ09NTWAuIEdvb2QsIGl0IGxvb2tzIGxpa2UgYFJNTkVUYCBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyLlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBwbGFuIGlzIHNvbGlkLiBJJ3ZlIGdvdCB0aGlzIGpzb24gY29uZmlnIGZpbGUgdGhhdCBsYXlzIG91dCBteSBhcHByb2FjaC4gSSd2ZSBzZXQgXCJXb3J0aEZ1enppbmdcIiB0byB0cnVlLCBhbmQgbXkgXCJGb2N1c1N5bWJvbHNcIiBhcmUgYHJtbmV0X2NoYW5nZWxpbmtgIGFuZCBgcm1uZXRfdm5kX25ld2xpbmtgLiBJJ3ZlIGluY2x1ZGVkIGBSTU5FVGAgYW5kIGBORVRfVkVORE9SX1FVQUxDT01NYCBpbiBcIkVuYWJsZUNvbmZpZ3NcIi5cblxuVGhlIFwiUmVhc29uaW5nXCIgYmVoaW5kIGFsbCBvZiB0aGlzPyBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjYXBhYmlsaXR5IGNoZWNrIHdpdGhpbiBgcm1uZXRfY2hhbmdlbGlua2AgdG8gc3RvcCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtZXNzaW5nIHdpdGggdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZXJlZm9yZSwgbmVlZHMgcmlnb3JvdXMgZnV6emluZyB0byBlbnN1cmUgdGhlIGNhcGFiaWxpdHkgY2hlY2sgaXMgc29saWQgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIG9yIHJlZ3Jlc3Npb25zLiBJJ20ga2VlbiB0byBzZWUgaWYgdGhpcyBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzkwLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0OTo0Mi42ODM4MzgwNzFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTQzNTExMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIixcbiAgICBcIk5FVF9WRU5ET1JfUVVBTENPTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9jaGFuZ2VsaW5rXCIsXG4gICAgXCJybW5ldF92bmRfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIixcbiAgICBcIk5FVF9WRU5ET1JfUVVBTENPTU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9jaGFuZ2VsaW5rXCIsXG4gICAgXCJybW5ldF92bmRfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYXBhYmlsaXR5IGNoZWNrIHRvIHJtbmV0X2NoYW5nZWxpbmsgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlcnMgZnJvbSBtb2RpZnlpbmcgdGhlIGxpbmsgcHJvcGVydGllcyBvZiBhbiBybW5ldCBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbmV0d29yayBuYW1lc3BhY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBjYXBhYmlsaXR5IGNoZWNrIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjQyLjc2MzI4MDE1M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2NDI0NTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ5OjQyLjc2Mzg1NTE1M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjYzNjY1NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhOTk2MzhlMTE4ZjM5NTU4NTkwNWVjNTE1N2I1Y2NmMTY2YzRhMTYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDg6NDc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5pbmRleCA3OGQ0ZGY1NTc0MGExLi45NzNkNGM0NGE2M2JiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfY29uZmlnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2NvbmZpZy5jXG5AQCAtMzEyLDYgKzMxMiwxNCBAQCBzdGF0aWMgaW50IHJtbmV0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdGlmICghcm1uZXRfaXNfcmVhbF9kZXZfcmVnaXN0ZXJlZChyZWFsX2RldikpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFxuK1x0LypcbitcdCAqIFRoZSBydG5sIHBhdGggb25seSBjaGVja3MgQ0FQX05FVF9BRE1JTiBhZ2FpbnN0IGRldl9uZXQoZGV2KSxcbitcdCAqIGJ1dCB0aGUgcG9ydCBzdGF0ZSBtdXRhdGVkIGJlbG93IGlzIGF0dGFjaGVkIHRvIHJlYWxfZGV2LCB3aGljaFxuK1x0ICogbWF5IGxpdmUgaW4gYSBkaWZmZXJlbnQgbmV0bnMuXG4rXHQgKi9cbitcdGlmICghcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZShkZXYsIGRldl9uZXQocmVhbF9kZXYpKSlcbitcdFx0cmV0dXJuIC1FUEVSTTtcbitcbiBcdHBvcnQgPSBybW5ldF9nZXRfcG9ydF9ydG5sKHJlYWxfZGV2KTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfUk1ORVRfTVVYX0lEXSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6NDIuNzYzODU2MDUzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjM2MTE5NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUk1ORVQgU2VjdXJpdHkgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaW4gYHJtbmV0X2NoYW5nZWxpbmsoKWAgbG9va3MgbGlrZSBhIHNvbGlkIHNlY3VyaXR5IGVuaGFuY2VtZW50LiBUaGUgY29yZSBpZGVhIGlzIHRvIHByZXZlbnQgYSB1c2VyIHdpdGggYENBUF9ORVRfQURNSU5gIGluICpvbmUqIG5ldHdvcmsgbmFtZXNwYWNlIGZyb20gbWVzc2luZyB3aXRoIHRoZSBwb3J0IHN0YXRlIG9mIGEgYHJlYWxfZGV2YCByZXNpZGluZyBpbiAqYW5vdGhlciogbmV0bnMuIFRoaXMgaXMgYSBjb21tb24gYW5kIGltcG9ydGFudCBzZWN1cml0eSBjb25jZXJuLCBhbmQgdGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlZmZlY3RpdmUuXG5cblRoZSBhZGRlZCBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZSgpYCBjaGVjayBpcyB0aGUga2V5LiBJdCdzIHByb3Blcmx5IHZlcmlmeWluZyBwZXJtaXNzaW9ucyBhZ2FpbnN0IHRoZSBgcmVhbF9kZXZgJ3MgbmV0d29yayBuYW1lc3BhY2UsIG5vdCBqdXN0IHRoZSBvbmUgd2hlcmUgdGhlIG9yaWdpbmFsIGBkZXZgIGV4aXN0cy4gTWFrZXMgc2Vuc2U7IHRoYXQncyB0aGUgdnVsbmVyYWJpbGl0eSB0aGV5J3JlIGFkZHJlc3NpbmcuXG5cbk5vdywgYXMgYW4gZXhwZXJ0LCBJJ20gYWxyZWFkeSBsb29raW5nIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgY29kZSBpdHNlbGYgaXMgY2xlYW4gYW5kIGNvbmNpc2UuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgc3RydWN0dXJlcyBpbnRyb2R1Y2VkLCBhbmQgSSBzZWUgbm8gaW5kaWNhdGlvbiBvZiBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZSBjaGFuZ2UgaXMgc2ltcGx5IGEgcGVybWlzc2lvbiBjaGVjayBiZWZvcmUgdGhlIGNyaXRpY2FsIHBvcnQgc3RhdGUgbW9kaWZpY2F0aW9uLiBUaGUgY29tbWVudCBibG9jayBjbGFyaWZpZXMgdGhlIHJhdGlvbmFsZSwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSBxdWlja2x5LlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgcmVxdWlyZWQgaGVyZS4gSXQncyBhIHBlcm1pc3Npb24gY2hlY2ssIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCBgTmVlZHNLTVNBTj1mYWxzZWAuIEl0J3MgYSB3ZWxsLXNjb3BlZCBhbmQgd2VsbC1pbXBsZW1lbnRlZCBzZWN1cml0eSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDksIk91dHB1dFRva2VucyI6MTAyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDk6NTAuNDI3NDk0MjUyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FwYWJpbGl0eSBjaGVjayBgcnRubF9kZXZfbGlua19uZXRfY2FwYWJsZWAgaW4gYHJtbmV0X2NoYW5nZWxpbmtgIHRvIHByZXZlbnQgdW5hdXRob3JpemVkIG11dGF0aW9uIG9mIHBvcnQgc3RhdGUgYWNyb3NzIG5ldHdvcmsgbmFtZXNwYWNlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[1] Phase: Succeeded StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 08:50:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 08:50:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2] Phase: Succeeded StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 08:50:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-19 08:50:02 +0000 UTC FinishedAt: 2026-08-19 08:50:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbtx2c/series-workflowbtx2c-convert-artifact-1021184873/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-19 08:50:12 +0000 UTC FinishedAt: 2026-08-19 09:10:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-19 08:50:12 +0000 UTC FinishedAt: 2026-08-19 09:10:43 +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:*d9c74f26-10e4-4e84-8b80-67a9dd6091c9,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-workflowbtx2c/series-workflowbtx2c-convert-artifact-1021184873/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": "ccc80c9d-fffa-471d-b33f-40db20d0c23a", "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-workflowbtx2c/series-workflowbtx2c-build-action-3720470215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-19 08:50:12 +0000 UTC FinishedAt: 2026-08-19 09:10:16 +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:*d9c74f26-10e4-4e84-8b80-67a9dd6091c9,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-workflowbtx2c/series-workflowbtx2c-convert-artifact-1021184873/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": "ccc80c9d-fffa-471d-b33f-40db20d0c23a", "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-workflowbtx2c/series-workflowbtx2c-build-action-3720470215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-19 09:10:43 +0000 UTC FinishedAt: 2026-08-19 09:10:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-19 09:10:43 +0000 UTC FinishedAt: 2026-08-19 09:10:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-19 09:10:43 +0000 UTC FinishedAt: 2026-08-19 09:10:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-19 09:10:43 +0000 UTC FinishedAt: 2026-08-19 09:10:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbtx2c/series-workflowbtx2c-convert-artifact-1119026940/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-19 09:10:53 +0000 UTC FinishedAt: 2026-08-19 09:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-19 09:10:53 +0000 UTC FinishedAt: 2026-08-19 09:12:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccc80c9d-fffa-471d-b33f-40db20d0c23a,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-workflowbtx2c/series-workflowbtx2c-build-action-3720470215/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-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-19 09:13:01 +0000 UTC FinishedAt: 2026-08-19 09:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-19 09:13:01 +0000 UTC FinishedAt: 2026-08-19 09:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-19 09:13:01 +0000 UTC FinishedAt: 2026-08-19 09:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-19 09:13:01 +0000 UTC FinishedAt: 2026-08-19 09:41:14 +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:*d9c74f26-10e4-4e84-8b80-67a9dd6091c9,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-workflowbtx2c/series-workflowbtx2c-convert-artifact-1119026940/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": "09f0dc3c-5f26-4f41-a155-7e87ff0ccb42", "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-workflowbtx2c/series-workflowbtx2c-build-action-2428074840/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-19 09:13:01 +0000 UTC FinishedAt: 2026-08-19 09:40:53 +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:*d9c74f26-10e4-4e84-8b80-67a9dd6091c9,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-workflowbtx2c/series-workflowbtx2c-convert-artifact-1119026940/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": "09f0dc3c-5f26-4f41-a155-7e87ff0ccb42", "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-workflowbtx2c/series-workflowbtx2c-build-action-2428074840/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-19 09:41:14 +0000 UTC FinishedAt: 2026-08-19 09:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-19 09:41:14 +0000 UTC FinishedAt: 2026-08-19 09:41:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-19 09:41:14 +0000 UTC FinishedAt: 2026-08-19 09:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-19 09:41:14 +0000 UTC FinishedAt: 2026-08-19 09:43:05 +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:*09f0dc3c-5f26-4f41-a155-7e87ff0ccb42,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-workflowbtx2c/series-workflowbtx2c-build-action-2428074840/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-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +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":["rmnet_changelink","rmnet_vnd_newlink"],"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:*ccc80c9d-fffa-471d-b33f-40db20d0c23a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*09f0dc3c-5f26-4f41-a155-7e87ff0ccb42,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-workflowbtx2c/series-workflowbtx2c-build-action-3720470215/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-workflowbtx2c/series-workflowbtx2c-build-action-2428074840/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 09:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 09:43:20 +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":["rmnet_changelink","rmnet_vnd_newlink"],"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-workflowbtx2c/series-workflowbtx2c-convert-artifact-605493189/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 09:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 09:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-19 09:43:15 +0000 UTC FinishedAt: 2026-08-19 09:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-19 09:43:25 +0000 UTC FinishedAt: 2026-08-19 10:44:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbtx2c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_changelink","rmnet_vnd_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e2466392a0b8496000e12181cb1ee1535eb0da25","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET","NET_VENDOR_QUALCOMM"],"series_id":"963c80fb-1095-414d-8bc1-38fa675ad1ef","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-19 09:43:25 +0000 UTC FinishedAt: 2026-08-19 10:43:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccc80c9d-fffa-471d-b33f-40db20d0c23a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*09f0dc3c-5f26-4f41-a155-7e87ff0ccb42,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-workflowbtx2c/series-workflowbtx2c-build-action-3720470215/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-workflowbtx2c/series-workflowbtx2c-build-action-2428074840/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-workflowbtx2c/series-workflowbtx2c-convert-artifact-605493189/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,}