Name: series-workflowvv5rn Phase: Succeeded StartedAt: 2026-07-18 14:55:24 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[0] Phase: Succeeded StartedAt: 2026-07-18 14:55:24 +0000 UTC FinishedAt: 2026-07-18 15:08:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[0].run-triage Phase: Succeeded StartedAt: 2026-07-18 14:55:24 +0000 UTC FinishedAt: 2026-07-18 15:08:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "064cdccf-c43f-4ba9-aecf-0db228e38fd0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_ioctl", "phylink_mii_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMTU6MDg6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDJhMGQ3ZWZmODhkM2ZmLi41NjJkMjA4MzBiOTQ5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC02MzcxLDI4ICYjNDM7NjM3MSwxNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4gICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0b1xuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cbiAgKiAgQGNtZDogSU9DVEwgY29tbWFuZFxuLSAqICBEZXNjcmlwdGlvbjpcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXG4mIzQzOyAqICBEZXNjcmlwdGlvbjogRm9yd2FyZCB0aGUgUEhZIGlvY3RscyB0byBwaHlsaW5rXG4mIzQzOyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLlxuICAqL1xuIHN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYgKGRldik7XG4tXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRzd2l0Y2ggKGNtZCkge1xuLVx0Y2FzZSBTSU9DR01JSVBIWTpcbi1cdGNhc2UgU0lPQ0dNSUlSRUc6XG4tXHRjYXNlIFNJT0NTTUlJUkVHOlxuLVx0XHRyZXQgPSBwaHlsaW5rX21paV9pb2N0bChwcml2LVx1MDAzZXBoeWxpbmssIHJxLCBjbWQpO1xuLVx0XHRicmVhaztcbi1cdGRlZmF1bHQ6XG4tXHRcdGJyZWFrO1xuLVx0fVxuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfaW9jdGwmIzM0OywKICAgICYjMzQ7cGh5bGlua19taWlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMTU6MDg6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyYTBkN2VmZjg4ZDNmZi4uNTYyZDIwODMwYjk0OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNjM3MSwyOCAmIzQzOzYzNzEsMTcgQEAgc3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKQogICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0bwogICogIGEgcHJvcHJpZXRhcnkgc3RydWN0dXJlIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgZHJpdmVyLgogICogIEBjbWQ6IElPQ1RMIGNvbW1hbmQKLSAqICBEZXNjcmlwdGlvbjoKLSAqICBDdXJyZW50bHkgaXQgc3VwcG9ydHMgdGhlIHBoeV9taWlfaW9jdGwoLi4uKSBhbmQgSFcgdGltZSBzdGFtcGluZy4KJiM0MzsgKiAgRGVzY3JpcHRpb246IEZvcndhcmQgdGhlIFBIWSBpb2N0bHMgdG8gcGh5bGluawomIzQzOyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLgogICovCiBzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2IChkZXYpOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAogCWlmICghbmV0aWZfcnVubmluZyhkZXYpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXN3aXRjaCAoY21kKSB7Ci0JY2FzZSBTSU9DR01JSVBIWToKLQljYXNlIFNJT0NHTUlJUkVHOgotCWNhc2UgU0lPQ1NNSUlSRUc6Ci0JCXJldCA9IHBoeWxpbmtfbWlpX2lvY3RsKHByaXYtJmd0O3BoeWxpbmssIHJxLCBjbWQpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi0mZ3Q7cGh5bGluaywgcnEsIGNtZCk7CiB9CiAKIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIHN0bW1hYyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHN0bW1hY19pb2N0bGAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgYSBzd2l0Y2ggc3RhdGVtZW50IHRoYXQgd2FzIHJlc3RyaWN0aW5nIHdoaWNoIGBwaHlsaW5rX21paV9pb2N0bGAgY2FsbHMgd2VyZSBhbGxvd2VkLiBOb3csIGl0JiMzOTtzIGZvcndhcmRpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB3aGF0IGBwaHlsaW5rX21paV9pb2N0bGAgYWN0dWFsbHkgKmRvZXMqLgoKQnV0IGhvbGQgb24sIGBzdG1tYWNfaW9jdGxgLi4uIGNhbiB0aGlzIGV2ZW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHR5cGljYWwgeDg2IFZNczsgdGhpcyBpcyBhbiBldGhlcm5ldCBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBoYXJkd2FyZSwgdHlwaWNhbGx5IDEwLzEwMC8xMDAwL0VRT1MgRXRoZXJuZXQgTUFDcy4gVGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgdXN1YWxseSBwcmVzZW50IHVubGVzcyBpdCYjMzk7cyBlbXVsYXRlZCBvciBzcGVjaWZpY2FsbHkgcGFzc2VkIHRocm91Z2guIEhvd2V2ZXIsIEkga25vdyBgc3RtbWFjYCBpcyB1c2VkIG9uIGNlcnRhaW4gQVJNIGJvYXJkcy4uLiBDb3VsZCB3ZSBlbXVsYXRlIGl0IHRoZXJlPwoKTGV0IG1lIHNlZS4uLiBEb2VzIFFFTVUgaGF2ZSBhbnl0aGluZz8gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcuIFFFTVUgbWlnaHQgaGF2ZSBzdXBwb3J0IGZvciBgc3RtbWFjYC4uLiBXYWl0IGEgbWludXRlLCBRRU1VIGhhcyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIHNvbWV0aGluZywgYnV0IGBzdG1tYWNgIGlzIGBkd21hY2AgKERlc2lnbldhcmUgTUFDKSEgU28gUUVNVSBkb2VzIGVtdWxhdGUgYGR3bWFjYD8gWWVwLCBgaHcvbmV0L2Rlc2lnbndhcmUuY2Agb3IgYGh3L25ldC9pbXhfZmVjLmNgLiBPa2F5LCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgZm9yIERlc2lnbldhcmUgTUFDLgoKQWxyaWdodCwgc28gbGV0JiMzOTtzIHNoaWZ0IGdlYXJzOiBJcyBgc3RtbWFjYCBhIFBDSSBkZXZpY2U/IEkgc2VlbSB0byByZWNhbGwgdGhlcmUgYmVpbmcgYSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gWWVwLCB0aGVyZSBpdCBpcyEgU28gaXQgKmNhbiogYmUgYSBQQ0kgZGV2aWNlLiBUaGF0IG9wZW5zIHVwIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuCgpJZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHRoZW4gd2UgbmVlZCB0byBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LiBJIGtub3cgUENJIGRldmljZXMgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcsIG9yIGlmIFFFTVUgaGFzIGVtdWxhdGlvbi4uLiBzbyBpdCBzb3VuZHMgbGlrZSB0aGVyZSBhcmUgc2V2ZXJhbCB2ZWN0b3JzIGZvciBleHBsb3JpbmcgdGhpcy4KCkJhY2sgdG8gdGhlIHBhdGNoLi4uIGl0JiMzOTtzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYC4gSSBzaG91bGQgcmV2aXNpdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYWdhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjM0OT1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MzY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MzY5OiAqICBzdG1tYWNfaW9jdGwgLSBFbnRyeSBwb2ludCBmb3IgdGhlIElvY3RsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzNzAtICogIEBkZXY6IERldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM3Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM3NzpzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMDktXHQubmRvX3R4X3RpbWVvdXQgPSBzdG1tYWNfdHhfdGltZW91dCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcdC5uZG9fZXRoX2lvY3RsID0gc3RtbWFjX2lvY3RsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJT0NUTCBQYXRjaCBhbmQgU1RNTUFDJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgcmVkaXJlY3RpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IGJlZ3MgdGhlIHF1ZXN0aW9uLCBpcyBgcGh5bGlua19taWlfaW9jdGxgIGV2ZW4gYWNjZXNzaWJsZT8gQSBxdWljayBtZW50YWwgam9nIHJldmVhbHMgdGhhdCBgbmRvX2V0aF9pb2N0bGAgaXMgaW5kZWVkIHRoZSBnYXRld2F5LiBHb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLgoKTm93LCBJIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiBgc3RtbWFjYC4gVGhlIGZhY3QgdGhhdCBpdCBoYXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19wY2kuY2AsIGlzIGEgc2lnbmlmaWNhbnQgaW5kaWNhdG9yLiBQQ0kgZHJpdmVycyBvZnRlbiBwcmVzZW50IGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlcy4gVGhlcmVmb3JlLCBJIHNob3VsZCBjaGVjayBgc3RtbWFjX3BjaS5jYCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBjb2RlIGluZGVlZCByZWxhdGVzIHRvIGEgUENJIGRyaXZlci4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaW5kaWNhdGlvbiBvZiBpdHMgb3ZlcmFsbCBleHBvc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGhvdyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIG1pZ2h0IGJlIHRvbyBzaW1wbGlzdGljLiBJcyBpdCBwb3NzaWJsZSB0aGF0IHRoZSB0eXBpY2FsIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBjYWxsLCBhcyBJIGtub3cgaXQsIGlzbiYjMzk7dCBkaXJlY3RseSB0aGUgb25lIGJlaW5nIGV4ZWN1dGVkPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgd3JhcHBlciBmdW5jdGlvbiBpbiBwbGFjZSwgYWRkaW5nIGFuIGV4dHJhIGxheWVyIG9mIGFic3RyYWN0aW9uLiBUaGlzIGNvdWxkIGltcGFjdCBob3cgSSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2VzcyBhbmQgYW55IGFzc29jaWF0ZWQgZGVidWdnaW5nIGVmZm9ydHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29kZSBwYXRoIHRvIGJlIGNlcnRhaW4uIEEgd3JhcHBlciwgaWYgcHJlc2VudCwgY291bGQgaW50cm9kdWNlIGFkZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24sIGVycm9yIGhhbmRsaW5nLCBvciBldmVuIG1vZGlmeSB0aGUgYXJndW1lbnRzIHBhc3NlZCBkb3duc3RyZWFtLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gYW5kIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzgyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM4NDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzODUtXHQubmFtZSA9IFwmIzM0O2ludGVsLWV0aC1wY2lcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk0Om1vZHVsZV9wY2lfZHJpdmVyKGludGVsX2V0aF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTYwMj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbG9vbmdzb25fZHdtYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjYwNDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbG9vbmdzb25fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDUtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBgc3RtbWFjYCBEcml2ZXIqKgoKT2theSwgc28gYHN0bW1hY2AgKmRvZXMqIGhhdmUgbXVsdGlwbGUgUENJIGRyaXZlcnMg4oCTIGludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMgZm9yIGZ1enppbmcgaXQgdGhyb3VnaCBzdGFuZGFyZCBQQ0kgZnV6emluZyB0ZWNobmlxdWVzLiBBbmQsIG9mIGNvdXJzZSwgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLCB0aGF0IGFkZHMgYW5vdGhlciBsYXllci4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIFN5emthbGxlciBjYW4gZnV6eiBpb2N0bHMgb24gbmV0d29yayBpbnRlcmZhY2VzLCByaWdodD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzZWVtcyB0byBiZSByZWRpcmVjdGluZyBhbGwgaW9jdGxzIGluIGBzdG1tYWNfaW9jdGxgIHRvIGBwaHlsaW5rX21paV9pb2N0bGAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgc2hvdWxkIG1ha2UgYSBub3RlIHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHN0bW1hY2AuIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgZW5hYmxlZCB0byBiZSBhYmxlIHRvIGJlIGNvcnJlY3RseSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGFyZSB0aGVzZSBldGhlcm5ldCBzcGVjaWZpYyBvciBQQ0kgcmVsYXRlZD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyLiBUaGUgZHJpdmVyIGNvbnRleHQgc3VnZ2VzdHMgRXRoZXJuZXQsIHNvIEkgdGhpbmsgSSBtaWdodCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgUEhZIGxpbmsuCgpUbyBjbGFyaWZ5IHRoZWlyIHVzZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFBIWSBsYXllciwgc3BlY2lmaWNhbGx5LCBzbyBteSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBhbnkgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfbWlpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTA5LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTEwOiAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMS0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyNi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUyNzppbnQgcGh5bGlua19taWlfaW9jdGwoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU4NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJT0NUTCBQYXRjaCBmb3IgYHN0bW1hY19pb2N0bGAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBGcm9tIG15IHBlcnNwZWN0aXZlLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHdpdGhpbiB0aGUgYHN0bW1hY19pb2N0bGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBleHBhbmRpbmcgaXRzIGludGVyYWN0aW9uIHdpdGggYHBoeWxpbmtfbWlpX2lvY3RsYC4gIFRoZSBwYXRjaCBlc3NlbnRpYWxseSBvcGVucyB1cCBgc3RtbWFjX2lvY3RsYCB0byBhIHdpZGVyIHJhbmdlIG9mIElPQ1RMIGNvbW1hbmRzLCBmb3J3YXJkaW5nIGV2ZXJ5dGhpbmcgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYC4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIGBzdG1tYWNfaW9jdGxgIGlzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuICBBYnNvbHV0ZWx5ISBJdCYjMzk7cyBhbiBpb2N0bCBoYW5kbGVyIGZvciBhIG5ldHdvcmsgZGV2aWNlIOKAkyB0aGF0JiMzOTtzIHByaW1lIHJlYWwgZXN0YXRlIGZvciBmdXp6aW5nLiAgR2l2ZW4gdGhlIGNoYW5nZXMsIEkmIzM5O2QgZGVmaW5pdGVseSBtYWtlIGBzdG1tYWNfaW9jdGxgIG15IGZvY3VzIHN5bWJvbC4KCkFzIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgZXhpc3RpbmcgY29uZmlncyBzZWVtIGFwcHJvcHJpYXRlOiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4KCk5vdywgdGhlIGNydWNpYWwgdmVyaWZpY2F0aW9uOiBpcyBgcGh5bGlua19taWlfaW9jdGxgICp0aGUgb25seSogZnVuY3Rpb24gY2FsbGVkIGZyb20gd2l0aGluIGBzdG1tYWNfaW9jdGxgPyAgWWVwLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZGlyZWN0IGNhbGwsIHNpbXBsaWZ5aW5nIHRoZSBvdmVyYWxsIGZsb3cuIFRoZSBwYXRjaCBoYXMgcmVtb3ZlZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBub3cgcGFzc2VzIGFsbCBjb21tYW5kcyBkaXJlY3RseSB0byBgcGh5bGlua19taWlfaW9jdGxgLgoKVGhpcyBpcyBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gbGltaXRlZCBjb21tYW5kcyBsaWtlIGBTSU9DR01JSVBIWWAsIGBTSU9DR01JSVJFR2AsIGFuZCBgU0lPQ1NNSUlSRUdgLiBCdXQgdGhlIHBhdGNoIHJlbW92ZXMgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgoKU28sIGBwaHlsaW5rX21paV9pb2N0bGAgaXMgbm93IGhhbmRsaW5nIGBTSU9DR01JSVBIWWAsIGBTSU9DR01JSVJFR2AsIGBTSU9DU01JSVJFR2AsIGFuZCBwb3RlbnRpYWxseSBtb3JlLiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgcGh5bGlua19taWlfaW9jdGxgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgY29tbWFuZHMgYXJlIHBvdGVudGlhbGx5IGV4cG9zZWQgYW5kIGhvdyB0aGV5IGFyZSBoYW5kbGVkLCB0byBpZGVudGlmeSB0aGUgZnVsbCBzY29wZSBvZiBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUyNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTI3Olx0aW50IHBoeWxpbmtfbWlpX2lvY3RsKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4zNTI4Olx0e1xuMzUyOTpcdFx0c3RydWN0IG1paV9pb2N0bF9kYXRhICptaWkgPSBpZl9taWkoaWZyKTtcbjM1MzA6XHRcdGludCAgcmV0O1xuMzUzMTpcdFxuMzUzMjpcdFx0QVNTRVJUX1JUTkwoKTtcbjM1MzM6XHRcbjM1MzQ6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpIHtcbjM1MzU6XHRcdFx0LyogUEhZcyBvbmx5IGV4aXN0IGZvciBNTE9fQU5fUEhZIGFuZCBTR01JSSAqL1xuMzUzNjpcdFx0XHRzd2l0Y2ggKGNtZCkge1xuMzUzNzpcdFx0XHRjYXNlIFNJT0NHTUlJUEhZOlxuMzUzODpcdFx0XHRcdG1paS1cdTAwM2VwaHlfaWQgPSBwbC1cdTAwM2VwaHlkZXYtXHUwMDNlbWRpby5hZGRyO1xuMzUzOTpcdFx0XHRcdGZhbGx0aHJvdWdoO1xuMzU0MDpcdFxuMzU0MTpcdFx0XHRjYXNlIFNJT0NHTUlJUkVHOlxuMzU0MjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGh5X3JlYWQocGwsIG1paS1cdTAwM2VwaHlfaWQsIG1paS1cdTAwM2VyZWdfbnVtKTtcbjM1NDM6XHRcdFx0XHRpZiAocmV0IFx1MDAzZT0gMCkge1xuMzU0NDpcdFx0XHRcdFx0bWlpLVx1MDAzZXZhbF9vdXQgPSByZXQ7XG4zNTQ1Olx0XHRcdFx0XHRyZXQgPSAwO1xuMzU0NjpcdFx0XHRcdH1cbjM1NDc6XHRcdFx0XHRicmVhaztcbjM1NDg6XHRcbjM1NDk6XHRcdFx0Y2FzZSBTSU9DU01JSVJFRzpcbjM1NTA6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3BoeV93cml0ZShwbCwgbWlpLVx1MDAzZXBoeV9pZCwgbWlpLVx1MDAzZXJlZ19udW0sXG4zNTUxOlx0XHRcdFx0XHRcdFx0bWlpLVx1MDAzZXZhbF9pbik7XG4zNTUyOlx0XHRcdFx0YnJlYWs7XG4zNTUzOlx0XG4zNTU0Olx0XHRcdGRlZmF1bHQ6XG4zNTU1Olx0XHRcdFx0cmV0ID0gcGh5X21paV9pb2N0bChwbC1cdTAwM2VwaHlkZXYsIGlmciwgY21kKTtcbjM1NTY6XHRcdFx0XHRicmVhaztcbjM1NTc6XHRcdFx0fVxuMzU1ODpcdFx0fSBlbHNlIHtcbjM1NTk6XHRcdFx0c3dpdGNoIChjbWQpIHtcbjM1NjA6XHRcdFx0Y2FzZSBTSU9DR01JSVBIWTpcbjM1NjE6XHRcdFx0XHRtaWktXHUwMDNlcGh5X2lkID0gMDtcbjM1NjI6XHRcdFx0XHRmYWxsdGhyb3VnaDtcbjM1NjM6XHRcbjM1NjQ6XHRcdFx0Y2FzZSBTSU9DR01JSVJFRzpcbjM1NjU6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX21paV9yZWFkKHBsLCBtaWktXHUwMDNlcGh5X2lkLCBtaWktXHUwMDNlcmVnX251bSk7XG4zNTY2Olx0XHRcdFx0aWYgKHJldCBcdTAwM2U9IDApIHtcbjM1Njc6XHRcdFx0XHRcdG1paS1cdTAwM2V2YWxfb3V0ID0gcmV0O1xuMzU2ODpcdFx0XHRcdFx0cmV0ID0gMDtcbjM1Njk6XHRcdFx0XHR9XG4zNTcwOlx0XHRcdFx0YnJlYWs7XG4zNTcxOlx0XG4zNTcyOlx0XHRcdGNhc2UgU0lPQ1NNSUlSRUc6XG4zNTczOlx0XHRcdFx0cmV0ID0gcGh5bGlua19taWlfd3JpdGUocGwsIG1paS1cdTAwM2VwaHlfaWQsIG1paS1cdTAwM2VyZWdfbnVtLFxuMzU3NDpcdFx0XHRcdFx0XHRcdG1paS1cdTAwM2V2YWxfaW4pO1xuMzU3NTpcdFx0XHRcdGJyZWFrO1xuMzU3NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTk1CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjX2lvY3RsYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24gaGFzIGEgYGRlZmF1bHRgIGNhc2UgdGhhdCBub3cgY2FsbHMgYHBoeV9taWlfaW9jdGwocGwtJmd0O3BoeWRldiwgaWZyLCBjbWQpYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhhdCByZW1vdmluZyB0aGF0IHN3aXRjaCBpbiBgc3RtbWFjX2lvY3RsYCBpcyBhIHNpZ25pZmljYW50IHRoaW5nLiBFc3NlbnRpYWxseSwgd2UgYXJlIG5vdyBwYXNzaW5nICphbGwqIGlvY3RscyB0byBgcGh5X21paV9pb2N0bGAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQ/IEl0JiMzOTtzIGV4cG9zaW5nIHBvdGVudGlhbGx5IG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYmxvY2tlZC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGludm9sdmluZyBpb2N0bHMgaW4gYSBuZXR3b3JrIGRyaXZlciwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYHN0bW1hY19pb2N0bGAgYW5kIGBwaHlsaW5rX21paV9pb2N0bGAgYXMgdGhlIGtleSBwb2ludHMuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIGBTVE1NQUNfRVRIYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZS4gQW5kLCB5ZWFoLCBgU1RNTUFDX1BDSWAgZW5hYmxlcyB0aGUgUENJIGRyaXZlciwgbWFraW5nIGl0IHJlYWxseSBoZWxwZnVsIGZvciBmdXp6aW5nIGluIGEgVk0gZW52aXJvbm1lbnQuIE1ha2VzIHRoaW5ncyBlYXN5IHRvIHRlc3QuCgpDb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyIHJlYWNoYWJsZSB2aWEgaW9jdGwsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBwYXRjaCBvcGVucyB1cCB0aGUgaW50ZXJmYWNlLCBwb3RlbnRpYWxseSBsZXR0aW5nIHRoaW5ncyBsaWtlIGBTSU9DU0hXVFNUQU1QYCBvciBQSFktc3BlY2lmaWMgaW9jdGxzIHRocm91Z2guIFRoaXMgaXMgd29ydGggdGhlIGVmZm9ydCB0byBjaGVjayBpdCBvdXQuCgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoxMi40NjYwNDUzMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQwODU2MjczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2lvY3RsXCIsXG4gICAgXCJwaHlsaW5rX21paV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBzd2l0Y2ggc3RhdGVtZW50IGluIGBzdG1tYWNfaW9jdGxgLCBmb3J3YXJkaW5nIGFsbCBpb2N0bCBjb21tYW5kcyB0byBgcGh5bGlua19taWlfaW9jdGxgIGluc3RlYWQgb2YganVzdCBhIHJlc3RyaWN0ZWQgc2V0LiBUaGlzIGV4cG9zZXMgbmV3IGlvY3RscyB0byB0aGUgUEhZIGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgdmlhIG5ldHdvcmsgaW50ZXJmYWNlIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MTIuNDY2MDUwODUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTEzNjc0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDE4IDE1OjA4OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggMmEwZDdlZmY4OGQzZmYuLjU2MmQyMDgzMGI5NDk1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTYzNzEsMjggKzYzNzEsMTcgQEAgc3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKVxcbiAgKiAgQHJxOiBBbiBJT0NUTCBzcGVjaWZpYyBzdHJ1Y3R1cmUsIHRoYXQgY2FuIGNvbnRhaW4gYSBwb2ludGVyIHRvXFxuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cXG4gICogIEBjbWQ6IElPQ1RMIGNvbW1hbmRcXG4tICogIERlc2NyaXB0aW9uOlxcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXFxuKyAqICBEZXNjcmlwdGlvbjogRm9yd2FyZCB0aGUgUEhZIGlvY3RscyB0byBwaHlsaW5rXFxuKyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLlxcbiAgKi9cXG4gc3RhdGljIGludCBzdG1tYWNfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdiAoZGV2KTtcXG4tXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0c3dpdGNoIChjbWQpIHtcXG4tXFx0Y2FzZSBTSU9DR01JSVBIWTpcXG4tXFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4tXFx0Y2FzZSBTSU9DU01JSVJFRzpcXG4tXFx0XFx0cmV0ID0gcGh5bGlua19taWlfaW9jdGwocHJpdi1cXHUwMDNlcGh5bGluaywgcnEsIGNtZCk7XFxuLVxcdFxcdGJyZWFrO1xcbi1cXHRkZWZhdWx0Olxcbi1cXHRcXHRicmVhaztcXG4tXFx0fVxcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHByaXYtXFx1MDAzZXBoeWxpbmssIHJxLCBjbWQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoxMi44NTgyMTkxMzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDE2Mzc5NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlZDY0OGU5M2JiY2ZiMmJkYmVlNTUxM2E0NmE2N2FlZGQwMTZjMzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAxNTowODoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uNTYyZDIwODMwYjk0OTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNjM3MSwyOCArNjM3MSwxNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4gICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0b1xuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cbiAgKiAgQGNtZDogSU9DVEwgY29tbWFuZFxuLSAqICBEZXNjcmlwdGlvbjpcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXG4rICogIERlc2NyaXB0aW9uOiBGb3J3YXJkIHRoZSBQSFkgaW9jdGxzIHRvIHBoeWxpbmtcbisgKiAgUmV0dXJuOiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZS5cbiAgKi9cbiBzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2IChkZXYpO1xuLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0c3dpdGNoIChjbWQpIHtcbi1cdGNhc2UgU0lPQ0dNSUlQSFk6XG4tXHRjYXNlIFNJT0NHTUlJUkVHOlxuLVx0Y2FzZSBTSU9DU01JSVJFRzpcbi1cdFx0cmV0ID0gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbi1cdFx0YnJlYWs7XG4tXHRkZWZhdWx0OlxuLVx0XHRicmVhaztcbi1cdH1cbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjEyLjg1ODIyMDYyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4ODc2MzkzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZW1vdmVkIGEgc3dpdGNoIHN0YXRlbWVudCB0aGF0IHdhcyByZXN0cmljdGluZyB3aGljaCBgcGh5bGlua19taWlfaW9jdGxgIGNhbGxzIHdlcmUgYWxsb3dlZC4gTm93LCBpdCdzIGZvcndhcmRpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB3aGF0IGBwaHlsaW5rX21paV9pb2N0bGAgYWN0dWFsbHkgKmRvZXMqLlxuXG5CdXQgaG9sZCBvbiwgYHN0bW1hY19pb2N0bGAuLi4gY2FuIHRoaXMgZXZlbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEknbSB0aGlua2luZyBhYm91dCB0eXBpY2FsIHg4NiBWTXM7IHRoaXMgaXMgYW4gZXRoZXJuZXQgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgaGFyZHdhcmUsIHR5cGljYWxseSAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIFRoYXQgaGFyZHdhcmUgaXNuJ3QgdXN1YWxseSBwcmVzZW50IHVubGVzcyBpdCdzIGVtdWxhdGVkIG9yIHNwZWNpZmljYWxseSBwYXNzZWQgdGhyb3VnaC4gSG93ZXZlciwgSSBrbm93IGBzdG1tYWNgIGlzIHVzZWQgb24gY2VydGFpbiBBUk0gYm9hcmRzLi4uIENvdWxkIHdlIGVtdWxhdGUgaXQgdGhlcmU/XG5cbkxldCBtZSBzZWUuLi4gRG9lcyBRRU1VIGhhdmUgYW55dGhpbmc/IEFoLCByaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nLiBRRU1VIG1pZ2h0IGhhdmUgc3VwcG9ydCBmb3IgYHN0bW1hY2AuLi4gV2FpdCBhIG1pbnV0ZSwgUUVNVSBoYXMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBvciBzb21ldGhpbmcsIGJ1dCBgc3RtbWFjYCBpcyBgZHdtYWNgIChEZXNpZ25XYXJlIE1BQykhIFNvIFFFTVUgZG9lcyBlbXVsYXRlIGBkd21hY2A/IFllcCwgYGh3L25ldC9kZXNpZ253YXJlLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYC4gT2theSwgYGh3L25ldC9kZXNpZ253YXJlLmNgIGlzIGZvciBEZXNpZ25XYXJlIE1BQy5cblxuQWxyaWdodCwgc28gbGV0J3Mgc2hpZnQgZ2VhcnM6IElzIGBzdG1tYWNgIGEgUENJIGRldmljZT8gSSBzZWVtIHRvIHJlY2FsbCB0aGVyZSBiZWluZyBhIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgLiBZZXAsIHRoZXJlIGl0IGlzISBTbyBpdCAqY2FuKiBiZSBhIFBDSSBkZXZpY2UuIFRoYXQgb3BlbnMgdXAgYSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS5cblxuSWYgaXQncyBhIFBDSSBkZXZpY2UsIHRoZW4gd2UgbmVlZCB0byBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LiBJIGtub3cgUENJIGRldmljZXMgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBQQ0kgZnV6emluZywgb3IgaWYgUUVNVSBoYXMgZW11bGF0aW9uLi4uIHNvIGl0IHNvdW5kcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIHZlY3RvcnMgZm9yIGV4cGxvcmluZyB0aGlzLlxuXG5CYWNrIHRvIHRoZSBwYXRjaC4uLiBpdCdzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYC4gSSBzaG91bGQgcmV2aXNpdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoyMC43NDU4NjE1MjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NDU1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzNDk9c3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MzY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM2OTogKiAgc3RtbWFjX2lvY3RsIC0gRW50cnkgcG9pbnQgZm9yIHRoZSBJb2N0bFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM3MC0gKiAgQGRldjogRGV2aWNlIHBvaW50ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzNzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2Mzc3OnN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzA5LVxcdC5uZG9fdHhfdGltZW91dCA9IHN0bW1hY190eF90aW1lb3V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcXHQubmRvX2V0aF9pb2N0bCA9IHN0bW1hY19pb2N0bCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXFx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjAuODAzNDE2MjA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTY1NDc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPQ1RMIFBhdGNoIGFuZCBTVE1NQUMncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgcmVkaXJlY3RpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IGJlZ3MgdGhlIHF1ZXN0aW9uLCBpcyBgcGh5bGlua19taWlfaW9jdGxgIGV2ZW4gYWNjZXNzaWJsZT8gQSBxdWljayBtZW50YWwgam9nIHJldmVhbHMgdGhhdCBgbmRvX2V0aF9pb2N0bGAgaXMgaW5kZWVkIHRoZSBnYXRld2F5LiBHb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLlxuXG5Ob3csIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZ1enphYmlsaXR5IG9mIGBzdG1tYWNgLiBUaGUgZmFjdCB0aGF0IGl0IGhhcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBgc3RtbWFjX3BjaS5jYCwgaXMgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuIFBDSSBkcml2ZXJzIG9mdGVuIHByZXNlbnQgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNoZWNrIGBzdG1tYWNfcGNpLmNgIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgaW5kZWVkIHJlbGF0ZXMgdG8gYSBQQ0kgZHJpdmVyLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBpbmRpY2F0aW9uIG9mIGl0cyBvdmVyYWxsIGV4cG9zdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjQuMTg5MDczMTM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDE4NDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjQuMjQ3NTAwNjIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3ODM2OTE0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGhvdyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIG1pZ2h0IGJlIHRvbyBzaW1wbGlzdGljLiBJcyBpdCBwb3NzaWJsZSB0aGF0IHRoZSB0eXBpY2FsIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBjYWxsLCBhcyBJIGtub3cgaXQsIGlzbid0IGRpcmVjdGx5IHRoZSBvbmUgYmVpbmcgZXhlY3V0ZWQ/IFBlcmhhcHMgdGhlcmUncyBhIHdyYXBwZXIgZnVuY3Rpb24gaW4gcGxhY2UsIGFkZGluZyBhbiBleHRyYSBsYXllciBvZiBhYnN0cmFjdGlvbi4gVGhpcyBjb3VsZCBpbXBhY3QgaG93IEkgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kIGFueSBhc3NvY2lhdGVkIGRlYnVnZ2luZyBlZmZvcnRzLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgcGF0aCB0byBiZSBjZXJ0YWluLiBBIHdyYXBwZXIsIGlmIHByZXNlbnQsIGNvdWxkIGludHJvZHVjZSBhZGRpdGlvbmFsIGluaXRpYWxpemF0aW9uLCBlcnJvciBoYW5kbGluZywgb3IgZXZlbiBtb2RpZnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgZG93bnN0cmVhbS4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBydWxlIG91dCBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjI3LjEyNTg3MTU2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE2NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzODI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4NS1cXHQubmFtZSA9IFxcXCJpbnRlbC1ldGgtcGNpXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTQ6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoyNy4xODIwNDAwMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU2OTAyMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIGBzdG1tYWNgIERyaXZlcioqXG5cbk9rYXksIHNvIGBzdG1tYWNgICpkb2VzKiBoYXZlIG11bHRpcGxlIFBDSSBkcml2ZXJzIOKAkyBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIGZvciBmdXp6aW5nIGl0IHRocm91Z2ggc3RhbmRhcmQgUENJIGZ1enppbmcgdGVjaG5pcXVlcy4gQW5kLCBvZiBjb3Vyc2UsIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLCB0aGF0IGFkZHMgYW5vdGhlciBsYXllci4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIFN5emthbGxlciBjYW4gZnV6eiBpb2N0bHMgb24gbmV0d29yayBpbnRlcmZhY2VzLCByaWdodD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIHJlZGlyZWN0aW5nIGFsbCBpb2N0bHMgaW4gYHN0bW1hY19pb2N0bGAgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYC4gVGhhdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIHNob3VsZCBtYWtlIGEgbm90ZSB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBzdG1tYWNgLiBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgZW5hYmxlZCB0byBiZSBhYmxlIHRvIGJlIGNvcnJlY3RseSBmdXp6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODozMC45Mzg5NDQwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwOTU0MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOD1pZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3MT1lbmRpZiAjIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjMwLjk5NzA0NTk2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE4MzEwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBzZWVpbmcgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGFyZSB0aGVzZSBldGhlcm5ldCBzcGVjaWZpYyBvciBQQ0kgcmVsYXRlZD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyLiBUaGUgZHJpdmVyIGNvbnRleHQgc3VnZ2VzdHMgRXRoZXJuZXQsIHNvIEkgdGhpbmsgSSBtaWdodCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgUEhZIGxpbmsuXG5cblRvIGNsYXJpZnkgdGhlaXIgdXNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUEhZIGxheWVyLCBzcGVjaWZpY2FsbHksIHNvIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHBoeWxpbmtfbWlpX2lvY3RsYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIGFueSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjM0LjExNTM1OTAzNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyNTEwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDktLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTEwOiAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTEtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MjYtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTI3OmludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU4NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODozNC4xNzQ2MTc1MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMzcxMTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPQ1RMIFBhdGNoIGZvciBgc3RtbWFjX2lvY3RsYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNoYW5nZSBpcyB3aXRoaW4gdGhlIGBzdG1tYWNfaW9jdGxgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZXhwYW5kaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBwaHlsaW5rX21paV9pb2N0bGAuICBUaGUgcGF0Y2ggZXNzZW50aWFsbHkgb3BlbnMgdXAgYHN0bW1hY19pb2N0bGAgdG8gYSB3aWRlciByYW5nZSBvZiBJT0NUTCBjb21tYW5kcywgZm9yd2FyZGluZyBldmVyeXRoaW5nIHRvIGBwaHlsaW5rX21paV9pb2N0bGAuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIGBzdG1tYWNfaW9jdGxgIGlzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuICBBYnNvbHV0ZWx5ISBJdCdzIGFuIGlvY3RsIGhhbmRsZXIgZm9yIGEgbmV0d29yayBkZXZpY2Ug4oCTIHRoYXQncyBwcmltZSByZWFsIGVzdGF0ZSBmb3IgZnV6emluZy4gIEdpdmVuIHRoZSBjaGFuZ2VzLCBJJ2QgZGVmaW5pdGVseSBtYWtlIGBzdG1tYWNfaW9jdGxgIG15IGZvY3VzIHN5bWJvbC5cblxuQXMgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBleGlzdGluZyBjb25maWdzIHNlZW0gYXBwcm9wcmlhdGU6IGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHZlcmlmaWNhdGlvbjogaXMgYHBoeWxpbmtfbWlpX2lvY3RsYCAqdGhlIG9ubHkqIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHdpdGhpbiBgc3RtbWFjX2lvY3RsYD8gIFllcCwgbG9va3MgbGlrZSBpdCdzIGEgZGlyZWN0IGNhbGwsIHNpbXBsaWZ5aW5nIHRoZSBvdmVyYWxsIGZsb3cuIFRoZSBwYXRjaCBoYXMgcmVtb3ZlZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBub3cgcGFzc2VzIGFsbCBjb21tYW5kcyBkaXJlY3RseSB0byBgcGh5bGlua19taWlfaW9jdGxgLlxuXG5UaGlzIGlzIGludGVyZXN0aW5nLCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBsaW1pdGVkIGNvbW1hbmRzIGxpa2UgYFNJT0NHTUlJUEhZYCwgYFNJT0NHTUlJUkVHYCwgYW5kIGBTSU9DU01JSVJFR2AuIEJ1dCB0aGUgcGF0Y2ggcmVtb3ZlcyB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuXG5cblNvLCBgcGh5bGlua19taWlfaW9jdGxgIGlzIG5vdyBoYW5kbGluZyBgU0lPQ0dNSUlQSFlgLCBgU0lPQ0dNSUlSRUdgLCBgU0lPQ1NNSUlSRUdgLCBhbmQgcG90ZW50aWFsbHkgbW9yZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbmV3IGNvbW1hbmRzIGFyZSBwb3RlbnRpYWxseSBleHBvc2VkIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCwgdG8gaWRlbnRpZnkgdGhlIGZ1bGwgc2NvcGUgb2YgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MzkuNTA4MzMxNzI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MjcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1Mjc6XFx0aW50IHBoeWxpbmtfbWlpX2lvY3RsKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuMzUyODpcXHR7XFxuMzUyOTpcXHRcXHRzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKm1paSA9IGlmX21paShpZnIpO1xcbjM1MzA6XFx0XFx0aW50ICByZXQ7XFxuMzUzMTpcXHRcXG4zNTMyOlxcdFxcdEFTU0VSVF9SVE5MKCk7XFxuMzUzMzpcXHRcXG4zNTM0OlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5ZGV2KSB7XFxuMzUzNTpcXHRcXHRcXHQvKiBQSFlzIG9ubHkgZXhpc3QgZm9yIE1MT19BTl9QSFkgYW5kIFNHTUlJICovXFxuMzUzNjpcXHRcXHRcXHRzd2l0Y2ggKGNtZCkge1xcbjM1Mzc6XFx0XFx0XFx0Y2FzZSBTSU9DR01JSVBIWTpcXG4zNTM4OlxcdFxcdFxcdFxcdG1paS1cXHUwMDNlcGh5X2lkID0gcGwtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWRpby5hZGRyO1xcbjM1Mzk6XFx0XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMzU0MDpcXHRcXG4zNTQxOlxcdFxcdFxcdGNhc2UgU0lPQ0dNSUlSRUc6XFxuMzU0MjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3BoeV9yZWFkKHBsLCBtaWktXFx1MDAzZXBoeV9pZCwgbWlpLVxcdTAwM2VyZWdfbnVtKTtcXG4zNTQzOlxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzZT0gMCkge1xcbjM1NDQ6XFx0XFx0XFx0XFx0XFx0bWlpLVxcdTAwM2V2YWxfb3V0ID0gcmV0O1xcbjM1NDU6XFx0XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4zNTQ2OlxcdFxcdFxcdFxcdH1cXG4zNTQ3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM1NDg6XFx0XFxuMzU0OTpcXHRcXHRcXHRjYXNlIFNJT0NTTUlJUkVHOlxcbjM1NTA6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19waHlfd3JpdGUocGwsIG1paS1cXHUwMDNlcGh5X2lkLCBtaWktXFx1MDAzZXJlZ19udW0sXFxuMzU1MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXZhbF9pbik7XFxuMzU1MjpcXHRcXHRcXHRcXHRicmVhaztcXG4zNTUzOlxcdFxcbjM1NTQ6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNTU1OlxcdFxcdFxcdFxcdHJldCA9IHBoeV9taWlfaW9jdGwocGwtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbjM1NTY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzU1NzpcXHRcXHRcXHR9XFxuMzU1ODpcXHRcXHR9IGVsc2Uge1xcbjM1NTk6XFx0XFx0XFx0c3dpdGNoIChjbWQpIHtcXG4zNTYwOlxcdFxcdFxcdGNhc2UgU0lPQ0dNSUlQSFk6XFxuMzU2MTpcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXBoeV9pZCA9IDA7XFxuMzU2MjpcXHRcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4zNTYzOlxcdFxcbjM1NjQ6XFx0XFx0XFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4zNTY1OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfbWlpX3JlYWQocGwsIG1paS1cXHUwMDNlcGh5X2lkLCBtaWktXFx1MDAzZXJlZ19udW0pO1xcbjM1NjY6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlPSAwKSB7XFxuMzU2NzpcXHRcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXZhbF9vdXQgPSByZXQ7XFxuMzU2ODpcXHRcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjM1Njk6XFx0XFx0XFx0XFx0fVxcbjM1NzA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzU3MTpcXHRcXG4zNTcyOlxcdFxcdFxcdGNhc2UgU0lPQ1NNSUlSRUc6XFxuMzU3MzpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX21paV93cml0ZShwbCwgbWlpLVxcdTAwM2VwaHlfaWQsIG1paS1cXHUwMDNlcmVnX251bSxcXG4zNTc0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdG1paS1cXHUwMDNldmFsX2luKTtcXG4zNTc1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM1NzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjM5LjUwODk4OTc1N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjc3MTAxMjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNfaW9jdGxgIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24gaGFzIGEgYGRlZmF1bHRgIGNhc2UgdGhhdCBub3cgY2FsbHMgYHBoeV9taWlfaW9jdGwocGwtXHUwMDNlcGh5ZGV2LCBpZnIsIGNtZClgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHJlbW92aW5nIHRoYXQgc3dpdGNoIGluIGBzdG1tYWNfaW9jdGxgIGlzIGEgc2lnbmlmaWNhbnQgdGhpbmcuIEVzc2VudGlhbGx5LCB3ZSBhcmUgbm93IHBhc3NpbmcgKmFsbCogaW9jdGxzIHRvIGBwaHlfbWlpX2lvY3RsYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodD8gSXQncyBleHBvc2luZyBwb3RlbnRpYWxseSBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyIHRoYXQgd2VyZSBwcmV2aW91c2x5IGJsb2NrZWQuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGludm9sdmluZyBpb2N0bHMgaW4gYSBuZXR3b3JrIGRyaXZlciwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX2lvY3RsYCBhbmQgYHBoeWxpbmtfbWlpX2lvY3RsYCBhcyB0aGUga2V5IHBvaW50cy5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBgU1RNTUFDX0VUSGAgaXMgdGhlIHByaW1hcnkgb25lLCBvZiBjb3Vyc2UuIEFuZCwgeWVhaCwgYFNUTU1BQ19QQ0lgIGVuYWJsZXMgdGhlIFBDSSBkcml2ZXIsIG1ha2luZyBpdCByZWFsbHkgaGVscGZ1bCBmb3IgZnV6emluZyBpbiBhIFZNIGVudmlyb25tZW50LiBNYWtlcyB0aGluZ3MgZWFzeSB0byB0ZXN0LlxuXG5Db25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyIHJlYWNoYWJsZSB2aWEgaW9jdGwsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGlzIHBhdGNoIG9wZW5zIHVwIHRoZSBpbnRlcmZhY2UsIHBvdGVudGlhbGx5IGxldHRpbmcgdGhpbmdzIGxpa2UgYFNJT0NTSFdUU1RBTVBgIG9yIFBIWS1zcGVjaWZpYyBpb2N0bHMgdGhyb3VnaC4gVGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0IHRvIGNoZWNrIGl0IG91dC5cblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTUsIk91dHB1dFRva2VucyI6MTIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6NDUuNzg2MDkyNjUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MDE2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvv5rn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-18 14:55:24 +0000 UTC FinishedAt: 2026-07-18 15:08:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ce6b4d3216b63f902bb8e9695ee6c10c83415f65", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "064cdccf-c43f-4ba9-aecf-0db228e38fd0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_ioctl", "phylink_mii_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTggMTU6MDg6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDJhMGQ3ZWZmODhkM2ZmLi41NjJkMjA4MzBiOTQ5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC02MzcxLDI4ICYjNDM7NjM3MSwxNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4gICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0b1xuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cbiAgKiAgQGNtZDogSU9DVEwgY29tbWFuZFxuLSAqICBEZXNjcmlwdGlvbjpcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXG4mIzQzOyAqICBEZXNjcmlwdGlvbjogRm9yd2FyZCB0aGUgUEhZIGlvY3RscyB0byBwaHlsaW5rXG4mIzQzOyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLlxuICAqL1xuIHN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYgKGRldik7XG4tXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRzd2l0Y2ggKGNtZCkge1xuLVx0Y2FzZSBTSU9DR01JSVBIWTpcbi1cdGNhc2UgU0lPQ0dNSUlSRUc6XG4tXHRjYXNlIFNJT0NTTUlJUkVHOlxuLVx0XHRyZXQgPSBwaHlsaW5rX21paV9pb2N0bChwcml2LVx1MDAzZXBoeWxpbmssIHJxLCBjbWQpO1xuLVx0XHRicmVhaztcbi1cdGRlZmF1bHQ6XG4tXHRcdGJyZWFrO1xuLVx0fVxuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfaW9jdGwmIzM0OywKICAgICYjMzQ7cGh5bGlua19taWlfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTggMTU6MDg6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyYTBkN2VmZjg4ZDNmZi4uNTYyZDIwODMwYjk0OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNjM3MSwyOCAmIzQzOzYzNzEsMTcgQEAgc3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKQogICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0bwogICogIGEgcHJvcHJpZXRhcnkgc3RydWN0dXJlIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgZHJpdmVyLgogICogIEBjbWQ6IElPQ1RMIGNvbW1hbmQKLSAqICBEZXNjcmlwdGlvbjoKLSAqICBDdXJyZW50bHkgaXQgc3VwcG9ydHMgdGhlIHBoeV9taWlfaW9jdGwoLi4uKSBhbmQgSFcgdGltZSBzdGFtcGluZy4KJiM0MzsgKiAgRGVzY3JpcHRpb246IEZvcndhcmQgdGhlIFBIWSBpb2N0bHMgdG8gcGh5bGluawomIzQzOyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLgogICovCiBzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQogewogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2IChkZXYpOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAogCWlmICghbmV0aWZfcnVubmluZyhkZXYpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXN3aXRjaCAoY21kKSB7Ci0JY2FzZSBTSU9DR01JSVBIWToKLQljYXNlIFNJT0NHTUlJUkVHOgotCWNhc2UgU0lPQ1NNSUlSRUc6Ci0JCXJldCA9IHBoeWxpbmtfbWlpX2lvY3RsKHByaXYtJmd0O3BoeWxpbmssIHJxLCBjbWQpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi0mZ3Q7cGh5bGluaywgcnEsIGNtZCk7CiB9CiAKIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIHN0bW1hYyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYHN0bW1hY19pb2N0bGAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgYSBzd2l0Y2ggc3RhdGVtZW50IHRoYXQgd2FzIHJlc3RyaWN0aW5nIHdoaWNoIGBwaHlsaW5rX21paV9pb2N0bGAgY2FsbHMgd2VyZSBhbGxvd2VkLiBOb3csIGl0JiMzOTtzIGZvcndhcmRpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB3aGF0IGBwaHlsaW5rX21paV9pb2N0bGAgYWN0dWFsbHkgKmRvZXMqLgoKQnV0IGhvbGQgb24sIGBzdG1tYWNfaW9jdGxgLi4uIGNhbiB0aGlzIGV2ZW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHR5cGljYWwgeDg2IFZNczsgdGhpcyBpcyBhbiBldGhlcm5ldCBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBoYXJkd2FyZSwgdHlwaWNhbGx5IDEwLzEwMC8xMDAwL0VRT1MgRXRoZXJuZXQgTUFDcy4gVGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgdXN1YWxseSBwcmVzZW50IHVubGVzcyBpdCYjMzk7cyBlbXVsYXRlZCBvciBzcGVjaWZpY2FsbHkgcGFzc2VkIHRocm91Z2guIEhvd2V2ZXIsIEkga25vdyBgc3RtbWFjYCBpcyB1c2VkIG9uIGNlcnRhaW4gQVJNIGJvYXJkcy4uLiBDb3VsZCB3ZSBlbXVsYXRlIGl0IHRoZXJlPwoKTGV0IG1lIHNlZS4uLiBEb2VzIFFFTVUgaGF2ZSBhbnl0aGluZz8gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcuIFFFTVUgbWlnaHQgaGF2ZSBzdXBwb3J0IGZvciBgc3RtbWFjYC4uLiBXYWl0IGEgbWludXRlLCBRRU1VIGhhcyBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgIG9yIHNvbWV0aGluZywgYnV0IGBzdG1tYWNgIGlzIGBkd21hY2AgKERlc2lnbldhcmUgTUFDKSEgU28gUUVNVSBkb2VzIGVtdWxhdGUgYGR3bWFjYD8gWWVwLCBgaHcvbmV0L2Rlc2lnbndhcmUuY2Agb3IgYGh3L25ldC9pbXhfZmVjLmNgLiBPa2F5LCBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaXMgZm9yIERlc2lnbldhcmUgTUFDLgoKQWxyaWdodCwgc28gbGV0JiMzOTtzIHNoaWZ0IGdlYXJzOiBJcyBgc3RtbWFjYCBhIFBDSSBkZXZpY2U/IEkgc2VlbSB0byByZWNhbGwgdGhlcmUgYmVpbmcgYSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC4gWWVwLCB0aGVyZSBpdCBpcyEgU28gaXQgKmNhbiogYmUgYSBQQ0kgZGV2aWNlLiBUaGF0IG9wZW5zIHVwIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuCgpJZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHRoZW4gd2UgbmVlZCB0byBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LiBJIGtub3cgUENJIGRldmljZXMgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcsIG9yIGlmIFFFTVUgaGFzIGVtdWxhdGlvbi4uLiBzbyBpdCBzb3VuZHMgbGlrZSB0aGVyZSBhcmUgc2V2ZXJhbCB2ZWN0b3JzIGZvciBleHBsb3JpbmcgdGhpcy4KCkJhY2sgdG8gdGhlIHBhdGNoLi4uIGl0JiMzOTtzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYC4gSSBzaG91bGQgcmV2aXNpdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYWdhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjM0OT1zdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MzY4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MzY5OiAqICBzdG1tYWNfaW9jdGwgLSBFbnRyeSBwb2ludCBmb3IgdGhlIElvY3RsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzNzAtICogIEBkZXY6IERldmljZSBwb2ludGVyLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM3Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM3NzpzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMDktXHQubmRvX3R4X3RpbWVvdXQgPSBzdG1tYWNfdHhfdGltZW91dCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcdC5uZG9fZXRoX2lvY3RsID0gc3RtbWFjX2lvY3RsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJT0NUTCBQYXRjaCBhbmQgU1RNTUFDJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgcmVkaXJlY3RpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IGJlZ3MgdGhlIHF1ZXN0aW9uLCBpcyBgcGh5bGlua19taWlfaW9jdGxgIGV2ZW4gYWNjZXNzaWJsZT8gQSBxdWljayBtZW50YWwgam9nIHJldmVhbHMgdGhhdCBgbmRvX2V0aF9pb2N0bGAgaXMgaW5kZWVkIHRoZSBnYXRld2F5LiBHb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLgoKTm93LCBJIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiBgc3RtbWFjYC4gVGhlIGZhY3QgdGhhdCBpdCBoYXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19wY2kuY2AsIGlzIGEgc2lnbmlmaWNhbnQgaW5kaWNhdG9yLiBQQ0kgZHJpdmVycyBvZnRlbiBwcmVzZW50IGludGVyZXN0aW5nIGF0dGFjayBzdXJmYWNlcy4gVGhlcmVmb3JlLCBJIHNob3VsZCBjaGVjayBgc3RtbWFjX3BjaS5jYCB0byBjb25maXJtIHdoZXRoZXIgdGhpcyBjb2RlIGluZGVlZCByZWxhdGVzIHRvIGEgUENJIGRyaXZlci4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaW5kaWNhdGlvbiBvZiBpdHMgb3ZlcmFsbCBleHBvc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGhvdyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIG1pZ2h0IGJlIHRvbyBzaW1wbGlzdGljLiBJcyBpdCBwb3NzaWJsZSB0aGF0IHRoZSB0eXBpY2FsIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBjYWxsLCBhcyBJIGtub3cgaXQsIGlzbiYjMzk7dCBkaXJlY3RseSB0aGUgb25lIGJlaW5nIGV4ZWN1dGVkPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgd3JhcHBlciBmdW5jdGlvbiBpbiBwbGFjZSwgYWRkaW5nIGFuIGV4dHJhIGxheWVyIG9mIGFic3RyYWN0aW9uLiBUaGlzIGNvdWxkIGltcGFjdCBob3cgSSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRyaXZlciByZWdpc3RyYXRpb24gcHJvY2VzcyBhbmQgYW55IGFzc29jaWF0ZWQgZGVidWdnaW5nIGVmZm9ydHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgY29kZSBwYXRoIHRvIGJlIGNlcnRhaW4uIEEgd3JhcHBlciwgaWYgcHJlc2VudCwgY291bGQgaW50cm9kdWNlIGFkZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24sIGVycm9yIGhhbmRsaW5nLCBvciBldmVuIG1vZGlmeSB0aGUgYXJndW1lbnRzIHBhc3NlZCBkb3duc3RyZWFtLiBUaW1lIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gYW5kIHJ1bGUgb3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzgyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM4NDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzODUtXHQubmFtZSA9IFwmIzM0O2ludGVsLWV0aC1wY2lcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzk0Om1vZHVsZV9wY2lfZHJpdmVyKGludGVsX2V0aF9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTYwMj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbG9vbmdzb25fZHdtYWNfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjYwNDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbG9vbmdzb25fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDUtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozODM6bW9kdWxlX3BjaV9kcml2ZXIoZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBgc3RtbWFjYCBEcml2ZXIqKgoKT2theSwgc28gYHN0bW1hY2AgKmRvZXMqIGhhdmUgbXVsdGlwbGUgUENJIGRyaXZlcnMg4oCTIGludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IG9wZW5zIHVwIHBvc3NpYmlsaXRpZXMgZm9yIGZ1enppbmcgaXQgdGhyb3VnaCBzdGFuZGFyZCBQQ0kgZnV6emluZyB0ZWNobmlxdWVzLiBBbmQsIG9mIGNvdXJzZSwgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLCB0aGF0IGFkZHMgYW5vdGhlciBsYXllci4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIFN5emthbGxlciBjYW4gZnV6eiBpb2N0bHMgb24gbmV0d29yayBpbnRlcmZhY2VzLCByaWdodD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzZWVtcyB0byBiZSByZWRpcmVjdGluZyBhbGwgaW9jdGxzIGluIGBzdG1tYWNfaW9jdGxgIHRvIGBwaHlsaW5rX21paV9pb2N0bGAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgc2hvdWxkIG1ha2UgYSBub3RlIHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYHN0bW1hY2AuIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgZW5hYmxlZCB0byBiZSBhYmxlIHRvIGJlIGNvcnJlY3RseSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDc3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGFyZSB0aGVzZSBldGhlcm5ldCBzcGVjaWZpYyBvciBQQ0kgcmVsYXRlZD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyLiBUaGUgZHJpdmVyIGNvbnRleHQgc3VnZ2VzdHMgRXRoZXJuZXQsIHNvIEkgdGhpbmsgSSBtaWdodCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgUEhZIGxpbmsuCgpUbyBjbGFyaWZ5IHRoZWlyIHVzZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFBIWSBsYXllciwgc3BlY2lmaWNhbGx5LCBzbyBteSBuZXh0IHN0ZXAgaXMgdG8gaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBhbnkgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfbWlpX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTA5LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTEwOiAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMS0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyNi0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUyNzppbnQgcGh5bGlua19taWlfaW9jdGwoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU4NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDE1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJT0NUTCBQYXRjaCBmb3IgYHN0bW1hY19pb2N0bGAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBGcm9tIG15IHBlcnNwZWN0aXZlLCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgY2hhbmdlIGlzIHdpdGhpbiB0aGUgYHN0bW1hY19pb2N0bGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBleHBhbmRpbmcgaXRzIGludGVyYWN0aW9uIHdpdGggYHBoeWxpbmtfbWlpX2lvY3RsYC4gIFRoZSBwYXRjaCBlc3NlbnRpYWxseSBvcGVucyB1cCBgc3RtbWFjX2lvY3RsYCB0byBhIHdpZGVyIHJhbmdlIG9mIElPQ1RMIGNvbW1hbmRzLCBmb3J3YXJkaW5nIGV2ZXJ5dGhpbmcgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYC4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIGBzdG1tYWNfaW9jdGxgIGlzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuICBBYnNvbHV0ZWx5ISBJdCYjMzk7cyBhbiBpb2N0bCBoYW5kbGVyIGZvciBhIG5ldHdvcmsgZGV2aWNlIOKAkyB0aGF0JiMzOTtzIHByaW1lIHJlYWwgZXN0YXRlIGZvciBmdXp6aW5nLiAgR2l2ZW4gdGhlIGNoYW5nZXMsIEkmIzM5O2QgZGVmaW5pdGVseSBtYWtlIGBzdG1tYWNfaW9jdGxgIG15IGZvY3VzIHN5bWJvbC4KCkFzIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGUgZXhpc3RpbmcgY29uZmlncyBzZWVtIGFwcHJvcHJpYXRlOiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4KCk5vdywgdGhlIGNydWNpYWwgdmVyaWZpY2F0aW9uOiBpcyBgcGh5bGlua19taWlfaW9jdGxgICp0aGUgb25seSogZnVuY3Rpb24gY2FsbGVkIGZyb20gd2l0aGluIGBzdG1tYWNfaW9jdGxgPyAgWWVwLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZGlyZWN0IGNhbGwsIHNpbXBsaWZ5aW5nIHRoZSBvdmVyYWxsIGZsb3cuIFRoZSBwYXRjaCBoYXMgcmVtb3ZlZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBub3cgcGFzc2VzIGFsbCBjb21tYW5kcyBkaXJlY3RseSB0byBgcGh5bGlua19taWlfaW9jdGxgLgoKVGhpcyBpcyBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gbGltaXRlZCBjb21tYW5kcyBsaWtlIGBTSU9DR01JSVBIWWAsIGBTSU9DR01JSVJFR2AsIGFuZCBgU0lPQ1NNSUlSRUdgLiBCdXQgdGhlIHBhdGNoIHJlbW92ZXMgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgoKU28sIGBwaHlsaW5rX21paV9pb2N0bGAgaXMgbm93IGhhbmRsaW5nIGBTSU9DR01JSVBIWWAsIGBTSU9DR01JSVJFR2AsIGBTSU9DU01JSVJFR2AsIGFuZCBwb3RlbnRpYWxseSBtb3JlLiBNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgcGh5bGlua19taWlfaW9jdGxgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBuZXcgY29tbWFuZHMgYXJlIHBvdGVudGlhbGx5IGV4cG9zZWQgYW5kIGhvdyB0aGV5IGFyZSBoYW5kbGVkLCB0byBpZGVudGlmeSB0aGUgZnVsbCBzY29wZSBvZiBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUyNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTI3Olx0aW50IHBoeWxpbmtfbWlpX2lvY3RsKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG4zNTI4Olx0e1xuMzUyOTpcdFx0c3RydWN0IG1paV9pb2N0bF9kYXRhICptaWkgPSBpZl9taWkoaWZyKTtcbjM1MzA6XHRcdGludCAgcmV0O1xuMzUzMTpcdFxuMzUzMjpcdFx0QVNTRVJUX1JUTkwoKTtcbjM1MzM6XHRcbjM1MzQ6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpIHtcbjM1MzU6XHRcdFx0LyogUEhZcyBvbmx5IGV4aXN0IGZvciBNTE9fQU5fUEhZIGFuZCBTR01JSSAqL1xuMzUzNjpcdFx0XHRzd2l0Y2ggKGNtZCkge1xuMzUzNzpcdFx0XHRjYXNlIFNJT0NHTUlJUEhZOlxuMzUzODpcdFx0XHRcdG1paS1cdTAwM2VwaHlfaWQgPSBwbC1cdTAwM2VwaHlkZXYtXHUwMDNlbWRpby5hZGRyO1xuMzUzOTpcdFx0XHRcdGZhbGx0aHJvdWdoO1xuMzU0MDpcdFxuMzU0MTpcdFx0XHRjYXNlIFNJT0NHTUlJUkVHOlxuMzU0MjpcdFx0XHRcdHJldCA9IHBoeWxpbmtfcGh5X3JlYWQocGwsIG1paS1cdTAwM2VwaHlfaWQsIG1paS1cdTAwM2VyZWdfbnVtKTtcbjM1NDM6XHRcdFx0XHRpZiAocmV0IFx1MDAzZT0gMCkge1xuMzU0NDpcdFx0XHRcdFx0bWlpLVx1MDAzZXZhbF9vdXQgPSByZXQ7XG4zNTQ1Olx0XHRcdFx0XHRyZXQgPSAwO1xuMzU0NjpcdFx0XHRcdH1cbjM1NDc6XHRcdFx0XHRicmVhaztcbjM1NDg6XHRcbjM1NDk6XHRcdFx0Y2FzZSBTSU9DU01JSVJFRzpcbjM1NTA6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX3BoeV93cml0ZShwbCwgbWlpLVx1MDAzZXBoeV9pZCwgbWlpLVx1MDAzZXJlZ19udW0sXG4zNTUxOlx0XHRcdFx0XHRcdFx0bWlpLVx1MDAzZXZhbF9pbik7XG4zNTUyOlx0XHRcdFx0YnJlYWs7XG4zNTUzOlx0XG4zNTU0Olx0XHRcdGRlZmF1bHQ6XG4zNTU1Olx0XHRcdFx0cmV0ID0gcGh5X21paV9pb2N0bChwbC1cdTAwM2VwaHlkZXYsIGlmciwgY21kKTtcbjM1NTY6XHRcdFx0XHRicmVhaztcbjM1NTc6XHRcdFx0fVxuMzU1ODpcdFx0fSBlbHNlIHtcbjM1NTk6XHRcdFx0c3dpdGNoIChjbWQpIHtcbjM1NjA6XHRcdFx0Y2FzZSBTSU9DR01JSVBIWTpcbjM1NjE6XHRcdFx0XHRtaWktXHUwMDNlcGh5X2lkID0gMDtcbjM1NjI6XHRcdFx0XHRmYWxsdGhyb3VnaDtcbjM1NjM6XHRcbjM1NjQ6XHRcdFx0Y2FzZSBTSU9DR01JSVJFRzpcbjM1NjU6XHRcdFx0XHRyZXQgPSBwaHlsaW5rX21paV9yZWFkKHBsLCBtaWktXHUwMDNlcGh5X2lkLCBtaWktXHUwMDNlcmVnX251bSk7XG4zNTY2Olx0XHRcdFx0aWYgKHJldCBcdTAwM2U9IDApIHtcbjM1Njc6XHRcdFx0XHRcdG1paS1cdTAwM2V2YWxfb3V0ID0gcmV0O1xuMzU2ODpcdFx0XHRcdFx0cmV0ID0gMDtcbjM1Njk6XHRcdFx0XHR9XG4zNTcwOlx0XHRcdFx0YnJlYWs7XG4zNTcxOlx0XG4zNTcyOlx0XHRcdGNhc2UgU0lPQ1NNSUlSRUc6XG4zNTczOlx0XHRcdFx0cmV0ID0gcGh5bGlua19taWlfd3JpdGUocGwsIG1paS1cdTAwM2VwaHlfaWQsIG1paS1cdTAwM2VyZWdfbnVtLFxuMzU3NDpcdFx0XHRcdFx0XHRcdG1paS1cdTAwM2V2YWxfaW4pO1xuMzU3NTpcdFx0XHRcdGJyZWFrO1xuMzU3NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAxNTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTk1CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjX2lvY3RsYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24gaGFzIGEgYGRlZmF1bHRgIGNhc2UgdGhhdCBub3cgY2FsbHMgYHBoeV9taWlfaW9jdGwocGwtJmd0O3BoeWRldiwgaWZyLCBjbWQpYC4gUmlnaHQgYXdheSwgSSBzZWUgdGhhdCByZW1vdmluZyB0aGF0IHN3aXRjaCBpbiBgc3RtbWFjX2lvY3RsYCBpcyBhIHNpZ25pZmljYW50IHRoaW5nLiBFc3NlbnRpYWxseSwgd2UgYXJlIG5vdyBwYXNzaW5nICphbGwqIGlvY3RscyB0byBgcGh5X21paV9pb2N0bGAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgcmlnaHQ/IEl0JiMzOTtzIGV4cG9zaW5nIHBvdGVudGlhbGx5IG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYmxvY2tlZC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGludm9sdmluZyBpb2N0bHMgaW4gYSBuZXR3b3JrIGRyaXZlciwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYHN0bW1hY19pb2N0bGAgYW5kIGBwaHlsaW5rX21paV9pb2N0bGAgYXMgdGhlIGtleSBwb2ludHMuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIGBTVE1NQUNfRVRIYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZS4gQW5kLCB5ZWFoLCBgU1RNTUFDX1BDSWAgZW5hYmxlcyB0aGUgUENJIGRyaXZlciwgbWFraW5nIGl0IHJlYWxseSBoZWxwZnVsIGZvciBmdXp6aW5nIGluIGEgVk0gZW52aXJvbm1lbnQuIE1ha2VzIHRoaW5ncyBlYXN5IHRvIHRlc3QuCgpDb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyIHJlYWNoYWJsZSB2aWEgaW9jdGwsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gVGhpcyBwYXRjaCBvcGVucyB1cCB0aGUgaW50ZXJmYWNlLCBwb3RlbnRpYWxseSBsZXR0aW5nIHRoaW5ncyBsaWtlIGBTSU9DU0hXVFNUQU1QYCBvciBQSFktc3BlY2lmaWMgaW9jdGxzIHRocm91Z2guIFRoaXMgaXMgd29ydGggdGhlIGVmZm9ydCB0byBjaGVjayBpdCBvdXQuCgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMTU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19pb2N0bCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX21paV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgc3dpdGNoIHN0YXRlbWVudCBpbiBgc3RtbWFjX2lvY3RsYCwgZm9yd2FyZGluZyBhbGwgaW9jdGwgY29tbWFuZHMgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpbnN0ZWFkIG9mIGp1c3QgYSByZXN0cmljdGVkIHNldC4gVGhpcyBleHBvc2VzIG5ldyBpb2N0bHMgdG8gdGhlIFBIWSBkcml2ZXIsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIGludGVyZmFjZSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoxMi40NjYwNDUzMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzQwODU2MjczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2lvY3RsXCIsXG4gICAgXCJwaHlsaW5rX21paV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBzd2l0Y2ggc3RhdGVtZW50IGluIGBzdG1tYWNfaW9jdGxgLCBmb3J3YXJkaW5nIGFsbCBpb2N0bCBjb21tYW5kcyB0byBgcGh5bGlua19taWlfaW9jdGxgIGluc3RlYWQgb2YganVzdCBhIHJlc3RyaWN0ZWQgc2V0LiBUaGlzIGV4cG9zZXMgbmV3IGlvY3RscyB0byB0aGUgUEhZIGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgdmlhIG5ldHdvcmsgaW50ZXJmYWNlIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MTIuNDY2MDUwODUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTEzNjc0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZWQ2NDhlOTNiYmNmYjJiZGJlZTU1MTNhNDZhNjdhZWRkMDE2YzMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDE4IDE1OjA4OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggMmEwZDdlZmY4OGQzZmYuLjU2MmQyMDgzMGI5NDk1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTYzNzEsMjggKzYzNzEsMTcgQEAgc3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKVxcbiAgKiAgQHJxOiBBbiBJT0NUTCBzcGVjaWZpYyBzdHJ1Y3R1cmUsIHRoYXQgY2FuIGNvbnRhaW4gYSBwb2ludGVyIHRvXFxuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cXG4gICogIEBjbWQ6IElPQ1RMIGNvbW1hbmRcXG4tICogIERlc2NyaXB0aW9uOlxcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXFxuKyAqICBEZXNjcmlwdGlvbjogRm9yd2FyZCB0aGUgUEhZIGlvY3RscyB0byBwaHlsaW5rXFxuKyAqICBSZXR1cm46IFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlLlxcbiAgKi9cXG4gc3RhdGljIGludCBzdG1tYWNfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdiAoZGV2KTtcXG4tXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0c3dpdGNoIChjbWQpIHtcXG4tXFx0Y2FzZSBTSU9DR01JSVBIWTpcXG4tXFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4tXFx0Y2FzZSBTSU9DU01JSVJFRzpcXG4tXFx0XFx0cmV0ID0gcGh5bGlua19taWlfaW9jdGwocHJpdi1cXHUwMDNlcGh5bGluaywgcnEsIGNtZCk7XFxuLVxcdFxcdGJyZWFrO1xcbi1cXHRkZWZhdWx0Olxcbi1cXHRcXHRicmVhaztcXG4tXFx0fVxcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIHBoeWxpbmtfbWlpX2lvY3RsKHByaXYtXFx1MDAzZXBoeWxpbmssIHJxLCBjbWQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoxMi44NTgyMTkxMzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMDE2Mzc5NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGJlZDY0OGU5M2JiY2ZiMmJkYmVlNTUxM2E0NmE2N2FlZGQwMTZjMzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAxNTowODoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyYTBkN2VmZjg4ZDNmZi4uNTYyZDIwODMwYjk0OTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNjM3MSwyOCArNjM3MSwxNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtbWFjX21zaV9pbnRyX3J4KGludCBpcnEsIHZvaWQgKmRhdGEpXG4gICogIEBycTogQW4gSU9DVEwgc3BlY2lmaWMgc3RydWN0dXJlLCB0aGF0IGNhbiBjb250YWluIGEgcG9pbnRlciB0b1xuICAqICBhIHByb3ByaWV0YXJ5IHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGRyaXZlci5cbiAgKiAgQGNtZDogSU9DVEwgY29tbWFuZFxuLSAqICBEZXNjcmlwdGlvbjpcbi0gKiAgQ3VycmVudGx5IGl0IHN1cHBvcnRzIHRoZSBwaHlfbWlpX2lvY3RsKC4uLikgYW5kIEhXIHRpbWUgc3RhbXBpbmcuXG4rICogIERlc2NyaXB0aW9uOiBGb3J3YXJkIHRoZSBQSFkgaW9jdGxzIHRvIHBoeWxpbmtcbisgKiAgUmV0dXJuOiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZS5cbiAgKi9cbiBzdGF0aWMgaW50IHN0bW1hY19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2IChkZXYpO1xuLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFuZXRpZl9ydW5uaW5nKGRldikpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0c3dpdGNoIChjbWQpIHtcbi1cdGNhc2UgU0lPQ0dNSUlQSFk6XG4tXHRjYXNlIFNJT0NHTUlJUkVHOlxuLVx0Y2FzZSBTSU9DU01JSVJFRzpcbi1cdFx0cmV0ID0gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbi1cdFx0YnJlYWs7XG4tXHRkZWZhdWx0OlxuLVx0XHRicmVhaztcbi1cdH1cbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gcGh5bGlua19taWlfaW9jdGwocHJpdi1cdTAwM2VwaHlsaW5rLCBycSwgY21kKTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjEyLjg1ODIyMDYyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4ODc2MzkzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIHN0bW1hYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSByZW1vdmVkIGEgc3dpdGNoIHN0YXRlbWVudCB0aGF0IHdhcyByZXN0cmljdGluZyB3aGljaCBgcGh5bGlua19taWlfaW9jdGxgIGNhbGxzIHdlcmUgYWxsb3dlZC4gTm93LCBpdCdzIGZvcndhcmRpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB3aGF0IGBwaHlsaW5rX21paV9pb2N0bGAgYWN0dWFsbHkgKmRvZXMqLlxuXG5CdXQgaG9sZCBvbiwgYHN0bW1hY19pb2N0bGAuLi4gY2FuIHRoaXMgZXZlbiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEknbSB0aGlua2luZyBhYm91dCB0eXBpY2FsIHg4NiBWTXM7IHRoaXMgaXMgYW4gZXRoZXJuZXQgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgaGFyZHdhcmUsIHR5cGljYWxseSAxMC8xMDAvMTAwMC9FUU9TIEV0aGVybmV0IE1BQ3MuIFRoYXQgaGFyZHdhcmUgaXNuJ3QgdXN1YWxseSBwcmVzZW50IHVubGVzcyBpdCdzIGVtdWxhdGVkIG9yIHNwZWNpZmljYWxseSBwYXNzZWQgdGhyb3VnaC4gSG93ZXZlciwgSSBrbm93IGBzdG1tYWNgIGlzIHVzZWQgb24gY2VydGFpbiBBUk0gYm9hcmRzLi4uIENvdWxkIHdlIGVtdWxhdGUgaXQgdGhlcmU/XG5cbkxldCBtZSBzZWUuLi4gRG9lcyBRRU1VIGhhdmUgYW55dGhpbmc/IEFoLCByaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nLiBRRU1VIG1pZ2h0IGhhdmUgc3VwcG9ydCBmb3IgYHN0bW1hY2AuLi4gV2FpdCBhIG1pbnV0ZSwgUUVNVSBoYXMgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBvciBzb21ldGhpbmcsIGJ1dCBgc3RtbWFjYCBpcyBgZHdtYWNgIChEZXNpZ25XYXJlIE1BQykhIFNvIFFFTVUgZG9lcyBlbXVsYXRlIGBkd21hY2A/IFllcCwgYGh3L25ldC9kZXNpZ253YXJlLmNgIG9yIGBody9uZXQvaW14X2ZlYy5jYC4gT2theSwgYGh3L25ldC9kZXNpZ253YXJlLmNgIGlzIGZvciBEZXNpZ25XYXJlIE1BQy5cblxuQWxyaWdodCwgc28gbGV0J3Mgc2hpZnQgZ2VhcnM6IElzIGBzdG1tYWNgIGEgUENJIGRldmljZT8gSSBzZWVtIHRvIHJlY2FsbCB0aGVyZSBiZWluZyBhIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgLiBZZXAsIHRoZXJlIGl0IGlzISBTbyBpdCAqY2FuKiBiZSBhIFBDSSBkZXZpY2UuIFRoYXQgb3BlbnMgdXAgYSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS5cblxuSWYgaXQncyBhIFBDSSBkZXZpY2UsIHRoZW4gd2UgbmVlZCB0byBhc3Nlc3MgaXRzIGZ1enphYmlsaXR5LiBJIGtub3cgUENJIGRldmljZXMgY2FuIGJlIGZ1enplZCB1c2luZyBzeXprYWxsZXIncyBQQ0kgZnV6emluZywgb3IgaWYgUUVNVSBoYXMgZW11bGF0aW9uLi4uIHNvIGl0IHNvdW5kcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIHZlY3RvcnMgZm9yIGV4cGxvcmluZyB0aGlzLlxuXG5CYWNrIHRvIHRoZSBwYXRjaC4uLiBpdCdzIG1vZGlmeWluZyBgc3RtbWFjX2lvY3RsYC4gSSBzaG91bGQgcmV2aXNpdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYWdhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoyMC43NDU4NjE1MjhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NDU1OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYzNDk9c3RhdGljIGlycXJldHVybl90IHN0bW1hY19tc2lfaW50cl9yeChpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MzY4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjM2OTogKiAgc3RtbWFjX2lvY3RsIC0gRW50cnkgcG9pbnQgZm9yIHRoZSBJb2N0bFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjM3MC0gKiAgQGRldjogRGV2aWNlIHBvaW50ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYzNzYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2Mzc3OnN0YXRpYyBpbnQgc3RtbWFjX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02Mzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzA5LVxcdC5uZG9fdHhfdGltZW91dCA9IHN0bW1hY190eF90aW1lb3V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcXHQubmRvX2V0aF9pb2N0bCA9IHN0bW1hY19pb2N0bCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTEtXFx0Lm5kb19nZXRfc3RhdHM2NCA9IHN0bW1hY19nZXRfc3RhdHM2NCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjAuODAzNDE2MjA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTY1NDc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPQ1RMIFBhdGNoIGFuZCBTVE1NQUMncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgcmVkaXJlY3RpbmcgYWxsIGlvY3RscyB0byBgcGh5bGlua19taWlfaW9jdGxgLiBUaGF0IGltbWVkaWF0ZWx5IGJlZ3MgdGhlIHF1ZXN0aW9uLCBpcyBgcGh5bGlua19taWlfaW9jdGxgIGV2ZW4gYWNjZXNzaWJsZT8gQSBxdWljayBtZW50YWwgam9nIHJldmVhbHMgdGhhdCBgbmRvX2V0aF9pb2N0bGAgaXMgaW5kZWVkIHRoZSBnYXRld2F5LiBHb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBwYXRoLlxuXG5Ob3csIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGZ1enphYmlsaXR5IG9mIGBzdG1tYWNgLiBUaGUgZmFjdCB0aGF0IGl0IGhhcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBgc3RtbWFjX3BjaS5jYCwgaXMgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuIFBDSSBkcml2ZXJzIG9mdGVuIHByZXNlbnQgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBUaGVyZWZvcmUsIEkgc2hvdWxkIGNoZWNrIGBzdG1tYWNfcGNpLmNgIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgaW5kZWVkIHJlbGF0ZXMgdG8gYSBQQ0kgZHJpdmVyLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBpbmRpY2F0aW9uIG9mIGl0cyBvdmVyYWxsIGV4cG9zdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjQuMTg5MDczMTM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDE4NDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MjQuMjQ3NTAwNjIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3ODM2OTE0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGhvdyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIG1pZ2h0IGJlIHRvbyBzaW1wbGlzdGljLiBJcyBpdCBwb3NzaWJsZSB0aGF0IHRoZSB0eXBpY2FsIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBjYWxsLCBhcyBJIGtub3cgaXQsIGlzbid0IGRpcmVjdGx5IHRoZSBvbmUgYmVpbmcgZXhlY3V0ZWQ/IFBlcmhhcHMgdGhlcmUncyBhIHdyYXBwZXIgZnVuY3Rpb24gaW4gcGxhY2UsIGFkZGluZyBhbiBleHRyYSBsYXllciBvZiBhYnN0cmFjdGlvbi4gVGhpcyBjb3VsZCBpbXBhY3QgaG93IEkgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kIGFueSBhc3NvY2lhdGVkIGRlYnVnZ2luZyBlZmZvcnRzLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgcGF0aCB0byBiZSBjZXJ0YWluLiBBIHdyYXBwZXIsIGlmIHByZXNlbnQsIGNvdWxkIGludHJvZHVjZSBhZGRpdGlvbmFsIGluaXRpYWxpemF0aW9uLCBlcnJvciBoYW5kbGluZywgb3IgZXZlbiBtb2RpZnkgdGhlIGFyZ3VtZW50cyBwYXNzZWQgZG93bnN0cmVhbS4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGFuZCBydWxlIG91dCBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjI3LjEyNTg3MTU2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE2NDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzODI9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzODQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGludGVsX2V0aF9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4NS1cXHQubmFtZSA9IFxcXCJpbnRlbC1ldGgtcGNpXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEzOTQ6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDQ6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGxvb25nc29uX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTQ6bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM3MT1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzc0LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzgzOm1vZHVsZV9wY2lfZHJpdmVyKGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODoyNy4xODIwNDAwMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU2OTAyMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIGBzdG1tYWNgIERyaXZlcioqXG5cbk9rYXksIHNvIGBzdG1tYWNgICpkb2VzKiBoYXZlIG11bHRpcGxlIFBDSSBkcml2ZXJzIOKAkyBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSBvcGVucyB1cCBwb3NzaWJpbGl0aWVzIGZvciBmdXp6aW5nIGl0IHRocm91Z2ggc3RhbmRhcmQgUENJIGZ1enppbmcgdGVjaG5pcXVlcy4gQW5kLCBvZiBjb3Vyc2UsIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHZpcnR1YWwgZGV2aWNlLCB0aGF0IGFkZHMgYW5vdGhlciBsYXllci4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIFN5emthbGxlciBjYW4gZnV6eiBpb2N0bHMgb24gbmV0d29yayBpbnRlcmZhY2VzLCByaWdodD8gVGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNlZW1zIHRvIGJlIHJlZGlyZWN0aW5nIGFsbCBpb2N0bHMgaW4gYHN0bW1hY19pb2N0bGAgdG8gYHBoeWxpbmtfbWlpX2lvY3RsYC4gVGhhdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIHNob3VsZCBtYWtlIGEgbm90ZSB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBzdG1tYWNgLiBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgZW5hYmxlZCB0byBiZSBhYmxlIHRvIGJlIGNvcnJlY3RseSBmdXp6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODozMC45Mzg5NDQwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwOTU0MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOD1pZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3MT1lbmRpZiAjIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjMwLjk5NzA0NTk2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE4MzEwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEknbSBzZWVpbmcgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGFyZSB0aGVzZSBldGhlcm5ldCBzcGVjaWZpYyBvciBQQ0kgcmVsYXRlZD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGxheWVyLiBUaGUgZHJpdmVyIGNvbnRleHQgc3VnZ2VzdHMgRXRoZXJuZXQsIHNvIEkgdGhpbmsgSSBtaWdodCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgUEhZIGxpbmsuXG5cblRvIGNsYXJpZnkgdGhlaXIgdXNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUEhZIGxheWVyLCBzcGVjaWZpY2FsbHksIHNvIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHBoeWxpbmtfbWlpX2lvY3RsYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gc2VlIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIGFueSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjM0LjExNTM1OTAzNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyNTEwNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDktLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTEwOiAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTEtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MjYtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTI3OmludCBwaHlsaW5rX21paV9pb2N0bChzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBpZnJlcSAqaWZyLCBpbnQgY21kKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODQtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU4NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQxNTowODozNC4xNzQ2MTc1MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzMzcxMTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPQ1RMIFBhdGNoIGZvciBgc3RtbWFjX2lvY3RsYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgaXQgc2VlbXMgbGlrZSB0aGUga2V5IGNoYW5nZSBpcyB3aXRoaW4gdGhlIGBzdG1tYWNfaW9jdGxgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgZXhwYW5kaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIGBwaHlsaW5rX21paV9pb2N0bGAuICBUaGUgcGF0Y2ggZXNzZW50aWFsbHkgb3BlbnMgdXAgYHN0bW1hY19pb2N0bGAgdG8gYSB3aWRlciByYW5nZSBvZiBJT0NUTCBjb21tYW5kcywgZm9yd2FyZGluZyBldmVyeXRoaW5nIHRvIGBwaHlsaW5rX21paV9pb2N0bGAuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIGBzdG1tYWNfaW9jdGxgIGlzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuICBBYnNvbHV0ZWx5ISBJdCdzIGFuIGlvY3RsIGhhbmRsZXIgZm9yIGEgbmV0d29yayBkZXZpY2Ug4oCTIHRoYXQncyBwcmltZSByZWFsIGVzdGF0ZSBmb3IgZnV6emluZy4gIEdpdmVuIHRoZSBjaGFuZ2VzLCBJJ2QgZGVmaW5pdGVseSBtYWtlIGBzdG1tYWNfaW9jdGxgIG15IGZvY3VzIHN5bWJvbC5cblxuQXMgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBleGlzdGluZyBjb25maWdzIHNlZW0gYXBwcm9wcmlhdGU6IGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHZlcmlmaWNhdGlvbjogaXMgYHBoeWxpbmtfbWlpX2lvY3RsYCAqdGhlIG9ubHkqIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHdpdGhpbiBgc3RtbWFjX2lvY3RsYD8gIFllcCwgbG9va3MgbGlrZSBpdCdzIGEgZGlyZWN0IGNhbGwsIHNpbXBsaWZ5aW5nIHRoZSBvdmVyYWxsIGZsb3cuIFRoZSBwYXRjaCBoYXMgcmVtb3ZlZCB0aGUgcmVzdHJpY3Rpb25zIGFuZCBub3cgcGFzc2VzIGFsbCBjb21tYW5kcyBkaXJlY3RseSB0byBgcGh5bGlua19taWlfaW9jdGxgLlxuXG5UaGlzIGlzIGludGVyZXN0aW5nLCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBsaW1pdGVkIGNvbW1hbmRzIGxpa2UgYFNJT0NHTUlJUEhZYCwgYFNJT0NHTUlJUkVHYCwgYW5kIGBTSU9DU01JSVJFR2AuIEJ1dCB0aGUgcGF0Y2ggcmVtb3ZlcyB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuXG5cblNvLCBgcGh5bGlua19taWlfaW9jdGxgIGlzIG5vdyBoYW5kbGluZyBgU0lPQ0dNSUlQSFlgLCBgU0lPQ0dNSUlSRUdgLCBgU0lPQ1NNSUlSRUdgLCBhbmQgcG90ZW50aWFsbHkgbW9yZS4gTXkgbmV4dCBtb3ZlIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gYHBoeWxpbmtfbWlpX2lvY3RsYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbmV3IGNvbW1hbmRzIGFyZSBwb3RlbnRpYWxseSBleHBvc2VkIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCwgdG8gaWRlbnRpZnkgdGhlIGZ1bGwgc2NvcGUgb2YgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6MzkuNTA4MzMxNzI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MjcsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1Mjc6XFx0aW50IHBoeWxpbmtfbWlpX2lvY3RsKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuMzUyODpcXHR7XFxuMzUyOTpcXHRcXHRzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKm1paSA9IGlmX21paShpZnIpO1xcbjM1MzA6XFx0XFx0aW50ICByZXQ7XFxuMzUzMTpcXHRcXG4zNTMyOlxcdFxcdEFTU0VSVF9SVE5MKCk7XFxuMzUzMzpcXHRcXG4zNTM0OlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5ZGV2KSB7XFxuMzUzNTpcXHRcXHRcXHQvKiBQSFlzIG9ubHkgZXhpc3QgZm9yIE1MT19BTl9QSFkgYW5kIFNHTUlJICovXFxuMzUzNjpcXHRcXHRcXHRzd2l0Y2ggKGNtZCkge1xcbjM1Mzc6XFx0XFx0XFx0Y2FzZSBTSU9DR01JSVBIWTpcXG4zNTM4OlxcdFxcdFxcdFxcdG1paS1cXHUwMDNlcGh5X2lkID0gcGwtXFx1MDAzZXBoeWRldi1cXHUwMDNlbWRpby5hZGRyO1xcbjM1Mzk6XFx0XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMzU0MDpcXHRcXG4zNTQxOlxcdFxcdFxcdGNhc2UgU0lPQ0dNSUlSRUc6XFxuMzU0MjpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX3BoeV9yZWFkKHBsLCBtaWktXFx1MDAzZXBoeV9pZCwgbWlpLVxcdTAwM2VyZWdfbnVtKTtcXG4zNTQzOlxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzZT0gMCkge1xcbjM1NDQ6XFx0XFx0XFx0XFx0XFx0bWlpLVxcdTAwM2V2YWxfb3V0ID0gcmV0O1xcbjM1NDU6XFx0XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4zNTQ2OlxcdFxcdFxcdFxcdH1cXG4zNTQ3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM1NDg6XFx0XFxuMzU0OTpcXHRcXHRcXHRjYXNlIFNJT0NTTUlJUkVHOlxcbjM1NTA6XFx0XFx0XFx0XFx0cmV0ID0gcGh5bGlua19waHlfd3JpdGUocGwsIG1paS1cXHUwMDNlcGh5X2lkLCBtaWktXFx1MDAzZXJlZ19udW0sXFxuMzU1MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXZhbF9pbik7XFxuMzU1MjpcXHRcXHRcXHRcXHRicmVhaztcXG4zNTUzOlxcdFxcbjM1NTQ6XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNTU1OlxcdFxcdFxcdFxcdHJldCA9IHBoeV9taWlfaW9jdGwocGwtXFx1MDAzZXBoeWRldiwgaWZyLCBjbWQpO1xcbjM1NTY6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzU1NzpcXHRcXHRcXHR9XFxuMzU1ODpcXHRcXHR9IGVsc2Uge1xcbjM1NTk6XFx0XFx0XFx0c3dpdGNoIChjbWQpIHtcXG4zNTYwOlxcdFxcdFxcdGNhc2UgU0lPQ0dNSUlQSFk6XFxuMzU2MTpcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXBoeV9pZCA9IDA7XFxuMzU2MjpcXHRcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4zNTYzOlxcdFxcbjM1NjQ6XFx0XFx0XFx0Y2FzZSBTSU9DR01JSVJFRzpcXG4zNTY1OlxcdFxcdFxcdFxcdHJldCA9IHBoeWxpbmtfbWlpX3JlYWQocGwsIG1paS1cXHUwMDNlcGh5X2lkLCBtaWktXFx1MDAzZXJlZ19udW0pO1xcbjM1NjY6XFx0XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNlPSAwKSB7XFxuMzU2NzpcXHRcXHRcXHRcXHRcXHRtaWktXFx1MDAzZXZhbF9vdXQgPSByZXQ7XFxuMzU2ODpcXHRcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjM1Njk6XFx0XFx0XFx0XFx0fVxcbjM1NzA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMzU3MTpcXHRcXG4zNTcyOlxcdFxcdFxcdGNhc2UgU0lPQ1NNSUlSRUc6XFxuMzU3MzpcXHRcXHRcXHRcXHRyZXQgPSBwaHlsaW5rX21paV93cml0ZShwbCwgbWlpLVxcdTAwM2VwaHlfaWQsIG1paS1cXHUwMDNlcmVnX251bSxcXG4zNTc0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdG1paS1cXHUwMDNldmFsX2luKTtcXG4zNTc1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM1NzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDE1OjA4OjM5LjUwODk4OTc1N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjc3MTAxMjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNfaW9jdGxgIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHRoYXQgdGhlIGBwaHlsaW5rX21paV9pb2N0bGAgZnVuY3Rpb24gaGFzIGEgYGRlZmF1bHRgIGNhc2UgdGhhdCBub3cgY2FsbHMgYHBoeV9taWlfaW9jdGwocGwtXHUwMDNlcGh5ZGV2LCBpZnIsIGNtZClgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGF0IHJlbW92aW5nIHRoYXQgc3dpdGNoIGluIGBzdG1tYWNfaW9jdGxgIGlzIGEgc2lnbmlmaWNhbnQgdGhpbmcuIEVzc2VudGlhbGx5LCB3ZSBhcmUgbm93IHBhc3NpbmcgKmFsbCogaW9jdGxzIHRvIGBwaHlfbWlpX2lvY3RsYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCByaWdodD8gSXQncyBleHBvc2luZyBwb3RlbnRpYWxseSBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyIHRoYXQgd2VyZSBwcmV2aW91c2x5IGJsb2NrZWQuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGludm9sdmluZyBpb2N0bHMgaW4gYSBuZXR3b3JrIGRyaXZlciwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZC4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIGZ1bmN0aW9ucyBgc3RtbWFjX2lvY3RsYCBhbmQgYHBoeWxpbmtfbWlpX2lvY3RsYCBhcyB0aGUga2V5IHBvaW50cy5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBgU1RNTUFDX0VUSGAgaXMgdGhlIHByaW1hcnkgb25lLCBvZiBjb3Vyc2UuIEFuZCwgeWVhaCwgYFNUTU1BQ19QQ0lgIGVuYWJsZXMgdGhlIFBDSSBkcml2ZXIsIG1ha2luZyBpdCByZWFsbHkgaGVscGZ1bCBmb3IgZnV6emluZyBpbiBhIFZNIGVudmlyb25tZW50LiBNYWtlcyB0aGluZ3MgZWFzeSB0byB0ZXN0LlxuXG5Db25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgbmV0d29yayBkZXZpY2UgZHJpdmVyIHJlYWNoYWJsZSB2aWEgaW9jdGwsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGlzIHBhdGNoIG9wZW5zIHVwIHRoZSBpbnRlcmZhY2UsIHBvdGVudGlhbGx5IGxldHRpbmcgdGhpbmdzIGxpa2UgYFNJT0NTSFdUU1RBTVBgIG9yIFBIWS1zcGVjaWZpYyBpb2N0bHMgdGhyb3VnaC4gVGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0IHRvIGNoZWNrIGl0IG91dC5cblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTUsIk91dHB1dFRva2VucyI6MTIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMTU6MDg6NDUuNzg2MDkyNjUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1MDE2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfaW9jdGxcIixcbiAgICBcInBoeWxpbmtfbWlpX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHN3aXRjaCBzdGF0ZW1lbnQgaW4gYHN0bW1hY19pb2N0bGAsIGZvcndhcmRpbmcgYWxsIGlvY3RsIGNvbW1hbmRzIHRvIGBwaHlsaW5rX21paV9pb2N0bGAgaW5zdGVhZCBvZiBqdXN0IGEgcmVzdHJpY3RlZCBzZXQuIFRoaXMgZXhwb3NlcyBuZXcgaW9jdGxzIHRvIHRoZSBQSFkgZHJpdmVyLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSB2aWEgbmV0d29yayBpbnRlcmZhY2UgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvv5rn[1] Phase: Succeeded StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 15:08:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 15:08:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2] Phase: Succeeded StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 15:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 15:08:57 +0000 UTC FinishedAt: 2026-07-18 15:09:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowvv5rn/series-workflowvv5rn-convert-artifact-644527898/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 15:09:07 +0000 UTC FinishedAt: 2026-07-18 15:49:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 15:09:07 +0000 UTC FinishedAt: 2026-07-18 15:49:14 +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:*e4b4b684-fbc8-4f7c-9dd9-edfa12dcb377,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-workflowvv5rn/series-workflowvv5rn-convert-artifact-644527898/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": "013ec2a9-b7db-404d-bb2e-a9bbb9f27475", "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-workflowvv5rn/series-workflowvv5rn-build-action-3679061960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 15:09:07 +0000 UTC FinishedAt: 2026-07-18 15:49:04 +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:*e4b4b684-fbc8-4f7c-9dd9-edfa12dcb377,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-workflowvv5rn/series-workflowvv5rn-convert-artifact-644527898/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": "013ec2a9-b7db-404d-bb2e-a9bbb9f27475", "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-workflowvv5rn/series-workflowvv5rn-build-action-3679061960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 15:49:14 +0000 UTC FinishedAt: 2026-07-18 15:49:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 15:49:14 +0000 UTC FinishedAt: 2026-07-18 15:49:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 15:49:14 +0000 UTC FinishedAt: 2026-07-18 15:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 15:49:14 +0000 UTC FinishedAt: 2026-07-18 15:49:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowvv5rn/series-workflowvv5rn-convert-artifact-3926155637/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 15:49:24 +0000 UTC FinishedAt: 2026-07-18 15:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 15:49:24 +0000 UTC FinishedAt: 2026-07-18 15:51:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*013ec2a9-b7db-404d-bb2e-a9bbb9f27475,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-workflowvv5rn/series-workflowvv5rn-build-action-3679061960/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-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 15:52:05 +0000 UTC FinishedAt: 2026-07-18 15:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 15:52:05 +0000 UTC FinishedAt: 2026-07-18 15:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 15:52:05 +0000 UTC FinishedAt: 2026-07-18 16:35:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 15:52:05 +0000 UTC FinishedAt: 2026-07-18 16:35:27 +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:*e4b4b684-fbc8-4f7c-9dd9-edfa12dcb377,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-workflowvv5rn/series-workflowvv5rn-convert-artifact-3926155637/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": "4d2056fe-ceac-40ea-b858-42a79246e6d1", "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-workflowvv5rn/series-workflowvv5rn-build-action-2127913857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 15:52:05 +0000 UTC FinishedAt: 2026-07-18 16:35:17 +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:*e4b4b684-fbc8-4f7c-9dd9-edfa12dcb377,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-workflowvv5rn/series-workflowvv5rn-convert-artifact-3926155637/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": "4d2056fe-ceac-40ea-b858-42a79246e6d1", "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-workflowvv5rn/series-workflowvv5rn-build-action-2127913857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 16:35:27 +0000 UTC FinishedAt: 2026-07-18 16:35:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 16:35:27 +0000 UTC FinishedAt: 2026-07-18 16:35:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 16:35:27 +0000 UTC FinishedAt: 2026-07-18 16:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 16:35:27 +0000 UTC FinishedAt: 2026-07-18 16:37:28 +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:*4d2056fe-ceac-40ea-b858-42a79246e6d1,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-workflowvv5rn/series-workflowvv5rn-build-action-2127913857/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-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +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":["stmmac_ioctl","phylink_mii_ioctl"],"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:*013ec2a9-b7db-404d-bb2e-a9bbb9f27475,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4d2056fe-ceac-40ea-b858-42a79246e6d1,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-workflowvv5rn/series-workflowvv5rn-build-action-3679061960/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-workflowvv5rn/series-workflowvv5rn-build-action-2127913857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:37:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:37:45 +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":["stmmac_ioctl","phylink_mii_ioctl"],"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-workflowvv5rn/series-workflowvv5rn-convert-artifact-791157850/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 16:37:38 +0000 UTC FinishedAt: 2026-07-18 16:37:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 16:37:48 +0000 UTC FinishedAt: 2026-07-18 16:40:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvv5rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_ioctl","phylink_mii_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ce6b4d3216b63f902bb8e9695ee6c10c83415f65","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"064cdccf-c43f-4ba9-aecf-0db228e38fd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 16:37:48 +0000 UTC FinishedAt: 2026-07-18 16:40:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*013ec2a9-b7db-404d-bb2e-a9bbb9f27475,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4d2056fe-ceac-40ea-b858-42a79246e6d1,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-workflowvv5rn/series-workflowvv5rn-build-action-3679061960/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-workflowvv5rn/series-workflowvv5rn-build-action-2127913857/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-workflowvv5rn/series-workflowvv5rn-convert-artifact-791157850/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,}