Name: series-workflowjv95m Phase: Succeeded StartedAt: 2026-07-12 00:16:06 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[0] Phase: Succeeded StartedAt: 2026-07-12 00:16:06 +0000 UTC FinishedAt: 2026-07-12 00:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 00:16:06 +0000 UTC FinishedAt: 2026-07-12 00:50:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "673896a9-bfee-4537-ab1e-0db12d75c215" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_rx_skb", "nfc_llcp_recv_agf" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3ZfYWdmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYWVkNWZlMWFmZWYwMWUuLmUzYjMwNzdlMGU4MzQ5IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTE0ODEsNiAmIzQzOzE0ODEsOSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHR1OCBkc2FwLCBzc2FwLCBwdHlwZTtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRwdHlwZSA9IG5mY19sbGNwX3B0eXBlKHNrYik7XG4gXHRkc2FwID0gbmZjX2xsY3BfZHNhcChza2IpO1xuIFx0c3NhcCA9IG5mY19sbGNwX3NzYXAoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGBuZmNfbGxjcF9yeF9za2JgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBjcmFzaGVzIHdoZW4gcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTkZDIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMgKGxpa2UgTkZDX1NJTSBvciBORkNfVklSVFVBTF9OQ0kpLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGFlZDVmZTFhZmVmMDFlLi5lM2IzMDc3ZTBlODM0OSAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC0xNDgxLDYgJiM0MzsxNDgxLDkgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJdTggZHNhcCwgc3NhcCwgcHR5cGU7CiAKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgTExDUF9IRUFERVJfU0laRSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlwdHlwZSA9IG5mY19sbGNwX3B0eXBlKHNrYik7CiAJZHNhcCA9IG5mY19sbGNwX2RzYXAoc2tiKTsKIAlzc2FwID0gbmZjX2xsY3Bfc3NhcChza2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFwcGxpZWQgdG8gYG5ldC9uZmMvbGxjcF9jb3JlLmNgLiBUaGUgY29yZSBvZiBpdCwgdGhlIGJpdCBJIG5lZWQgdG8gZm9jdXMgb24sIGlzIHRoaXMgY2hlY2sgdGhleSYjMzk7dmUgYWRkZWQ6IGBpZiAoc2tiLSZndDtsZW4gJmx0OyBMTENQX0hFQURFUl9TSVpFKSByZXR1cm47YCB3aXRoaW4gYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzYWZlZ3VhcmQgYWdhaW5zdCByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYWNrZXQgYnVmZmVyLCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFzdHkuIEdvb2QgY2F0Y2gsIHJlYWxseS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgdGVsbHMgbWUsIHRoYXQgbWVhbnMgd2UgKmRlZmluaXRlbHkqIG5lZWQgdG8gZnV6eiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhhdCBjaGVjayBpcyBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBuZmNfbGxjcF9yeF9za2JgIHNpdHMgaW4gdGhlIGJyb2FkZXIgcGljdHVyZS4gU28sIGl0JiMzOTtzIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgbm8gc3VycHJpc2VzIHRoZXJlLiBOZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHdoYXQgbWlnaHQgYmUgYWZmZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0yMT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjQtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlx0XHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ4MS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzI5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMb3ctTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCBSZWNlaXZlcioqCgpPa2F5LCBzbyBJIHNlZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgY2VudHJhbCByZWNlaXZlciBmdW5jdGlvbiBoZXJlLiBJdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSB0d28gZGlzdGluY3QgcG9pbnRzOiBgbmZjX2xsY3BfcmVjdl9hZ2ZgIGFuZCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzIGFuZCBzeW5jaHJvbm91cyBkYXRhIHBhdGhzLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgJiMzNDtBR0YmIzM0OyBtaWdodCBiZSBhIHNwZWNpZmljIGZsb3cgY29udHJvbCBwcm90b2NvbCwgb3IgYSBwYXJ0aWN1bGFyIHN0YXRlLgoKTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbW9yZSBnZW5lcmljIG9mIHRoZSB0d28gY2FsbCBwb2ludHMsIHRvIGdldCB0aGUgY2xlYXJlc3Qgb3ZlcnZpZXcuIExldCYjMzk7cyBzdGFydCB3aXRoIGBuZmNfbGxjcF9yeF93b3JrYCB0byB1bmRlcnN0YW5kIHRoZSBtb3JlIGdlbmVyYWwgcHJvY2Vzcy4gVGhpcyBvbmUgaXMgbW9yZSBsaWtlbHkgdG8gZ2l2ZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSByZWNlaXZlZCBkYXRhIGdldHMgaGFuZGxlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O2xsIHJldmVhbCB0aGUgY29tbW9uIHRocmVhZCB0aGF0IGludGVncmF0ZXMgYm90aCBmbG93cyBhbmQgaW5mb3JtcyBob3cgdGhleSBhcmUgc3Vic2VxdWVudGx5IHByb2Nlc3NlZCBieSB0aGUgcHJpbWFyeSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0xNDgwPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0NS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU0NjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Ny17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjQ5PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc1LVx0bG9jYWwtXHUwMDNlcnhfcGVuZGluZyA9IE5VTEw7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NzY6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKk5GQyBMTENQIENvbmZpZ3VyYXRpb24gRGl2ZSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgTGluayBMYXllciBDb250cm9sIFByb3RvY29sIChMTENQKSBpcyBjb3JyZWN0bHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBLY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZSByZWxldmFudCBvcHRpb25zIGFyZSBlbmFibGVkIGFuZCBzZXQgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBzdGFjayBJJiMzOTttIHdvcmtpbmcgd2l0aC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhleSYjMzk7cmUgYWxsIG1ldC4gSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgdGhlIExMQ1AgcGFyYW1ldGVycyBtYXAgdG8gdGhlIHVuZGVybHlpbmcgTkZDIGNvbnRyb2xsZXLigJlzIGNhcGFiaWxpdGllcyBhbmQgdGhlIHVwcGVyLWxheWVyIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4gQW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBjb21tdW5pY2F0aW9uIHByb3RvY29scyBvciBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzIGFyZSB0b3Agb2YgbWluZCwgdG9vLiBJIG5lZWQgdG8gYmUgc3VyZSBldmVyeXRoaW5nIGlzIGFsaWduZWQgZm9yIGEgc21vb3RoIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yICYjMzQ7TExDUCYjMzQ7IGFuZCAmIzM0O05GQyYjMzQ7IHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcywgYW5kIHRoZW4gdHJhY2UgZnJvbSB0aGVyZSB0byBzZWUgYWxsIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsbHkgZW5hYmxlIG5lZWRlZCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GQ19MTENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX3NvY2suYz01Mz1zdGF0aWMgc3RydWN0IHByb3RvIGxsY3Bfc29ja19wcm90byA9IHtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NTQ6XHQubmFtZSAgICAgPSBcJiMzNDtORkNfTExDUFwmIzM0Oyxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNTUtXHQub3duZXIgICAgPSBUSElTX01PRFVMRSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTU5PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsIGludCBhbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1LVx0XHRcdFx0XHQgICAgbGxjcF9hZGRyLnNlcnZpY2VfbmFtZV9sZW4sXG5uZXQvbmZjL2xsY3Bfc29jay5jOjEwNjpcdFx0XHRcdFx0ICAgIE5GQ19MTENQX01BWF9TRVJWSUNFX05BTUUpO1xubmV0L25mYy9sbGNwX3NvY2suYy0xMDctXHRsbGNwX3NvY2stXHUwMDNlc2VydmljZV9uYW1lID0ga21lbWR1cChsbGNwX2FkZHIuc2VydmljZV9uYW1lLFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9MjMxPXN0YXRpYyBpbnQgbmZjX2xsY3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMjQ2LVx0c3dpdGNoIChvcHRuYW1lKSB7XG5uZXQvbmZjL2xsY3Bfc29jay5jOjI0NzpcdGNhc2UgTkZDX0xMQ1BfUlc6XG5uZXQvbmZjL2xsY3Bfc29jay5jLTI0OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ09OTkVDVEVEIHx8XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0yNjgtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjI2OTpcdGNhc2UgTkZDX0xMQ1BfTUlVWDpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMjcwLVx0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgPT0gTExDUF9DT05ORUNURUQgfHxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTMzOC1cdHN3aXRjaCAob3B0bmFtZSkge1xubmV0L25mYy9sbGNwX3NvY2suYzozMzk6XHRjYXNlIE5GQ19MTENQX1JXOlxubmV0L25mYy9sbGNwX3NvY2suYy0zNDAtXHRcdHJ3ID0gbGxjcF9zb2NrLVx1MDAzZXJ3IFx1MDAzZSBMTENQX01BWF9SVyA/IGxvY2FsLVx1MDAzZXJ3IDogbGxjcF9zb2NrLVx1MDAzZXJ3O1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQ1LVxubmV0L25mYy9sbGNwX3NvY2suYzozNDY6XHRjYXNlIE5GQ19MTENQX01JVVg6XG5uZXQvbmZjL2xsY3Bfc29jay5jLTM0Ny1cdFx0bWl1eCA9IGJlMTZfdG9fY3B1KGxsY3Bfc29jay1cdTAwM2VtaXV4KSBcdTAwM2UgTExDUF9NQVhfTUlVWCA/XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0zNTQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjM1NTpcdGNhc2UgTkZDX0xMQ1BfUkVNT1RFX01JVTpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzU2LVx0XHRyZW1vdGVfbWl1ID0gbGxjcF9zb2NrLVx1MDAzZXJlbW90ZV9taXUgXHUwMDNlIExMQ1BfTUFYX01JVSA/XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0zNjMtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjM2NDpcdGNhc2UgTkZDX0xMQ1BfUkVNT1RFX0xUTzpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY1LVx0XHRpZiAocHV0X3VzZXIobG9jYWwtXHUwMDNlcmVtb3RlX2x0byAvIDEwLCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY5LVxubmV0L25mYy9sbGNwX3NvY2suYzozNzA6XHRjYXNlIE5GQ19MTENQX1JFTU9URV9SVzpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzcxLVx0XHRpZiAocHV0X3VzZXIobGxjcF9zb2NrLVx1MDAzZXJlbW90ZV9ydywgKHUzMiBfX3VzZXIgKikgb3B0dmFsKSlcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNS1cdFx0XHRcdFx0ICAgIGFkZHItXHUwMDNlc2VydmljZV9uYW1lX2xlbixcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NzM2Olx0XHRcdFx0XHQgICAgTkZDX0xMQ1BfTUFYX1NFUlZJQ0VfTkFNRSk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNy1cdGxsY3Bfc29jay1cdTAwM2VzZXJ2aWNlX25hbWUgPSBrbWVtZHVwKGFkZHItXHUwMDNlc2VydmljZV9uYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGludG8gdGhlIE5GQyBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCB3aGljaCBvbmVzIGFyZSBjb25kaXRpb25hbCwgYW5kIGhvdyB0aGV5JiMzOTtyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoYXQgcGFydGljdWxhciBLY29uZmlnIGZpbGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGhpZGluZyBpbiB0aGVyZS4gSG9wZWZ1bGx5IGl0JiMzOTtzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE5GQyBzdGFjayBhbmQgaG93IHRvIHR3ZWFrIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnLTItI1xubmV0L25mYy9LY29uZmlnOjM6IyBORkMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cbm5ldC9uZmMvS2NvbmZpZy00LSNcbm5ldC9uZmMvS2NvbmZpZy01LVxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcbm5ldC9uZmMvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxubmV0L25mYy9LY29uZmlnOjg6XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbm5ldC9uZmMvS2NvbmZpZy05LVx0ZGVmYXVsdCBuXG5uZXQvbmZjL0tjb25maWctMTAtXHRoZWxwXG5uZXQvbmZjL0tjb25maWc6MTE6XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXG5uZXQvbmZjL0tjb25maWctMTItXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnOjE4Olx0ZGVwZW5kcyBvbiBORkNcbm5ldC9uZmMvS2NvbmZpZy0xOS1cdHNlbGVjdCBDUkNfQ0NJVFRcbm5ldC9uZmMvS2NvbmZpZy0yMC1cdHNlbGVjdCBDUkNfSVRVX1Rcbm5ldC9uZmMvS2NvbmZpZzoyMTpcdHRyaXN0YXRlIFwmIzM0O05GQyBEaWdpdGFsIFByb3RvY29sIHN0YWNrIHN1cHBvcnRcJiMzNDtcbm5ldC9uZmMvS2NvbmZpZy0yMi1cdGRlZmF1bHQgblxubmV0L25mYy9LY29uZmlnLTIzLVx0aGVscFxubmV0L25mYy9LY29uZmlnOjI0Olx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxubmV0L25mYy9LY29uZmlnOjI1Olx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcbm5ldC9uZmMvS2NvbmZpZzoyNjpcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXG5uZXQvbmZjL0tjb25maWctMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBzZXQgdG8gYE5GQ2AuIFRoYXQmIzM5O3Mgbm90IG11Y2ggaW5mb3JtYXRpb24gdG8gZ28gb24sIGlzIGl0PyBUbyByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoYXQgbWVhbnMgaW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGBORkNgIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBuZXQvbmZjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IGRlcGVuZGVuY2llcywgaW5jbHVkZWQgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpZmljIGNvbXBpbGVyIGZsYWdzIG9yIGJ1aWxkIHJ1bGVzIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgYE5GQ2AgY29uZmlndXJhdGlvbi4gVGhpcyBNYWtlZmlsZSBpcyB0aGUga2V5IHRvIHVucGFja2luZyB3aGF0ICYjMzk7TkZDJiMzOTsgYWN0dWFsbHkgcmVwcmVzZW50cyBmcm9tIGEgc3lzdGVtIGJ1aWxkIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xubmV0L25mYy9NYWtlZmlsZS0xMC1cbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG5uZXQvbmZjL01ha2VmaWxlOjEyOlx0XHRsbGNwX3NvY2sub1xubmV0L25mYy9NYWtlZmlsZS0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgTW9kdWxlKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGxsY3BfY29yZS5vYCBpcyBvbmx5IGJ1aWx0IGlmIHRoZSBgQ09ORklHX05GQ2Aga2VybmVsIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdzsgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2hvdWxkIGJlIG9uIHRoZSBgbmZjX2xsY3Bfcnhfc2tiYCBmdW5jdGlvbiwgc2luY2UgdGhhdCYjMzk7cyB0aGUgb25lIHRoYXQmIzM5O3MgYmVlbiBmbGFnZ2VkIGFzIG1vZGlmaWVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGl0cyBkZXRhaWxzLCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIG1pZ2h0IGJlLiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gdGFrZSBhIHdpZGVyIGxvb2suIEl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBiZWluZyBjYWxsZWQgYW5kIHRoZXJlZm9yZSBhbHNvIHdvcnRoIHBheWluZyBhdHRlbnRpb24gdG8uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkIG9yIHRoYXQgSSBzaG91bGQgaW5jbHVkZSBpbiBteSBhbmFseXNpcy4gTmVlZCB0byBkbyBhIHRob3JvdWdoIGpvYiwgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0yMT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjQtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlx0XHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ4MS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlZXAgRGl2ZSBpbnRvIE5GQyBMTENQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIE5GQyBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgcmVjZWl2ZSBwcm9jZXNzLiBJJiMzOTttIHNlZWluZyBgbmZjX2xsY3Bfcnhfc2tiYCBhcyBhIHJlYWxseSBrZXkgZm9jYWwgcG9pbnQgaGVyZS4gSXQmIzM5O3MgbGlrZWx5IHRoZSBpbml0aWFsIGVudHJ5IHBvaW50IGZvciByZWNlaXZlZCBTZXJ2aWNlIEtub3dsZWRnZSBCYXNlIChTS0IpIHBhY2tldHMuIFRoZW4gdGhlcmUmIzM5O3MgYG5mY19sbGNwX3JlY3ZfYWdmYCB0aGF0JiMzOTtzIGxvb2tpbmcgbGlrZSBhbm90aGVyIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aGF0IG9uZSwgdG9vLiBPZiBjb3Vyc2UsIGBuZmNfbGxjcF9yeF93b3JrYCBqdW1wcyBvdXQgYXMgYSB3b3JrcXVldWUgaGFuZGxlci4gSSBjYW4gaW5mZXIgdGhhdCB0aGlzIHBhcnQgd2lsbCBsaWtlbHkgcHJvY2VzcyB0aGUgcmVjZWl2ZWQgZGF0YSBhc3luY2hyb25vdXNseSwgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIGludGVycnVwdCBjb250ZXh0LgoKRmlyc3Qgb2ZmLCBsZXQgbWUgZ2V0IGEgZ29vZCBsb29rIGF0IGBuZmNfbGxjcF9yZWN2X2FnZmAuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgaW5ib3VuZCBkYXRhIHN0cmVhbSBpcyBwcm9iYWJseSB3aGVyZSBJIG5lZWQgdG8gc3BlbmQgdGhlIG1ham9yaXR5IG9mIG15IHRpbWUgcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9MTI4ND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM3LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTQwLVx0XHRwcl9kZWJ1ZyhcJiMzNDtBR0YgZnJhbWVcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQxOlx0XHRuZmNfbGxjcF9yZWN2X2FnZihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Mi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTENQIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHJlbGF0ZWQgdG8gTkZDJiMzOTtzIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBhbmQgSSBzZWUgdGhpcyBpbnRlcmVzdGluZyBpbnRlcnBsYXkgYmV0d2VlbiBgbmZjX2xsY3Bfcnhfc2tiYCBhbmQgYG5mY19sbGNwX3JlY3ZfYWdmYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgcmVjdXJzaXZlIG9yIG11dHVhbCByZWN1cnNpb24gc2l0dWF0aW9uLCB3aGljaCBhbHdheXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gU3BlY2lmaWNhbGx5LCBgbmZjX2xsY3Bfcnhfc2tiYCBnZXRzIGNhbGxlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluLCBhbmQgaWYgdGhlIHBhY2tldCB0eXBlIChgcHR5cGVgKSBpcyBhbiBBZ2dyZWdhdGVkIEZyYW1lIChBR0YpLCB0aGVuIGBuZmNfbGxjcF9yZWN2X2FnZmAgZ2V0cyBjYWxsZWQuIE5vdywgYG5mY19sbGNwX3JlY3ZfYWdmYCwgaW4gdHVybiwgYXBwZWFycyB0byBwYXJzZSB0aGlzIEFHRiBhbmQsIGNydWNpYWxseSwgY2FsbHMgYG5mY19sbGNwX3J4X3NrYmAgYWdhaW4gZm9yIGVhY2ggaW5kaXZpZHVhbCBQRFUgY29udGFpbmVkIHdpdGhpbiB0aGF0IEFHRi4gVGhpcyBtZWFucyBgbmZjX2xsY3Bfcnhfc2tiYCBoYW5kbGVzIGEgKnNpbmdsZSogUERVOyBpZiBpdCYjMzk7cyBhbiBhZ2dyZWdhdGVkIG9uZSwgaXQgZGVsZWdhdGVzIHRvIGBuZmNfbGxjcF9yZWN2X2FnZmAgdG8gaGFuZGxlIHRoZSBicmVha2Rvd24uCgpUaGlzIHBhdGNoIGlzIGFkZGluZyBhIGxlbmd0aCBjaGVjayAoYGlmIChza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkUpIHJldHVybjtgKSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGl0IHNtZWxscyBsaWtlIGEgYnVnIGZpeC4gSXQgd2lsbCBwcmV2ZW50IGhhbmRsaW5nIG1hbGZvcm1lZCBwYWNrZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIHdoYXQgY291bGQgZ28gd3JvbmcgYW5kIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmchCgpOb3csIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcmVsZXZhbnQgY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byB3YW50IGBORkNgIGVuYWJsZWQsIHByb2JhYmx5IGBORkNfTkNJYCBhcyB3ZWxsLCBidXQgaXQgaXMgd29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBORkMgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIGtlcm5lbCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZy0yLSNcbm5ldC9uZmMvS2NvbmZpZzozOiMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG5uZXQvbmZjL0tjb25maWctNC0jXG5uZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbm5ldC9uZmMvS2NvbmZpZzo4Olx0dHJpc3RhdGUgXCYjMzQ7TkZDIHN1YnN5c3RlbSBzdXBwb3J0XCYjMzQ7XG5uZXQvbmZjL0tjb25maWctOS1cdGRlZmF1bHQgblxubmV0L25mYy9LY29uZmlnLTEwLVx0aGVscFxubmV0L25mYy9LY29uZmlnOjExOlx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxubmV0L25mYy9LY29uZmlnLTEyLVx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuLS1cbm5ldC9uZmMvS2NvbmZpZy0xNi1cbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcbm5ldC9uZmMvS2NvbmZpZzoxODpcdGRlcGVuZHMgb24gTkZDXG5uZXQvbmZjL0tjb25maWctMTktXHRzZWxlY3QgQ1JDX0NDSVRUXG5uZXQvbmZjL0tjb25maWctMjAtXHRzZWxlY3QgQ1JDX0lUVV9UXG5uZXQvbmZjL0tjb25maWc6MjE6XHR0cmlzdGF0ZSBcJiMzNDtORkMgRGlnaXRhbCBQcm90b2NvbCBzdGFjayBzdXBwb3J0XCYjMzQ7XG5uZXQvbmZjL0tjb25maWctMjItXHRkZWZhdWx0IG5cbm5ldC9uZmMvS2NvbmZpZy0yMy1cdGhlbHBcbm5ldC9uZmMvS2NvbmZpZzoyNDpcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gYnVpbGQgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2sgc3VwcG9ydC5cbm5ldC9uZmMvS2NvbmZpZzoyNTpcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XG5uZXQvbmZjL0tjb25maWc6MjY6XHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxubmV0L25mYy9LY29uZmlnLTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDQwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE5GQyBWaXJ0dWFsIERyaXZlciBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIE5GQyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgZHJpdmVycy9uZmMvS2NvbmZpZ2AuIFdlJiMzOTtyZSBsaWtlbHkgY29uc2lkZXJpbmcgYSB2aXJ0dWFsIGRyaXZlciBzZXR1cCwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB2aXJ0dWFsIE5GQyBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIE5GQyBzdWJzeXN0ZW0uCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbiBleGlzdGluZyB2aXJ0dWFsIGRyaXZlciBhYnN0cmFjdGlvbiBkZWZpbmVkIHRoZXJlIG9yIGlmIHdlIG5lZWQgdG8gY3JhZnQgb3VyIG93biBiYXNlZCBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgcGxhdGZvcm0uIEl0IHdpbGwgcmV2ZWFsIGlmIHRoZXJlJiMzOTtzIGFscmVhZHkgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBlbXVsYXRlZCBORkMgZGV2aWNlcyBvciBpZiB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgbW9yZSBiZXNwb2tlLiBJIGV4cGVjdCB0byBiZSBkaWdnaW5nIGludG8gZGVwZW5kZW5jaWVzIG9uIG90aGVyIHBhcnRzIG9mIHRoZSBORkMgc3RhY2ssIHBlcmhhcHMgZmlndXJpbmcgb3V0IGhvdyB2aXJ0dWFsIGRldmljZXMgaW50ZXJhY3Qgd2l0aCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYWNjZXNzIGxheWVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnLTItI1xuZHJpdmVycy9uZmMvS2NvbmZpZzozOiMgTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIGRldmljZXNcbmRyaXZlcnMvbmZjL0tjb25maWctNC0jXG5kcml2ZXJzL25mYy9LY29uZmlnLTUtXG5kcml2ZXJzL25mYy9LY29uZmlnOjY6bWVudSBcJiMzNDtOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBORkNcbmRyaXZlcnMvbmZjL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL0tjb25maWc6OTpjb25maWcgTkZDX1RSRjc5NzBBXG5kcml2ZXJzL25mYy9LY29uZmlnOjEwOlx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTCBcdTAwMjZcdTAwMjYgR1BJT0xJQlxuZHJpdmVycy9uZmMvS2NvbmZpZy0xMi1cdGhlbHBcbmRyaXZlcnMvbmZjL0tjb25maWc6MTM6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GQyBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzJiMzOTsgVFJGNzk3MGFcbmRyaXZlcnMvbmZjL0tjb25maWctMTQtXHQgIGRldmljZS4gU3VjaCBkZXZpY2Ugc3VwcG9ydHMgNSBkaWZmZXJlbnQgcHJvdG9jb2xzOiBJU08xNDQ0M0EsXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXG5kcml2ZXJzL25mYy9LY29uZmlnOjIyOlx0dHJpc3RhdGUgXCYjMzQ7TUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6MjM6XHRkZXBlbmRzIG9uIElOVEVMX01FSSBcdTAwMjZcdTAwMjYgTkZDX0hDSVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yNC1cdGhlbHBcbmRyaXZlcnMvbmZjL0tjb25maWctMjUtXHQgIFRoaXMgYWRkcyBzdXBwb3J0IHRvIHVzZSBhbiBtZWkgYnVzIG5mYyBkZXZpY2UuIFNlbGVjdCB0aGlzIGlmIHlvdVxuZHJpdmVycy9uZmMvS2NvbmZpZzoyNjpcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cbmRyaXZlcnMvbmZjL0tjb25maWctMjctXHQgIEludGVsJiMzOTtzIE1hbmFnZW1lbnQgRW5naW5lIGNoaXAuXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzI6XHR0cmlzdGF0ZSBcJiMzNDtORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzozMzpcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXHRoZWxwXG5kcml2ZXJzL25mYy9LY29uZmlnOjM1Olx0ICBUaGlzIGRyaXZlciBkZWNsYXJlcyB0d28gdmlydHVhbCBORkMgZGV2aWNlcyBzdXBwb3J0aW5nIE5GQy1ERVBcbmRyaXZlcnMvbmZjL0tjb25maWctMzYtXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcbmRyaXZlcnMvbmZjL0tjb25maWc6NDM6XHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25mYy9LY29uZmlnLTQ0LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmZjL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG5kcml2ZXJzL25mYy9LY29uZmlnLTQ2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTUtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwODMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBORkMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBORkNfU0lNYCBhbmQgYE5GQ19WSVJUVUFMX05DSWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGV5JiMzOTtyZSB2aXJ0dWFsIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEZyb20gd2hhdCBJIHNlZSBoZXJlLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIHdoaWNoIGlzIGxvZ2ljYWwuIEFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYWxsIG9mIHRoZXNlOiBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gQnV0IGhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgY3J1Y2lhbC4gSXMgYE5GQ19OQ0lgIGFjdHVhbGx5IGRlZmluZWQgaW4gYG5ldC9uZmMvS2NvbmZpZ2A/IEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudCwgYW5kIGEgbWlzc2luZyBLY29uZmlnIGVudHJ5IHdvdWxkIGJlIGEgc2lnbmlmaWNhbnQgaXNzdWUgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnOjE0Olx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTUtXHRzZWxlY3QgQ1JDX0NDSVRUXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG5uZXQvbmZjL25jaS9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TkNJIG92ZXIgVUFSVCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25mYy9uY2kvTWFrZWZpbGUtNS1cbm5ldC9uZmMvbmNpL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cbi0tXG5uZXQvbmZjL25jaS9NYWtlZmlsZT0xMD1uY2lfc3BpLXkgJiM0Mzs9IHNwaS5vXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkZDX05DSV9TUEkpICYjNDM7PSBuY2lfc3BpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTEyLVxubmV0L25mYy9uY2kvTWFrZWZpbGU9MTM9bmNpX3VhcnQteSAmIzQzOz0gdWFydC5vXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX05DSV9VQVJUKSAmIzQzOz0gbmNpX3VhcnQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg0CgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IENvbmZpZ3VyYXRpb24gYW5kIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGludGVncmF0aW5nIGBORkNgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBob2xkIG9uLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBpcyBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gSSBuZWVkIHRvIGtlZXAgdGhpcyBsaXN0IGF0IHRoZSBmb3JlZnJvbnQgb2YgbXkgbWluZCBhcyBJIG1vdmUgZm9yd2FyZC4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBMTENQIGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgYXJvdW5kLiBOb3BlLCBsb29rcyBsaWtlIGBsbGNwX2NvcmUub2AgaXMgY29ycmVjdGx5IGJ1aWx0IGFsb25nc2lkZSBgQ09ORklHX05GQ2AsIHNvIHRoYXQmIzM5O3MgaGFuZGxlZC4KClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2sgaW4gYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBmaXggZm9yIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBldmVuIGEgY3Jhc2ggc2NlbmFyaW8uIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgZGVtYW5kIG15IGF0dGVudGlvbiBub3cgYXJlIGBuZmNfbGxjcF9yeF9za2JgIGFuZCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBJJiMzOTtsbCBrZWVwIHRob3NlIGluIGZvY3VzLiBJIGFtIG5vdyBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9yeF9za2ImIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdl9hZ2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGBuZmNfbGxjcF9yeF9za2JgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBjcmFzaGVzIHdoZW4gcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTkZDIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMgKGxpa2UgTkZDX1NJTSBvciBORkNfVklSVFVBTF9OQ0kpLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC4yOTM0MzIyMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMzOTY1OTUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gICAgXCJuZmNfbGxjcF9yZWN2X2FnZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6MzguMjkzNDQyMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTIxNDIwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMWYwYWRhOTMzMTUxYWU1MThkMjI0NDljOWFkMTQ1NzAyZTY1MDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjQ4OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuaW5kZXggYWVkNWZlMWFmZWYwMWUuLmUzYjMwNzdlMGU4MzQ5IDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuQEAgLTE0ODEsNiArMTQ4MSw5IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHU4IGRzYXAsIHNzYXAsIHB0eXBlO1xcbiBcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0cHR5cGUgPSBuZmNfbGxjcF9wdHlwZShza2IpO1xcbiBcXHRkc2FwID0gbmZjX2xsY3BfZHNhcChza2IpO1xcbiBcXHRzc2FwID0gbmZjX2xsY3Bfc3NhcChza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC45MDY1MzE5NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjc4MzQ3Njg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9yeF9za2JcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZfYWdmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBhZWQ1ZmUxYWZlZjAxZS4uZTNiMzA3N2UwZTgzNDkgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtMTQ4MSw2ICsxNDgxLDkgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0dTggZHNhcCwgc3NhcCwgcHR5cGU7XG4gXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0cHR5cGUgPSBuZmNfbGxjcF9wdHlwZShza2IpO1xuIFx0ZHNhcCA9IG5mY19sbGNwX2RzYXAoc2tiKTtcbiBcdHNzYXAgPSBuZmNfbGxjcF9zc2FwKHNrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC45MDY1MzQyODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY3ODU5MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhcHBsaWVkIHRvIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gVGhlIGNvcmUgb2YgaXQsIHRoZSBiaXQgSSBuZWVkIHRvIGZvY3VzIG9uLCBpcyB0aGlzIGNoZWNrIHRoZXkndmUgYWRkZWQ6IGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSkgcmV0dXJuO2Agd2l0aGluIGBuZmNfbGxjcF9yeF9za2JgLiBUaGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzYWZlZ3VhcmQgYWdhaW5zdCByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYWNrZXQgYnVmZmVyLCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFzdHkuIEdvb2QgY2F0Y2gsIHJlYWxseS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgdGVsbHMgbWUsIHRoYXQgbWVhbnMgd2UgKmRlZmluaXRlbHkqIG5lZWQgdG8gZnV6eiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhhdCBjaGVjayBpcyBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgbmZjX2xsY3Bfcnhfc2tiYCBzaXRzIGluIHRoZSBicm9hZGVyIHBpY3R1cmUuIFNvLCBpdCdzIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgbm8gc3VycHJpc2VzIHRoZXJlLiBOZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHdoYXQgbWlnaHQgYmUgYWZmZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo0Mi41NzQzOTcxODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTAzNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3J4X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTIxPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXFxubmV0L25mYy9sbGNwX2NvcmUuYzoyMzpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yNC1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTQzNj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ3MjpcXHRcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3My1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0ODA6c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDgxLXtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU0Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1NjI6XFx0bmZjX2xsY3Bfcnhfc2tiKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDIuNzQyMzA5ODZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1MDU2MzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG93LUxldmVsIENvbW11bmljYXRpb24gUHJvdG9jb2wgUmVjZWl2ZXIqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgY2VudHJhbCByZWNlaXZlciBmdW5jdGlvbiBoZXJlLiBJdCdzIHRyaWdnZXJlZCBmcm9tIHR3byBkaXN0aW5jdCBwb2ludHM6IGBuZmNfbGxjcF9yZWN2X2FnZmAgYW5kIGBuZmNfbGxjcF9yeF93b3JrYC4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGFzeW5jaHJvbm91cyBhbmQgc3luY2hyb25vdXMgZGF0YSBwYXRocy4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIFwiQUdGXCIgbWlnaHQgYmUgYSBzcGVjaWZpYyBmbG93IGNvbnRyb2wgcHJvdG9jb2wsIG9yIGEgcGFydGljdWxhciBzdGF0ZS5cblxuTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbW9yZSBnZW5lcmljIG9mIHRoZSB0d28gY2FsbCBwb2ludHMsIHRvIGdldCB0aGUgY2xlYXJlc3Qgb3ZlcnZpZXcuIExldCdzIHN0YXJ0IHdpdGggYG5mY19sbGNwX3J4X3dvcmtgIHRvIHVuZGVyc3RhbmQgdGhlIG1vcmUgZ2VuZXJhbCBwcm9jZXNzLiBUaGlzIG9uZSBpcyBtb3JlIGxpa2VseSB0byBnaXZlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHJlY2VpdmVkIGRhdGEgZ2V0cyBoYW5kbGVkLiBJJ20gaG9waW5nIGl0J2xsIHJldmVhbCB0aGUgY29tbW9uIHRocmVhZCB0aGF0IGludGVncmF0ZXMgYm90aCBmbG93cyBhbmQgaW5mb3JtcyBob3cgdGhleSBhcmUgc3Vic2VxdWVudGx5IHByb2Nlc3NlZCBieSB0aGUgcHJpbWFyeSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjQ4OjQ1LjkyNzM3MTQ4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDQ0NDgwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NDUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Ny17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NDk9aW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3NS1cXHRsb2NhbC1cXHUwMDNlcnhfcGVuZGluZyA9IE5VTEw7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjc2OlxcdElOSVRfV09SSyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDYuMzMxODI2MDEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1OTg5MDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqTkZDIExMQ1AgQ29uZmlndXJhdGlvbiBEaXZlKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgTGluayBMYXllciBDb250cm9sIFByb3RvY29sIChMTENQKSBpcyBjb3JyZWN0bHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBLY29uZmlnLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHNldCBhcHByb3ByaWF0ZWx5IGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHN0YWNrIEknbSB3b3JraW5nIHdpdGguIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhleSdyZSBhbGwgbWV0LiBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IHRoZSBMTENQIHBhcmFtZXRlcnMgbWFwIHRvIHRoZSB1bmRlcmx5aW5nIE5GQyBjb250cm9sbGVy4oCZcyBjYXBhYmlsaXRpZXMgYW5kIHRoZSB1cHBlci1sYXllciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgb3IgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncyBhcmUgdG9wIG9mIG1pbmQsIHRvby4gSSBuZWVkIHRvIGJlIHN1cmUgZXZlcnl0aGluZyBpcyBhbGlnbmVkIGZvciBhIHNtb290aCBpbXBsZW1lbnRhdGlvbi4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgXCJMTENQXCIgYW5kIFwiTkZDXCIgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLCBhbmQgdGhlbiB0cmFjZSBmcm9tIHRoZXJlIHRvIHNlZSBhbGwgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWxseSBlbmFibGUgbmVlZGVkIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo0OS4xOTE3MTkwMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNTk3ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GQ19MTENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmM9NTM9c3RhdGljIHN0cnVjdCBwcm90byBsbGNwX3NvY2tfcHJvdG8gPSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzo1NDpcXHQubmFtZSAgICAgPSBcXFwiTkZDX0xMQ1BcXFwiLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNTUtXFx0Lm93bmVyICAgID0gVEhJU19NT0RVTEUsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTU5PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsIGludCBhbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDUtXFx0XFx0XFx0XFx0XFx0ICAgIGxsY3BfYWRkci5zZXJ2aWNlX25hbWVfbGVuLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA2OlxcdFxcdFxcdFxcdFxcdCAgICBORkNfTExDUF9NQVhfU0VSVklDRV9OQU1FKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNy1cXHRsbGNwX3NvY2stXFx1MDAzZXNlcnZpY2VfbmFtZSA9IGttZW1kdXAobGxjcF9hZGRyLnNlcnZpY2VfbmFtZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9MjMxPXN0YXRpYyBpbnQgbmZjX2xsY3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0yNDYtXFx0c3dpdGNoIChvcHRuYW1lKSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzoyNDc6XFx0Y2FzZSBORkNfTExDUF9SVzpcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTI0OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ09OTkVDVEVEIHx8XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTI2OC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjI2OTpcXHRjYXNlIE5GQ19MTENQX01JVVg6XFxubmV0L25mYy9sbGNwX3NvY2suYy0yNzAtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBMTENQX0NPTk5FQ1RFRCB8fFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz0zMDQ9c3RhdGljIGludCBuZmNfbGxjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTMzOC1cXHRzd2l0Y2ggKG9wdG5hbWUpIHtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjMzOTpcXHRjYXNlIE5GQ19MTENQX1JXOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQwLVxcdFxcdHJ3ID0gbGxjcF9zb2NrLVxcdTAwM2VydyBcXHUwMDNlIExMQ1BfTUFYX1JXID8gbG9jYWwtXFx1MDAzZXJ3IDogbGxjcF9zb2NrLVxcdTAwM2VydztcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQ1LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MzQ2OlxcdGNhc2UgTkZDX0xMQ1BfTUlVWDpcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM0Ny1cXHRcXHRtaXV4ID0gYmUxNl90b19jcHUobGxjcF9zb2NrLVxcdTAwM2VtaXV4KSBcXHUwMDNlIExMQ1BfTUFYX01JVVggP1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNTQtXFxubmV0L25mYy9sbGNwX3NvY2suYzozNTU6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfTUlVOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzU2LVxcdFxcdHJlbW90ZV9taXUgPSBsbGNwX3NvY2stXFx1MDAzZXJlbW90ZV9taXUgXFx1MDAzZSBMTENQX01BWF9NSVUgP1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNjMtXFxubmV0L25mYy9sbGNwX3NvY2suYzozNjQ6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfTFRPOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY1LVxcdFxcdGlmIChwdXRfdXNlcihsb2NhbC1cXHUwMDNlcmVtb3RlX2x0byAvIDEwLCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNjktXFxubmV0L25mYy9sbGNwX3NvY2suYzozNzA6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfUlc6XFxubmV0L25mYy9sbGNwX3NvY2suYy0zNzEtXFx0XFx0aWYgKHB1dF91c2VyKGxsY3Bfc29jay1cXHUwMDNlcmVtb3RlX3J3LCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz02NjE9c3RhdGljIGludCBsbGNwX3NvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqX2FkZHIsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNS1cXHRcXHRcXHRcXHRcXHQgICAgYWRkci1cXHUwMDNlc2VydmljZV9uYW1lX2xlbixcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjczNjpcXHRcXHRcXHRcXHRcXHQgICAgTkZDX0xMQ1BfTUFYX1NFUlZJQ0VfTkFNRSk7XFxubmV0L25mYy9sbGNwX3NvY2suYy03MzctXFx0bGxjcF9zb2NrLVxcdTAwM2VzZXJ2aWNlX25hbWUgPSBrbWVtZHVwKGFkZHItXFx1MDAzZXNlcnZpY2VfbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDkuMzQzMzIzNzkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY1NTEzNzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBpbnRvIHRoZSBORkMgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUsIHdoaWNoIG9uZXMgYXJlIGNvbmRpdGlvbmFsLCBhbmQgaG93IHRoZXkncmUgcmVsYXRlZCB0byBlYWNoIG90aGVyLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCdzIGRlZmluZWQgaW4gdGhhdCBwYXJ0aWN1bGFyIEtjb25maWcgZmlsZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBoaWRpbmcgaW4gdGhlcmUuIEhvcGVmdWxseSBpdCdzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE5GQyBzdGFjayBhbmQgaG93IHRvIHR3ZWFrIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTEuOTk4NDYzMjY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2NjU3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctMi0jXFxubmV0L25mYy9LY29uZmlnOjM6IyBORkMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cXG5uZXQvbmZjL0tjb25maWctNC0jXFxubmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxubmV0L25mYy9LY29uZmlnOjg6XFx0dHJpc3RhdGUgXFxcIk5GQyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG5uZXQvbmZjL0tjb25maWctOS1cXHRkZWZhdWx0IG5cXG5uZXQvbmZjL0tjb25maWctMTAtXFx0aGVscFxcbm5ldC9uZmMvS2NvbmZpZzoxMTpcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxubmV0L25mYy9LY29uZmlnLTEyLVxcdCAgY29tbXVuaWNhdGlvbikgZGV2aWNlcy5cXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnOjE4OlxcdGRlcGVuZHMgb24gTkZDXFxubmV0L25mYy9LY29uZmlnLTE5LVxcdHNlbGVjdCBDUkNfQ0NJVFRcXG5uZXQvbmZjL0tjb25maWctMjAtXFx0c2VsZWN0IENSQ19JVFVfVFxcbm5ldC9uZmMvS2NvbmZpZzoyMTpcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG5uZXQvbmZjL0tjb25maWctMjItXFx0ZGVmYXVsdCBuXFxubmV0L25mYy9LY29uZmlnLTIzLVxcdGhlbHBcXG5uZXQvbmZjL0tjb25maWc6MjQ6XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0Llxcbm5ldC9uZmMvS2NvbmZpZzoyNTpcXHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxcbm5ldC9uZmMvS2NvbmZpZzoyNjpcXHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxcbm5ldC9uZmMvS2NvbmZpZy0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTIuMTQyMTM3OThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NzkzNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBzZXQgdG8gYE5GQ2AuIFRoYXQncyBub3QgbXVjaCBpbmZvcm1hdGlvbiB0byBnbyBvbiwgaXMgaXQ/IFRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQgdGhhdCBtZWFucyBpbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgYE5GQ2AgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMsIGluY2x1ZGVkIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWZpYyBjb21waWxlciBmbGFncyBvciBidWlsZCBydWxlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGBORkNgIGNvbmZpZ3VyYXRpb24uIFRoaXMgTWFrZWZpbGUgaXMgdGhlIGtleSB0byB1bnBhY2tpbmcgd2hhdCAnTkZDJyBhY3R1YWxseSByZXByZXNlbnRzIGZyb20gYSBzeXN0ZW0gYnVpbGQgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1NS4xMDAwNzUwNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODExODY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGU6MTI6XFx0XFx0bGxjcF9zb2NrLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1NS4yMTgyMDA2MjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3ODA0NjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBNb2R1bGUqKlxuXG5BbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBsbGNwX2NvcmUub2AgaXMgb25seSBidWlsdCBpZiB0aGUgYENPTkZJR19ORkNgIGtlcm5lbCBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIGdvb2QgdG8ga25vdzsgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2hvdWxkIGJlIG9uIHRoZSBgbmZjX2xsY3Bfcnhfc2tiYCBmdW5jdGlvbiwgc2luY2UgdGhhdCdzIHRoZSBvbmUgdGhhdCdzIGJlZW4gZmxhZ2dlZCBhcyBtb2RpZmllZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGl0cyBkZXRhaWxzLCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIG1pZ2h0IGJlLiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gdGFrZSBhIHdpZGVyIGxvb2suIEl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBiZWluZyBjYWxsZWQgYW5kIHRoZXJlZm9yZSBhbHNvIHdvcnRoIHBheWluZyBhdHRlbnRpb24gdG8uIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgb3IgdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIG15IGFuYWx5c2lzLiBOZWVkIHRvIGRvIGEgdGhvcm91Z2ggam9iLCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTguNDk2MjUyMTA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU2MTg3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MjE9c3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTI0LVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlxcdFxcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0ODEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYxLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1OC42NzE4Nzg2NjZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NzM1NTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqRGVlcCBEaXZlIGludG8gTkZDIExMQ1AgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzIE5GQyBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgcmVjZWl2ZSBwcm9jZXNzLiBJJ20gc2VlaW5nIGBuZmNfbGxjcF9yeF9za2JgIGFzIGEgcmVhbGx5IGtleSBmb2NhbCBwb2ludCBoZXJlLiBJdCdzIGxpa2VseSB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCBmb3IgcmVjZWl2ZWQgU2VydmljZSBLbm93bGVkZ2UgQmFzZSAoU0tCKSBwYWNrZXRzLiBUaGVuIHRoZXJlJ3MgYG5mY19sbGNwX3JlY3ZfYWdmYCB0aGF0J3MgbG9va2luZyBsaWtlIGFub3RoZXIgaW1wb3J0YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIHRoYXQgb25lLCB0b28uIE9mIGNvdXJzZSwgYG5mY19sbGNwX3J4X3dvcmtgIGp1bXBzIG91dCBhcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBJIGNhbiBpbmZlciB0aGF0IHRoaXMgcGFydCB3aWxsIGxpa2VseSBwcm9jZXNzIHRoZSByZWNlaXZlZCBkYXRhIGFzeW5jaHJvbm91c2x5LCB0byBhdm9pZCBibG9ja2luZyB0aGUgaW50ZXJydXB0IGNvbnRleHQuXG5cbkZpcnN0IG9mZiwgbGV0IG1lIGdldCBhIGdvb2QgbG9vayBhdCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGluYm91bmQgZGF0YSBzdHJlYW0gaXMgcHJvYmFibHkgd2hlcmUgSSBuZWVkIHRvIHNwZW5kIHRoZSBtYWpvcml0eSBvZiBteSB0aW1lIHJpZ2h0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjQ5OjAyLjIzOTIzNzY5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgyNDMyNzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3JlY3ZfYWdmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MTI4ND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NDAtXFx0XFx0cHJfZGVidWcoXFxcIkFHRiBmcmFtZVxcXFxuXFxcIik7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQxOlxcdFxcdG5mY19sbGNwX3JlY3ZfYWdmKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Mi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDk6MDIuNTIxNjc2NjMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjkyNTE0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMTENQIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSByZWxhdGVkIHRvIE5GQydzIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBhbmQgSSBzZWUgdGhpcyBpbnRlcmVzdGluZyBpbnRlcnBsYXkgYmV0d2VlbiBgbmZjX2xsY3Bfcnhfc2tiYCBhbmQgYG5mY19sbGNwX3JlY3ZfYWdmYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgcmVjdXJzaXZlIG9yIG11dHVhbCByZWN1cnNpb24gc2l0dWF0aW9uLCB3aGljaCBhbHdheXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gU3BlY2lmaWNhbGx5LCBgbmZjX2xsY3Bfcnhfc2tiYCBnZXRzIGNhbGxlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluLCBhbmQgaWYgdGhlIHBhY2tldCB0eXBlIChgcHR5cGVgKSBpcyBhbiBBZ2dyZWdhdGVkIEZyYW1lIChBR0YpLCB0aGVuIGBuZmNfbGxjcF9yZWN2X2FnZmAgZ2V0cyBjYWxsZWQuIE5vdywgYG5mY19sbGNwX3JlY3ZfYWdmYCwgaW4gdHVybiwgYXBwZWFycyB0byBwYXJzZSB0aGlzIEFHRiBhbmQsIGNydWNpYWxseSwgY2FsbHMgYG5mY19sbGNwX3J4X3NrYmAgYWdhaW4gZm9yIGVhY2ggaW5kaXZpZHVhbCBQRFUgY29udGFpbmVkIHdpdGhpbiB0aGF0IEFHRi4gVGhpcyBtZWFucyBgbmZjX2xsY3Bfcnhfc2tiYCBoYW5kbGVzIGEgKnNpbmdsZSogUERVOyBpZiBpdCdzIGFuIGFnZ3JlZ2F0ZWQgb25lLCBpdCBkZWxlZ2F0ZXMgdG8gYG5mY19sbGNwX3JlY3ZfYWdmYCB0byBoYW5kbGUgdGhlIGJyZWFrZG93bi5cblxuVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgKGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSkgcmV0dXJuO2ApIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhpcyBoYXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaXQgc21lbGxzIGxpa2UgYSBidWcgZml4LiBJdCB3aWxsIHByZXZlbnQgaGFuZGxpbmcgbWFsZm9ybWVkIHBhY2tldHMuIFNvLCB0aGUgcXVlc3Rpb24gaXMgd2hhdCBjb3VsZCBnbyB3cm9uZyBhbmQgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyFcblxuTm93LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3MuIEknbSBnb2luZyB0byB3YW50IGBORkNgIGVuYWJsZWQsIHByb2JhYmx5IGBORkNfTkNJYCBhcyB3ZWxsLCBidXQgaXQgaXMgd29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBORkMgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIGtlcm5lbCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0OTowNy45NTA5MzEwMTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzc2MjQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZy0yLSNcXG5uZXQvbmZjL0tjb25maWc6MzojIE5GQyBzdWJzeXN0ZW0gY29uZmlndXJhdGlvblxcbm5ldC9uZmMvS2NvbmZpZy00LSNcXG5uZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG5uZXQvbmZjL0tjb25maWc6ODpcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbm5ldC9uZmMvS2NvbmZpZy05LVxcdGRlZmF1bHQgblxcbm5ldC9uZmMvS2NvbmZpZy0xMC1cXHRoZWxwXFxubmV0L25mYy9LY29uZmlnOjExOlxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCBzdXBwb3J0IGZvciBORkMgKE5lYXIgZmllbGRcXG5uZXQvbmZjL0tjb25maWctMTItXFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBORkNcXG5uZXQvbmZjL0tjb25maWctMTktXFx0c2VsZWN0IENSQ19DQ0lUVFxcbm5ldC9uZmMvS2NvbmZpZy0yMC1cXHRzZWxlY3QgQ1JDX0lUVV9UXFxubmV0L25mYy9LY29uZmlnOjIxOlxcdHRyaXN0YXRlIFxcXCJORkMgRGlnaXRhbCBQcm90b2NvbCBzdGFjayBzdXBwb3J0XFxcIlxcbm5ldC9uZmMvS2NvbmZpZy0yMi1cXHRkZWZhdWx0IG5cXG5uZXQvbmZjL0tjb25maWctMjMtXFx0aGVscFxcbm5ldC9uZmMvS2NvbmZpZzoyNDpcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXFxubmV0L25mYy9LY29uZmlnOjI1OlxcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XFxubmV0L25mYy9LY29uZmlnOjI2OlxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxubmV0L25mYy9LY29uZmlnLTI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0OTowOC4wODQ3MDEzNDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxOTE0MDMxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBORkMgVmlydHVhbCBEcml2ZXIgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgTkZDIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gV2UncmUgbGlrZWx5IGNvbnNpZGVyaW5nIGEgdmlydHVhbCBkcml2ZXIgc2V0dXAsIGdpdmVuIHRoZSBjb250ZXh0LiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZXhpc3Rpbmcgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdmlydHVhbCBORkMgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCdzIE5GQyBzdWJzeXN0ZW0uXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgdmlydHVhbCBkcml2ZXIgYWJzdHJhY3Rpb24gZGVmaW5lZCB0aGVyZSBvciBpZiB3ZSBuZWVkIHRvIGNyYWZ0IG91ciBvd24gYmFzZWQgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIHBsYXRmb3JtLiBJdCB3aWxsIHJldmVhbCBpZiB0aGVyZSdzIGFscmVhZHkgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBlbXVsYXRlZCBORkMgZGV2aWNlcyBvciBpZiB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyBtb3JlIGJlc3Bva2UuIEkgZXhwZWN0IHRvIGJlIGRpZ2dpbmcgaW50byBkZXBlbmRlbmNpZXMgb24gb3RoZXIgcGFydHMgb2YgdGhlIE5GQyBzdGFjaywgcGVyaGFwcyBmaWd1cmluZyBvdXQgaG93IHZpcnR1YWwgZGV2aWNlcyBpbnRlcmFjdCB3aXRoIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBhY2Nlc3MgbGF5ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MTEuMjc2MTA3Nzk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ2Mjk4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZy0yLSNcXG5kcml2ZXJzL25mYy9LY29uZmlnOjM6IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcbmRyaXZlcnMvbmZjL0tjb25maWctNC0jXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NjptZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25mYy9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBORkNcXG5kcml2ZXJzL25mYy9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnOjEwOlxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXFx0aGVscFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTM6XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cycgVFJGNzk3MGFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTE0LVxcdCAgZGV2aWNlLiBTdWNoIGRldmljZSBzdXBwb3J0cyA1IGRpZmZlcmVudCBwcm90b2NvbHM6IElTTzE0NDQzQSxcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzoyMTpjb25maWcgTkZDX01FSV9QSFlcXG5kcml2ZXJzL25mYy9LY29uZmlnOjIyOlxcdHRyaXN0YXRlIFxcXCJNRUkgYnVzIE5GQyBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25mYy9LY29uZmlnOjIzOlxcdGRlcGVuZHMgb24gSU5URUxfTUVJIFxcdTAwMjZcXHUwMDI2IE5GQ19IQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTI1LVxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgdG8gdXNlIGFuIG1laSBidXMgbmZjIGRldmljZS4gU2VsZWN0IHRoaXMgaWYgeW91XFxuZHJpdmVycy9uZmMvS2NvbmZpZzoyNjpcXHQgIHdpbGwgdXNlIGFuIEhDSSBORkMgZHJpdmVyIGZvciBhbiBORkMgY2hpcCBjb25uZWN0ZWQgYmVoaW5kIGFuXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yNy1cXHQgIEludGVsJ3MgTWFuYWdlbWVudCBFbmdpbmUgY2hpcC5cXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzI6XFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXFx0aGVscFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzU6XFx0ICBUaGlzIGRyaXZlciBkZWNsYXJlcyB0d28gdmlydHVhbCBORkMgZGV2aWNlcyBzdXBwb3J0aW5nIE5GQy1ERVBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTM2LVxcdCAgcHJvdG9jb2wuIEFuIExMQ1AgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgYmV0d2VlbiB0aGVtIGFuZFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDM6XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00NC1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctNDYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MTEuNzYwNzQ0NDUzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ0NDYxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTkZDIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgTkZDX1NJTWAgYW5kIGBORkNfVklSVFVBTF9OQ0lgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhleSdyZSB2aXJ0dWFsIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEZyb20gd2hhdCBJIHNlZSBoZXJlLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIHdoaWNoIGlzIGxvZ2ljYWwuIEFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gaW5jbHVkZSBhbGwgb2YgdGhlc2U6IGBORkNgLCBgTkZDX0RJR0lUQUxgLCBgTkZDX1NJTWAsIGBORkNfTkNJYCwgYW5kIGBORkNfVklSVFVBTF9OQ0lgLiBCdXQgaG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsLiBJcyBgTkZDX05DSWAgYWN0dWFsbHkgZGVmaW5lZCBpbiBgbmV0L25mYy9LY29uZmlnYD8gSXQncyBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQsIGFuZCBhIG1pc3NpbmcgS2NvbmZpZyBlbnRyeSB3b3VsZCBiZSBhIHNpZ25pZmljYW50IGlzc3VlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoxNS40NjUxOTM5MzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQ5MzI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNfTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgKz0gaGNpL1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTQ6XFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTUtXFx0c2VsZWN0IENSQ19DQ0lUVFxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI1OlxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJOQ0kgb3ZlciBVQVJUIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS01LVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cXG4tLVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlPTEwPW5jaV9zcGkteSArPSBzcGkub1xcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORkNfTkNJX1NQSSkgKz0gbmNpX3NwaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtMTItXFxubmV0L25mYy9uY2kvTWFrZWZpbGU9MTM9bmNpX3VhcnQteSArPSB1YXJ0Lm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX05DSV9VQVJUKSArPSBuY2lfdWFydC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE1LjYyMTY5OTg4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODA2MzI3MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQ29uZmlndXJhdGlvbiBhbmQgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIGxldCdzIHN0YXJ0IGJ5IGludGVncmF0aW5nIGBORkNgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBob2xkIG9uLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBpcyBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gSSBuZWVkIHRvIGtlZXAgdGhpcyBsaXN0IGF0IHRoZSBmb3JlZnJvbnQgb2YgbXkgbWluZCBhcyBJIG1vdmUgZm9yd2FyZC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgTExDUCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gTm9wZSwgbG9va3MgbGlrZSBgbGxjcF9jb3JlLm9gIGlzIGNvcnJlY3RseSBidWlsdCBhbG9uZ3NpZGUgYENPTkZJR19ORkNgLCBzbyB0aGF0J3MgaGFuZGxlZC5cblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayBpbiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGV2ZW4gYSBjcmFzaCBzY2VuYXJpby4gSXQncyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhdHRlbnRpb24uXG5cblRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgZGVtYW5kIG15IGF0dGVudGlvbiBub3cgYXJlIGBuZmNfbGxjcF9yeF9za2JgIGFuZCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBJJ2xsIGtlZXAgdGhvc2UgaW4gZm9jdXMuIEkgYW0gbm93IGdvaW5nIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODQsIk91dHB1dFRva2VucyI6MTcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjIxLjQyODAyOTgxOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk3MTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gICAgXCJuZmNfbGxjcF9yZWN2X2FnZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9yeF9za2JcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZfYWdmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjv95m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 00:16:07 +0000 UTC FinishedAt: 2026-07-12 00:50:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "673896a9-bfee-4537-ab1e-0db12d75c215" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_rx_skb", "nfc_llcp_recv_agf" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgICAmIzM0O25mY19sbGNwX3JlY3ZfYWdmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYWVkNWZlMWFmZWYwMWUuLmUzYjMwNzdlMGU4MzQ5IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTE0ODEsNiAmIzQzOzE0ODEsOSBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHR1OCBkc2FwLCBzc2FwLCBwdHlwZTtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRwdHlwZSA9IG5mY19sbGNwX3B0eXBlKHNrYik7XG4gXHRkc2FwID0gbmZjX2xsY3BfZHNhcChza2IpO1xuIFx0c3NhcCA9IG5mY19sbGNwX3NzYXAoc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGBuZmNfbGxjcF9yeF9za2JgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBjcmFzaGVzIHdoZW4gcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTkZDIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMgKGxpa2UgTkZDX1NJTSBvciBORkNfVklSVFVBTF9OQ0kpLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGFlZDVmZTFhZmVmMDFlLi5lM2IzMDc3ZTBlODM0OSAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC0xNDgxLDYgJiM0MzsxNDgxLDkgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJdTggZHNhcCwgc3NhcCwgcHR5cGU7CiAKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgTExDUF9IRUFERVJfU0laRSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlwdHlwZSA9IG5mY19sbGNwX3B0eXBlKHNrYik7CiAJZHNhcCA9IG5mY19sbGNwX2RzYXAoc2tiKTsKIAlzc2FwID0gbmZjX2xsY3Bfc3NhcChza2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFwcGxpZWQgdG8gYG5ldC9uZmMvbGxjcF9jb3JlLmNgLiBUaGUgY29yZSBvZiBpdCwgdGhlIGJpdCBJIG5lZWQgdG8gZm9jdXMgb24sIGlzIHRoaXMgY2hlY2sgdGhleSYjMzk7dmUgYWRkZWQ6IGBpZiAoc2tiLSZndDtsZW4gJmx0OyBMTENQX0hFQURFUl9TSVpFKSByZXR1cm47YCB3aXRoaW4gYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzYWZlZ3VhcmQgYWdhaW5zdCByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYWNrZXQgYnVmZmVyLCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFzdHkuIEdvb2QgY2F0Y2gsIHJlYWxseS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgdGVsbHMgbWUsIHRoYXQgbWVhbnMgd2UgKmRlZmluaXRlbHkqIG5lZWQgdG8gZnV6eiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhhdCBjaGVjayBpcyBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBuZmNfbGxjcF9yeF9za2JgIHNpdHMgaW4gdGhlIGJyb2FkZXIgcGljdHVyZS4gU28sIGl0JiMzOTtzIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgbm8gc3VycHJpc2VzIHRoZXJlLiBOZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHdoYXQgbWlnaHQgYmUgYWZmZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0yMT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjQtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlx0XHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ4MS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzI5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMb3ctTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCBSZWNlaXZlcioqCgpPa2F5LCBzbyBJIHNlZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgY2VudHJhbCByZWNlaXZlciBmdW5jdGlvbiBoZXJlLiBJdCYjMzk7cyB0cmlnZ2VyZWQgZnJvbSB0d28gZGlzdGluY3QgcG9pbnRzOiBgbmZjX2xsY3BfcmVjdl9hZ2ZgIGFuZCBgbmZjX2xsY3Bfcnhfd29ya2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsbHkgYXN5bmNocm9ub3VzIGFuZCBzeW5jaHJvbm91cyBkYXRhIHBhdGhzLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgJiMzNDtBR0YmIzM0OyBtaWdodCBiZSBhIHNwZWNpZmljIGZsb3cgY29udHJvbCBwcm90b2NvbCwgb3IgYSBwYXJ0aWN1bGFyIHN0YXRlLgoKTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbW9yZSBnZW5lcmljIG9mIHRoZSB0d28gY2FsbCBwb2ludHMsIHRvIGdldCB0aGUgY2xlYXJlc3Qgb3ZlcnZpZXcuIExldCYjMzk7cyBzdGFydCB3aXRoIGBuZmNfbGxjcF9yeF93b3JrYCB0byB1bmRlcnN0YW5kIHRoZSBtb3JlIGdlbmVyYWwgcHJvY2Vzcy4gVGhpcyBvbmUgaXMgbW9yZSBsaWtlbHkgdG8gZ2l2ZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSByZWNlaXZlZCBkYXRhIGdldHMgaGFuZGxlZC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O2xsIHJldmVhbCB0aGUgY29tbW9uIHRocmVhZCB0aGF0IGludGVncmF0ZXMgYm90aCBmbG93cyBhbmQgaW5mb3JtcyBob3cgdGhleSBhcmUgc3Vic2VxdWVudGx5IHByb2Nlc3NlZCBieSB0aGUgcHJpbWFyeSBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9yeF93b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0xNDgwPXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0NS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU0NjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Ny17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjQ5PWludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjc1LVx0bG9jYWwtXHUwMDNlcnhfcGVuZGluZyA9IE5VTEw7XG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NzY6XHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKk5GQyBMTENQIENvbmZpZ3VyYXRpb24gRGl2ZSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgTGluayBMYXllciBDb250cm9sIFByb3RvY29sIChMTENQKSBpcyBjb3JyZWN0bHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBLY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZSByZWxldmFudCBvcHRpb25zIGFyZSBlbmFibGVkIGFuZCBzZXQgYXBwcm9wcmlhdGVseSBmb3IgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBzdGFjayBJJiMzOTttIHdvcmtpbmcgd2l0aC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhleSYjMzk7cmUgYWxsIG1ldC4gSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgdGhlIExMQ1AgcGFyYW1ldGVycyBtYXAgdG8gdGhlIHVuZGVybHlpbmcgTkZDIGNvbnRyb2xsZXLigJlzIGNhcGFiaWxpdGllcyBhbmQgdGhlIHVwcGVyLWxheWVyIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4gQW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBjb21tdW5pY2F0aW9uIHByb3RvY29scyBvciBwb3dlciBtYW5hZ2VtZW50IHNldHRpbmdzIGFyZSB0b3Agb2YgbWluZCwgdG9vLiBJIG5lZWQgdG8gYmUgc3VyZSBldmVyeXRoaW5nIGlzIGFsaWduZWQgZm9yIGEgc21vb3RoIGltcGxlbWVudGF0aW9uLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yICYjMzQ7TExDUCYjMzQ7IGFuZCAmIzM0O05GQyYjMzQ7IHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlcywgYW5kIHRoZW4gdHJhY2UgZnJvbSB0aGVyZSB0byBzZWUgYWxsIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsbHkgZW5hYmxlIG5lZWRlZCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GQ19MTENQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX3NvY2suYz01Mz1zdGF0aWMgc3RydWN0IHByb3RvIGxsY3Bfc29ja19wcm90byA9IHtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NTQ6XHQubmFtZSAgICAgPSBcJiMzNDtORkNfTExDUFwmIzM0Oyxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNTUtXHQub3duZXIgICAgPSBUSElTX01PRFVMRSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTU5PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsIGludCBhbGVuKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1LVx0XHRcdFx0XHQgICAgbGxjcF9hZGRyLnNlcnZpY2VfbmFtZV9sZW4sXG5uZXQvbmZjL2xsY3Bfc29jay5jOjEwNjpcdFx0XHRcdFx0ICAgIE5GQ19MTENQX01BWF9TRVJWSUNFX05BTUUpO1xubmV0L25mYy9sbGNwX3NvY2suYy0xMDctXHRsbGNwX3NvY2stXHUwMDNlc2VydmljZV9uYW1lID0ga21lbWR1cChsbGNwX2FkZHIuc2VydmljZV9uYW1lLFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9MjMxPXN0YXRpYyBpbnQgbmZjX2xsY3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMjQ2LVx0c3dpdGNoIChvcHRuYW1lKSB7XG5uZXQvbmZjL2xsY3Bfc29jay5jOjI0NzpcdGNhc2UgTkZDX0xMQ1BfUlc6XG5uZXQvbmZjL2xsY3Bfc29jay5jLTI0OC1cdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ09OTkVDVEVEIHx8XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0yNjgtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjI2OTpcdGNhc2UgTkZDX0xMQ1BfTUlVWDpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMjcwLVx0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgPT0gTExDUF9DT05ORUNURUQgfHxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTMzOC1cdHN3aXRjaCAob3B0bmFtZSkge1xubmV0L25mYy9sbGNwX3NvY2suYzozMzk6XHRjYXNlIE5GQ19MTENQX1JXOlxubmV0L25mYy9sbGNwX3NvY2suYy0zNDAtXHRcdHJ3ID0gbGxjcF9zb2NrLVx1MDAzZXJ3IFx1MDAzZSBMTENQX01BWF9SVyA/IGxvY2FsLVx1MDAzZXJ3IDogbGxjcF9zb2NrLVx1MDAzZXJ3O1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQ1LVxubmV0L25mYy9sbGNwX3NvY2suYzozNDY6XHRjYXNlIE5GQ19MTENQX01JVVg6XG5uZXQvbmZjL2xsY3Bfc29jay5jLTM0Ny1cdFx0bWl1eCA9IGJlMTZfdG9fY3B1KGxsY3Bfc29jay1cdTAwM2VtaXV4KSBcdTAwM2UgTExDUF9NQVhfTUlVWCA/XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0zNTQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjM1NTpcdGNhc2UgTkZDX0xMQ1BfUkVNT1RFX01JVTpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzU2LVx0XHRyZW1vdGVfbWl1ID0gbGxjcF9zb2NrLVx1MDAzZXJlbW90ZV9taXUgXHUwMDNlIExMQ1BfTUFYX01JVSA/XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0zNjMtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjM2NDpcdGNhc2UgTkZDX0xMQ1BfUkVNT1RFX0xUTzpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY1LVx0XHRpZiAocHV0X3VzZXIobG9jYWwtXHUwMDNlcmVtb3RlX2x0byAvIDEwLCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY5LVxubmV0L25mYy9sbGNwX3NvY2suYzozNzA6XHRjYXNlIE5GQ19MTENQX1JFTU9URV9SVzpcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzcxLVx0XHRpZiAocHV0X3VzZXIobGxjcF9zb2NrLVx1MDAzZXJlbW90ZV9ydywgKHUzMiBfX3VzZXIgKikgb3B0dmFsKSlcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTY2MT1zdGF0aWMgaW50IGxsY3Bfc29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICpfYWRkcixcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNS1cdFx0XHRcdFx0ICAgIGFkZHItXHUwMDNlc2VydmljZV9uYW1lX2xlbixcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NzM2Olx0XHRcdFx0XHQgICAgTkZDX0xMQ1BfTUFYX1NFUlZJQ0VfTkFNRSk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNy1cdGxsY3Bfc29jay1cdTAwM2VzZXJ2aWNlX25hbWUgPSBrbWVtZHVwKGFkZHItXHUwMDNlc2VydmljZV9uYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGludG8gdGhlIE5GQyBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCB3aGljaCBvbmVzIGFyZSBjb25kaXRpb25hbCwgYW5kIGhvdyB0aGV5JiMzOTtyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoYXQgcGFydGljdWxhciBLY29uZmlnIGZpbGUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgYW5kIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGhpZGluZyBpbiB0aGVyZS4gSG9wZWZ1bGx5IGl0JiMzOTtzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE5GQyBzdGFjayBhbmQgaG93IHRvIHR3ZWFrIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnLTItI1xubmV0L25mYy9LY29uZmlnOjM6IyBORkMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cbm5ldC9uZmMvS2NvbmZpZy00LSNcbm5ldC9uZmMvS2NvbmZpZy01LVxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcbm5ldC9uZmMvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxubmV0L25mYy9LY29uZmlnOjg6XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbm5ldC9uZmMvS2NvbmZpZy05LVx0ZGVmYXVsdCBuXG5uZXQvbmZjL0tjb25maWctMTAtXHRoZWxwXG5uZXQvbmZjL0tjb25maWc6MTE6XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXG5uZXQvbmZjL0tjb25maWctMTItXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnOjE4Olx0ZGVwZW5kcyBvbiBORkNcbm5ldC9uZmMvS2NvbmZpZy0xOS1cdHNlbGVjdCBDUkNfQ0NJVFRcbm5ldC9uZmMvS2NvbmZpZy0yMC1cdHNlbGVjdCBDUkNfSVRVX1Rcbm5ldC9uZmMvS2NvbmZpZzoyMTpcdHRyaXN0YXRlIFwmIzM0O05GQyBEaWdpdGFsIFByb3RvY29sIHN0YWNrIHN1cHBvcnRcJiMzNDtcbm5ldC9uZmMvS2NvbmZpZy0yMi1cdGRlZmF1bHQgblxubmV0L25mYy9LY29uZmlnLTIzLVx0aGVscFxubmV0L25mYy9LY29uZmlnOjI0Olx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxubmV0L25mYy9LY29uZmlnOjI1Olx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcbm5ldC9uZmMvS2NvbmZpZzoyNjpcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXG5uZXQvbmZjL0tjb25maWctMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBzZXQgdG8gYE5GQ2AuIFRoYXQmIzM5O3Mgbm90IG11Y2ggaW5mb3JtYXRpb24gdG8gZ28gb24sIGlzIGl0PyBUbyByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoYXQgbWVhbnMgaW4gdGhpcyBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGBORkNgIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBuZXQvbmZjL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IGRlcGVuZGVuY2llcywgaW5jbHVkZWQgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpZmljIGNvbXBpbGVyIGZsYWdzIG9yIGJ1aWxkIHJ1bGVzIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgYE5GQ2AgY29uZmlndXJhdGlvbi4gVGhpcyBNYWtlZmlsZSBpcyB0aGUga2V5IHRvIHVucGFja2luZyB3aGF0ICYjMzk7TkZDJiMzOTsgYWN0dWFsbHkgcmVwcmVzZW50cyBmcm9tIGEgc3lzdGVtIGJ1aWxkIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xubmV0L25mYy9NYWtlZmlsZS0xMC1cbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG5uZXQvbmZjL01ha2VmaWxlOjEyOlx0XHRsbGNwX3NvY2sub1xubmV0L25mYy9NYWtlZmlsZS0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgTW9kdWxlKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGxsY3BfY29yZS5vYCBpcyBvbmx5IGJ1aWx0IGlmIHRoZSBgQ09ORklHX05GQ2Aga2VybmVsIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdzsgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2hvdWxkIGJlIG9uIHRoZSBgbmZjX2xsY3Bfcnhfc2tiYCBmdW5jdGlvbiwgc2luY2UgdGhhdCYjMzk7cyB0aGUgb25lIHRoYXQmIzM5O3MgYmVlbiBmbGFnZ2VkIGFzIG1vZGlmaWVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGl0cyBkZXRhaWxzLCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIG1pZ2h0IGJlLiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gdGFrZSBhIHdpZGVyIGxvb2suIEl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBiZWluZyBjYWxsZWQgYW5kIHRoZXJlZm9yZSBhbHNvIHdvcnRoIHBheWluZyBhdHRlbnRpb24gdG8uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkIG9yIHRoYXQgSSBzaG91bGQgaW5jbHVkZSBpbiBteSBhbmFseXNpcy4gTmVlZCB0byBkbyBhIHRob3JvdWdoIGpvYiwgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3Bfcnhfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9sbGNwX2NvcmUuYz0yMT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjQtXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlx0XHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ4MS17XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlZXAgRGl2ZSBpbnRvIE5GQyBMTENQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIE5GQyBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgcmVjZWl2ZSBwcm9jZXNzLiBJJiMzOTttIHNlZWluZyBgbmZjX2xsY3Bfcnhfc2tiYCBhcyBhIHJlYWxseSBrZXkgZm9jYWwgcG9pbnQgaGVyZS4gSXQmIzM5O3MgbGlrZWx5IHRoZSBpbml0aWFsIGVudHJ5IHBvaW50IGZvciByZWNlaXZlZCBTZXJ2aWNlIEtub3dsZWRnZSBCYXNlIChTS0IpIHBhY2tldHMuIFRoZW4gdGhlcmUmIzM5O3MgYG5mY19sbGNwX3JlY3ZfYWdmYCB0aGF0JiMzOTtzIGxvb2tpbmcgbGlrZSBhbm90aGVyIGltcG9ydGFudCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aGF0IG9uZSwgdG9vLiBPZiBjb3Vyc2UsIGBuZmNfbGxjcF9yeF93b3JrYCBqdW1wcyBvdXQgYXMgYSB3b3JrcXVldWUgaGFuZGxlci4gSSBjYW4gaW5mZXIgdGhhdCB0aGlzIHBhcnQgd2lsbCBsaWtlbHkgcHJvY2VzcyB0aGUgcmVjZWl2ZWQgZGF0YSBhc3luY2hyb25vdXNseSwgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIGludGVycnVwdCBjb250ZXh0LgoKRmlyc3Qgb2ZmLCBsZXQgbWUgZ2V0IGEgZ29vZCBsb29rIGF0IGBuZmNfbGxjcF9yZWN2X2FnZmAuIFVuZGVyc3RhbmRpbmcgaG93IHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgaW5ib3VuZCBkYXRhIHN0cmVhbSBpcyBwcm9iYWJseSB3aGVyZSBJIG5lZWQgdG8gc3BlbmQgdGhlIG1ham9yaXR5IG9mIG15IHRpbWUgcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9jb3JlLmM9MTI4ND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM3LXtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTQwLVx0XHRwcl9kZWJ1ZyhcJiMzNDtBR0YgZnJhbWVcXG5cJiMzNDspO1xubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQxOlx0XHRuZmNfbGxjcF9yZWN2X2FnZihsb2NhbCwgc2tiKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Mi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTENQIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHJlbGF0ZWQgdG8gTkZDJiMzOTtzIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBhbmQgSSBzZWUgdGhpcyBpbnRlcmVzdGluZyBpbnRlcnBsYXkgYmV0d2VlbiBgbmZjX2xsY3Bfcnhfc2tiYCBhbmQgYG5mY19sbGNwX3JlY3ZfYWdmYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgcmVjdXJzaXZlIG9yIG11dHVhbCByZWN1cnNpb24gc2l0dWF0aW9uLCB3aGljaCBhbHdheXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gU3BlY2lmaWNhbGx5LCBgbmZjX2xsY3Bfcnhfc2tiYCBnZXRzIGNhbGxlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluLCBhbmQgaWYgdGhlIHBhY2tldCB0eXBlIChgcHR5cGVgKSBpcyBhbiBBZ2dyZWdhdGVkIEZyYW1lIChBR0YpLCB0aGVuIGBuZmNfbGxjcF9yZWN2X2FnZmAgZ2V0cyBjYWxsZWQuIE5vdywgYG5mY19sbGNwX3JlY3ZfYWdmYCwgaW4gdHVybiwgYXBwZWFycyB0byBwYXJzZSB0aGlzIEFHRiBhbmQsIGNydWNpYWxseSwgY2FsbHMgYG5mY19sbGNwX3J4X3NrYmAgYWdhaW4gZm9yIGVhY2ggaW5kaXZpZHVhbCBQRFUgY29udGFpbmVkIHdpdGhpbiB0aGF0IEFHRi4gVGhpcyBtZWFucyBgbmZjX2xsY3Bfcnhfc2tiYCBoYW5kbGVzIGEgKnNpbmdsZSogUERVOyBpZiBpdCYjMzk7cyBhbiBhZ2dyZWdhdGVkIG9uZSwgaXQgZGVsZWdhdGVzIHRvIGBuZmNfbGxjcF9yZWN2X2FnZmAgdG8gaGFuZGxlIHRoZSBicmVha2Rvd24uCgpUaGlzIHBhdGNoIGlzIGFkZGluZyBhIGxlbmd0aCBjaGVjayAoYGlmIChza2ItJmd0O2xlbiAmbHQ7IExMQ1BfSEVBREVSX1NJWkUpIHJldHVybjtgKSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaGFzIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGl0IHNtZWxscyBsaWtlIGEgYnVnIGZpeC4gSXQgd2lsbCBwcmV2ZW50IGhhbmRsaW5nIG1hbGZvcm1lZCBwYWNrZXRzLiBTbywgdGhlIHF1ZXN0aW9uIGlzIHdoYXQgY291bGQgZ28gd3JvbmcgYW5kIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmchCgpOb3csIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcmVsZXZhbnQgY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byB3YW50IGBORkNgIGVuYWJsZWQsIHByb2JhYmx5IGBORkNfTkNJYCBhcyB3ZWxsLCBidXQgaXQgaXMgd29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBORkMgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIGtlcm5lbCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZy0yLSNcbm5ldC9uZmMvS2NvbmZpZzozOiMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG5uZXQvbmZjL0tjb25maWctNC0jXG5uZXQvbmZjL0tjb25maWctNS1cbm5ldC9uZmMvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZDXG5uZXQvbmZjL0tjb25maWctNy1cdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbm5ldC9uZmMvS2NvbmZpZzo4Olx0dHJpc3RhdGUgXCYjMzQ7TkZDIHN1YnN5c3RlbSBzdXBwb3J0XCYjMzQ7XG5uZXQvbmZjL0tjb25maWctOS1cdGRlZmF1bHQgblxubmV0L25mYy9LY29uZmlnLTEwLVx0aGVscFxubmV0L25mYy9LY29uZmlnOjExOlx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxubmV0L25mYy9LY29uZmlnLTEyLVx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuLS1cbm5ldC9uZmMvS2NvbmZpZy0xNi1cbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcbm5ldC9uZmMvS2NvbmZpZzoxODpcdGRlcGVuZHMgb24gTkZDXG5uZXQvbmZjL0tjb25maWctMTktXHRzZWxlY3QgQ1JDX0NDSVRUXG5uZXQvbmZjL0tjb25maWctMjAtXHRzZWxlY3QgQ1JDX0lUVV9UXG5uZXQvbmZjL0tjb25maWc6MjE6XHR0cmlzdGF0ZSBcJiMzNDtORkMgRGlnaXRhbCBQcm90b2NvbCBzdGFjayBzdXBwb3J0XCYjMzQ7XG5uZXQvbmZjL0tjb25maWctMjItXHRkZWZhdWx0IG5cbm5ldC9uZmMvS2NvbmZpZy0yMy1cdGhlbHBcbm5ldC9uZmMvS2NvbmZpZzoyNDpcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gYnVpbGQgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2sgc3VwcG9ydC5cbm5ldC9uZmMvS2NvbmZpZzoyNTpcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XG5uZXQvbmZjL0tjb25maWc6MjY6XHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxubmV0L25mYy9LY29uZmlnLTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDQwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE5GQyBWaXJ0dWFsIERyaXZlciBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIE5GQyBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgZHJpdmVycy9uZmMvS2NvbmZpZ2AuIFdlJiMzOTtyZSBsaWtlbHkgY29uc2lkZXJpbmcgYSB2aXJ0dWFsIGRyaXZlciBzZXR1cCwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBleGlzdGluZyBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB2aXJ0dWFsIE5GQyBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIE5GQyBzdWJzeXN0ZW0uCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbiBleGlzdGluZyB2aXJ0dWFsIGRyaXZlciBhYnN0cmFjdGlvbiBkZWZpbmVkIHRoZXJlIG9yIGlmIHdlIG5lZWQgdG8gY3JhZnQgb3VyIG93biBiYXNlZCBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgcGxhdGZvcm0uIEl0IHdpbGwgcmV2ZWFsIGlmIHRoZXJlJiMzOTtzIGFscmVhZHkgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBlbXVsYXRlZCBORkMgZGV2aWNlcyBvciBpZiB3ZSYjMzk7cmUgbG9va2luZyBhdCBzb21ldGhpbmcgbW9yZSBiZXNwb2tlLiBJIGV4cGVjdCB0byBiZSBkaWdnaW5nIGludG8gZGVwZW5kZW5jaWVzIG9uIG90aGVyIHBhcnRzIG9mIHRoZSBORkMgc3RhY2ssIHBlcmhhcHMgZmlndXJpbmcgb3V0IGhvdyB2aXJ0dWFsIGRldmljZXMgaW50ZXJhY3Qgd2l0aCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYWNjZXNzIGxheWVyLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnLTItI1xuZHJpdmVycy9uZmMvS2NvbmZpZzozOiMgTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIGRldmljZXNcbmRyaXZlcnMvbmZjL0tjb25maWctNC0jXG5kcml2ZXJzL25mYy9LY29uZmlnLTUtXG5kcml2ZXJzL25mYy9LY29uZmlnOjY6bWVudSBcJiMzNDtOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1wmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBORkNcbmRyaXZlcnMvbmZjL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL0tjb25maWc6OTpjb25maWcgTkZDX1RSRjc5NzBBXG5kcml2ZXJzL25mYy9LY29uZmlnOjEwOlx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTCBcdTAwMjZcdTAwMjYgR1BJT0xJQlxuZHJpdmVycy9uZmMvS2NvbmZpZy0xMi1cdGhlbHBcbmRyaXZlcnMvbmZjL0tjb25maWc6MTM6XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIE5GQyBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzJiMzOTsgVFJGNzk3MGFcbmRyaXZlcnMvbmZjL0tjb25maWctMTQtXHQgIGRldmljZS4gU3VjaCBkZXZpY2Ugc3VwcG9ydHMgNSBkaWZmZXJlbnQgcHJvdG9jb2xzOiBJU08xNDQ0M0EsXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXG5kcml2ZXJzL25mYy9LY29uZmlnOjIyOlx0dHJpc3RhdGUgXCYjMzQ7TUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6MjM6XHRkZXBlbmRzIG9uIElOVEVMX01FSSBcdTAwMjZcdTAwMjYgTkZDX0hDSVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yNC1cdGhlbHBcbmRyaXZlcnMvbmZjL0tjb25maWctMjUtXHQgIFRoaXMgYWRkcyBzdXBwb3J0IHRvIHVzZSBhbiBtZWkgYnVzIG5mYyBkZXZpY2UuIFNlbGVjdCB0aGlzIGlmIHlvdVxuZHJpdmVycy9uZmMvS2NvbmZpZzoyNjpcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cbmRyaXZlcnMvbmZjL0tjb25maWctMjctXHQgIEludGVsJiMzOTtzIE1hbmFnZW1lbnQgRW5naW5lIGNoaXAuXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzI6XHR0cmlzdGF0ZSBcJiMzNDtORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvS2NvbmZpZzozMzpcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXHRoZWxwXG5kcml2ZXJzL25mYy9LY29uZmlnOjM1Olx0ICBUaGlzIGRyaXZlciBkZWNsYXJlcyB0d28gdmlydHVhbCBORkMgZGV2aWNlcyBzdXBwb3J0aW5nIE5GQy1ERVBcbmRyaXZlcnMvbmZjL0tjb25maWctMzYtXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcbmRyaXZlcnMvbmZjL0tjb25maWc6NDM6XHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25mYy9LY29uZmlnLTQ0LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmZjL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG5kcml2ZXJzL25mYy9LY29uZmlnLTQ2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTUtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwODMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBORkMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBORkNfU0lNYCBhbmQgYE5GQ19WSVJUVUFMX05DSWAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGV5JiMzOTtyZSB2aXJ0dWFsIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEZyb20gd2hhdCBJIHNlZSBoZXJlLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIHdoaWNoIGlzIGxvZ2ljYWwuIEFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGluY2x1ZGUgYWxsIG9mIHRoZXNlOiBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gQnV0IGhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgY3J1Y2lhbC4gSXMgYE5GQ19OQ0lgIGFjdHVhbGx5IGRlZmluZWQgaW4gYG5ldC9uZmMvS2NvbmZpZ2A/IEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBhcHBhcmVudCwgYW5kIGEgbWlzc2luZyBLY29uZmlnIGVudHJ5IHdvdWxkIGJlIGEgc2lnbmlmaWNhbnQgaXNzdWUgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnOjE0Olx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTUtXHRzZWxlY3QgQ1JDX0NDSVRUXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG5uZXQvbmZjL25jaS9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7TkNJIG92ZXIgVUFSVCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25mYy9uY2kvTWFrZWZpbGUtNS1cbm5ldC9uZmMvbmNpL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05GQ19OQ0kpICYjNDM7PSBuY2kub1xubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cbi0tXG5uZXQvbmZjL25jaS9NYWtlZmlsZT0xMD1uY2lfc3BpLXkgJiM0Mzs9IHNwaS5vXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkZDX05DSV9TUEkpICYjNDM7PSBuY2lfc3BpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTEyLVxubmV0L25mYy9uY2kvTWFrZWZpbGU9MTM9bmNpX3VhcnQteSAmIzQzOz0gdWFydC5vXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX05DSV9VQVJUKSAmIzQzOz0gbmNpX3VhcnQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg0CgkJCQkJCQlvdXRwdXQ6IDE3MQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IENvbmZpZ3VyYXRpb24gYW5kIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGludGVncmF0aW5nIGBORkNgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBob2xkIG9uLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBpcyBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gSSBuZWVkIHRvIGtlZXAgdGhpcyBsaXN0IGF0IHRoZSBmb3JlZnJvbnQgb2YgbXkgbWluZCBhcyBJIG1vdmUgZm9yd2FyZC4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCBMTENQIGNvbmZpZ3VyYXRpb25zIGx1cmtpbmcgYXJvdW5kLiBOb3BlLCBsb29rcyBsaWtlIGBsbGNwX2NvcmUub2AgaXMgY29ycmVjdGx5IGJ1aWx0IGFsb25nc2lkZSBgQ09ORklHX05GQ2AsIHNvIHRoYXQmIzM5O3MgaGFuZGxlZC4KClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBsZW5ndGggY2hlY2sgaW4gYG5mY19sbGNwX3J4X3NrYmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBmaXggZm9yIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZCBvciBldmVuIGEgY3Jhc2ggc2NlbmFyaW8uIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBmdXp6aW5nIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgZGVtYW5kIG15IGF0dGVudGlvbiBub3cgYXJlIGBuZmNfbGxjcF9yeF9za2JgIGFuZCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBJJiMzOTtsbCBrZWVwIHRob3NlIGluIGZvY3VzLiBJIGFtIG5vdyBnb2luZyB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9yeF9za2ImIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfcmVjdl9hZ2YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX3J4X3NrYiYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9yZWN2X2FnZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGBuZmNfbGxjcF9yeF9za2JgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciBjcmFzaGVzIHdoZW4gcHJvY2Vzc2luZyBORkMgTExDUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTkZDIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgTkZDIGRldmljZXMgKGxpa2UgTkZDX1NJTSBvciBORkNfVklSVFVBTF9OQ0kpLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC4yOTM0MzIyMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMzOTY1OTUwMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gICAgXCJuZmNfbGxjcF9yZWN2X2FnZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6MzguMjkzNDQyMzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTIxNDIwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMWYwYWRhOTMzMTUxYWU1MThkMjI0NDljOWFkMTQ1NzAyZTY1MDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjQ4OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuaW5kZXggYWVkNWZlMWFmZWYwMWUuLmUzYjMwNzdlMGU4MzQ5IDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuQEAgLTE0ODEsNiArMTQ4MSw5IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHU4IGRzYXAsIHNzYXAsIHB0eXBlO1xcbiBcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0cHR5cGUgPSBuZmNfbGxjcF9wdHlwZShza2IpO1xcbiBcXHRkc2FwID0gbmZjX2xsY3BfZHNhcChza2IpO1xcbiBcXHRzc2FwID0gbmZjX2xsY3Bfc3NhcChza2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC45MDY1MzE5NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjc4MzQ3Njg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9yeF9za2JcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZfYWdmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxZjBhZGE5MzMxNTFhZTUxOGQyMjQ0OWM5YWQxNDU3MDJlNjUwNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwMDo0ODozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBhZWQ1ZmUxYWZlZjAxZS4uZTNiMzA3N2UwZTgzNDkgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3BfY29yZS5jXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5AQCAtMTQ4MSw2ICsxNDgxLDkgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0dTggZHNhcCwgc3NhcCwgcHR5cGU7XG4gXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0cHR5cGUgPSBuZmNfbGxjcF9wdHlwZShza2IpO1xuIFx0ZHNhcCA9IG5mY19sbGNwX2RzYXAoc2tiKTtcbiBcdHNzYXAgPSBuZmNfbGxjcF9zc2FwKHNrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODozOC45MDY1MzQyODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY3ODU5MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhcHBsaWVkIHRvIGBuZXQvbmZjL2xsY3BfY29yZS5jYC4gVGhlIGNvcmUgb2YgaXQsIHRoZSBiaXQgSSBuZWVkIHRvIGZvY3VzIG9uLCBpcyB0aGlzIGNoZWNrIHRoZXkndmUgYWRkZWQ6IGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSkgcmV0dXJuO2Agd2l0aGluIGBuZmNfbGxjcF9yeF9za2JgLiBUaGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzYWZlZ3VhcmQgYWdhaW5zdCByZWFkaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwYWNrZXQgYnVmZmVyLCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFzdHkuIEdvb2QgY2F0Y2gsIHJlYWxseS4gTXkgaW5zdGluY3QgaW1tZWRpYXRlbHkgdGVsbHMgbWUsIHRoYXQgbWVhbnMgd2UgKmRlZmluaXRlbHkqIG5lZWQgdG8gZnV6eiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhhdCBjaGVjayBpcyBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgbmZjX2xsY3Bfcnhfc2tiYCBzaXRzIGluIHRoZSBicm9hZGVyIHBpY3R1cmUuIFNvLCBpdCdzIGluIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgbm8gc3VycHJpc2VzIHRoZXJlLiBOZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHdoYXQgbWlnaHQgYmUgYWZmZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo0Mi41NzQzOTcxODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTAzNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3J4X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTIxPXN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjItXFxubmV0L25mYy9sbGNwX2NvcmUuYzoyMzpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yNC1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTQzNj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDcxLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ3MjpcXHRcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIG5ld19za2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3My1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQ3OS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE0ODA6c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDgxLXtcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTU0Nj1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2MS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE1NjI6XFx0bmZjX2xsY3Bfcnhfc2tiKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU2My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDIuNzQyMzA5ODZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1MDU2MzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG93LUxldmVsIENvbW11bmljYXRpb24gUHJvdG9jb2wgUmVjZWl2ZXIqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgbmZjX2xsY3Bfcnhfc2tiYCBpcyB0aGUgY2VudHJhbCByZWNlaXZlciBmdW5jdGlvbiBoZXJlLiBJdCdzIHRyaWdnZXJlZCBmcm9tIHR3byBkaXN0aW5jdCBwb2ludHM6IGBuZmNfbGxjcF9yZWN2X2FnZmAgYW5kIGBuZmNfbGxjcF9yeF93b3JrYC4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGFzeW5jaHJvbm91cyBhbmQgc3luY2hyb25vdXMgZGF0YSBwYXRocy4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIFwiQUdGXCIgbWlnaHQgYmUgYSBzcGVjaWZpYyBmbG93IGNvbnRyb2wgcHJvdG9jb2wsIG9yIGEgcGFydGljdWxhciBzdGF0ZS5cblxuTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgbW9yZSBnZW5lcmljIG9mIHRoZSB0d28gY2FsbCBwb2ludHMsIHRvIGdldCB0aGUgY2xlYXJlc3Qgb3ZlcnZpZXcuIExldCdzIHN0YXJ0IHdpdGggYG5mY19sbGNwX3J4X3dvcmtgIHRvIHVuZGVyc3RhbmQgdGhlIG1vcmUgZ2VuZXJhbCBwcm9jZXNzLiBUaGlzIG9uZSBpcyBtb3JlIGxpa2VseSB0byBnaXZlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHJlY2VpdmVkIGRhdGEgZ2V0cyBoYW5kbGVkLiBJJ20gaG9waW5nIGl0J2xsIHJldmVhbCB0aGUgY29tbW9uIHRocmVhZCB0aGF0IGludGVncmF0ZXMgYm90aCBmbG93cyBhbmQgaW5mb3JtcyBob3cgdGhleSBhcmUgc3Vic2VxdWVudGx5IHByb2Nlc3NlZCBieSB0aGUgcHJpbWFyeSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcyOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjQ4OjQ1LjkyNzM3MTQ4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDQ0NDgwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfcnhfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NDUtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQ2OnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Ny17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NDk9aW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3NS1cXHRsb2NhbC1cXHUwMDNlcnhfcGVuZGluZyA9IE5VTEw7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjc2OlxcdElOSVRfV09SSyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY3Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDYuMzMxODI2MDEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1OTg5MDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqTkZDIExMQ1AgQ29uZmlndXJhdGlvbiBEaXZlKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgTGluayBMYXllciBDb250cm9sIFByb3RvY29sIChMTENQKSBpcyBjb3JyZWN0bHkgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBLY29uZmlnLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIHJlbGV2YW50IG9wdGlvbnMgYXJlIGVuYWJsZWQgYW5kIHNldCBhcHByb3ByaWF0ZWx5IGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHN0YWNrIEknbSB3b3JraW5nIHdpdGguIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBhbnkgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhleSdyZSBhbGwgbWV0LiBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IHRoZSBMTENQIHBhcmFtZXRlcnMgbWFwIHRvIHRoZSB1bmRlcmx5aW5nIE5GQyBjb250cm9sbGVy4oCZcyBjYXBhYmlsaXRpZXMgYW5kIHRoZSB1cHBlci1sYXllciBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuIEFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgb3IgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncyBhcmUgdG9wIG9mIG1pbmQsIHRvby4gSSBuZWVkIHRvIGJlIHN1cmUgZXZlcnl0aGluZyBpcyBhbGlnbmVkIGZvciBhIHNtb290aCBpbXBsZW1lbnRhdGlvbi4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgXCJMTENQXCIgYW5kIFwiTkZDXCIgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzLCBhbmQgdGhlbiB0cmFjZSBmcm9tIHRoZXJlIHRvIHNlZSBhbGwgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWxseSBlbmFibGUgbmVlZGVkIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo0OS4xOTE3MTkwMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNTk3ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GQ19MTENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmM9NTM9c3RhdGljIHN0cnVjdCBwcm90byBsbGNwX3NvY2tfcHJvdG8gPSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzo1NDpcXHQubmFtZSAgICAgPSBcXFwiTkZDX0xMQ1BcXFwiLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNTUtXFx0Lm93bmVyICAgID0gVEhJU19NT0RVTEUsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTU5PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsIGludCBhbGVuKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDUtXFx0XFx0XFx0XFx0XFx0ICAgIGxsY3BfYWRkci5zZXJ2aWNlX25hbWVfbGVuLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA2OlxcdFxcdFxcdFxcdFxcdCAgICBORkNfTExDUF9NQVhfU0VSVklDRV9OQU1FKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNy1cXHRsbGNwX3NvY2stXFx1MDAzZXNlcnZpY2VfbmFtZSA9IGttZW1kdXAobGxjcF9hZGRyLnNlcnZpY2VfbmFtZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9MjMxPXN0YXRpYyBpbnQgbmZjX2xsY3Bfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0yNDYtXFx0c3dpdGNoIChvcHRuYW1lKSB7XFxubmV0L25mYy9sbGNwX3NvY2suYzoyNDc6XFx0Y2FzZSBORkNfTExDUF9SVzpcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTI0OC1cXHRcXHRpZiAoc2stXFx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ09OTkVDVEVEIHx8XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTI2OC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjI2OTpcXHRjYXNlIE5GQ19MTENQX01JVVg6XFxubmV0L25mYy9sbGNwX3NvY2suYy0yNzAtXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBMTENQX0NPTk5FQ1RFRCB8fFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz0zMDQ9c3RhdGljIGludCBuZmNfbGxjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTMzOC1cXHRzd2l0Y2ggKG9wdG5hbWUpIHtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjMzOTpcXHRjYXNlIE5GQ19MTENQX1JXOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQwLVxcdFxcdHJ3ID0gbGxjcF9zb2NrLVxcdTAwM2VydyBcXHUwMDNlIExMQ1BfTUFYX1JXID8gbG9jYWwtXFx1MDAzZXJ3IDogbGxjcF9zb2NrLVxcdTAwM2VydztcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzQ1LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MzQ2OlxcdGNhc2UgTkZDX0xMQ1BfTUlVWDpcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM0Ny1cXHRcXHRtaXV4ID0gYmUxNl90b19jcHUobGxjcF9zb2NrLVxcdTAwM2VtaXV4KSBcXHUwMDNlIExMQ1BfTUFYX01JVVggP1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNTQtXFxubmV0L25mYy9sbGNwX3NvY2suYzozNTU6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfTUlVOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzU2LVxcdFxcdHJlbW90ZV9taXUgPSBsbGNwX3NvY2stXFx1MDAzZXJlbW90ZV9taXUgXFx1MDAzZSBMTENQX01BWF9NSVUgP1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNjMtXFxubmV0L25mYy9sbGNwX3NvY2suYzozNjQ6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfTFRPOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzY1LVxcdFxcdGlmIChwdXRfdXNlcihsb2NhbC1cXHUwMDNlcmVtb3RlX2x0byAvIDEwLCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0zNjktXFxubmV0L25mYy9sbGNwX3NvY2suYzozNzA6XFx0Y2FzZSBORkNfTExDUF9SRU1PVEVfUlc6XFxubmV0L25mYy9sbGNwX3NvY2suYy0zNzEtXFx0XFx0aWYgKHB1dF91c2VyKGxsY3Bfc29jay1cXHUwMDNlcmVtb3RlX3J3LCAodTMyIF9fdXNlciAqKSBvcHR2YWwpKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz02NjE9c3RhdGljIGludCBsbGNwX3NvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqX2FkZHIsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTczNS1cXHRcXHRcXHRcXHRcXHQgICAgYWRkci1cXHUwMDNlc2VydmljZV9uYW1lX2xlbixcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjczNjpcXHRcXHRcXHRcXHRcXHQgICAgTkZDX0xMQ1BfTUFYX1NFUlZJQ0VfTkFNRSk7XFxubmV0L25mYy9sbGNwX3NvY2suYy03MzctXFx0bGxjcF9zb2NrLVxcdTAwM2VzZXJ2aWNlX25hbWUgPSBrbWVtZHVwKGFkZHItXFx1MDAzZXNlcnZpY2VfbmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NDkuMzQzMzIzNzkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY1NTEzNzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBpbnRvIHRoZSBORkMgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUsIHdoaWNoIG9uZXMgYXJlIGNvbmRpdGlvbmFsLCBhbmQgaG93IHRoZXkncmUgcmVsYXRlZCB0byBlYWNoIG90aGVyLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCdzIGRlZmluZWQgaW4gdGhhdCBwYXJ0aWN1bGFyIEtjb25maWcgZmlsZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBoaWRpbmcgaW4gdGhlcmUuIEhvcGVmdWxseSBpdCdzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiB0byB1bmRlcnN0YW5kaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE5GQyBzdGFjayBhbmQgaG93IHRvIHR3ZWFrIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTEuOTk4NDYzMjY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2NjU3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWctMi0jXFxubmV0L25mYy9LY29uZmlnOjM6IyBORkMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cXG5uZXQvbmZjL0tjb25maWctNC0jXFxubmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxubmV0L25mYy9LY29uZmlnOjg6XFx0dHJpc3RhdGUgXFxcIk5GQyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG5uZXQvbmZjL0tjb25maWctOS1cXHRkZWZhdWx0IG5cXG5uZXQvbmZjL0tjb25maWctMTAtXFx0aGVscFxcbm5ldC9uZmMvS2NvbmZpZzoxMTpcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxubmV0L25mYy9LY29uZmlnLTEyLVxcdCAgY29tbXVuaWNhdGlvbikgZGV2aWNlcy5cXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnOjE4OlxcdGRlcGVuZHMgb24gTkZDXFxubmV0L25mYy9LY29uZmlnLTE5LVxcdHNlbGVjdCBDUkNfQ0NJVFRcXG5uZXQvbmZjL0tjb25maWctMjAtXFx0c2VsZWN0IENSQ19JVFVfVFxcbm5ldC9uZmMvS2NvbmZpZzoyMTpcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG5uZXQvbmZjL0tjb25maWctMjItXFx0ZGVmYXVsdCBuXFxubmV0L25mYy9LY29uZmlnLTIzLVxcdGhlbHBcXG5uZXQvbmZjL0tjb25maWc6MjQ6XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0Llxcbm5ldC9uZmMvS2NvbmZpZzoyNTpcXHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxcbm5ldC9uZmMvS2NvbmZpZzoyNjpcXHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxcbm5ldC9uZmMvS2NvbmZpZy0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTIuMTQyMTM3OThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NzkzNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBzZXQgdG8gYE5GQ2AuIFRoYXQncyBub3QgbXVjaCBpbmZvcm1hdGlvbiB0byBnbyBvbiwgaXMgaXQ/IFRvIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQgdGhhdCBtZWFucyBpbiB0aGlzIGNvbnRleHQsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgYE5GQ2AgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMsIGluY2x1ZGVkIHNvdXJjZSBmaWxlcywgYW5kIGFueSBzcGVjaWZpYyBjb21waWxlciBmbGFncyBvciBidWlsZCBydWxlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGBORkNgIGNvbmZpZ3VyYXRpb24uIFRoaXMgTWFrZWZpbGUgaXMgdGhlIGtleSB0byB1bnBhY2tpbmcgd2hhdCAnTkZDJyBhY3R1YWxseSByZXByZXNlbnRzIGZyb20gYSBzeXN0ZW0gYnVpbGQgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1NS4xMDAwNzUwNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODExODY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9NYWtlZmlsZT05PW9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTAtXFxubmV0L25mYy9NYWtlZmlsZToxMTpuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbm5ldC9uZmMvTWFrZWZpbGU6MTI6XFx0XFx0bGxjcF9zb2NrLm9cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1NS4yMTgyMDA2MjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3ODA0NjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBNb2R1bGUqKlxuXG5BbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBsbGNwX2NvcmUub2AgaXMgb25seSBidWlsdCBpZiB0aGUgYENPTkZJR19ORkNgIGtlcm5lbCBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIGdvb2QgdG8ga25vdzsgbmFycm93cyBkb3duIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc2hvdWxkIGJlIG9uIHRoZSBgbmZjX2xsY3Bfcnhfc2tiYCBmdW5jdGlvbiwgc2luY2UgdGhhdCdzIHRoZSBvbmUgdGhhdCdzIGJlZW4gZmxhZ2dlZCBhcyBtb2RpZmllZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGl0cyBkZXRhaWxzLCB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIG1pZ2h0IGJlLiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGF0IGZ1bmN0aW9uLCBJIG5lZWQgdG8gdGFrZSBhIHdpZGVyIGxvb2suIEl0IGlzIG5lY2Vzc2FyeSB0byBkZXRlcm1pbmUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgYWxzbyBiZWluZyBjYWxsZWQgYW5kIHRoZXJlZm9yZSBhbHNvIHdvcnRoIHBheWluZyBhdHRlbnRpb24gdG8uIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgb3IgdGhhdCBJIHNob3VsZCBpbmNsdWRlIGluIG15IGFuYWx5c2lzLiBOZWVkIHRvIGRvIGEgdGhvcm91Z2ggam9iLCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDg6NTguNDk2MjUyMTA2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU2MTg3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MjE9c3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMi1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIzOnN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTI0LVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNDM2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3JlY3ZfYWdmKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0NzEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNDcyOlxcdFxcdG5mY19sbGNwX3J4X3NrYihsb2NhbCwgbmV3X3NrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDczLVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDc5LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQ4MDpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE0ODEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz0xNTQ2PXN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYxLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTU2MjpcXHRuZmNfbGxjcF9yeF9za2IobG9jYWwsIHNrYik7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNTYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0ODo1OC42NzE4Nzg2NjZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NzM1NTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqRGVlcCBEaXZlIGludG8gTkZDIExMQ1AgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzIE5GQyBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgcmVjZWl2ZSBwcm9jZXNzLiBJJ20gc2VlaW5nIGBuZmNfbGxjcF9yeF9za2JgIGFzIGEgcmVhbGx5IGtleSBmb2NhbCBwb2ludCBoZXJlLiBJdCdzIGxpa2VseSB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCBmb3IgcmVjZWl2ZWQgU2VydmljZSBLbm93bGVkZ2UgQmFzZSAoU0tCKSBwYWNrZXRzLiBUaGVuIHRoZXJlJ3MgYG5mY19sbGNwX3JlY3ZfYWdmYCB0aGF0J3MgbG9va2luZyBsaWtlIGFub3RoZXIgaW1wb3J0YW50IHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIHRoYXQgb25lLCB0b28uIE9mIGNvdXJzZSwgYG5mY19sbGNwX3J4X3dvcmtgIGp1bXBzIG91dCBhcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBJIGNhbiBpbmZlciB0aGF0IHRoaXMgcGFydCB3aWxsIGxpa2VseSBwcm9jZXNzIHRoZSByZWNlaXZlZCBkYXRhIGFzeW5jaHJvbm91c2x5LCB0byBhdm9pZCBibG9ja2luZyB0aGUgaW50ZXJydXB0IGNvbnRleHQuXG5cbkZpcnN0IG9mZiwgbGV0IG1lIGdldCBhIGdvb2QgbG9vayBhdCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGluYm91bmQgZGF0YSBzdHJlYW0gaXMgcHJvYmFibHkgd2hlcmUgSSBuZWVkIHRvIHNwZW5kIHRoZSBtYWpvcml0eSBvZiBteSB0aW1lIHJpZ2h0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjQ5OjAyLjIzOTIzNzY5MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgyNDMyNzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19sbGNwX3JlY3ZfYWdmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9jb3JlLmM9MTI4ND1zdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X3NubChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNDM1LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTQzNjpzdGF0aWMgdm9pZCBuZmNfbGxjcF9yZWN2X2FnZihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTQzNy17XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE0ODA9c3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE1NDAtXFx0XFx0cHJfZGVidWcoXFxcIkFHRiBmcmFtZVxcXFxuXFxcIik7XFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNTQxOlxcdFxcdG5mY19sbGNwX3JlY3ZfYWdmKGxvY2FsLCBza2IpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTU0Mi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NDk6MDIuNTIxNjc2NjMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjkyNTE0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMTENQIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSByZWxhdGVkIHRvIE5GQydzIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBhbmQgSSBzZWUgdGhpcyBpbnRlcmVzdGluZyBpbnRlcnBsYXkgYmV0d2VlbiBgbmZjX2xsY3Bfcnhfc2tiYCBhbmQgYG5mY19sbGNwX3JlY3ZfYWdmYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgcmVjdXJzaXZlIG9yIG11dHVhbCByZWN1cnNpb24gc2l0dWF0aW9uLCB3aGljaCBhbHdheXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gU3BlY2lmaWNhbGx5LCBgbmZjX2xsY3Bfcnhfc2tiYCBnZXRzIGNhbGxlZCB3aGVuIGEgcGFja2V0IGNvbWVzIGluLCBhbmQgaWYgdGhlIHBhY2tldCB0eXBlIChgcHR5cGVgKSBpcyBhbiBBZ2dyZWdhdGVkIEZyYW1lIChBR0YpLCB0aGVuIGBuZmNfbGxjcF9yZWN2X2FnZmAgZ2V0cyBjYWxsZWQuIE5vdywgYG5mY19sbGNwX3JlY3ZfYWdmYCwgaW4gdHVybiwgYXBwZWFycyB0byBwYXJzZSB0aGlzIEFHRiBhbmQsIGNydWNpYWxseSwgY2FsbHMgYG5mY19sbGNwX3J4X3NrYmAgYWdhaW4gZm9yIGVhY2ggaW5kaXZpZHVhbCBQRFUgY29udGFpbmVkIHdpdGhpbiB0aGF0IEFHRi4gVGhpcyBtZWFucyBgbmZjX2xsY3Bfcnhfc2tiYCBoYW5kbGVzIGEgKnNpbmdsZSogUERVOyBpZiBpdCdzIGFuIGFnZ3JlZ2F0ZWQgb25lLCBpdCBkZWxlZ2F0ZXMgdG8gYG5mY19sbGNwX3JlY3ZfYWdmYCB0byBoYW5kbGUgdGhlIGJyZWFrZG93bi5cblxuVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgKGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTExDUF9IRUFERVJfU0laRSkgcmV0dXJuO2ApIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhpcyBoYXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaXQgc21lbGxzIGxpa2UgYSBidWcgZml4LiBJdCB3aWxsIHByZXZlbnQgaGFuZGxpbmcgbWFsZm9ybWVkIHBhY2tldHMuIFNvLCB0aGUgcXVlc3Rpb24gaXMgd2hhdCBjb3VsZCBnbyB3cm9uZyBhbmQgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZyFcblxuTm93LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3MuIEknbSBnb2luZyB0byB3YW50IGBORkNgIGVuYWJsZWQsIHByb2JhYmx5IGBORkNfTkNJYCBhcyB3ZWxsLCBidXQgaXQgaXMgd29ydGggYSBxdWljayBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBORkMgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIGtlcm5lbCB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0NiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0OTowNy45NTA5MzEwMTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzc2MjQwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZy0yLSNcXG5uZXQvbmZjL0tjb25maWc6MzojIE5GQyBzdWJzeXN0ZW0gY29uZmlndXJhdGlvblxcbm5ldC9uZmMvS2NvbmZpZy00LSNcXG5uZXQvbmZjL0tjb25maWctNS1cXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xcbm5ldC9uZmMvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG5uZXQvbmZjL0tjb25maWc6ODpcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbm5ldC9uZmMvS2NvbmZpZy05LVxcdGRlZmF1bHQgblxcbm5ldC9uZmMvS2NvbmZpZy0xMC1cXHRoZWxwXFxubmV0L25mYy9LY29uZmlnOjExOlxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCBzdXBwb3J0IGZvciBORkMgKE5lYXIgZmllbGRcXG5uZXQvbmZjL0tjb25maWctMTItXFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBORkNcXG5uZXQvbmZjL0tjb25maWctMTktXFx0c2VsZWN0IENSQ19DQ0lUVFxcbm5ldC9uZmMvS2NvbmZpZy0yMC1cXHRzZWxlY3QgQ1JDX0lUVV9UXFxubmV0L25mYy9LY29uZmlnOjIxOlxcdHRyaXN0YXRlIFxcXCJORkMgRGlnaXRhbCBQcm90b2NvbCBzdGFjayBzdXBwb3J0XFxcIlxcbm5ldC9uZmMvS2NvbmZpZy0yMi1cXHRkZWZhdWx0IG5cXG5uZXQvbmZjL0tjb25maWctMjMtXFx0aGVscFxcbm5ldC9uZmMvS2NvbmZpZzoyNDpcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXFxubmV0L25mYy9LY29uZmlnOjI1OlxcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XFxubmV0L25mYy9LY29uZmlnOjI2OlxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxubmV0L25mYy9LY29uZmlnLTI3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo0OTowOC4wODQ3MDEzNDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxOTE0MDMxNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBORkMgVmlydHVhbCBEcml2ZXIgUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgTkZDIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gV2UncmUgbGlrZWx5IGNvbnNpZGVyaW5nIGEgdmlydHVhbCBkcml2ZXIgc2V0dXAsIGdpdmVuIHRoZSBjb250ZXh0LiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZXhpc3Rpbmcgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdmlydHVhbCBORkMgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbCdzIE5GQyBzdWJzeXN0ZW0uXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgdmlydHVhbCBkcml2ZXIgYWJzdHJhY3Rpb24gZGVmaW5lZCB0aGVyZSBvciBpZiB3ZSBuZWVkIHRvIGNyYWZ0IG91ciBvd24gYmFzZWQgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIHBsYXRmb3JtLiBJdCB3aWxsIHJldmVhbCBpZiB0aGVyZSdzIGFscmVhZHkgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBlbXVsYXRlZCBORkMgZGV2aWNlcyBvciBpZiB3ZSdyZSBsb29raW5nIGF0IHNvbWV0aGluZyBtb3JlIGJlc3Bva2UuIEkgZXhwZWN0IHRvIGJlIGRpZ2dpbmcgaW50byBkZXBlbmRlbmNpZXMgb24gb3RoZXIgcGFydHMgb2YgdGhlIE5GQyBzdGFjaywgcGVyaGFwcyBmaWd1cmluZyBvdXQgaG93IHZpcnR1YWwgZGV2aWNlcyBpbnRlcmFjdCB3aXRoIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBhY2Nlc3MgbGF5ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDQwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MTEuMjc2MTA3Nzk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ2Mjk4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZy0yLSNcXG5kcml2ZXJzL25mYy9LY29uZmlnOjM6IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcbmRyaXZlcnMvbmZjL0tjb25maWctNC0jXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmZjL0tjb25maWc6NjptZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL25mYy9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBORkNcXG5kcml2ZXJzL25mYy9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo5OmNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnOjEwOlxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXFx0aGVscFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTM6XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cycgVFJGNzk3MGFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTE0LVxcdCAgZGV2aWNlLiBTdWNoIGRldmljZSBzdXBwb3J0cyA1IGRpZmZlcmVudCBwcm90b2NvbHM6IElTTzE0NDQzQSxcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzoyMTpjb25maWcgTkZDX01FSV9QSFlcXG5kcml2ZXJzL25mYy9LY29uZmlnOjIyOlxcdHRyaXN0YXRlIFxcXCJNRUkgYnVzIE5GQyBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25mYy9LY29uZmlnOjIzOlxcdGRlcGVuZHMgb24gSU5URUxfTUVJIFxcdTAwMjZcXHUwMDI2IE5GQ19IQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTI0LVxcdGhlbHBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTI1LVxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgdG8gdXNlIGFuIG1laSBidXMgbmZjIGRldmljZS4gU2VsZWN0IHRoaXMgaWYgeW91XFxuZHJpdmVycy9uZmMvS2NvbmZpZzoyNjpcXHQgIHdpbGwgdXNlIGFuIEhDSSBORkMgZHJpdmVyIGZvciBhbiBORkMgY2hpcCBjb25uZWN0ZWQgYmVoaW5kIGFuXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yNy1cXHQgIEludGVsJ3MgTWFuYWdlbWVudCBFbmdpbmUgY2hpcC5cXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzI6XFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXFx0aGVscFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzU6XFx0ICBUaGlzIGRyaXZlciBkZWNsYXJlcyB0d28gdmlydHVhbCBORkMgZGV2aWNlcyBzdXBwb3J0aW5nIE5GQy1ERVBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTM2LVxcdCAgcHJvdG9jb2wuIEFuIExMQ1AgY29ubmVjdGlvbiBjYW4gYmUgZXN0YWJsaXNoZWQgYmV0d2VlbiB0aGVtIGFuZFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDM6XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00NC1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmZjL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctNDYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6NTA6MTEuNzYwNzQ0NDUzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDQ0NDYxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTkZDIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgTkZDX1NJTWAgYW5kIGBORkNfVklSVFVBTF9OQ0lgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhleSdyZSB2aXJ0dWFsIGRyaXZlcnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlciBmb3IgdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEZyb20gd2hhdCBJIHNlZSBoZXJlLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIHdoaWNoIGlzIGxvZ2ljYWwuIEFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gaW5jbHVkZSBhbGwgb2YgdGhlc2U6IGBORkNgLCBgTkZDX0RJR0lUQUxgLCBgTkZDX1NJTWAsIGBORkNfTkNJYCwgYW5kIGBORkNfVklSVFVBTF9OQ0lgLiBCdXQgaG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsLiBJcyBgTkZDX05DSWAgYWN0dWFsbHkgZGVmaW5lZCBpbiBgbmV0L25mYy9LY29uZmlnYD8gSXQncyBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQsIGFuZCBhIG1pc3NpbmcgS2NvbmZpZyBlbnRyeSB3b3VsZCBiZSBhIHNpZ25pZmljYW50IGlzc3VlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgcHJvY2VlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDo1MDoxNS40NjUxOTM5MzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQ5MzI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORkNfTkNJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDKSArPSBuZmMub1xcbm5ldC9uZmMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbm5ldC9uZmMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTkZDX0hDSSkgKz0gaGNpL1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTQ6XFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTUtXFx0c2VsZWN0IENSQ19DQ0lUVFxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnOjI1OlxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJOQ0kgb3ZlciBVQVJUIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS01LVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05GQ19OQ0kpICs9IG5jaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtNy1cXG4tLVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlPTEwPW5jaV9zcGkteSArPSBzcGkub1xcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19ORkNfTkNJX1NQSSkgKz0gbmNpX3NwaS5vXFxubmV0L25mYy9uY2kvTWFrZWZpbGUtMTItXFxubmV0L25mYy9uY2kvTWFrZWZpbGU9MTM9bmNpX3VhcnQteSArPSB1YXJ0Lm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX05DSV9VQVJUKSArPSBuY2lfdWFydC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjE1LjYyMTY5OTg4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODA2MzI3MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQ29uZmlndXJhdGlvbiBhbmQgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIGxldCdzIHN0YXJ0IGJ5IGludGVncmF0aW5nIGBORkNgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBob2xkIG9uLCBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYCBkZXBlbmRzIG9uIGBORkNfTkNJYC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBjb25zaWRlciBpcyBgTkZDYCwgYE5GQ19ESUdJVEFMYCwgYE5GQ19TSU1gLCBgTkZDX05DSWAsIGFuZCBgTkZDX1ZJUlRVQUxfTkNJYC4gSSBuZWVkIHRvIGtlZXAgdGhpcyBsaXN0IGF0IHRoZSBmb3JlZnJvbnQgb2YgbXkgbWluZCBhcyBJIG1vdmUgZm9yd2FyZC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgTExDUCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gTm9wZSwgbG9va3MgbGlrZSBgbGxjcF9jb3JlLm9gIGlzIGNvcnJlY3RseSBidWlsdCBhbG9uZ3NpZGUgYENPTkZJR19ORkNgLCBzbyB0aGF0J3MgaGFuZGxlZC5cblxuUmlnaHQsIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGxlbmd0aCBjaGVjayBpbiBgbmZjX2xsY3Bfcnhfc2tiYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGV2ZW4gYSBjcmFzaCBzY2VuYXJpby4gSXQncyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZyBhdHRlbnRpb24uXG5cblRoZXJlZm9yZSwgdGhlIGtleSBzeW1ib2xzIHRoYXQgZGVtYW5kIG15IGF0dGVudGlvbiBub3cgYXJlIGBuZmNfbGxjcF9yeF9za2JgIGFuZCBgbmZjX2xsY3BfcmVjdl9hZ2ZgLiBJJ2xsIGtlZXAgdGhvc2UgaW4gZm9jdXMuIEkgYW0gbm93IGdvaW5nIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODQsIk91dHB1dFRva2VucyI6MTcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjUwOjIxLjQyODAyOTgxOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk3MTUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3Bfcnhfc2tiXCIsXG4gICAgXCJuZmNfbGxjcF9yZWN2X2FnZlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gYG5mY19sbGNwX3J4X3NrYmAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGNyYXNoZXMgd2hlbiBwcm9jZXNzaW5nIE5GQyBMTENQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBORkMgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBORkMgZGV2aWNlcyAobGlrZSBORkNfU0lNIG9yIE5GQ19WSVJUVUFMX05DSSkuIEl0IGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9yeF9za2JcIixcbiAgICBcIm5mY19sbGNwX3JlY3ZfYWdmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBgbmZjX2xsY3Bfcnhfc2tiYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgY3Jhc2hlcyB3aGVuIHByb2Nlc3NpbmcgTkZDIExMQ1AgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE5GQyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIE5GQyBkZXZpY2VzIChsaWtlIE5GQ19TSU0gb3IgTkZDX1ZJUlRVQUxfTkNJKS4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjv95m[1] Phase: Succeeded StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 00:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 00:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2] Phase: Succeeded StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 00:51:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 00:50:35 +0000 UTC FinishedAt: 2026-07-12 00:51:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjv95m/series-workflowjv95m-convert-artifact-2522570775/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 00:51:19 +0000 UTC FinishedAt: 2026-07-12 01:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 00:51:19 +0000 UTC FinishedAt: 2026-07-12 01:22:44 +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:*3d72b0d8-9ac8-4004-b146-55e7ae9ee34c,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-workflowjv95m/series-workflowjv95m-convert-artifact-2522570775/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": "aa06b750-2c5a-4749-aeea-10c5c4c800a8", "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-workflowjv95m/series-workflowjv95m-build-action-1586371949/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 00:51:19 +0000 UTC FinishedAt: 2026-07-12 01:22:34 +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:*3d72b0d8-9ac8-4004-b146-55e7ae9ee34c,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-workflowjv95m/series-workflowjv95m-convert-artifact-2522570775/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": "aa06b750-2c5a-4749-aeea-10c5c4c800a8", "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-workflowjv95m/series-workflowjv95m-build-action-1586371949/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 01:22:44 +0000 UTC FinishedAt: 2026-07-12 01:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 01:22:44 +0000 UTC FinishedAt: 2026-07-12 01:22:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 01:22:44 +0000 UTC FinishedAt: 2026-07-12 01:22:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 01:22:44 +0000 UTC FinishedAt: 2026-07-12 01:22:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjv95m/series-workflowjv95m-convert-artifact-1092941638/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 01:22:54 +0000 UTC FinishedAt: 2026-07-12 01:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 01:22:54 +0000 UTC FinishedAt: 2026-07-12 01:25:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa06b750-2c5a-4749-aeea-10c5c4c800a8,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-workflowjv95m/series-workflowjv95m-build-action-1586371949/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-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 01:25:10 +0000 UTC FinishedAt: 2026-07-12 01:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 01:25:10 +0000 UTC FinishedAt: 2026-07-12 01:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 01:25:10 +0000 UTC FinishedAt: 2026-07-12 01:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 01:25:10 +0000 UTC FinishedAt: 2026-07-12 01:58:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3d72b0d8-9ac8-4004-b146-55e7ae9ee34c,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-workflowjv95m/series-workflowjv95m-convert-artifact-1092941638/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": "dd5bc461-4a9e-41ca-a0a7-23f8c03cdc69", "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-workflowjv95m/series-workflowjv95m-build-action-1955691146/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 01:25:10 +0000 UTC FinishedAt: 2026-07-12 01:57:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3d72b0d8-9ac8-4004-b146-55e7ae9ee34c,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-workflowjv95m/series-workflowjv95m-convert-artifact-1092941638/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": "dd5bc461-4a9e-41ca-a0a7-23f8c03cdc69", "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-workflowjv95m/series-workflowjv95m-build-action-1955691146/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 01:58:16 +0000 UTC FinishedAt: 2026-07-12 01:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 01:58:16 +0000 UTC FinishedAt: 2026-07-12 01:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 01:58:16 +0000 UTC FinishedAt: 2026-07-12 02:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 01:58:16 +0000 UTC FinishedAt: 2026-07-12 02:00:24 +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:*dd5bc461-4a9e-41ca-a0a7-23f8c03cdc69,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-workflowjv95m/series-workflowjv95m-build-action-1955691146/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-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +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":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"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:*aa06b750-2c5a-4749-aeea-10c5c4c800a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd5bc461-4a9e-41ca-a0a7-23f8c03cdc69,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-workflowjv95m/series-workflowjv95m-build-action-1586371949/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-workflowjv95m/series-workflowjv95m-build-action-1955691146/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 02:00:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 02:00:40 +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":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"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-workflowjv95m/series-workflowjv95m-convert-artifact-2290125323/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 02:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 02:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 02:00:35 +0000 UTC FinishedAt: 2026-07-12 02:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 02:00:47 +0000 UTC FinishedAt: 2026-07-12 05:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjv95m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nfc_llcp_rx_skb","nfc_llcp_recv_agf"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"673896a9-bfee-4537-ab1e-0db12d75c215","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 02:00:47 +0000 UTC FinishedAt: 2026-07-12 05:05:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa06b750-2c5a-4749-aeea-10c5c4c800a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd5bc461-4a9e-41ca-a0a7-23f8c03cdc69,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-workflowjv95m/series-workflowjv95m-build-action-1586371949/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-workflowjv95m/series-workflowjv95m-build-action-1955691146/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-workflowjv95m/series-workflowjv95m-convert-artifact-2290125323/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,}