Name: series-workflowq99k8 Phase: Succeeded StartedAt: 2026-07-14 20:12:32 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[0] Phase: Succeeded StartedAt: 2026-07-14 20:12:32 +0000 UTC FinishedAt: 2026-07-14 21:20:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 20:12:32 +0000 UTC FinishedAt: 2026-07-14 21:20:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MCTP", "MCTP_SERIAL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MCTP", "MCTP_SERIAL" ], "series_id": "bcff96c2-1342-42ea-8c8f-a19d93228eee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mctp_serial_push_header", "mctp_serial_push" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01DVFAmIzM0OywKICAgICYjMzQ7TUNUUF9TRVJJQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoX2hlYWRlciYjMzQ7LAogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmYwOWQ5NWU4ZTQ1NzRkM2Y4YzNjMWNjNjBkMTdiNjM1NTBkNDE2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjE5OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xuaW5kZXggMjZjOWEzM2ZkNjM2NDguLjFlM2QyODVjMDUwMDQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcbkBAIC0zMTMsNyAmIzQzOzMxMyw3IEBAIHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAyOlxuLVx0XHRpZiAoYyBcdTAwM2UgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7XG4mIzQzO1x0XHRpZiAoYyA9PSAwIHx8IGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuIFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGRldi1cdTAwM2VyeGxlbiA9IGM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUNUUCYjMzQ7LAogICAgJiMzNDtNQ1RQX1NFUklBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21jdHBfc2VyaWFsX3B1c2hfaGVhZGVyJiMzNDssCiAgICAmIzM0O21jdHBfc2VyaWFsX3B1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1DVFAgc2VyaWFsIGRyaXZlciYjMzk7cyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZmMDlkOTVlOGU0NTc0ZDNmOGMzYzFjYzYwZDE3YjYzNTUwZDQxNjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAyMToxOTozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYwppbmRleCAyNmM5YTMzZmQ2MzY0OC4uMWUzZDI4NWMwNTAwNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMKQEAgLTMxMyw3ICYjNDM7MzEzLDcgQEAgc3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXIoc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpCiAJCX0KIAkJYnJlYWs7CiAJY2FzZSAyOgotCQlpZiAoYyAmZ3Q7IE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkgewomIzQzOwkJaWYgKGMgPT0gMCB8fCBjICZndDsgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7CiAJCQlkZXYtJmd0O3J4c3RhdGUgPSBTVEFURV9FUlI7CiAJCX0gZWxzZSB7CiAJCQlkZXYtJmd0O3J4bGVuID0gYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gdGhpcyBwYXRjaDoKCioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIElzc3VlIGluIE1DVFAgU2VyaWFsIERyaXZlcioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGFmZmVjdGluZyBgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyYCwgYW5kIHNwZWNpZmljYWxseSBhIG5ldyBjaGVjazogYGMgPT0gMGAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2h5IGlzIHRoaXMgY29uZGl0aW9uIGJlaW5nIGludHJvZHVjZWQ/IFdoYXQmIzM5O3MgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbiBvZiBgY2AgYmVpbmcgemVybz8gSXMgdGhpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLCBhIGJ1ZyBmaXgsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PwoKSSBuZWVkIHRvIGRpdmUgaW50byBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZS4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgY2AgaXMgdXNlZC4gV2hhdCBkb2VzIHRoaXMgYGNgIHZhcmlhYmxlIHJlcHJlc2VudD8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIGFuIGVycm9yIGNvZGU/IERlcGVuZGluZyBvbiB3aGF0IGBjYCBzeW1ib2xpemVzLCBhIHplcm8gdmFsdWUgY291bGQgc2lnbmlmeSBzb21ldGhpbmcgc2lnbmlmaWNhbnQsIGFuZCB0aGUgcGF0Y2ggaXMgZWl0aGVyIHByZXZlbnRpbmcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgYXR0ZW1wdGluZyB0byByZWNvdmVyIGZyb20gb25lLiBJcyB0aGlzIGEgcG90ZW50aWFsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBwcmV2ZW50aW9uLCBvciBzb21ldGhpbmcgdG8gZG8gd2l0aCBidWZmZXIgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIGNvZGUgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHB1cnBvc2Ugb2YgdGhlIGNoZWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgbGFyZ2VyIGZyYW1ld29yayBpcyBrZXkgdG8gZGV0ZXJtaW5lIHRoZSBwYXRjaCYjMzk7cyBzb3VuZG5lc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWN0cF9zZXJpYWxfcHVzaF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk3LVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zNTI9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzU4LVx0Y2FzZSBTVEFURV9IRUFERVI6XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5Olx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAqKgoKT2theSwgc28gdGhlIHRob3VnaHQgcHJvY2VzcyBpcyBzdHJhaWdodGZvcndhcmQ6ICYjMzQ7TGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIG9mIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYC4mIzM0OyBHaXZlbiB0aGF0IHRoZXNlIGFyZSBsaWtlbHkgZnVuY3Rpb24gbmFtZXMgaW4gYW4gTUNUUC1yZWxhdGVkIHNlcmlhbCBjb21tdW5pY2F0aW9uIGNvbnRleHQsIG15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZWl0aGVyIGhlYWRlciBmcmFtaW5nIGFuZCBwYWNrZXRpemF0aW9uIG9yIHBvc3NpYmx5IHRoZSBjb3JlIGxvZ2ljIGZvciBwdXNoaW5nIGRhdGEgb3ZlciBhIHNlcmlhbCBpbnRlcmZhY2Ugd2l0aGluIGFuIE1DVFAgaW1wbGVtZW50YXRpb24uCgpNeSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBBcmUgdGhleSBwYXJ0IG9mIGEgdHJhbnNtaXQgcXVldWUgbWFuYWdlbWVudCBzeXN0ZW0/IEFyZSB0aGV5IHJlc3BvbnNpYmxlIGZvciBsb3ctbGV2ZWwgYnl0ZS1sZXZlbCBtYW5pcHVsYXRpb24gcmVxdWlyZWQgZm9yIHNlcmlhbCB0cmFuc21pc3Npb24/IERvZXMgYG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyYCBwcmVwZW5kIHRoZSBoZWFkZXIgZGF0YSBiZWZvcmUgYSBwYXlsb2FkIHRoYXQgaXMgaGFuZGxlZCBieSBgbWN0cF9zZXJpYWxfcHVzaGA/IFdoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZG8gdGhlc2UgZnVuY3Rpb25zIHByb3ZpZGU/IFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvcjoKCiogICAqKkVycm9yIEhhbmRsaW5nOioqIEFyZSB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tzIGZvciBidWZmZXIgb3ZlcmZsb3csIGZyYW1pbmcgaXNzdWVzLCBvciBzZXJpYWwgcG9ydCBmYWlsdXJlcz8KKiAgICoqU3luY2hyb25pemF0aW9uOioqIEhvdyBhcmUgdGhlc2UgZnVuY3Rpb25zIHByb3RlY3RlZCBmcm9tIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBpbnZvbHZlZD8gTXV0ZXhlcywgc2VtYXBob3JlcywgYXRvbWljIG9wZXJhdGlvbnMgLSB3aGljaCBhcmUgZW1wbG95ZWQgYW5kIHdoeT8KKiAgICoqT3B0aW1pemF0aW9uOioqIEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnM/IEFueSBpbmxpbmUgYXNzZW1ibHkgb3IgYml0LXR3aWRkbGluZyB0byBvcHRpbWl6ZSB0cmFuc21pc3Npb24gc3BlZWQgb3IgcmVkdWNlIGxhdGVuY3k/CiogICAqKkFic3RyYWN0aW9uOioqIElzIHRoaXMgY29kZSB0aWdodGx5IGNvdXBsZWQgdG8gYSBzcGVjaWZpYyBzZXJpYWwgcG9ydCBvciBjYW4gaXQgYmUgZ2VuZXJhbGl6ZWQgZm9yIG90aGVyIGludGVyZmFjZXM/IElmIGdlbmVyYWwsIGhvdyBpcyB0aGUgaW50ZXJmYWNlIGRlZmluZWQvaW1wbGVtZW50ZWQ/CiogICAqKkhlYWRlciBGb3JtYXQ6KiogSSB3aWxsIGFsc28gd2FudCB0byBhc2NlcnRhaW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUgaGVhZGVycyBiZWluZyBwdXNoZWQ7IHRoaXMgY2FuIHJldmVhbCBtb3JlIGFib3V0IHRoZSBwcm90b2NvbCBsYXllcnMgYmVpbmcgaW1wbGVtZW50ZWQuCiogICAqKkRhdGEgSW50ZWdyaXR5OioqIERvZXMgdGhlIGNvZGUgaW5jb3Jwb3JhdGUgYW55IENSQyBvciBjaGVja3N1bSBjYWxjdWxhdGlvbnMgdG8gZW5zdXJlIHRoZSBkYXRhIGlzIHRyYW5zbWl0dGVkIHJlbGlhYmx5PwoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIGFsaWduIHdpdGggZXN0YWJsaXNoZWQgTUNUUCBiZXN0IHByYWN0aWNlcyBhbmQgaWYgdGhleSByZWZsZWN0IGFueSBjdXN0b20gb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNob2ljZXMuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgTUNUUCBjb21tdW5pY2F0aW9uIHN0YWNrIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSByZWxpYWJpbGl0eSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgc2VyaWFsIHRyYW5zcG9ydCBsYXllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5MDpcdFx0Y2IgPSBfX21jdHBfY2Ioc2tiKTtcbiAyOTE6XHRcdGNiLVx1MDAzZWhhbGVuID0gMDtcbiAyOTI6XHRcbiAyOTM6XHRcdG5ldGlmX3J4KHNrYik7XG4gMjk0Olx0XHRkZXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7O1xuIDI5NTpcdFx0ZGV2LVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9ieXRlcyAmIzQzOz0gZGV2LVx1MDAzZXJ4bGVuO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiAyOTg6XHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAyOTk6XHR7XG4gMzAwOlx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHBvcykge1xuIDMwMTpcdFx0Y2FzZSAwOlxuIDMwMjpcdFx0XHRpZiAoYyA9PSBCWVRFX0ZSQU1FKVxuIDMwMzpcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyYjNDM7JiM0Mzs7XG4gMzA0Olx0XHRcdGVsc2VcbiAzMDU6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMDY6XHRcdFx0YnJlYWs7XG4gMzA3Olx0XHRjYXNlIDE6XG4gMzA4Olx0XHRcdGlmIChjID09IE1DVFBfU0VSSUFMX1ZFUlNJT04pIHtcbiAzMDk6XHRcdFx0XHRkZXYtXHUwMDNlcnhwb3MmIzQzOyYjNDM7O1xuIDMxMDpcdFx0XHRcdGRldi1cdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKEZDU19JTklULCBjKTtcbiAzMTE6XHRcdFx0fSBlbHNlIHtcbiAzMTI6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMTM6XHRcdFx0fVxuIDMxNDpcdFx0XHRicmVhaztcbiAzMTU6XHRcdGNhc2UgMjpcbiAzMTY6XHRcdFx0aWYgKGMgPT0gMCB8fCBjIFx1MDAzZSBNQ1RQX1NFUklBTF9GUkFNRV9NVFUpIHtcbiAzMTc6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMTg6XHRcdFx0fSBlbHNlIHtcbiAzMTk6XHRcdFx0XHRkZXYtXHUwMDNlcnhsZW4gPSBjO1xuIDMyMDpcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyA9IDA7XG4gMzIxOlx0XHRcdFx0ZGV2LVx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xuIDMyMjpcdFx0XHRcdGRldi1cdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cdTAwM2VyeGZjcywgYyk7XG4gMzIzOlx0XHRcdH1cbiAzMjQ6XHRcdFx0YnJlYWs7XG4gMzI1Olx0XHR9XG4gMzI2Olx0fVxuIDMyNzpcdFxuIDMyODpcdHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAzMjk6XHR7XG4gMzMwOlx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHBvcykge1xuIDMzMTpcdFx0Y2FzZSAwOlxuIDMzMjpcdFx0XHRkZXYtXHUwMDNlcnhmY3NfcmN2ZCA9IGMgXHUwMDNjXHUwMDNjIDg7XG4gMzMzOlx0XHRcdGRldi1cdTAwM2VyeHBvcyYjNDM7JiM0Mzs7XG4gMzM0Olx0XHRcdGJyZWFrO1xuIDMzNTpcdFx0Y2FzZSAxOlxuIDMzNjpcdFx0XHRkZXYtXHUwMDNlcnhmY3NfcmN2ZCB8PSBjO1xuIDMzNzpcdFx0XHRkZXYtXHUwMDNlcnhwb3MmIzQzOyYjNDM7O1xuIDMzODpcdFx0XHRicmVhaztcbiAzMzk6XHRcdGNhc2UgMjpcbiAzNDA6XHRcdFx0aWYgKGMgIT0gQllURV9GUkFNRSkge1xuIDM0MTpcdFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIDM0MjpcdFx0XHR9IGVsc2Uge1xuIDM0MzpcdFx0XHRcdG1jdHBfc2VyaWFsX3J4KGRldik7XG4gMzQ0Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4bGVuID0gMDtcbiAzNDU6XHRcdFx0XHRkZXYtXHUwMDNlcnhwb3MgPSAwO1xuIDM0NjpcdFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfSURMRTtcbiAzNDc6XHRcdFx0fVxuIDM0ODpcdFx0XHRicmVhaztcbiAzNDk6XHRcdH1cbiAzNTA6XHR9XG4gMzUxOlx0XG4gMzUyOlx0c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAzNTM6XHR7XG4gMzU0Olx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHN0YXRlKSB7XG4gMzU1Olx0XHRjYXNlIFNUQVRFX0lETEU6XG4gMzU2Olx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfSEVBREVSO1xuIDM1NzpcdFx0XHRmYWxsdGhyb3VnaDtcbiAzNTg6XHRcdGNhc2UgU1RBVEVfSEVBREVSOlxuIDM1OTpcdFx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuIDM2MDpcdFx0XHRicmVhaztcbiAzNjE6XHRcbiAzNjI6XHRcdGNhc2UgU1RBVEVfRVNDQVBFOlxuIDM2MzpcdFx0XHRjIHw9IDB4MjA7XG4gMzY0Olx0XHRcdGZhbGx0aHJvdWdoO1xuIDM2NTpcdFx0Y2FzZSBTVEFURV9EQVRBOlxuIDM2NjpcdFx0XHRpZiAoZGV2LVx1MDAzZXJ4c3RhdGUgIT0gU1RBVEVfRVNDQVBFIFx1MDAyNlx1MDAyNiBjID09IEJZVEVfRVNDKSB7XG4gMzY3Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FU0NBUEU7XG4gMzY4Olx0XHRcdH0gZWxzZSB7XG4gMzY5Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4ZmNzID0gY3JjX2NjaXR0X2J5dGUoZGV2LVx1MDAzZXJ4ZmNzLCBjKTtcbiAzNzA6XHRcdFx0XHRkZXYtXHUwMDNlcnhidWZbZGV2LVx1MDAzZXJ4cG9zXSA9IGM7XG4gMzcxOlx0XHRcdFx0ZGV2LVx1MDAzZXJ4cG9zJiM0MzsmIzQzOztcbiAzNzI6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0RBVEE7XG4gMzczOlx0XHRcdFx0aWYgKGRldi1cdTAwM2VyeHBvcyA9PSBkZXYtXHUwMDNlcnhsZW4pIHtcbiAzNzQ6XHRcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyA9IDA7XG4gMzc1Olx0XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX1RSQUlMRVI7XG4gMzc2Olx0XHRcdFx0fVxuIDM3NzpcdFx0XHR9XG4gMzc4Olx0XHRcdGJyZWFrO1xuIDM3OTpcdFxuIDM4MDpcdFx0Y2FzZSBTVEFURV9UUkFJTEVSOlxuIDM4MTpcdFx0XHRtY3RwX3NlcmlhbF9wdXNoX3RyYWlsZXIoZGV2LCBjKTtcbiAzODI6XHRcdFx0YnJlYWs7XG4gMzgzOlx0XG4gMzg0Olx0XHRjYXNlIFNUQVRFX0VSUjpcbiAzODU6XHRcdFx0aWYgKGMgPT0gQllURV9GUkFNRSlcbiAzODY6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0lETEU7XG4gMzg3Olx0XHRcdGJyZWFrO1xuIDM4ODpcdFxuIDM4OTpcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIG1jdHAtc2VyaWFsLmMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBjID09IDBgIGZvciBgZGV2LSZndDtyeGxlbmAgd2l0aGluIHRoZSBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIGBjYCBpcyBpbmRlZWQgMCwgdGhlbiBgZGV2LSZndDtyeGxlbmAgKndpbGwqIGJlIDAuIFRoYXQmIzM5O3MgYSBkaXJlY3QgY29uc2VxdWVuY2Ugb2YgdGhlIGxvZ2ljLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgbXkgYWxhcm0gYmVsbHMgc3RhcnQgcmluZ2luZy4gSW4gdGhlIGBTVEFURV9EQVRBYCBzdGF0ZSwgdGhlIGNvbXBhcmlzb24gYGRldi0mZ3Q7cnhwb3MgPT0gZGV2LSZndDtyeGxlbmAgd2lsbCBldmFsdWF0ZSB0byBgMCA9PSAwYCwgd2hpY2ggb2YgY291cnNlLCBpcyB0cnVlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuIFRoaXMgbG9va3MgbGlrZSBhIGdlbnVpbmUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IHdlIGFic29sdXRlbHkgKm11c3QqIGZ1enogYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAgdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBpbiBLY29uZmlnIHRoYXQgbWlnaHQgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIG9uIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21jdHAtc2VyaWFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01DVFBfU0VSSUFMKSAmIzQzOz0gbWN0cC1zZXJpYWwub1xuZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZS0yLW9iai0kKENPTkZJR19NQ1RQX1RSQU5TUE9SVF9JMkMpICYjNDM7PSBtY3RwLWkyYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlOiBNQ1RQIGFuZCBCZXlvbmQqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGZsYWdzIGBDT05GSUdfTUNUUF9TRVJJQUxgIGFzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFNlcmlhbCBNQ1RQLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBOb3csIGJlZm9yZSBJIGp1bXAgaGVhZGZpcnN0IGludG8gaW1wbGVtZW50aW5nIGl0LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBzdWJ0bGUgZGVwZW5kZW5jaWVzLiBXaGF0IGVsc2UgaXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBnZXR0aW5nIGBDT05GSUdfTUNUUF9TRVJJQUxgIGVuYWJsZWQ7IGl0JiMzOTtzIGFib3V0IGJ1aWxkaW5nIGEgc29saWQgZm91bmRhdGlvbi4gQXJlIHRoZXJlIHN1cHBvcnRpbmcgbW9kdWxlcywga2VybmVsIG9wdGlvbnMsIG9yIGZpcm13YXJlIGZlYXR1cmVzIHRoYXQgKmltcGxpY2l0bHkqIGRlcGVuZCBvbiB0aGlzLCBvciB0aGF0IHRoaXMgcmVxdWlyZXM/IENvdWxkIHRoZXJlIGJlIHVuZGVybHlpbmcgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzPyBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNyb3NzLXJlZmVyZW5jZSB0aGUgZG9jdW1lbnRhdGlvbiwgcmVsYXRlZCBjb2RlLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgZnJvbSBzaW1pbGFyIHByb2plY3RzIHRvIGVuc3VyZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIGRlcGVuZGVuY3kgZ3JhcGguIE5vIHBvaW50IGluIHJ1c2hpbmcgYW5kIGhpdHRpbmcgYSB3YWxsIGxhdGVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5jb3ZlciBldmVyeSBwb3NzaWJsZSBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUNUUF9TRVJJQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnPTQ9bWVudSBcJiMzNDtNQ1RQIERldmljZSBEcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZzo2OmNvbmZpZyBNQ1RQX1NFUklBTFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNQ1RQIHNlcmlhbCB0cmFuc3BvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWc6MjQ6Y29uZmlnIE1DVFBfU0VSSUFMX1RFU1RcbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZy0yNS0gICAgICAgIGJvb2wgXCYjMzQ7TUNUUCBzZXJpYWwgdGVzdHNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTUNUUCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNQ1RQIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIHRoZSBmaXJzdCBzdG9wIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnYCBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGxhbmRzY2FwZS4gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyPyBXaGF0IGRlcGVuZGVuY2llcyBleGlzdD8gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBidWlsZGluZyBibG9ja3MsIHRoZSBmdW5kYW1lbnRhbCBjaG9pY2VzIHRoYXQgc2hhcGUgaG93IHRoZSBNQ1RQIGRyaXZlciBiZWhhdmVzLiBJcyBpdCBtb2R1bGFyPyBBcmUgdGhlcmUgdmFyaW91cyB0cmFuc3BvcnQgcHJvdG9jb2xzIGl0IHN1cHBvcnRzLCBhbmQgaWYgc28sIGhvdyBhcmUgdGhvc2UgZW5hYmxlZC9kaXNhYmxlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgZmxvdyDigJMgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYW5kIHJlbGF0aW9uc2hpcHMgdGhhdCBkZWZpbmUgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIG9mIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgaW1wbGVtZW50YXRpb24sIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBhbmQgcHJvcG9zaW5nIGFueSBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21jdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdFxuICAgMjpcdGlmIE1DVFBcbiAgIDM6XHRcbiAgIDQ6XHRtZW51IFwmIzM0O01DVFAgRGV2aWNlIERyaXZlcnNcJiMzNDtcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTUNUUF9TRVJJQUxcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01DVFAgc2VyaWFsIHRyYW5zcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBUVFlcbiAgIDk6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYW4gTUNUUC1vdmVyLXNlcmlhbCBpbnRlcmZhY2UsIHRocm91Z2ggYVxuICAxMjpcdFx0ICBzZXJpYWwgbGluZS1kaXNjaXBsaW5lLCBhcyBkZWZpbmVkIGJ5IERNVEYgc3BlY2lmaWNhdGlvbiBcJiMzNDtEU1AwMjUzIC1cbiAgMTM6XHRcdCAgTUNUUCBTZXJpYWwgVHJhbnNwb3J0IEJpbmRpbmdcJiMzNDsuIEJ5IGF0dGFjaGluZyB0aGUgbGRpc2MgdG8gYSBzZXJpYWxcbiAgMTQ6XHRcdCAgZGV2aWNlLCB3ZSBnZXQgYSBuZXcgbmV0IGRldmljZSB0byB0cmFuc3BvcnQgTUNUUCBwYWNrZXRzLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaGlzIGFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggZXh0ZXJuYWwgTUNUUCBlbmRwb2ludHMgd2hpY2ggdXNlXG4gIDE3Olx0XHQgIHNlcmlhbCBhcyB0aGVpciB0cmFuc3BvcnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYW4gZWFzeSB3YXkgdG9cbiAgMTg6XHRcdCAgcHJvdmlkZSBNQ1RQIGNvbm5lY3Rpdml0eSBiZXR3ZWVuIHZpcnR1YWwgbWFjaGluZXMsIGJ5IGZvcndhcmRpbmdcbiAgMTk6XHRcdCAgZGF0YSBiZXR3ZWVuIHNpbXBsZSB2aXJ0dWFsIHNlcmlhbCBkZXZpY2VzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggTUNUUCwgYW5kIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBlc3RhYmxpc2ggYSBjb3VwbGUgb2YgY3J1Y2lhbCBwb2ludHMuIEkmIzM5O20gdGhpbmtpbmcgd2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYm90aCB0aGUgYE1DVFBfU0VSSUFMYCBhbmQgdGhlIGNvcmUgYE1DVFBgIGNvbmZpZ3VyYXRpb25zIGFjdGl2YXRlZC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCB0aG91Z2gsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gQSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIHZlcmlmeWluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGBNQ1RQYCBLY29uZmlnIHRvIG1ha2Ugc3VyZSBpdCBleGlzdHMsIGlzIGNvbmZpZ3VyZWQsIGFuZCB0aGF0IEkga25vdyB3aGVyZSB0byBtb2RpZnkgaXQsIGlmIG5lZWRlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoZSBgbmV0L21jdHAvS2NvbmZpZ2AgZGlyZWN0b3J5IGFzIGlzIG5vcm1hbCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBUaGlzIGhlbHBzIG1lIHZlcmlmeSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGFuZCBjb25maXJtIHRoYXQgSSBoYXZlIGFjY2VzcyB0byBtb2RpZnkgdGhlIHJlbGV2YW50IG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21jdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWN0cC9LY29uZmlnLTEtXG5uZXQvbWN0cC9LY29uZmlnOjI6bWVudWNvbmZpZyBNQ1RQXG5uZXQvbWN0cC9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5FVFxuLS1cbm5ldC9tY3RwL0tjb25maWctMTQtXG5uZXQvbWN0cC9LY29uZmlnOjE1OmNvbmZpZyBNQ1RQX1RFU1Rcbm5ldC9tY3RwL0tjb25maWctMTYtICAgICAgICBib29sIFwmIzM0O01DVFAgY29yZSB0ZXN0c1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21jdHAvS2NvbmZpZy0yMC1cbm5ldC9tY3RwL0tjb25maWc6MjE6Y29uZmlnIE1DVFBfRkxPV1Ncbm5ldC9tY3RwL0tjb25maWctMjItXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCBmdW5jdGlvbnMuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIGEgYnVnIGluIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIgdGhhdCBzdGVtcyBmcm9tIHByb2Nlc3NpbmcgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiB0aGUgd2F5IHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYyBiZWhhdmVzLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQsIG9mIGNvdXJzZSwgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgaGVyZSBpcyBhIHNlcmlhbCBpc3N1ZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWZmZWN0aW5nIHRoZSBjb21tdW5pY2F0aW9uIHBhdGh3YXkuCgpJIHNob3VsZCB2ZXJpZnkgd2hldGhlciB0aGUgYG1jdHBfc2VyaWFsX3B1c2hgIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgYW5kIG5vdCBkZWFkIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21jdHBfc2VyaWFsX3B1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk3LVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zMjctXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzI4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zMjkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTEtXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzUyOnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2goc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzU4LVx0Y2FzZSBTVEFURV9IRUFERVI6XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5Olx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4MC1cdGNhc2UgU1RBVEVfVFJBSUxFUjpcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYzozODE6XHRcdG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTM5NT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF90dHlfcmVjZWl2ZV9idWYoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY29uc3QgdTggKmMsXG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6NDA2Olx0XHRtY3RwX3NlcmlhbF9wdXNoKGRldiwgY1tpXSk7XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtNDA3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2NwoJCQkJCQkJb3V0cHV0OiA5NwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gaXQuIFRoZSBmdW5jdGlvbiBgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmYCDigJMgdGhhdCYjMzk7cyB0aGUgVFRZIHJlY2VpdmUgYnVmZmVyIGNhbGxiYWNrLCB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQW5kIHllcywgYWJzb2x1dGVseSwgdGhhdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBUVFkgb3BlcmF0aW9uczsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGRhdGEgcGF0aC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgcmlwZSBmb3IgZnV6emluZy4gSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCwgdGhvc2UgYXJlIHRoZSBsaWtlbHkgYXJlYXMgd2hlcmUgdGhlIG5ldyB6ZXJvLWxlbmd0aCBmcmFtZSByZWplY3Rpb24gbG9naWMgd2lsbCBiZSBleGVyY2lzZWQuIFNvLCBJJiMzOTtsbCBzcGVjaWZ5IGBGb2N1c1N5bWJvbHM6IFsmIzM0O21jdHBfc2VyaWFsX3B1c2hfaGVhZGVyJiMzNDssICYjMzQ7bWN0cF9zZXJpYWxfcHVzaCYjMzQ7XWAuCgpUbyBlbnN1cmUgdGhpcyBpcyBhY3R1YWxseSB0ZXN0ZWQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaGFybmVzcyBpcyBwcm9wZXJseSBjb25maWd1cmVkLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCAuIFNvLCBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TUNUUCYjMzQ7LCAmIzM0O01DVFBfU0VSSUFMJiMzNDtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7IEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5jb21pbmcgZGF0YSwgYW5kIGFueSBjaGFuZ2UgaW4gcGFyc2luZyBsb2dpYyBhbHdheXMgZGVzZXJ2ZXMgY2FyZWZ1bCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01DVFAmIzM0OywKICAgICYjMzQ7TUNUUF9TRVJJQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoX2hlYWRlciYjMzQ7LAogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQ1RQJiMzNDssCiAgICAmIzM0O01DVFBfU0VSSUFMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWN0cF9zZXJpYWxfcHVzaF9oZWFkZXImIzM0OywKICAgICYjMzQ7bWN0cF9zZXJpYWxfcHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJiMzOTtzIHBhY2tldCBwYXJzaW5nIGxvZ2ljIHRvIHJlamVjdCB6ZXJvLWxlbmd0aCBmcmFtZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHR5IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjMzLjEwODY2NTE4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTc3NjMxNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTozMy4xMDg2NzExNThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMzc4NDE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZmMDlkOTVlOGU0NTc0ZDNmOGMzYzFjYzYwZDE3YjYzNTUwZDQxNjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMjE6MTk6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXFxuaW5kZXggMjZjOWEzM2ZkNjM2NDguLjFlM2QyODVjMDUwMDQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xcbkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXIoc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpXFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMjpcXG4tXFx0XFx0aWYgKGMgXFx1MDAzZSBNQ1RQX1NFUklBTF9GUkFNRV9NVFUpIHtcXG4rXFx0XFx0aWYgKGMgPT0gMCB8fCBjIFxcdTAwM2UgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7XFxuIFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGxlbiA9IGM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjMzLjYyMzIxNzY4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NjMwNjk2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUNUUFwiLFxuICAgIFwiTUNUUF9TRVJJQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtY3RwX3NlcmlhbF9wdXNoX2hlYWRlclwiLFxuICAgIFwibWN0cF9zZXJpYWxfcHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIncyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmYwOWQ5NWU4ZTQ1NzRkM2Y4YzNjMWNjNjBkMTdiNjM1NTBkNDE2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjE5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXG5pbmRleCAyNmM5YTMzZmQ2MzY0OC4uMWUzZDI4NWMwNTAwNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xuQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgMjpcbi1cdFx0aWYgKGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuK1x0XHRpZiAoYyA9PSAwIHx8IGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuIFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGRldi1cdTAwM2VyeGxlbiA9IGM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTozMy42MjMyMTk1MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk5OTc5NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJc3N1ZSBpbiBNQ1RQIFNlcmlhbCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNgLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFyb3VuZCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgLCBhbmQgc3BlY2lmaWNhbGx5IGEgbmV3IGNoZWNrOiBgYyA9PSAwYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaHkgaXMgdGhpcyBjb25kaXRpb24gYmVpbmcgaW50cm9kdWNlZD8gV2hhdCdzIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb24gb2YgYGNgIGJlaW5nIHplcm8/IElzIHRoaXMgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZSwgYSBidWcgZml4LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZS4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgY2AgaXMgdXNlZC4gV2hhdCBkb2VzIHRoaXMgYGNgIHZhcmlhYmxlIHJlcHJlc2VudD8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIGFuIGVycm9yIGNvZGU/IERlcGVuZGluZyBvbiB3aGF0IGBjYCBzeW1ib2xpemVzLCBhIHplcm8gdmFsdWUgY291bGQgc2lnbmlmeSBzb21ldGhpbmcgc2lnbmlmaWNhbnQsIGFuZCB0aGUgcGF0Y2ggaXMgZWl0aGVyIHByZXZlbnRpbmcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgYXR0ZW1wdGluZyB0byByZWNvdmVyIGZyb20gb25lLiBJcyB0aGlzIGEgcG90ZW50aWFsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBwcmV2ZW50aW9uLCBvciBzb21ldGhpbmcgdG8gZG8gd2l0aCBidWZmZXIgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIGNvZGUgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHB1cnBvc2Ugb2YgdGhlIGNoZWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgbGFyZ2VyIGZyYW1ld29yayBpcyBrZXkgdG8gZGV0ZXJtaW5lIHRoZSBwYXRjaCdzIHNvdW5kbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6MzcuNDIzMjAxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODU1MDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3RwX3NlcmlhbF9wdXNoX2hlYWRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTctXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zNTI9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTgtXFx0Y2FzZSBTVEFURV9IRUFERVI6XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjM1OTpcXHRcXHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNjAtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjM3LjUwMTc2MTU0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODI3Mjg2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAqKlxuXG5Pa2F5LCBzbyB0aGUgdGhvdWdodCBwcm9jZXNzIGlzIHN0cmFpZ2h0Zm9yd2FyZDogXCJMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBvZiBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuXCIgR2l2ZW4gdGhhdCB0aGVzZSBhcmUgbGlrZWx5IGZ1bmN0aW9uIG5hbWVzIGluIGFuIE1DVFAtcmVsYXRlZCBzZXJpYWwgY29tbXVuaWNhdGlvbiBjb250ZXh0LCBteSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB3ZSdyZSBkZWFsaW5nIHdpdGggZWl0aGVyIGhlYWRlciBmcmFtaW5nIGFuZCBwYWNrZXRpemF0aW9uIG9yIHBvc3NpYmx5IHRoZSBjb3JlIGxvZ2ljIGZvciBwdXNoaW5nIGRhdGEgb3ZlciBhIHNlcmlhbCBpbnRlcmZhY2Ugd2l0aGluIGFuIE1DVFAgaW1wbGVtZW50YXRpb24uXG5cbk15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHByb2Nlc3MuIEFyZSB0aGV5IHBhcnQgb2YgYSB0cmFuc21pdCBxdWV1ZSBtYW5hZ2VtZW50IHN5c3RlbT8gQXJlIHRoZXkgcmVzcG9uc2libGUgZm9yIGxvdy1sZXZlbCBieXRlLWxldmVsIG1hbmlwdWxhdGlvbiByZXF1aXJlZCBmb3Igc2VyaWFsIHRyYW5zbWlzc2lvbj8gRG9lcyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIHByZXBlbmQgdGhlIGhlYWRlciBkYXRhIGJlZm9yZSBhIHBheWxvYWQgdGhhdCBpcyBoYW5kbGVkIGJ5IGBtY3RwX3NlcmlhbF9wdXNoYD8gV2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkbyB0aGVzZSBmdW5jdGlvbnMgcHJvdmlkZT8gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3I6XG5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEFyZSB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tzIGZvciBidWZmZXIgb3ZlcmZsb3csIGZyYW1pbmcgaXNzdWVzLCBvciBzZXJpYWwgcG9ydCBmYWlsdXJlcz9cbiogICAqKlN5bmNocm9uaXphdGlvbjoqKiBIb3cgYXJlIHRoZXNlIGZ1bmN0aW9ucyBwcm90ZWN0ZWQgZnJvbSByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgaW52b2x2ZWQ/IE11dGV4ZXMsIHNlbWFwaG9yZXMsIGF0b21pYyBvcGVyYXRpb25zIC0gd2hpY2ggYXJlIGVtcGxveWVkIGFuZCB3aHk/XG4qICAgKipPcHRpbWl6YXRpb246KiogQXJlIHRoZXJlIGFueSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQW55IGlubGluZSBhc3NlbWJseSBvciBiaXQtdHdpZGRsaW5nIHRvIG9wdGltaXplIHRyYW5zbWlzc2lvbiBzcGVlZCBvciByZWR1Y2UgbGF0ZW5jeT9cbiogICAqKkFic3RyYWN0aW9uOioqIElzIHRoaXMgY29kZSB0aWdodGx5IGNvdXBsZWQgdG8gYSBzcGVjaWZpYyBzZXJpYWwgcG9ydCBvciBjYW4gaXQgYmUgZ2VuZXJhbGl6ZWQgZm9yIG90aGVyIGludGVyZmFjZXM/IElmIGdlbmVyYWwsIGhvdyBpcyB0aGUgaW50ZXJmYWNlIGRlZmluZWQvaW1wbGVtZW50ZWQ/XG4qICAgKipIZWFkZXIgRm9ybWF0OioqIEkgd2lsbCBhbHNvIHdhbnQgdG8gYXNjZXJ0YWluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGhlYWRlcnMgYmVpbmcgcHVzaGVkOyB0aGlzIGNhbiByZXZlYWwgbW9yZSBhYm91dCB0aGUgcHJvdG9jb2wgbGF5ZXJzIGJlaW5nIGltcGxlbWVudGVkLlxuKiAgICoqRGF0YSBJbnRlZ3JpdHk6KiogRG9lcyB0aGUgY29kZSBpbmNvcnBvcmF0ZSBhbnkgQ1JDIG9yIGNoZWNrc3VtIGNhbGN1bGF0aW9ucyB0byBlbnN1cmUgdGhlIGRhdGEgaXMgdHJhbnNtaXR0ZWQgcmVsaWFibHk/XG5cbkknbGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIGFsaWduIHdpdGggZXN0YWJsaXNoZWQgTUNUUCBiZXN0IHByYWN0aWNlcyBhbmQgaWYgdGhleSByZWZsZWN0IGFueSBjdXN0b20gb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNob2ljZXMuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgTUNUUCBjb21tdW5pY2F0aW9uIHN0YWNrIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSByZWxpYWJpbGl0eSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgc2VyaWFsIHRyYW5zcG9ydCBsYXllci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjQyLjA4NDQ5MjI0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcdGNiID0gX19tY3RwX2NiKHNrYik7XFxuIDI5MTpcXHRcXHRjYi1cXHUwMDNlaGFsZW4gPSAwO1xcbiAyOTI6XFx0XFxuIDI5MzpcXHRcXHRuZXRpZl9yeChza2IpO1xcbiAyOTQ6XFx0XFx0ZGV2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcXG4gMjk1OlxcdFxcdGRldi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9ieXRlcyArPSBkZXYtXFx1MDAzZXJ4bGVuO1xcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4gMjk5OlxcdHtcXG4gMzAwOlxcdFxcdHN3aXRjaCAoZGV2LVxcdTAwM2VyeHBvcykge1xcbiAzMDE6XFx0XFx0Y2FzZSAwOlxcbiAzMDI6XFx0XFx0XFx0aWYgKGMgPT0gQllURV9GUkFNRSlcXG4gMzAzOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MrKztcXG4gMzA0OlxcdFxcdFxcdGVsc2VcXG4gMzA1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcXG4gMzA2OlxcdFxcdFxcdGJyZWFrO1xcbiAzMDc6XFx0XFx0Y2FzZSAxOlxcbiAzMDg6XFx0XFx0XFx0aWYgKGMgPT0gTUNUUF9TRVJJQUxfVkVSU0lPTikge1xcbiAzMDk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcysrO1xcbiAzMTA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKEZDU19JTklULCBjKTtcXG4gMzExOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDMxMjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FUlI7XFxuIDMxMzpcXHRcXHRcXHR9XFxuIDMxNDpcXHRcXHRcXHRicmVhaztcXG4gMzE1OlxcdFxcdGNhc2UgMjpcXG4gMzE2OlxcdFxcdFxcdGlmIChjID09IDAgfHwgYyBcXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xcbiAzMTc6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xcbiAzMTg6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzE5OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhsZW4gPSBjO1xcbiAzMjA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcyA9IDA7XFxuIDMyMTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xcbiAzMjI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cXHUwMDNlcnhmY3MsIGMpO1xcbiAzMjM6XFx0XFx0XFx0fVxcbiAzMjQ6XFx0XFx0XFx0YnJlYWs7XFxuIDMyNTpcXHRcXHR9XFxuIDMyNjpcXHR9XFxuIDMyNzpcXHRcXG4gMzI4OlxcdHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4gMzI5OlxcdHtcXG4gMzMwOlxcdFxcdHN3aXRjaCAoZGV2LVxcdTAwM2VyeHBvcykge1xcbiAzMzE6XFx0XFx0Y2FzZSAwOlxcbiAzMzI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjc19yY3ZkID0gYyBcXHUwMDNjXFx1MDAzYyA4O1xcbiAzMzM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcysrO1xcbiAzMzQ6XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXHRjYXNlIDE6XFxuIDMzNjpcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4ZmNzX3JjdmQgfD0gYztcXG4gMzM3OlxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MrKztcXG4gMzM4OlxcdFxcdFxcdGJyZWFrO1xcbiAzMzk6XFx0XFx0Y2FzZSAyOlxcbiAzNDA6XFx0XFx0XFx0aWYgKGMgIT0gQllURV9GUkFNRSkge1xcbiAzNDE6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xcbiAzNDI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzQzOlxcdFxcdFxcdFxcdG1jdHBfc2VyaWFsX3J4KGRldik7XFxuIDM0NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4bGVuID0gMDtcXG4gMzQ1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MgPSAwO1xcbiAzNDY6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfSURMRTtcXG4gMzQ3OlxcdFxcdFxcdH1cXG4gMzQ4OlxcdFxcdFxcdGJyZWFrO1xcbiAzNDk6XFx0XFx0fVxcbiAzNTA6XFx0fVxcbiAzNTE6XFx0XFxuIDM1MjpcXHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbiAzNTM6XFx0e1xcbiAzNTQ6XFx0XFx0c3dpdGNoIChkZXYtXFx1MDAzZXJ4c3RhdGUpIHtcXG4gMzU1OlxcdFxcdGNhc2UgU1RBVEVfSURMRTpcXG4gMzU2OlxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0hFQURFUjtcXG4gMzU3OlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiAzNTg6XFx0XFx0Y2FzZSBTVEFURV9IRUFERVI6XFxuIDM1OTpcXHRcXHRcXHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xcbiAzNjA6XFx0XFx0XFx0YnJlYWs7XFxuIDM2MTpcXHRcXG4gMzYyOlxcdFxcdGNhc2UgU1RBVEVfRVNDQVBFOlxcbiAzNjM6XFx0XFx0XFx0YyB8PSAweDIwO1xcbiAzNjQ6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuIDM2NTpcXHRcXHRjYXNlIFNUQVRFX0RBVEE6XFxuIDM2NjpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VyeHN0YXRlICE9IFNUQVRFX0VTQ0FQRSBcXHUwMDI2XFx1MDAyNiBjID09IEJZVEVfRVNDKSB7XFxuIDM2NzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FU0NBUEU7XFxuIDM2ODpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cXHUwMDNlcnhmY3MsIGMpO1xcbiAzNzA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGJ1ZltkZXYtXFx1MDAzZXJ4cG9zXSA9IGM7XFxuIDM3MTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4cG9zKys7XFxuIDM3MjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xcbiAzNzM6XFx0XFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlcnhwb3MgPT0gZGV2LVxcdTAwM2VyeGxlbikge1xcbiAzNzQ6XFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcyA9IDA7XFxuIDM3NTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9UUkFJTEVSO1xcbiAzNzY6XFx0XFx0XFx0XFx0fVxcbiAzNzc6XFx0XFx0XFx0fVxcbiAzNzg6XFx0XFx0XFx0YnJlYWs7XFxuIDM3OTpcXHRcXG4gMzgwOlxcdFxcdGNhc2UgU1RBVEVfVFJBSUxFUjpcXG4gMzgxOlxcdFxcdFxcdG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihkZXYsIGMpO1xcbiAzODI6XFx0XFx0XFx0YnJlYWs7XFxuIDM4MzpcXHRcXG4gMzg0OlxcdFxcdGNhc2UgU1RBVEVfRVJSOlxcbiAzODU6XFx0XFx0XFx0aWYgKGMgPT0gQllURV9GUkFNRSlcXG4gMzg2OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0lETEU7XFxuIDM4NzpcXHRcXHRcXHRicmVhaztcXG4gMzg4OlxcdFxcbiAzODk6XFx0XFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NDIuMDg0NTg2NDY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NjI5MzgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBtY3RwLXNlcmlhbC5jKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBjID09IDBgIGZvciBgZGV2LVx1MDAzZXJ4bGVuYCB3aXRoaW4gdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgYGNgIGlzIGluZGVlZCAwLCB0aGVuIGBkZXYtXHUwMDNlcnhsZW5gICp3aWxsKiBiZSAwLiBUaGF0J3MgYSBkaXJlY3QgY29uc2VxdWVuY2Ugb2YgdGhlIGxvZ2ljLiBOb3csIGhlcmUncyB3aGVyZSBteSBhbGFybSBiZWxscyBzdGFydCByaW5naW5nLiBJbiB0aGUgYFNUQVRFX0RBVEFgIHN0YXRlLCB0aGUgY29tcGFyaXNvbiBgZGV2LVx1MDAzZXJ4cG9zID09IGRldi1cdTAwM2VyeGxlbmAgd2lsbCBldmFsdWF0ZSB0byBgMCA9PSAwYCwgd2hpY2ggb2YgY291cnNlLCBpcyB0cnVlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuIFRoaXMgbG9va3MgbGlrZSBhIGdlbnVpbmUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IHdlIGFic29sdXRlbHkgKm11c3QqIGZ1enogYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAgdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGluIEtjb25maWcgdGhhdCBtaWdodCBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gb24gYGRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo0Ny4yNzA4ODI0OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwMDgxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWN0cC1zZXJpYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tY3RwL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01DVFBfU0VSSUFMKSArPSBtY3RwLXNlcmlhbC5vXFxuZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZS0yLW9iai0kKENPTkZJR19NQ1RQX1RSQU5TUE9SVF9JMkMpICs9IG1jdHAtaTJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NDcuMzQ4ODk2MDc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODYxMTY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIERlZXAgRGl2ZTogTUNUUCBhbmQgQmV5b25kKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGZsYWdzIGBDT05GSUdfTUNUUF9TRVJJQUxgIGFzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggU2VyaWFsIE1DVFAsIHRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gTm93LCBiZWZvcmUgSSBqdW1wIGhlYWRmaXJzdCBpbnRvIGltcGxlbWVudGluZyBpdCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBzdWJ0bGUgZGVwZW5kZW5jaWVzLiBXaGF0IGVsc2UgaXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGdldHRpbmcgYENPTkZJR19NQ1RQX1NFUklBTGAgZW5hYmxlZDsgaXQncyBhYm91dCBidWlsZGluZyBhIHNvbGlkIGZvdW5kYXRpb24uIEFyZSB0aGVyZSBzdXBwb3J0aW5nIG1vZHVsZXMsIGtlcm5lbCBvcHRpb25zLCBvciBmaXJtd2FyZSBmZWF0dXJlcyB0aGF0ICppbXBsaWNpdGx5KiBkZXBlbmQgb24gdGhpcywgb3IgdGhhdCB0aGlzIHJlcXVpcmVzPyBDb3VsZCB0aGVyZSBiZSB1bmRlcmx5aW5nIHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cz8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24sIHJlbGF0ZWQgY29kZSwgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIGZyb20gc2ltaWxhciBwcm9qZWN0cyB0byBlbnN1cmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGVudGlyZSBkZXBlbmRlbmN5IGdyYXBoLiBObyBwb2ludCBpbiBydXNoaW5nIGFuZCBoaXR0aW5nIGEgd2FsbCBsYXRlci4gVGltZSB0byBkaWcgaW4gYW5kIHVuY292ZXIgZXZlcnkgcG9zc2libGUgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk4MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjUwLjY3NzUwOTk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzNTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUNUUF9TRVJJQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZz00PW1lbnUgXFxcIk1DVFAgRGV2aWNlIERyaXZlcnNcXFwiXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnOjY6Y29uZmlnIE1DVFBfU0VSSUFMXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1DVFAgc2VyaWFsIHRyYW5zcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWc6MjQ6Y29uZmlnIE1DVFBfU0VSSUFMX1RFU1RcXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctMjUtICAgICAgICBib29sIFxcXCJNQ1RQIHNlcmlhbCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo1MC43Mzk0NTE4NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MzY3NTI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgTUNUUCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTUNUUCBkcml2ZXIgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLCBzbyB0aGUgZmlyc3Qgc3RvcCBpcyBhbHdheXMgdGhlIGBLY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnYCBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGxhbmRzY2FwZS4gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyPyBXaGF0IGRlcGVuZGVuY2llcyBleGlzdD8gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcywgdGhlIGZ1bmRhbWVudGFsIGNob2ljZXMgdGhhdCBzaGFwZSBob3cgdGhlIE1DVFAgZHJpdmVyIGJlaGF2ZXMuIElzIGl0IG1vZHVsYXI/IEFyZSB0aGVyZSB2YXJpb3VzIHRyYW5zcG9ydCBwcm90b2NvbHMgaXQgc3VwcG9ydHMsIGFuZCBpZiBzbywgaG93IGFyZSB0aG9zZSBlbmFibGVkL2Rpc2FibGVkPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IOKAkyB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBhbmQgcmVsYXRpb25zaGlwcyB0aGF0IGRlZmluZSB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhpcyBkcml2ZXIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBpbXBsZW1lbnRhdGlvbiwgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGFuZCBwcm9wb3NpbmcgYW55IG5lY2Vzc2FyeSBpbXByb3ZlbWVudHMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjU0LjUzMzEyOTI5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tY3RwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRcXG4gICAyOlxcdGlmIE1DVFBcXG4gICAzOlxcdFxcbiAgIDQ6XFx0bWVudSBcXFwiTUNUUCBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1DVFBfU0VSSUFMXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTUNUUCBzZXJpYWwgdHJhbnNwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBUVFlcXG4gICA5OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYW4gTUNUUC1vdmVyLXNlcmlhbCBpbnRlcmZhY2UsIHRocm91Z2ggYVxcbiAgMTI6XFx0XFx0ICBzZXJpYWwgbGluZS1kaXNjaXBsaW5lLCBhcyBkZWZpbmVkIGJ5IERNVEYgc3BlY2lmaWNhdGlvbiBcXFwiRFNQMDI1MyAtXFxuICAxMzpcXHRcXHQgIE1DVFAgU2VyaWFsIFRyYW5zcG9ydCBCaW5kaW5nXFxcIi4gQnkgYXR0YWNoaW5nIHRoZSBsZGlzYyB0byBhIHNlcmlhbFxcbiAgMTQ6XFx0XFx0ICBkZXZpY2UsIHdlIGdldCBhIG5ldyBuZXQgZGV2aWNlIHRvIHRyYW5zcG9ydCBNQ1RQIHBhY2tldHMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVGhpcyBhbGxvd3MgY29tbXVuaWNhdGlvbiB3aXRoIGV4dGVybmFsIE1DVFAgZW5kcG9pbnRzIHdoaWNoIHVzZVxcbiAgMTc6XFx0XFx0ICBzZXJpYWwgYXMgdGhlaXIgdHJhbnNwb3J0LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIGVhc3kgd2F5IHRvXFxuICAxODpcXHRcXHQgIHByb3ZpZGUgTUNUUCBjb25uZWN0aXZpdHkgYmV0d2VlbiB2aXJ0dWFsIG1hY2hpbmVzLCBieSBmb3J3YXJkaW5nXFxuICAxOTpcXHRcXHQgIGRhdGEgYmV0d2VlbiBzaW1wbGUgdmlydHVhbCBzZXJpYWwgZGV2aWNlcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo1NC41MzMxOTY2NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4ODMzODQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIE1DVFAsIGFuZCBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZXN0YWJsaXNoIGEgY291cGxlIG9mIGNydWNpYWwgcG9pbnRzLiBJJ20gdGhpbmtpbmcgd2UncmUgZ29pbmcgdG8gbmVlZCBib3RoIHRoZSBgTUNUUF9TRVJJQUxgIGFuZCB0aGUgY29yZSBgTUNUUGAgY29uZmlndXJhdGlvbnMgYWN0aXZhdGVkLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUsIHRob3VnaCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGVzc2VudGlhbC4gTXkgbmV4dCBzdGVwIGhhcyB0byBiZSB2ZXJpZnlpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBgTUNUUGAgS2NvbmZpZyB0byBtYWtlIHN1cmUgaXQgZXhpc3RzLCBpcyBjb25maWd1cmVkLCBhbmQgdGhhdCBJIGtub3cgd2hlcmUgdG8gbW9kaWZ5IGl0LCBpZiBuZWVkZWQuIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoZSBgbmV0L21jdHAvS2NvbmZpZ2AgZGlyZWN0b3J5IGFzIGlzIG5vcm1hbCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBUaGlzIGhlbHBzIG1lIHZlcmlmeSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGFuZCBjb25maXJtIHRoYXQgSSBoYXZlIGFjY2VzcyB0byBtb2RpZnkgdGhlIHJlbGV2YW50IG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjU3LjcyMTUzNzYwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAyMDAxNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1DVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21jdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWN0cC9LY29uZmlnLTEtXFxubmV0L21jdHAvS2NvbmZpZzoyOm1lbnVjb25maWcgTUNUUFxcbm5ldC9tY3RwL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5FVFxcbi0tXFxubmV0L21jdHAvS2NvbmZpZy0xNC1cXG5uZXQvbWN0cC9LY29uZmlnOjE1OmNvbmZpZyBNQ1RQX1RFU1RcXG5uZXQvbWN0cC9LY29uZmlnLTE2LSAgICAgICAgYm9vbCBcXFwiTUNUUCBjb3JlIHRlc3RzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWN0cC9LY29uZmlnLTIwLVxcbm5ldC9tY3RwL0tjb25maWc6MjE6Y29uZmlnIE1DVFBfRkxPV1NcXG5uZXQvbWN0cC9LY29uZmlnLTIyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NTcuNzgxNzQyODg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzk2OTI3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBkZWFsaW5nIHdpdGggdGhlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCBmdW5jdGlvbnMuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiB0aGV5J3JlIGFkZHJlc3NpbmcgYSBidWcgaW4gdGhlIE1DVFAgc2VyaWFsIGRyaXZlciB0aGF0IHN0ZW1zIGZyb20gcHJvY2Vzc2luZyB6ZXJvLWxlbmd0aCBmcmFtZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIHRoZSB3YXkgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljIGJlaGF2ZXMuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCwgb2YgY291cnNlLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBmb2N1cyBoZXJlIGlzIGEgc2VyaWFsIGlzc3VlLCBzbyBpdCdzIHByb2JhYmx5IGFmZmVjdGluZyB0aGUgY29tbXVuaWNhdGlvbiBwYXRod2F5LlxuXG5JIHNob3VsZCB2ZXJpZnkgd2hldGhlciB0aGUgYG1jdHBfc2VyaWFsX3B1c2hgIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgYW5kIG5vdCBkZWFkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MjA6MDEuODYxNDM5ODAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQ1NzQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3RwX3NlcmlhbF9wdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM9MjY5PXN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3J4KHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6Mjk4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTMyNy1cXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzI4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTEtXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjM1MjpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM1OC1cXHRjYXNlIFNUQVRFX0hFQURFUjpcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5OlxcdFxcdG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKGRldiwgYyk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zODAtXFx0Y2FzZSBTVEFURV9UUkFJTEVSOlxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYzozODE6XFx0XFx0bWN0cF9zZXJpYWxfcHVzaF90cmFpbGVyKGRldiwgYyk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zOTU9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNvbnN0IHU4ICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjQwNjpcXHRcXHRtY3RwX3NlcmlhbF9wdXNoKGRldiwgY1tpXSk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjIwOjAxLjkyNDkwMjQ2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY4MTIzMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1DVFAgU2VyaWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgSSd2ZSBnb3QgYSBoYW5kbGUgb24gaXQuIFRoZSBmdW5jdGlvbiBgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmYCDigJMgdGhhdCdzIHRoZSBUVFkgcmVjZWl2ZSBidWZmZXIgY2FsbGJhY2ssIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBBbmQgeWVzLCBhYnNvbHV0ZWx5LCB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgVFRZIG9wZXJhdGlvbnM7IGl0J3MgcmlnaHQgaW4gdGhlIGRhdGEgcGF0aC5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHJpcGUgZm9yIGZ1enppbmcuIEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCwgdGhvc2UgYXJlIHRoZSBsaWtlbHkgYXJlYXMgd2hlcmUgdGhlIG5ldyB6ZXJvLWxlbmd0aCBmcmFtZSByZWplY3Rpb24gbG9naWMgd2lsbCBiZSBleGVyY2lzZWQuIFNvLCBJJ2xsIHNwZWNpZnkgYEZvY3VzU3ltYm9sczogW1wibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIiwgXCJtY3RwX3NlcmlhbF9wdXNoXCJdYC5cblxuVG8gZW5zdXJlIHRoaXMgaXMgYWN0dWFsbHkgdGVzdGVkLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgTUNUUGAgYW5kIGBNQ1RQX1NFUklBTGAgLiBTbywgYEVuYWJsZUNvbmZpZ3M6IFtcIk1DVFBcIiwgXCJNQ1RQX1NFUklBTFwiXWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIncyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguXCIgSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluY29taW5nIGRhdGEsIGFuZCBhbnkgY2hhbmdlIGluIHBhcnNpbmcgbG9naWMgYWx3YXlzIGRlc2VydmVzIGNhcmVmdWwgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjcsIk91dHB1dFRva2VucyI6OTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MjA6MDcuMTkzMDI4MjM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNTMwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq99k8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 20:12:32 +0000 UTC FinishedAt: 2026-07-14 21:20:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MCTP", "MCTP_SERIAL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MCTP", "MCTP_SERIAL" ], "series_id": "bcff96c2-1342-42ea-8c8f-a19d93228eee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mctp_serial_push_header", "mctp_serial_push" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01DVFAmIzM0OywKICAgICYjMzQ7TUNUUF9TRVJJQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoX2hlYWRlciYjMzQ7LAogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmYwOWQ5NWU4ZTQ1NzRkM2Y4YzNjMWNjNjBkMTdiNjM1NTBkNDE2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjE5OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xuaW5kZXggMjZjOWEzM2ZkNjM2NDguLjFlM2QyODVjMDUwMDQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcbkBAIC0zMTMsNyAmIzQzOzMxMyw3IEBAIHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSAyOlxuLVx0XHRpZiAoYyBcdTAwM2UgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7XG4mIzQzO1x0XHRpZiAoYyA9PSAwIHx8IGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuIFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGRldi1cdTAwM2VyeGxlbiA9IGM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUNUUCYjMzQ7LAogICAgJiMzNDtNQ1RQX1NFUklBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21jdHBfc2VyaWFsX3B1c2hfaGVhZGVyJiMzNDssCiAgICAmIzM0O21jdHBfc2VyaWFsX3B1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1DVFAgc2VyaWFsIGRyaXZlciYjMzk7cyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZmMDlkOTVlOGU0NTc0ZDNmOGMzYzFjYzYwZDE3YjYzNTUwZDQxNjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAxNCAyMToxOTozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYwppbmRleCAyNmM5YTMzZmQ2MzY0OC4uMWUzZDI4NWMwNTAwNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMKQEAgLTMxMyw3ICYjNDM7MzEzLDcgQEAgc3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXIoc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpCiAJCX0KIAkJYnJlYWs7CiAJY2FzZSAyOgotCQlpZiAoYyAmZ3Q7IE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkgewomIzQzOwkJaWYgKGMgPT0gMCB8fCBjICZndDsgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7CiAJCQlkZXYtJmd0O3J4c3RhdGUgPSBTVEFURV9FUlI7CiAJCX0gZWxzZSB7CiAJCQlkZXYtJmd0O3J4bGVuID0gYzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gdGhpcyBwYXRjaDoKCioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIElzc3VlIGluIE1DVFAgU2VyaWFsIERyaXZlcioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGFmZmVjdGluZyBgZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyYCwgYW5kIHNwZWNpZmljYWxseSBhIG5ldyBjaGVjazogYGMgPT0gMGAuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gV2h5IGlzIHRoaXMgY29uZGl0aW9uIGJlaW5nIGludHJvZHVjZWQ/IFdoYXQmIzM5O3MgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbiBvZiBgY2AgYmVpbmcgemVybz8gSXMgdGhpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLCBhIGJ1ZyBmaXgsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PwoKSSBuZWVkIHRvIGRpdmUgaW50byBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZS4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgY2AgaXMgdXNlZC4gV2hhdCBkb2VzIHRoaXMgYGNgIHZhcmlhYmxlIHJlcHJlc2VudD8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIGFuIGVycm9yIGNvZGU/IERlcGVuZGluZyBvbiB3aGF0IGBjYCBzeW1ib2xpemVzLCBhIHplcm8gdmFsdWUgY291bGQgc2lnbmlmeSBzb21ldGhpbmcgc2lnbmlmaWNhbnQsIGFuZCB0aGUgcGF0Y2ggaXMgZWl0aGVyIHByZXZlbnRpbmcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgYXR0ZW1wdGluZyB0byByZWNvdmVyIGZyb20gb25lLiBJcyB0aGlzIGEgcG90ZW50aWFsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBwcmV2ZW50aW9uLCBvciBzb21ldGhpbmcgdG8gZG8gd2l0aCBidWZmZXIgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIGNvZGUgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHB1cnBvc2Ugb2YgdGhlIGNoZWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgbGFyZ2VyIGZyYW1ld29yayBpcyBrZXkgdG8gZGV0ZXJtaW5lIHRoZSBwYXRjaCYjMzk7cyBzb3VuZG5lc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWN0cF9zZXJpYWxfcHVzaF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk3LVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zNTI9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzU4LVx0Y2FzZSBTVEFURV9IRUFERVI6XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5Olx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAqKgoKT2theSwgc28gdGhlIHRob3VnaHQgcHJvY2VzcyBpcyBzdHJhaWdodGZvcndhcmQ6ICYjMzQ7TGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIG9mIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYC4mIzM0OyBHaXZlbiB0aGF0IHRoZXNlIGFyZSBsaWtlbHkgZnVuY3Rpb24gbmFtZXMgaW4gYW4gTUNUUC1yZWxhdGVkIHNlcmlhbCBjb21tdW5pY2F0aW9uIGNvbnRleHQsIG15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZWl0aGVyIGhlYWRlciBmcmFtaW5nIGFuZCBwYWNrZXRpemF0aW9uIG9yIHBvc3NpYmx5IHRoZSBjb3JlIGxvZ2ljIGZvciBwdXNoaW5nIGRhdGEgb3ZlciBhIHNlcmlhbCBpbnRlcmZhY2Ugd2l0aGluIGFuIE1DVFAgaW1wbGVtZW50YXRpb24uCgpNeSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgY29udHJpYnV0ZSB0byB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBBcmUgdGhleSBwYXJ0IG9mIGEgdHJhbnNtaXQgcXVldWUgbWFuYWdlbWVudCBzeXN0ZW0/IEFyZSB0aGV5IHJlc3BvbnNpYmxlIGZvciBsb3ctbGV2ZWwgYnl0ZS1sZXZlbCBtYW5pcHVsYXRpb24gcmVxdWlyZWQgZm9yIHNlcmlhbCB0cmFuc21pc3Npb24/IERvZXMgYG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyYCBwcmVwZW5kIHRoZSBoZWFkZXIgZGF0YSBiZWZvcmUgYSBwYXlsb2FkIHRoYXQgaXMgaGFuZGxlZCBieSBgbWN0cF9zZXJpYWxfcHVzaGA/IFdoYXQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gZG8gdGhlc2UgZnVuY3Rpb25zIHByb3ZpZGU/IFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvcjoKCiogICAqKkVycm9yIEhhbmRsaW5nOioqIEFyZSB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tzIGZvciBidWZmZXIgb3ZlcmZsb3csIGZyYW1pbmcgaXNzdWVzLCBvciBzZXJpYWwgcG9ydCBmYWlsdXJlcz8KKiAgICoqU3luY2hyb25pemF0aW9uOioqIEhvdyBhcmUgdGhlc2UgZnVuY3Rpb25zIHByb3RlY3RlZCBmcm9tIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBpbnZvbHZlZD8gTXV0ZXhlcywgc2VtYXBob3JlcywgYXRvbWljIG9wZXJhdGlvbnMgLSB3aGljaCBhcmUgZW1wbG95ZWQgYW5kIHdoeT8KKiAgICoqT3B0aW1pemF0aW9uOioqIEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnM/IEFueSBpbmxpbmUgYXNzZW1ibHkgb3IgYml0LXR3aWRkbGluZyB0byBvcHRpbWl6ZSB0cmFuc21pc3Npb24gc3BlZWQgb3IgcmVkdWNlIGxhdGVuY3k/CiogICAqKkFic3RyYWN0aW9uOioqIElzIHRoaXMgY29kZSB0aWdodGx5IGNvdXBsZWQgdG8gYSBzcGVjaWZpYyBzZXJpYWwgcG9ydCBvciBjYW4gaXQgYmUgZ2VuZXJhbGl6ZWQgZm9yIG90aGVyIGludGVyZmFjZXM/IElmIGdlbmVyYWwsIGhvdyBpcyB0aGUgaW50ZXJmYWNlIGRlZmluZWQvaW1wbGVtZW50ZWQ/CiogICAqKkhlYWRlciBGb3JtYXQ6KiogSSB3aWxsIGFsc28gd2FudCB0byBhc2NlcnRhaW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUgaGVhZGVycyBiZWluZyBwdXNoZWQ7IHRoaXMgY2FuIHJldmVhbCBtb3JlIGFib3V0IHRoZSBwcm90b2NvbCBsYXllcnMgYmVpbmcgaW1wbGVtZW50ZWQuCiogICAqKkRhdGEgSW50ZWdyaXR5OioqIERvZXMgdGhlIGNvZGUgaW5jb3Jwb3JhdGUgYW55IENSQyBvciBjaGVja3N1bSBjYWxjdWxhdGlvbnMgdG8gZW5zdXJlIHRoZSBkYXRhIGlzIHRyYW5zbWl0dGVkIHJlbGlhYmx5PwoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIGFsaWduIHdpdGggZXN0YWJsaXNoZWQgTUNUUCBiZXN0IHByYWN0aWNlcyBhbmQgaWYgdGhleSByZWZsZWN0IGFueSBjdXN0b20gb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNob2ljZXMuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgTUNUUCBjb21tdW5pY2F0aW9uIHN0YWNrIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSByZWxpYWJpbGl0eSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgc2VyaWFsIHRyYW5zcG9ydCBsYXllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI5MDpcdFx0Y2IgPSBfX21jdHBfY2Ioc2tiKTtcbiAyOTE6XHRcdGNiLVx1MDAzZWhhbGVuID0gMDtcbiAyOTI6XHRcbiAyOTM6XHRcdG5ldGlmX3J4KHNrYik7XG4gMjk0Olx0XHRkZXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7O1xuIDI5NTpcdFx0ZGV2LVx1MDAzZW5ldGRldi1cdTAwM2VzdGF0cy5yeF9ieXRlcyAmIzQzOz0gZGV2LVx1MDAzZXJ4bGVuO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiAyOTg6XHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAyOTk6XHR7XG4gMzAwOlx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHBvcykge1xuIDMwMTpcdFx0Y2FzZSAwOlxuIDMwMjpcdFx0XHRpZiAoYyA9PSBCWVRFX0ZSQU1FKVxuIDMwMzpcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyYjNDM7JiM0Mzs7XG4gMzA0Olx0XHRcdGVsc2VcbiAzMDU6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMDY6XHRcdFx0YnJlYWs7XG4gMzA3Olx0XHRjYXNlIDE6XG4gMzA4Olx0XHRcdGlmIChjID09IE1DVFBfU0VSSUFMX1ZFUlNJT04pIHtcbiAzMDk6XHRcdFx0XHRkZXYtXHUwMDNlcnhwb3MmIzQzOyYjNDM7O1xuIDMxMDpcdFx0XHRcdGRldi1cdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKEZDU19JTklULCBjKTtcbiAzMTE6XHRcdFx0fSBlbHNlIHtcbiAzMTI6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMTM6XHRcdFx0fVxuIDMxNDpcdFx0XHRicmVhaztcbiAzMTU6XHRcdGNhc2UgMjpcbiAzMTY6XHRcdFx0aWYgKGMgPT0gMCB8fCBjIFx1MDAzZSBNQ1RQX1NFUklBTF9GUkFNRV9NVFUpIHtcbiAzMTc6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcbiAzMTg6XHRcdFx0fSBlbHNlIHtcbiAzMTk6XHRcdFx0XHRkZXYtXHUwMDNlcnhsZW4gPSBjO1xuIDMyMDpcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyA9IDA7XG4gMzIxOlx0XHRcdFx0ZGV2LVx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xuIDMyMjpcdFx0XHRcdGRldi1cdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cdTAwM2VyeGZjcywgYyk7XG4gMzIzOlx0XHRcdH1cbiAzMjQ6XHRcdFx0YnJlYWs7XG4gMzI1Olx0XHR9XG4gMzI2Olx0fVxuIDMyNzpcdFxuIDMyODpcdHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAzMjk6XHR7XG4gMzMwOlx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHBvcykge1xuIDMzMTpcdFx0Y2FzZSAwOlxuIDMzMjpcdFx0XHRkZXYtXHUwMDNlcnhmY3NfcmN2ZCA9IGMgXHUwMDNjXHUwMDNjIDg7XG4gMzMzOlx0XHRcdGRldi1cdTAwM2VyeHBvcyYjNDM7JiM0Mzs7XG4gMzM0Olx0XHRcdGJyZWFrO1xuIDMzNTpcdFx0Y2FzZSAxOlxuIDMzNjpcdFx0XHRkZXYtXHUwMDNlcnhmY3NfcmN2ZCB8PSBjO1xuIDMzNzpcdFx0XHRkZXYtXHUwMDNlcnhwb3MmIzQzOyYjNDM7O1xuIDMzODpcdFx0XHRicmVhaztcbiAzMzk6XHRcdGNhc2UgMjpcbiAzNDA6XHRcdFx0aWYgKGMgIT0gQllURV9GUkFNRSkge1xuIDM0MTpcdFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIDM0MjpcdFx0XHR9IGVsc2Uge1xuIDM0MzpcdFx0XHRcdG1jdHBfc2VyaWFsX3J4KGRldik7XG4gMzQ0Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4bGVuID0gMDtcbiAzNDU6XHRcdFx0XHRkZXYtXHUwMDNlcnhwb3MgPSAwO1xuIDM0NjpcdFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfSURMRTtcbiAzNDc6XHRcdFx0fVxuIDM0ODpcdFx0XHRicmVhaztcbiAzNDk6XHRcdH1cbiAzNTA6XHR9XG4gMzUxOlx0XG4gMzUyOlx0c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiAzNTM6XHR7XG4gMzU0Olx0XHRzd2l0Y2ggKGRldi1cdTAwM2VyeHN0YXRlKSB7XG4gMzU1Olx0XHRjYXNlIFNUQVRFX0lETEU6XG4gMzU2Olx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfSEVBREVSO1xuIDM1NzpcdFx0XHRmYWxsdGhyb3VnaDtcbiAzNTg6XHRcdGNhc2UgU1RBVEVfSEVBREVSOlxuIDM1OTpcdFx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuIDM2MDpcdFx0XHRicmVhaztcbiAzNjE6XHRcbiAzNjI6XHRcdGNhc2UgU1RBVEVfRVNDQVBFOlxuIDM2MzpcdFx0XHRjIHw9IDB4MjA7XG4gMzY0Olx0XHRcdGZhbGx0aHJvdWdoO1xuIDM2NTpcdFx0Y2FzZSBTVEFURV9EQVRBOlxuIDM2NjpcdFx0XHRpZiAoZGV2LVx1MDAzZXJ4c3RhdGUgIT0gU1RBVEVfRVNDQVBFIFx1MDAyNlx1MDAyNiBjID09IEJZVEVfRVNDKSB7XG4gMzY3Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FU0NBUEU7XG4gMzY4Olx0XHRcdH0gZWxzZSB7XG4gMzY5Olx0XHRcdFx0ZGV2LVx1MDAzZXJ4ZmNzID0gY3JjX2NjaXR0X2J5dGUoZGV2LVx1MDAzZXJ4ZmNzLCBjKTtcbiAzNzA6XHRcdFx0XHRkZXYtXHUwMDNlcnhidWZbZGV2LVx1MDAzZXJ4cG9zXSA9IGM7XG4gMzcxOlx0XHRcdFx0ZGV2LVx1MDAzZXJ4cG9zJiM0MzsmIzQzOztcbiAzNzI6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0RBVEE7XG4gMzczOlx0XHRcdFx0aWYgKGRldi1cdTAwM2VyeHBvcyA9PSBkZXYtXHUwMDNlcnhsZW4pIHtcbiAzNzQ6XHRcdFx0XHRcdGRldi1cdTAwM2VyeHBvcyA9IDA7XG4gMzc1Olx0XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX1RSQUlMRVI7XG4gMzc2Olx0XHRcdFx0fVxuIDM3NzpcdFx0XHR9XG4gMzc4Olx0XHRcdGJyZWFrO1xuIDM3OTpcdFxuIDM4MDpcdFx0Y2FzZSBTVEFURV9UUkFJTEVSOlxuIDM4MTpcdFx0XHRtY3RwX3NlcmlhbF9wdXNoX3RyYWlsZXIoZGV2LCBjKTtcbiAzODI6XHRcdFx0YnJlYWs7XG4gMzgzOlx0XG4gMzg0Olx0XHRjYXNlIFNUQVRFX0VSUjpcbiAzODU6XHRcdFx0aWYgKGMgPT0gQllURV9GUkFNRSlcbiAzODY6XHRcdFx0XHRkZXYtXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0lETEU7XG4gMzg3Olx0XHRcdGJyZWFrO1xuIDM4ODpcdFxuIDM4OTpcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIG1jdHAtc2VyaWFsLmMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBjID09IDBgIGZvciBgZGV2LSZndDtyeGxlbmAgd2l0aGluIHRoZSBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlmIGBjYCBpcyBpbmRlZWQgMCwgdGhlbiBgZGV2LSZndDtyeGxlbmAgKndpbGwqIGJlIDAuIFRoYXQmIzM5O3MgYSBkaXJlY3QgY29uc2VxdWVuY2Ugb2YgdGhlIGxvZ2ljLiBOb3csIGhlcmUmIzM5O3Mgd2hlcmUgbXkgYWxhcm0gYmVsbHMgc3RhcnQgcmluZ2luZy4gSW4gdGhlIGBTVEFURV9EQVRBYCBzdGF0ZSwgdGhlIGNvbXBhcmlzb24gYGRldi0mZ3Q7cnhwb3MgPT0gZGV2LSZndDtyeGxlbmAgd2lsbCBldmFsdWF0ZSB0byBgMCA9PSAwYCwgd2hpY2ggb2YgY291cnNlLCBpcyB0cnVlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuIFRoaXMgbG9va3MgbGlrZSBhIGdlbnVpbmUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IHdlIGFic29sdXRlbHkgKm11c3QqIGZ1enogYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAgdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBpbiBLY29uZmlnIHRoYXQgbWlnaHQgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIG9uIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21jdHAtc2VyaWFsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01DVFBfU0VSSUFMKSAmIzQzOz0gbWN0cC1zZXJpYWwub1xuZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZS0yLW9iai0kKENPTkZJR19NQ1RQX1RSQU5TUE9SVF9JMkMpICYjNDM7PSBtY3RwLWkyYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmNpZXMgRGVlcCBEaXZlOiBNQ1RQIGFuZCBCZXlvbmQqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGZsYWdzIGBDT05GSUdfTUNUUF9TRVJJQUxgIGFzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFNlcmlhbCBNQ1RQLCB0aGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBOb3csIGJlZm9yZSBJIGp1bXAgaGVhZGZpcnN0IGludG8gaW1wbGVtZW50aW5nIGl0LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBzdWJ0bGUgZGVwZW5kZW5jaWVzLiBXaGF0IGVsc2UgaXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBnZXR0aW5nIGBDT05GSUdfTUNUUF9TRVJJQUxgIGVuYWJsZWQ7IGl0JiMzOTtzIGFib3V0IGJ1aWxkaW5nIGEgc29saWQgZm91bmRhdGlvbi4gQXJlIHRoZXJlIHN1cHBvcnRpbmcgbW9kdWxlcywga2VybmVsIG9wdGlvbnMsIG9yIGZpcm13YXJlIGZlYXR1cmVzIHRoYXQgKmltcGxpY2l0bHkqIGRlcGVuZCBvbiB0aGlzLCBvciB0aGF0IHRoaXMgcmVxdWlyZXM/IENvdWxkIHRoZXJlIGJlIHVuZGVybHlpbmcgcGxhdGZvcm0tc3BlY2lmaWMgcmVxdWlyZW1lbnRzPyBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNyb3NzLXJlZmVyZW5jZSB0aGUgZG9jdW1lbnRhdGlvbiwgcmVsYXRlZCBjb2RlLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgZnJvbSBzaW1pbGFyIHByb2plY3RzIHRvIGVuc3VyZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZW50aXJlIGRlcGVuZGVuY3kgZ3JhcGguIE5vIHBvaW50IGluIHJ1c2hpbmcgYW5kIGhpdHRpbmcgYSB3YWxsIGxhdGVyLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5jb3ZlciBldmVyeSBwb3NzaWJsZSBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUNUUF9TRVJJQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnPTQ9bWVudSBcJiMzNDtNQ1RQIERldmljZSBEcml2ZXJzXCYjMzQ7XG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZzo2OmNvbmZpZyBNQ1RQX1NFUklBTFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNQ1RQIHNlcmlhbCB0cmFuc3BvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWc6MjQ6Y29uZmlnIE1DVFBfU0VSSUFMX1RFU1RcbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZy0yNS0gICAgICAgIGJvb2wgXCYjMzQ7TUNUUCBzZXJpYWwgdGVzdHNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTUNUUCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNQ1RQIGRyaXZlciBjb25maWd1cmF0aW9uIGlzIHN0cnVjdHVyZWQsIHNvIHRoZSBmaXJzdCBzdG9wIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnYCBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGxhbmRzY2FwZS4gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyPyBXaGF0IGRlcGVuZGVuY2llcyBleGlzdD8gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgY29yZSBidWlsZGluZyBibG9ja3MsIHRoZSBmdW5kYW1lbnRhbCBjaG9pY2VzIHRoYXQgc2hhcGUgaG93IHRoZSBNQ1RQIGRyaXZlciBiZWhhdmVzLiBJcyBpdCBtb2R1bGFyPyBBcmUgdGhlcmUgdmFyaW91cyB0cmFuc3BvcnQgcHJvdG9jb2xzIGl0IHN1cHBvcnRzLCBhbmQgaWYgc28sIGhvdyBhcmUgdGhvc2UgZW5hYmxlZC9kaXNhYmxlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgZmxvdyDigJMgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYW5kIHJlbGF0aW9uc2hpcHMgdGhhdCBkZWZpbmUgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIG9mIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgaW1wbGVtZW50YXRpb24sIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBhbmQgcHJvcG9zaW5nIGFueSBuZWNlc3NhcnkgaW1wcm92ZW1lbnRzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21jdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdFxuICAgMjpcdGlmIE1DVFBcbiAgIDM6XHRcbiAgIDQ6XHRtZW51IFwmIzM0O01DVFAgRGV2aWNlIERyaXZlcnNcJiMzNDtcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTUNUUF9TRVJJQUxcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01DVFAgc2VyaWFsIHRyYW5zcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBUVFlcbiAgIDk6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYW4gTUNUUC1vdmVyLXNlcmlhbCBpbnRlcmZhY2UsIHRocm91Z2ggYVxuICAxMjpcdFx0ICBzZXJpYWwgbGluZS1kaXNjaXBsaW5lLCBhcyBkZWZpbmVkIGJ5IERNVEYgc3BlY2lmaWNhdGlvbiBcJiMzNDtEU1AwMjUzIC1cbiAgMTM6XHRcdCAgTUNUUCBTZXJpYWwgVHJhbnNwb3J0IEJpbmRpbmdcJiMzNDsuIEJ5IGF0dGFjaGluZyB0aGUgbGRpc2MgdG8gYSBzZXJpYWxcbiAgMTQ6XHRcdCAgZGV2aWNlLCB3ZSBnZXQgYSBuZXcgbmV0IGRldmljZSB0byB0cmFuc3BvcnQgTUNUUCBwYWNrZXRzLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaGlzIGFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggZXh0ZXJuYWwgTUNUUCBlbmRwb2ludHMgd2hpY2ggdXNlXG4gIDE3Olx0XHQgIHNlcmlhbCBhcyB0aGVpciB0cmFuc3BvcnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgYXMgYW4gZWFzeSB3YXkgdG9cbiAgMTg6XHRcdCAgcHJvdmlkZSBNQ1RQIGNvbm5lY3Rpdml0eSBiZXR3ZWVuIHZpcnR1YWwgbWFjaGluZXMsIGJ5IGZvcndhcmRpbmdcbiAgMTk6XHRcdCAgZGF0YSBiZXR3ZWVuIHNpbXBsZSB2aXJ0dWFsIHNlcmlhbCBkZXZpY2VzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTY2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggTUNUUCwgYW5kIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBlc3RhYmxpc2ggYSBjb3VwbGUgb2YgY3J1Y2lhbCBwb2ludHMuIEkmIzM5O20gdGhpbmtpbmcgd2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYm90aCB0aGUgYE1DVFBfU0VSSUFMYCBhbmQgdGhlIGNvcmUgYE1DVFBgIGNvbmZpZ3VyYXRpb25zIGFjdGl2YXRlZC4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCB0aG91Z2gsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gQSBxdWljayBzYW5pdHkgY2hlY2sgaXMgZXNzZW50aWFsLiBNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIHZlcmlmeWluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGBNQ1RQYCBLY29uZmlnIHRvIG1ha2Ugc3VyZSBpdCBleGlzdHMsIGlzIGNvbmZpZ3VyZWQsIGFuZCB0aGF0IEkga25vdyB3aGVyZSB0byBtb2RpZnkgaXQsIGlmIG5lZWRlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoZSBgbmV0L21jdHAvS2NvbmZpZ2AgZGlyZWN0b3J5IGFzIGlzIG5vcm1hbCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBUaGlzIGhlbHBzIG1lIHZlcmlmeSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGFuZCBjb25maXJtIHRoYXQgSSBoYXZlIGFjY2VzcyB0byBtb2RpZnkgdGhlIHJlbGV2YW50IG1vZHVsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21jdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWN0cC9LY29uZmlnLTEtXG5uZXQvbWN0cC9LY29uZmlnOjI6bWVudWNvbmZpZyBNQ1RQXG5uZXQvbWN0cC9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5FVFxuLS1cbm5ldC9tY3RwL0tjb25maWctMTQtXG5uZXQvbWN0cC9LY29uZmlnOjE1OmNvbmZpZyBNQ1RQX1RFU1Rcbm5ldC9tY3RwL0tjb25maWctMTYtICAgICAgICBib29sIFwmIzM0O01DVFAgY29yZSB0ZXN0c1wmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21jdHAvS2NvbmZpZy0yMC1cbm5ldC9tY3RwL0tjb25maWc6MjE6Y29uZmlnIE1DVFBfRkxPV1Ncbm5ldC9tY3RwL0tjb25maWctMjItXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggdGhlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCBmdW5jdGlvbnMuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIGEgYnVnIGluIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIgdGhhdCBzdGVtcyBmcm9tIHByb2Nlc3NpbmcgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiB0aGUgd2F5IHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYyBiZWhhdmVzLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQsIG9mIGNvdXJzZSwgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgZm9jdXMgaGVyZSBpcyBhIHNlcmlhbCBpc3N1ZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgYWZmZWN0aW5nIHRoZSBjb21tdW5pY2F0aW9uIHBhdGh3YXkuCgpJIHNob3VsZCB2ZXJpZnkgd2hldGhlciB0aGUgYG1jdHBfc2VyaWFsX3B1c2hgIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgYW5kIG5vdCBkZWFkIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21jdHBfc2VyaWFsX3B1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk3LVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zMjctXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzI4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zMjkte1xuLS1cbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTEtXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzUyOnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2goc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzU4LVx0Y2FzZSBTVEFURV9IRUFERVI6XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5Olx0XHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4MC1cdGNhc2UgU1RBVEVfVFJBSUxFUjpcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYzozODE6XHRcdG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihkZXYsIGMpO1xuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4Mi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTM5NT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF90dHlfcmVjZWl2ZV9idWYoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY29uc3QgdTggKmMsXG4tLVxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6NDA2Olx0XHRtY3RwX3NlcmlhbF9wdXNoKGRldiwgY1tpXSk7XG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtNDA3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2NwoJCQkJCQkJb3V0cHV0OiA5NwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gaXQuIFRoZSBmdW5jdGlvbiBgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmYCDigJMgdGhhdCYjMzk7cyB0aGUgVFRZIHJlY2VpdmUgYnVmZmVyIGNhbGxiYWNrLCB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQW5kIHllcywgYWJzb2x1dGVseSwgdGhhdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBUVFkgb3BlcmF0aW9uczsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGRhdGEgcGF0aC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgcmlwZSBmb3IgZnV6emluZy4gSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCwgdGhvc2UgYXJlIHRoZSBsaWtlbHkgYXJlYXMgd2hlcmUgdGhlIG5ldyB6ZXJvLWxlbmd0aCBmcmFtZSByZWplY3Rpb24gbG9naWMgd2lsbCBiZSBleGVyY2lzZWQuIFNvLCBJJiMzOTtsbCBzcGVjaWZ5IGBGb2N1c1N5bWJvbHM6IFsmIzM0O21jdHBfc2VyaWFsX3B1c2hfaGVhZGVyJiMzNDssICYjMzQ7bWN0cF9zZXJpYWxfcHVzaCYjMzQ7XWAuCgpUbyBlbnN1cmUgdGhpcyBpcyBhY3R1YWxseSB0ZXN0ZWQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaGFybmVzcyBpcyBwcm9wZXJseSBjb25maWd1cmVkLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCAuIFNvLCBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TUNUUCYjMzQ7LCAmIzM0O01DVFBfU0VSSUFMJiMzNDtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7IEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5jb21pbmcgZGF0YSwgYW5kIGFueSBjaGFuZ2UgaW4gcGFyc2luZyBsb2dpYyBhbHdheXMgZGVzZXJ2ZXMgY2FyZWZ1bCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01DVFAmIzM0OywKICAgICYjMzQ7TUNUUF9TRVJJQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoX2hlYWRlciYjMzQ7LAogICAgJiMzNDttY3RwX3NlcmlhbF9wdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXImIzM5O3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQ1RQJiMzNDssCiAgICAmIzM0O01DVFBfU0VSSUFMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWN0cF9zZXJpYWxfcHVzaF9oZWFkZXImIzM0OywKICAgICYjMzQ7bWN0cF9zZXJpYWxfcHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJiMzOTtzIHBhY2tldCBwYXJzaW5nIGxvZ2ljIHRvIHJlamVjdCB6ZXJvLWxlbmd0aCBmcmFtZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHR5IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjMzLjEwODY2NTE4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTc3NjMxNTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTozMy4xMDg2NzExNThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMzc4NDE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZmMDlkOTVlOGU0NTc0ZDNmOGMzYzFjYzYwZDE3YjYzNTUwZDQxNjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMjE6MTk6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXFxuaW5kZXggMjZjOWEzM2ZkNjM2NDguLjFlM2QyODVjMDUwMDQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xcbkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXIoc3RydWN0IG1jdHBfc2VyaWFsICpkZXYsIHU4IGMpXFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgMjpcXG4tXFx0XFx0aWYgKGMgXFx1MDAzZSBNQ1RQX1NFUklBTF9GUkFNRV9NVFUpIHtcXG4rXFx0XFx0aWYgKGMgPT0gMCB8fCBjIFxcdTAwM2UgTUNUUF9TRVJJQUxfRlJBTUVfTVRVKSB7XFxuIFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGxlbiA9IGM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjMzLjYyMzIxNzY4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NjMwNjk2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUNUUFwiLFxuICAgIFwiTUNUUF9TRVJJQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtY3RwX3NlcmlhbF9wdXNoX2hlYWRlclwiLFxuICAgIFwibWN0cF9zZXJpYWxfcHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIncyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmYwOWQ5NWU4ZTQ1NzRkM2Y4YzNjMWNjNjBkMTdiNjM1NTBkNDE2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjE5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jXG5pbmRleCAyNmM5YTMzZmQ2MzY0OC4uMWUzZDI4NWMwNTAwNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1xuQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgMjpcbi1cdFx0aWYgKGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuK1x0XHRpZiAoYyA9PSAwIHx8IGMgXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xuIFx0XHRcdGRldi1cdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGRldi1cdTAwM2VyeGxlbiA9IGM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTozMy42MjMyMTk1MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk5OTc5NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJc3N1ZSBpbiBNQ1RQIFNlcmlhbCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNgLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFyb3VuZCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgLCBhbmQgc3BlY2lmaWNhbGx5IGEgbmV3IGNoZWNrOiBgYyA9PSAwYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBXaHkgaXMgdGhpcyBjb25kaXRpb24gYmVpbmcgaW50cm9kdWNlZD8gV2hhdCdzIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb24gb2YgYGNgIGJlaW5nIHplcm8/IElzIHRoaXMgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgbWVhc3VyZSwgYSBidWcgZml4LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBpdHMgc3Vycm91bmRpbmcgY29kZS4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgY2AgaXMgdXNlZC4gV2hhdCBkb2VzIHRoaXMgYGNgIHZhcmlhYmxlIHJlcHJlc2VudD8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIGFuIGVycm9yIGNvZGU/IERlcGVuZGluZyBvbiB3aGF0IGBjYCBzeW1ib2xpemVzLCBhIHplcm8gdmFsdWUgY291bGQgc2lnbmlmeSBzb21ldGhpbmcgc2lnbmlmaWNhbnQsIGFuZCB0aGUgcGF0Y2ggaXMgZWl0aGVyIHByZXZlbnRpbmcgYW4gaXNzdWUsIG9yIHBlcmhhcHMgYXR0ZW1wdGluZyB0byByZWNvdmVyIGZyb20gb25lLiBJcyB0aGlzIGEgcG90ZW50aWFsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBwcmV2ZW50aW9uLCBvciBzb21ldGhpbmcgdG8gZG8gd2l0aCBidWZmZXIgbWFuYWdlbWVudD8gSSBuZWVkIHRvIGFuYWx5emUgdGhlIGNvZGUgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHB1cnBvc2Ugb2YgdGhlIGNoZWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBpbnRlbmRlZCBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgbGFyZ2VyIGZyYW1ld29yayBpcyBrZXkgdG8gZGV0ZXJtaW5lIHRoZSBwYXRjaCdzIHNvdW5kbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6MzcuNDIzMjAxMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODU1MDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3RwX3NlcmlhbF9wdXNoX2hlYWRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jPTI2OT1zdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9yeChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTctXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjI5ODpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMjk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zNTI9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfcHVzaChzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTgtXFx0Y2FzZSBTVEFURV9IRUFERVI6XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjM1OTpcXHRcXHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNjAtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjM3LjUwMTc2MTU0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODI3Mjg2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAqKlxuXG5Pa2F5LCBzbyB0aGUgdGhvdWdodCBwcm9jZXNzIGlzIHN0cmFpZ2h0Zm9yd2FyZDogXCJMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBvZiBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuXCIgR2l2ZW4gdGhhdCB0aGVzZSBhcmUgbGlrZWx5IGZ1bmN0aW9uIG5hbWVzIGluIGFuIE1DVFAtcmVsYXRlZCBzZXJpYWwgY29tbXVuaWNhdGlvbiBjb250ZXh0LCBteSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB3ZSdyZSBkZWFsaW5nIHdpdGggZWl0aGVyIGhlYWRlciBmcmFtaW5nIGFuZCBwYWNrZXRpemF0aW9uIG9yIHBvc3NpYmx5IHRoZSBjb3JlIGxvZ2ljIGZvciBwdXNoaW5nIGRhdGEgb3ZlciBhIHNlcmlhbCBpbnRlcmZhY2Ugd2l0aGluIGFuIE1DVFAgaW1wbGVtZW50YXRpb24uXG5cbk15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHByb2Nlc3MuIEFyZSB0aGV5IHBhcnQgb2YgYSB0cmFuc21pdCBxdWV1ZSBtYW5hZ2VtZW50IHN5c3RlbT8gQXJlIHRoZXkgcmVzcG9uc2libGUgZm9yIGxvdy1sZXZlbCBieXRlLWxldmVsIG1hbmlwdWxhdGlvbiByZXF1aXJlZCBmb3Igc2VyaWFsIHRyYW5zbWlzc2lvbj8gRG9lcyBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIHByZXBlbmQgdGhlIGhlYWRlciBkYXRhIGJlZm9yZSBhIHBheWxvYWQgdGhhdCBpcyBoYW5kbGVkIGJ5IGBtY3RwX3NlcmlhbF9wdXNoYD8gV2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkbyB0aGVzZSBmdW5jdGlvbnMgcHJvdmlkZT8gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3I6XG5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEFyZSB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tzIGZvciBidWZmZXIgb3ZlcmZsb3csIGZyYW1pbmcgaXNzdWVzLCBvciBzZXJpYWwgcG9ydCBmYWlsdXJlcz9cbiogICAqKlN5bmNocm9uaXphdGlvbjoqKiBIb3cgYXJlIHRoZXNlIGZ1bmN0aW9ucyBwcm90ZWN0ZWQgZnJvbSByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgaW52b2x2ZWQ/IE11dGV4ZXMsIHNlbWFwaG9yZXMsIGF0b21pYyBvcGVyYXRpb25zIC0gd2hpY2ggYXJlIGVtcGxveWVkIGFuZCB3aHk/XG4qICAgKipPcHRpbWl6YXRpb246KiogQXJlIHRoZXJlIGFueSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQW55IGlubGluZSBhc3NlbWJseSBvciBiaXQtdHdpZGRsaW5nIHRvIG9wdGltaXplIHRyYW5zbWlzc2lvbiBzcGVlZCBvciByZWR1Y2UgbGF0ZW5jeT9cbiogICAqKkFic3RyYWN0aW9uOioqIElzIHRoaXMgY29kZSB0aWdodGx5IGNvdXBsZWQgdG8gYSBzcGVjaWZpYyBzZXJpYWwgcG9ydCBvciBjYW4gaXQgYmUgZ2VuZXJhbGl6ZWQgZm9yIG90aGVyIGludGVyZmFjZXM/IElmIGdlbmVyYWwsIGhvdyBpcyB0aGUgaW50ZXJmYWNlIGRlZmluZWQvaW1wbGVtZW50ZWQ/XG4qICAgKipIZWFkZXIgRm9ybWF0OioqIEkgd2lsbCBhbHNvIHdhbnQgdG8gYXNjZXJ0YWluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGhlYWRlcnMgYmVpbmcgcHVzaGVkOyB0aGlzIGNhbiByZXZlYWwgbW9yZSBhYm91dCB0aGUgcHJvdG9jb2wgbGF5ZXJzIGJlaW5nIGltcGxlbWVudGVkLlxuKiAgICoqRGF0YSBJbnRlZ3JpdHk6KiogRG9lcyB0aGUgY29kZSBpbmNvcnBvcmF0ZSBhbnkgQ1JDIG9yIGNoZWNrc3VtIGNhbGN1bGF0aW9ucyB0byBlbnN1cmUgdGhlIGRhdGEgaXMgdHJhbnNtaXR0ZWQgcmVsaWFibHk/XG5cbkknbGwgYmUgbG9va2luZyB0byBzZWUgaWYgdGhlc2UgZnVuY3Rpb25zIGFsaWduIHdpdGggZXN0YWJsaXNoZWQgTUNUUCBiZXN0IHByYWN0aWNlcyBhbmQgaWYgdGhleSByZWZsZWN0IGFueSBjdXN0b20gb3B0aW1pemF0aW9ucyBvciBhcmNoaXRlY3R1cmFsIGNob2ljZXMuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgTUNUUCBjb21tdW5pY2F0aW9uIHN0YWNrIGFuZCBob3cgdGhleSBjb250cmlidXRlIHRvIHRoZSByZWxpYWJpbGl0eSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgc2VyaWFsIHRyYW5zcG9ydCBsYXllci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjQyLjA4NDQ5MjI0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjkwOlxcdFxcdGNiID0gX19tY3RwX2NiKHNrYik7XFxuIDI5MTpcXHRcXHRjYi1cXHUwMDNlaGFsZW4gPSAwO1xcbiAyOTI6XFx0XFxuIDI5MzpcXHRcXHRuZXRpZl9yeChza2IpO1xcbiAyOTQ6XFx0XFx0ZGV2LVxcdTAwM2VuZXRkZXYtXFx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcXG4gMjk1OlxcdFxcdGRldi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0cy5yeF9ieXRlcyArPSBkZXYtXFx1MDAzZXJ4bGVuO1xcbiAyOTY6XFx0fVxcbiAyOTc6XFx0XFxuIDI5ODpcXHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4gMjk5OlxcdHtcXG4gMzAwOlxcdFxcdHN3aXRjaCAoZGV2LVxcdTAwM2VyeHBvcykge1xcbiAzMDE6XFx0XFx0Y2FzZSAwOlxcbiAzMDI6XFx0XFx0XFx0aWYgKGMgPT0gQllURV9GUkFNRSlcXG4gMzAzOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MrKztcXG4gMzA0OlxcdFxcdFxcdGVsc2VcXG4gMzA1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0VSUjtcXG4gMzA2OlxcdFxcdFxcdGJyZWFrO1xcbiAzMDc6XFx0XFx0Y2FzZSAxOlxcbiAzMDg6XFx0XFx0XFx0aWYgKGMgPT0gTUNUUF9TRVJJQUxfVkVSU0lPTikge1xcbiAzMDk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcysrO1xcbiAzMTA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKEZDU19JTklULCBjKTtcXG4gMzExOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDMxMjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FUlI7XFxuIDMxMzpcXHRcXHRcXHR9XFxuIDMxNDpcXHRcXHRcXHRicmVhaztcXG4gMzE1OlxcdFxcdGNhc2UgMjpcXG4gMzE2OlxcdFxcdFxcdGlmIChjID09IDAgfHwgYyBcXHUwMDNlIE1DVFBfU0VSSUFMX0ZSQU1FX01UVSkge1xcbiAzMTc6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xcbiAzMTg6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzE5OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhsZW4gPSBjO1xcbiAzMjA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcyA9IDA7XFxuIDMyMTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xcbiAzMjI6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cXHUwMDNlcnhmY3MsIGMpO1xcbiAzMjM6XFx0XFx0XFx0fVxcbiAzMjQ6XFx0XFx0XFx0YnJlYWs7XFxuIDMyNTpcXHRcXHR9XFxuIDMyNjpcXHR9XFxuIDMyNzpcXHRcXG4gMzI4OlxcdHN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG4gMzI5OlxcdHtcXG4gMzMwOlxcdFxcdHN3aXRjaCAoZGV2LVxcdTAwM2VyeHBvcykge1xcbiAzMzE6XFx0XFx0Y2FzZSAwOlxcbiAzMzI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjc19yY3ZkID0gYyBcXHUwMDNjXFx1MDAzYyA4O1xcbiAzMzM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcysrO1xcbiAzMzQ6XFx0XFx0XFx0YnJlYWs7XFxuIDMzNTpcXHRcXHRjYXNlIDE6XFxuIDMzNjpcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4ZmNzX3JjdmQgfD0gYztcXG4gMzM3OlxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MrKztcXG4gMzM4OlxcdFxcdFxcdGJyZWFrO1xcbiAzMzk6XFx0XFx0Y2FzZSAyOlxcbiAzNDA6XFx0XFx0XFx0aWYgKGMgIT0gQllURV9GUkFNRSkge1xcbiAzNDE6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfRVJSO1xcbiAzNDI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMzQzOlxcdFxcdFxcdFxcdG1jdHBfc2VyaWFsX3J4KGRldik7XFxuIDM0NDpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4bGVuID0gMDtcXG4gMzQ1OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhwb3MgPSAwO1xcbiAzNDY6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHN0YXRlID0gU1RBVEVfSURMRTtcXG4gMzQ3OlxcdFxcdFxcdH1cXG4gMzQ4OlxcdFxcdFxcdGJyZWFrO1xcbiAzNDk6XFx0XFx0fVxcbiAzNTA6XFx0fVxcbiAzNTE6XFx0XFxuIDM1MjpcXHRzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbiAzNTM6XFx0e1xcbiAzNTQ6XFx0XFx0c3dpdGNoIChkZXYtXFx1MDAzZXJ4c3RhdGUpIHtcXG4gMzU1OlxcdFxcdGNhc2UgU1RBVEVfSURMRTpcXG4gMzU2OlxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0hFQURFUjtcXG4gMzU3OlxcdFxcdFxcdGZhbGx0aHJvdWdoO1xcbiAzNTg6XFx0XFx0Y2FzZSBTVEFURV9IRUFERVI6XFxuIDM1OTpcXHRcXHRcXHRtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcihkZXYsIGMpO1xcbiAzNjA6XFx0XFx0XFx0YnJlYWs7XFxuIDM2MTpcXHRcXG4gMzYyOlxcdFxcdGNhc2UgU1RBVEVfRVNDQVBFOlxcbiAzNjM6XFx0XFx0XFx0YyB8PSAweDIwO1xcbiAzNjQ6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuIDM2NTpcXHRcXHRjYXNlIFNUQVRFX0RBVEE6XFxuIDM2NjpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VyeHN0YXRlICE9IFNUQVRFX0VTQ0FQRSBcXHUwMDI2XFx1MDAyNiBjID09IEJZVEVfRVNDKSB7XFxuIDM2NzpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9FU0NBUEU7XFxuIDM2ODpcXHRcXHRcXHR9IGVsc2Uge1xcbiAzNjk6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGZjcyA9IGNyY19jY2l0dF9ieXRlKGRldi1cXHUwMDNlcnhmY3MsIGMpO1xcbiAzNzA6XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeGJ1ZltkZXYtXFx1MDAzZXJ4cG9zXSA9IGM7XFxuIDM3MTpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4cG9zKys7XFxuIDM3MjpcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9EQVRBO1xcbiAzNzM6XFx0XFx0XFx0XFx0aWYgKGRldi1cXHUwMDNlcnhwb3MgPT0gZGV2LVxcdTAwM2VyeGxlbikge1xcbiAzNzQ6XFx0XFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VyeHBvcyA9IDA7XFxuIDM3NTpcXHRcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZXJ4c3RhdGUgPSBTVEFURV9UUkFJTEVSO1xcbiAzNzY6XFx0XFx0XFx0XFx0fVxcbiAzNzc6XFx0XFx0XFx0fVxcbiAzNzg6XFx0XFx0XFx0YnJlYWs7XFxuIDM3OTpcXHRcXG4gMzgwOlxcdFxcdGNhc2UgU1RBVEVfVFJBSUxFUjpcXG4gMzgxOlxcdFxcdFxcdG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihkZXYsIGMpO1xcbiAzODI6XFx0XFx0XFx0YnJlYWs7XFxuIDM4MzpcXHRcXG4gMzg0OlxcdFxcdGNhc2UgU1RBVEVfRVJSOlxcbiAzODU6XFx0XFx0XFx0aWYgKGMgPT0gQllURV9GUkFNRSlcXG4gMzg2OlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcnhzdGF0ZSA9IFNUQVRFX0lETEU7XFxuIDM4NzpcXHRcXHRcXHRicmVhaztcXG4gMzg4OlxcdFxcbiAzODk6XFx0XFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NDIuMDg0NTg2NDY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NjI5MzgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBtY3RwLXNlcmlhbC5jKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBjID09IDBgIGZvciBgZGV2LVx1MDAzZXJ4bGVuYCB3aXRoaW4gdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgYGNgIGlzIGluZGVlZCAwLCB0aGVuIGBkZXYtXHUwMDNlcnhsZW5gICp3aWxsKiBiZSAwLiBUaGF0J3MgYSBkaXJlY3QgY29uc2VxdWVuY2Ugb2YgdGhlIGxvZ2ljLiBOb3csIGhlcmUncyB3aGVyZSBteSBhbGFybSBiZWxscyBzdGFydCByaW5naW5nLiBJbiB0aGUgYFNUQVRFX0RBVEFgIHN0YXRlLCB0aGUgY29tcGFyaXNvbiBgZGV2LVx1MDAzZXJ4cG9zID09IGRldi1cdTAwM2VyeGxlbmAgd2lsbCBldmFsdWF0ZSB0byBgMCA9PSAwYCwgd2hpY2ggb2YgY291cnNlLCBpcyB0cnVlLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY291bGQgYmUgc2lnbmlmaWNhbnQuIFRoaXMgbG9va3MgbGlrZSBhIGdlbnVpbmUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIHRoZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IHdlIGFic29sdXRlbHkgKm11c3QqIGZ1enogYm90aCBgbWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJgIGFuZCBgbWN0cF9zZXJpYWxfcHVzaGAgdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcyB0aGF0IG1pZ2h0IGFyaXNlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGluIEtjb25maWcgdGhhdCBtaWdodCBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gb24gYGRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo0Ny4yNzA4ODI0OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwMDgxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWN0cC1zZXJpYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tY3RwL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01DVFBfU0VSSUFMKSArPSBtY3RwLXNlcmlhbC5vXFxuZHJpdmVycy9uZXQvbWN0cC9NYWtlZmlsZS0yLW9iai0kKENPTkZJR19NQ1RQX1RSQU5TUE9SVF9JMkMpICs9IG1jdHAtaTJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NDcuMzQ4ODk2MDc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyODYxMTY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIERlZXAgRGl2ZTogTUNUUCBhbmQgQmV5b25kKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGZsYWdzIGBDT05GSUdfTUNUUF9TRVJJQUxgIGFzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggU2VyaWFsIE1DVFAsIHRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gTm93LCBiZWZvcmUgSSBqdW1wIGhlYWRmaXJzdCBpbnRvIGltcGxlbWVudGluZyBpdCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBzdWJ0bGUgZGVwZW5kZW5jaWVzLiBXaGF0IGVsc2UgaXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGdldHRpbmcgYENPTkZJR19NQ1RQX1NFUklBTGAgZW5hYmxlZDsgaXQncyBhYm91dCBidWlsZGluZyBhIHNvbGlkIGZvdW5kYXRpb24uIEFyZSB0aGVyZSBzdXBwb3J0aW5nIG1vZHVsZXMsIGtlcm5lbCBvcHRpb25zLCBvciBmaXJtd2FyZSBmZWF0dXJlcyB0aGF0ICppbXBsaWNpdGx5KiBkZXBlbmQgb24gdGhpcywgb3IgdGhhdCB0aGlzIHJlcXVpcmVzPyBDb3VsZCB0aGVyZSBiZSB1bmRlcmx5aW5nIHBsYXRmb3JtLXNwZWNpZmljIHJlcXVpcmVtZW50cz8gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24sIHJlbGF0ZWQgY29kZSwgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIGZyb20gc2ltaWxhciBwcm9qZWN0cyB0byBlbnN1cmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGVudGlyZSBkZXBlbmRlbmN5IGdyYXBoLiBObyBwb2ludCBpbiBydXNoaW5nIGFuZCBoaXR0aW5nIGEgd2FsbCBsYXRlci4gVGltZSB0byBkaWcgaW4gYW5kIHVuY292ZXIgZXZlcnkgcG9zc2libGUgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk4MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjUwLjY3NzUwOTk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzNTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUNUUF9TRVJJQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZz00PW1lbnUgXFxcIk1DVFAgRGV2aWNlIERyaXZlcnNcXFwiXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnOjY6Y29uZmlnIE1DVFBfU0VSSUFMXFxuZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1DVFAgc2VyaWFsIHRyYW5zcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWc6MjQ6Y29uZmlnIE1DVFBfU0VSSUFMX1RFU1RcXG5kcml2ZXJzL25ldC9tY3RwL0tjb25maWctMjUtICAgICAgICBib29sIFxcXCJNQ1RQIHNlcmlhbCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo1MC43Mzk0NTE4NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MzY3NTI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgTUNUUCBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTUNUUCBkcml2ZXIgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLCBzbyB0aGUgZmlyc3Qgc3RvcCBpcyBhbHdheXMgdGhlIGBLY29uZmlnYCBmaWxlLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCBgZHJpdmVycy9uZXQvbWN0cC9LY29uZmlnYCBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGxhbmRzY2FwZS4gV2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyPyBXaGF0IGRlcGVuZGVuY2llcyBleGlzdD8gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcywgdGhlIGZ1bmRhbWVudGFsIGNob2ljZXMgdGhhdCBzaGFwZSBob3cgdGhlIE1DVFAgZHJpdmVyIGJlaGF2ZXMuIElzIGl0IG1vZHVsYXI/IEFyZSB0aGVyZSB2YXJpb3VzIHRyYW5zcG9ydCBwcm90b2NvbHMgaXQgc3VwcG9ydHMsIGFuZCBpZiBzbywgaG93IGFyZSB0aG9zZSBlbmFibGVkL2Rpc2FibGVkPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IOKAkyB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBhbmQgcmVsYXRpb25zaGlwcyB0aGF0IGRlZmluZSB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhpcyBkcml2ZXIuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBpbXBsZW1lbnRhdGlvbiwgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIGFuZCBwcm9wb3NpbmcgYW55IG5lY2Vzc2FyeSBpbXByb3ZlbWVudHMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQzNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjU0LjUzMzEyOTI5MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tY3RwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRcXG4gICAyOlxcdGlmIE1DVFBcXG4gICAzOlxcdFxcbiAgIDQ6XFx0bWVudSBcXFwiTUNUUCBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1DVFBfU0VSSUFMXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTUNUUCBzZXJpYWwgdHJhbnNwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBUVFlcXG4gICA5OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYW4gTUNUUC1vdmVyLXNlcmlhbCBpbnRlcmZhY2UsIHRocm91Z2ggYVxcbiAgMTI6XFx0XFx0ICBzZXJpYWwgbGluZS1kaXNjaXBsaW5lLCBhcyBkZWZpbmVkIGJ5IERNVEYgc3BlY2lmaWNhdGlvbiBcXFwiRFNQMDI1MyAtXFxuICAxMzpcXHRcXHQgIE1DVFAgU2VyaWFsIFRyYW5zcG9ydCBCaW5kaW5nXFxcIi4gQnkgYXR0YWNoaW5nIHRoZSBsZGlzYyB0byBhIHNlcmlhbFxcbiAgMTQ6XFx0XFx0ICBkZXZpY2UsIHdlIGdldCBhIG5ldyBuZXQgZGV2aWNlIHRvIHRyYW5zcG9ydCBNQ1RQIHBhY2tldHMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVGhpcyBhbGxvd3MgY29tbXVuaWNhdGlvbiB3aXRoIGV4dGVybmFsIE1DVFAgZW5kcG9pbnRzIHdoaWNoIHVzZVxcbiAgMTc6XFx0XFx0ICBzZXJpYWwgYXMgdGhlaXIgdHJhbnNwb3J0LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIGVhc3kgd2F5IHRvXFxuICAxODpcXHRcXHQgIHByb3ZpZGUgTUNUUCBjb25uZWN0aXZpdHkgYmV0d2VlbiB2aXJ0dWFsIG1hY2hpbmVzLCBieSBmb3J3YXJkaW5nXFxuICAxOTpcXHRcXHQgIGRhdGEgYmV0d2VlbiBzaW1wbGUgdmlydHVhbCBzZXJpYWwgZGV2aWNlcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMToxOTo1NC41MzMxOTY2NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4ODMzODQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIE1DVFAsIGFuZCBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZXN0YWJsaXNoIGEgY291cGxlIG9mIGNydWNpYWwgcG9pbnRzLiBJJ20gdGhpbmtpbmcgd2UncmUgZ29pbmcgdG8gbmVlZCBib3RoIHRoZSBgTUNUUF9TRVJJQUxgIGFuZCB0aGUgY29yZSBgTUNUUGAgY29uZmlndXJhdGlvbnMgYWN0aXZhdGVkLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGNvZGUsIHRob3VnaCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGVzc2VudGlhbC4gTXkgbmV4dCBzdGVwIGhhcyB0byBiZSB2ZXJpZnlpbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBgTUNUUGAgS2NvbmZpZyB0byBtYWtlIHN1cmUgaXQgZXhpc3RzLCBpcyBjb25maWd1cmVkLCBhbmQgdGhhdCBJIGtub3cgd2hlcmUgdG8gbW9kaWZ5IGl0LCBpZiBuZWVkZWQuIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGluIHRoZSBgbmV0L21jdHAvS2NvbmZpZ2AgZGlyZWN0b3J5IGFzIGlzIG5vcm1hbCBmb3IgdGhpcyBjb25maWd1cmF0aW9uLiBUaGlzIGhlbHBzIG1lIHZlcmlmeSB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGFuZCBjb25maXJtIHRoYXQgSSBoYXZlIGFjY2VzcyB0byBtb2RpZnkgdGhlIHJlbGV2YW50IG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjE5OjU3LjcyMTUzNzYwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAyMDAxNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1DVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21jdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWN0cC9LY29uZmlnLTEtXFxubmV0L21jdHAvS2NvbmZpZzoyOm1lbnVjb25maWcgTUNUUFxcbm5ldC9tY3RwL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5FVFxcbi0tXFxubmV0L21jdHAvS2NvbmZpZy0xNC1cXG5uZXQvbWN0cC9LY29uZmlnOjE1OmNvbmZpZyBNQ1RQX1RFU1RcXG5uZXQvbWN0cC9LY29uZmlnLTE2LSAgICAgICAgYm9vbCBcXFwiTUNUUCBjb3JlIHRlc3RzXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWN0cC9LY29uZmlnLTIwLVxcbm5ldC9tY3RwL0tjb25maWc6MjE6Y29uZmlnIE1DVFBfRkxPV1NcXG5uZXQvbWN0cC9LY29uZmlnLTIyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MTk6NTcuNzgxNzQyODg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzk2OTI3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQ1RQIFNlcmlhbCBEcml2ZXIgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBkZWFsaW5nIHdpdGggdGhlIGBNQ1RQYCBhbmQgYE1DVFBfU0VSSUFMYCBjb25maWd1cmF0aW9ucy4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCBmdW5jdGlvbnMuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiB0aGV5J3JlIGFkZHJlc3NpbmcgYSBidWcgaW4gdGhlIE1DVFAgc2VyaWFsIGRyaXZlciB0aGF0IHN0ZW1zIGZyb20gcHJvY2Vzc2luZyB6ZXJvLWxlbmd0aCBmcmFtZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGluIHRoZSB3YXkgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljIGJlaGF2ZXMuIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCwgb2YgY291cnNlLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBmb2N1cyBoZXJlIGlzIGEgc2VyaWFsIGlzc3VlLCBzbyBpdCdzIHByb2JhYmx5IGFmZmVjdGluZyB0aGUgY29tbXVuaWNhdGlvbiBwYXRod2F5LlxuXG5JIHNob3VsZCB2ZXJpZnkgd2hldGhlciB0aGUgYG1jdHBfc2VyaWFsX3B1c2hgIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgYW5kIG5vdCBkZWFkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MjA6MDEuODYxNDM5ODAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQ1NzQ1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3RwX3NlcmlhbF9wdXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM9MjY5PXN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3J4KHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6Mjk4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0yOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTMyNy1cXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzI4OnN0YXRpYyB2b2lkIG1jdHBfc2VyaWFsX3B1c2hfdHJhaWxlcihzdHJ1Y3QgbWN0cF9zZXJpYWwgKmRldiwgdTggYylcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmMtMzI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTEtXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjM1MjpzdGF0aWMgdm9pZCBtY3RwX3NlcmlhbF9wdXNoKHN0cnVjdCBtY3RwX3NlcmlhbCAqZGV2LCB1OCBjKVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM1OC1cXHRjYXNlIFNUQVRFX0hFQURFUjpcXG5kcml2ZXJzL25ldC9tY3RwL21jdHAtc2VyaWFsLmM6MzU5OlxcdFxcdG1jdHBfc2VyaWFsX3B1c2hfaGVhZGVyKGRldiwgYyk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM2MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYy0zODAtXFx0Y2FzZSBTVEFURV9UUkFJTEVSOlxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYzozODE6XFx0XFx0bWN0cF9zZXJpYWxfcHVzaF90cmFpbGVyKGRldiwgYyk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTM4Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L21jdHAvbWN0cC1zZXJpYWwuYz0zOTU9c3RhdGljIHZvaWQgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNvbnN0IHU4ICpjLFxcbi0tXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuOyBpKyspXFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jOjQwNjpcXHRcXHRtY3RwX3NlcmlhbF9wdXNoKGRldiwgY1tpXSk7XFxuZHJpdmVycy9uZXQvbWN0cC9tY3RwLXNlcmlhbC5jLTQwNy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjIwOjAxLjkyNDkwMjQ2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY4MTIzMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1DVFAgU2VyaWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgSSd2ZSBnb3QgYSBoYW5kbGUgb24gaXQuIFRoZSBmdW5jdGlvbiBgbWN0cF9zZXJpYWxfdHR5X3JlY2VpdmVfYnVmYCDigJMgdGhhdCdzIHRoZSBUVFkgcmVjZWl2ZSBidWZmZXIgY2FsbGJhY2ssIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBBbmQgeWVzLCBhYnNvbHV0ZWx5LCB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggc3RhbmRhcmQgVFRZIG9wZXJhdGlvbnM7IGl0J3MgcmlnaHQgaW4gdGhlIGRhdGEgcGF0aC5cblxuVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIHJpcGUgZm9yIGZ1enppbmcuIEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBtY3RwX3NlcmlhbF9wdXNoX2hlYWRlcmAgYW5kIGBtY3RwX3NlcmlhbF9wdXNoYCwgdGhvc2UgYXJlIHRoZSBsaWtlbHkgYXJlYXMgd2hlcmUgdGhlIG5ldyB6ZXJvLWxlbmd0aCBmcmFtZSByZWplY3Rpb24gbG9naWMgd2lsbCBiZSBleGVyY2lzZWQuIFNvLCBJJ2xsIHNwZWNpZnkgYEZvY3VzU3ltYm9sczogW1wibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIiwgXCJtY3RwX3NlcmlhbF9wdXNoXCJdYC5cblxuVG8gZW5zdXJlIHRoaXMgaXMgYWN0dWFsbHkgdGVzdGVkLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgTUNUUGAgYW5kIGBNQ1RQX1NFUklBTGAgLiBTbywgYEVuYWJsZUNvbmZpZ3M6IFtcIk1DVFBcIiwgXCJNQ1RQX1NFUklBTFwiXWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNQ1RQIHNlcmlhbCBkcml2ZXIncyBwYWNrZXQgcGFyc2luZyBsb2dpYyB0byByZWplY3QgemVyby1sZW5ndGggZnJhbWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHR0eSByZWNlaXZlIHBhdGguXCIgSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGluY29taW5nIGRhdGEsIGFuZCBhbnkgY2hhbmdlIGluIHBhcnNpbmcgbG9naWMgYWx3YXlzIGRlc2VydmVzIGNhcmVmdWwgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjcsIk91dHB1dFRva2VucyI6OTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6MjA6MDcuMTkzMDI4MjM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMyNTMwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1DVFBcIixcbiAgICBcIk1DVFBfU0VSSUFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWN0cF9zZXJpYWxfcHVzaF9oZWFkZXJcIixcbiAgICBcIm1jdHBfc2VyaWFsX3B1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTUNUUCBzZXJpYWwgZHJpdmVyJ3MgcGFja2V0IHBhcnNpbmcgbG9naWMgdG8gcmVqZWN0IHplcm8tbGVuZ3RoIGZyYW1lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB0dHkgcmVjZWl2ZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq99k8[1] Phase: Succeeded StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 21:20:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 21:20:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2] Phase: Succeeded StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 21:20:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 21:20:18 +0000 UTC FinishedAt: 2026-07-14 21:20:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq99k8/series-workflowq99k8-convert-artifact-3614768181/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 21:20:28 +0000 UTC FinishedAt: 2026-07-14 22:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 21:20:28 +0000 UTC FinishedAt: 2026-07-14 22:02:36 +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:*f194f7de-6096-4031-826d-b7f57668dcb8,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-workflowq99k8/series-workflowq99k8-convert-artifact-3614768181/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": "52022909-5703-4ea5-b0e3-e2d90f2a964c", "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-workflowq99k8/series-workflowq99k8-build-action-753055771/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 21:20:28 +0000 UTC FinishedAt: 2026-07-14 22:02:23 +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:*f194f7de-6096-4031-826d-b7f57668dcb8,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-workflowq99k8/series-workflowq99k8-convert-artifact-3614768181/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": "52022909-5703-4ea5-b0e3-e2d90f2a964c", "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-workflowq99k8/series-workflowq99k8-build-action-753055771/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 22:02:36 +0000 UTC FinishedAt: 2026-07-14 22:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 22:02:36 +0000 UTC FinishedAt: 2026-07-14 22:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 22:02:36 +0000 UTC FinishedAt: 2026-07-14 22:03:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 22:02:36 +0000 UTC FinishedAt: 2026-07-14 22:02:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq99k8/series-workflowq99k8-convert-artifact-1726429584/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 22:03:00 +0000 UTC FinishedAt: 2026-07-14 22:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 22:03:00 +0000 UTC FinishedAt: 2026-07-14 22:05:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52022909-5703-4ea5-b0e3-e2d90f2a964c,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-workflowq99k8/series-workflowq99k8-build-action-753055771/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-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 22:05:19 +0000 UTC FinishedAt: 2026-07-14 22:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 22:05:19 +0000 UTC FinishedAt: 2026-07-14 22:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 22:05:19 +0000 UTC FinishedAt: 2026-07-14 22:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 22:05:19 +0000 UTC FinishedAt: 2026-07-14 22:41:08 +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:*f194f7de-6096-4031-826d-b7f57668dcb8,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-workflowq99k8/series-workflowq99k8-convert-artifact-1726429584/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": "c377dea1-d916-4656-8aaa-6452319ee339", "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-workflowq99k8/series-workflowq99k8-build-action-2037200396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 22:05:20 +0000 UTC FinishedAt: 2026-07-14 22:40:58 +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:*f194f7de-6096-4031-826d-b7f57668dcb8,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-workflowq99k8/series-workflowq99k8-convert-artifact-1726429584/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": "c377dea1-d916-4656-8aaa-6452319ee339", "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-workflowq99k8/series-workflowq99k8-build-action-2037200396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 22:41:08 +0000 UTC FinishedAt: 2026-07-14 22:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 22:41:08 +0000 UTC FinishedAt: 2026-07-14 22:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 22:41:08 +0000 UTC FinishedAt: 2026-07-14 22:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 22:41:08 +0000 UTC FinishedAt: 2026-07-14 22:43:11 +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:*c377dea1-d916-4656-8aaa-6452319ee339,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-workflowq99k8/series-workflowq99k8-build-action-2037200396/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-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +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":["mctp_serial_push_header","mctp_serial_push"],"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:*52022909-5703-4ea5-b0e3-e2d90f2a964c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c377dea1-d916-4656-8aaa-6452319ee339,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-workflowq99k8/series-workflowq99k8-build-action-753055771/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-workflowq99k8/series-workflowq99k8-build-action-2037200396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 22:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 22:43:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"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-workflowq99k8/series-workflowq99k8-convert-artifact-2973329801/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 22:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 22:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 22:43:20 +0000 UTC FinishedAt: 2026-07-14 22:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 22:43:30 +0000 UTC FinishedAt: 2026-07-14 23:35:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq99k8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mctp_serial_push_header","mctp_serial_push"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["MCTP","MCTP_SERIAL"],"series_id":"bcff96c2-1342-42ea-8c8f-a19d93228eee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 22:43:30 +0000 UTC FinishedAt: 2026-07-14 23:35:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52022909-5703-4ea5-b0e3-e2d90f2a964c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c377dea1-d916-4656-8aaa-6452319ee339,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-workflowq99k8/series-workflowq99k8-build-action-753055771/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-workflowq99k8/series-workflowq99k8-build-action-2037200396/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-workflowq99k8/series-workflowq99k8-convert-artifact-2973329801/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,}