Name: series-workflowz4xvm Phase: Succeeded StartedAt: 2026-08-13 08:55:54 +0000 UTC FinishedAt: 2026-08-13 12:43:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[0] Phase: Succeeded StartedAt: 2026-08-13 08:55:54 +0000 UTC FinishedAt: 2026-08-13 08:58:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 08:55:54 +0000 UTC FinishedAt: 2026-08-13 08:58:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6057f06ef7afa9893ed33603f7917fa39d237b5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP", "PPTP", "NET_IPGRE_DEMUX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6057f06ef7afa9893ed33603f7917fa39d237b5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP", "PPTP", "NET_IPGRE_DEMUX" ], "series_id": "ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7LAogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVkM2RjNDYyNzBiMjc5MGU5NmJkYTQxMzllNTM0YWZjZGIyN2Y4ZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwODo1NzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgJiM0MzszMTcsMTggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4mIzQzO1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDEgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSB8fCBwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpXG4gXHRcdFx0Z290byBhbGxvd19wYWNrZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4mIzQzO1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuIFx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuIFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfREVNVVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHRwX3Jjdl9jb3JlJiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIFBQVFAgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWQzZGM0NjI3MGIyNzkwZTk2YmRhNDEzOWU1MzRhZmNkYjI3ZjhlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA4OjU3OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCkBAIC0zMTcsMTYgJiM0MzszMTcsMTggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlwYXlsb2FkID0gc2tiLSZndDtkYXRhICYjNDM7IGhlYWRlcnNpemU7CiAJLyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqLwogCWlmIChzZXEgJmx0OyBvcHQtJmd0O3NlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtJmd0O3NlcV9yZWN2LCBzZXEpKSB7Ci0JCWlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpICZhbXA7JmFtcDsgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSAmYW1wOyZhbXA7Ci0JCQkJKFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSAmYW1wOyZhbXA7Ci0JCQkJKChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpCiYjNDM7CQlpZiAocGF5bG9hZF9sZW4gJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCSAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkKIAkJCWdvdG8gYWxsb3dfcGFja2V0OwogCX0gZWxzZSB7CiAJCW9wdC0mZ3Q7c2VxX3JlY3YgPSBzZXE7CiBhbGxvd19wYWNrZXQ6CiAJCXNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7CiAKLQkJaWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCWlmIChwYXlsb2FkX2xlbiAmZ3Q7PSAyICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7CiAJCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KIAkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiAJCQkJZ290byBkcm9wOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQUFRQIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gU3RyYWlnaHQgYXdheSwgSSBzZWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHRoZSBQUFRQIHByb3RvY29sLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g7IGl0JiMzOTtzIGFkZGluZyBzb21lIGJhc2ljIGJvdW5kcyBjaGVja2luZyBvbiBhY2Nlc3NlcyB0byB0aGUgYHBheWxvYWRgIGJ1ZmZlci4gSXQgbG9va3MgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIGVuc3VyZSB0aGF0IHdlIGRvbiYjMzk7dCByZWFkIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgd2hpY2ggaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBndWFyZGluZyBhZ2FpbnN0IHJlYWRzIGZyb20gdmFyaW91cyBvZmZzZXRzIHdpdGhpbiBgcGF5bG9hZGAuIFRoZSBwYXRjaCB2ZXJpZmllcyB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgbWluaW11bSBsZW5ndGgsIHNwZWNpZmljYWxseSBgUFBQX0hEUkxFTiAmIzQzOyAxYCwgYmVmb3JlIHJlYWRpbmcgZnJvbSwgZm9yIGV4YW1wbGUsIGBwYXlsb2FkWzBdYCwgYHBheWxvYWRbMV1gLCBvciBgcGF5bG9hZFs0XWAuIFRoZXJlJiMzOTtzIGFsc28gYSBjaGVjayB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgYXQgbGVhc3QgMiBieXRlcyBsb25nIGJlZm9yZSByZWFkaW5nIGBwYXlsb2FkWzBdYCBhbmQgYHBheWxvYWRbMV1gLgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiBUaGlzIGlzIGEgYnVnIGZpeCDigJMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYmVpbmcgc28gbWV0aWN1bG91cyBhYm91dCB0aGUgbGVuZ3RoIGNoZWNrcyBzdWdnZXN0cyB0aGF0IHByZXZpb3VzIGFzc3VtcHRpb25zIGFib3V0IHBhY2tldCBzaXplcyB3ZXJlIGZsYXdlZCwgbGVhdmluZyB0aGUgc3lzdGVtIG9wZW4gdG8gYXR0YWNrcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgc2lnbmlmaWNhbnQgdGhpcyB2dWxuZXJhYmlsaXR5IGlzLCBidXQgYmFzZWQgb24gdGhpcyBxdWljayBhc3Nlc3NtZW50LCBpdCBpcyBhIGxvdy1oYW5naW5nIGZydWl0IHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRnV6emluZyBQUFRQJiMzOTtzIENvcmUgUmVjZWl2ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGNyaXRpY2FsIGBza19iYWNrbG9nX3JjdmAgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIFBQVFAgc29ja2V0cy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBoYW5kbGluZyBpbmNvbWluZyBkYXRhIGF0IGEgbG93IGxldmVsLCBhbmQgaXQmIzM5O3MgZGlyZWN0bHkgZXhwb3NlZCBhcyBhIHJlY2VpdmUgaGFuZGxlciwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdG8gbWUgdGhhdCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIFBQVFAgaW1wbGVtZW50YXRpb24gcmVhbGx5IHdlbGwgYmVjYXVzZSBpdCBoYXMgYSBoaWdoIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLgoKTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZW5hYmxlIFBQVFAgd2l0aGluIHRoZSBidWlsZCwgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBtb2R1bGUgaXMgaW5jb3Jwb3JhdGVkLiBUaGF0IHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGVudmlyb25tZW50LiBLbm93aW5nIGhvdyB0byB0b2dnbGUgUFBUUCYjMzk7cyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgdml0YWwgZm9yIGNvbmZpZ3VyaW5nIGFuZCBtb25pdG9yaW5nIHRoZSB0ZXN0IGVudmlyb25tZW50LCBhbmQgZW5zdXJlIGFueSBmdXp6aW5nIGVmZm9ydHMgYXJlIHRhcmdldGVkIGFuZCByZXBlYXRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipFeGFtaW5pbmcgUFBUUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIHVzZSBgUFBUUGAuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gZGVsdmUgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1bmRlcnN0YW5kIGhvdyBgUFBUUGAgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IGFzc29jaWF0ZWQgbW9kdWxlcy4gSSYjMzk7bSBnb2luZyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIFBQUC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBmcm9tIHRoZXJlLCBJIHNob3VsZCBiZSBhYmxlIHRvIG1hcCBvdXQgd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgYSBgUFBUUGAgc2V0dXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcmVxdWlyZW1lbnRzIGZvciB0aGUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdGNvbmZpZyBQUFRQXG4gMTYyOlx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuIDE2MzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxNjQ6XHRcdHNlbGVjdCBQUFBPWFxuIDE2NTpcdFx0aGVscFxuIDE2NjpcdFx0ICBTdXBwb3J0IGZvciBQUFAgb3ZlciBJUHY0LihQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcbiAxNjk6XHRcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cbiAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGUgYmVoYXZpb3IgaGVyZSBoaW5nZXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYE5FVF9JUEdSRV9ERU1VWGAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCB0byBjb250aW51ZS4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjb25kaXRpb25hbC4gSSBrbm93IGltbWVkaWF0ZWx5IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aXZlIGFuc3dlciDigJMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgSVB2NCBkaXJlY3RvcnkuIExldCYjMzk7cyBkaXZlIGludG8gYG5ldC9pcHY0L0tjb25maWdgIHRvIGluc3BlY3QgdGhlIGRlZmluaXRpb24gb2YgYE5FVF9JUEdSRV9ERU1VWGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBsb2dpYyBwYXRoIGlzIHRha2VuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBgTkVUX0lQR1JFX0RFTVVYYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfSVBHUkVfREVNVVhgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgY3JpdGljYWwgcGF0aC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxpc3RpbmcgdGhlIG9idmlvdXMgb25lcywgYW5kIGJlIHN1cmUgdG8gY2hlY2sgdGhvc2UgaW4gdHVybi4gSSYjMzk7bSB0aGlua2luZy4uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBsaWtlIElQIHN0YWNrIG1vZHVsZXMsIHJvdXRpbmcgcHJvdG9jb2xzLCBhbmQgdHVubmVsaW5nIG1lY2hhbmlzbXM/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvciBpcyBpdCBtb3JlIGFic3RyYWN0ZWQ/IEFuZCBvZiBjb3Vyc2UsIGRvbiYjMzk7dCBmb3JnZXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMg4oCTIHdoYXQgb3RoZXIgc2V0dGluZ3MgbWlnaHQgaW1wbGljaXRseSBpbmZsdWVuY2UgYE5FVF9JUEdSRV9ERU1VWGAmIzM5O3MgYmVoYXZpb3Igb3IgZXZlbiBpdHMgdmVyeSBhdmFpbGFiaWxpdHk/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc3VsdCB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHksIG1heWJlIHNvbWUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBpZiBpdCBleGlzdHMsIGFuZCBwb3NzaWJseSBldmVuIHRyYWNlIHNvbWUgbmV0d29yayB0cmFmZmljIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIG1hcCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFueSBtb2RpZmljYXRpb24sIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemF0aW9uLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYW5kIHBvc3NpYmxlIHNpZGUtZWZmZWN0cyBvZiBhbnkgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdGNvbmZpZyBORVRfSVBHUkVfREVNVVhcbiAxODE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuIDE4MjpcdFx0aGVscFxuIDE4MzpcdFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXG4gMTg0Olx0XHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxuIDE4NTpcdFxuIDE4NjpcdGNvbmZpZyBORVRfSVBfVFVOTkVMXG4gMTg3Olx0XHR0cmlzdGF0ZVxuIDE4ODpcdFx0c2VsZWN0IERTVF9DQUNIRVxuIDE4OTpcdFx0c2VsZWN0IEdST19DRUxMU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBlbmFibGluZyBgTkVUX0lQR1JFX0RFTVVYYC4gTm8gZGlyZWN0IGRlcGVuZGVuY2llcyB0aGVyZSwgdGhhdCYjMzk7cyBnb29kLiBXaGljaCBtZWFucyB0aGUgcHJpbWFyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgYXJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgaXRzZWxmLiBOb3csIEkgaGF2ZSB0byBjb25zaWRlciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCwgYXMgaXMgbXkgaGFiaXQuIEkgc3VzcGVjdCB0aGF0IGBQUFBgIGFuZCBgUFBQT1hgIG1pZ2h0IGFsc28gYmUgbmVlZGVkIGhlcmUuIEhvd2V2ZXIsIEkgcmVjYWxsIHRoYXQgYFBQVFBgIHR5cGljYWxseSBzZWxlY3RzIGBQUFBPWGAsIHdoaWNoIG1pZ2h0IGFsbGV2aWF0ZSBvbmUgcmVxdWlyZW1lbnQuIExldCYjMzk7cyBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEJlc3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBgUFBQYCBjb25maWcgYW5kIGNsYXJpZnkgYW55IHBvdGVudGlhbCBpbnRlcnNlY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY6Y29uZmlnIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0zNT1pZiBQUFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Mzc6Y29uZmlnIFBQUF9CU0RDT01QXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O1BQUCBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb25cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjU1OmNvbmZpZyBQUFBfREVGTEFURVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgRGVmbGF0ZSBjb21wcmVzc2lvblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njk6Y29uZmlnIFBQUF9GSUxURVJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtQUFAgZmlsdGVyaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo4MTpjb25maWcgUFBQX01QUEVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgyLVx0dHJpc3RhdGUgXCYjMzQ7UFBQIE1QUEUgY29tcHJlc3Npb24gKGVuY3J5cHRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTEtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo5Mjpjb25maWcgUFBQX01VTFRJTElOS1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTMtXHRib29sIFwmIzM0O1BQUCBtdWx0aWxpbmsgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgQVRNXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIEV0aGVybmV0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7MSBiaXQgKDIgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7MiBiaXRzICg0IGJ1Y2tldHMpXCYjMzQ7XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXHRib29sIFwmIzM0OzQgYml0cyAoMTYgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7OCBiaXRzICgyNTYgYnVja2V0cylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTM6Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVx0aW50XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE4MT1pZiBUVFlcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4Mi1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE4Mzpjb25maWcgUFBQX0FTWU5DXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODQtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTk1LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTk2OmNvbmZpZyBQUFBfU1lOQ19UVFlcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O1BQUCBzdXBwb3J0IGZvciBzeW5jIHR0eSBwb3J0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQUFRQL1BQUCBSZWxhdGlvbnNoaXAqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgYFBQVFBgIG1lbnRpb25lZCBpbiByZWxhdGlvbiB0byBgUFBQYCwgYW5kIGltbWVkaWF0ZWx5IG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBQUFRQYCBpcyBzb21laG93ICppbnNpZGUqIGBQUFBgIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIElzIHRoaXMgYSBwcm90b2NvbCBsYXllcmluZyBpc3N1ZSwgYSBkZXBlbmRlbmN5IGlzc3VlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHBocmFzaW5nIHN1Z2dlc3RzIGEgaGllcmFyY2hpY2FsIHJlbGF0aW9uc2hpcCBtaWdodCBiZSBhdCBwbGF5LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgbmF0dXJlIG9mIHRoZWlyIGludGVyYWN0aW9uLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGVpciBjb25uZWN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQmIzM5O2xsIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBQUCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQUFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTTEhDXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXG4gIDExOlx0XHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXG4gIDEyOlx0XHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXG4gIDEzOlx0XHQgIG90aGVyd2lzZSB5b3UgY2FuJiMzOTt0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXG4gIDE0Olx0XHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gdXNlIFBQUCwgeW91IG5lZWQgYW4gYWRkaXRpb25hbCBwcm9ncmFtIGNhbGxlZCBwcHBkLCBhdmFpbGFibGUgYXRcbiAgMTc6XHRcdCAgXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxuICAxODpcdFx0ICByZWNvbW1lbmRlZCBpbiBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZS5cbiAgMTk6XHRcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIFRoZXJlIGFyZSBhY3R1YWxseSB0d28gdmVyc2lvbnMgb2YgUFBQOiB0aGUgdHJhZGl0aW9uYWwgUFBQIGZvclxuICAyMjpcdFx0ICBhc3luY2hyb25vdXMgbGluZXMsIHN1Y2ggYXMgcmVndWxhciBhbmFsb2cgcGhvbmUgbGluZXMsIGFuZFxuICAyMzpcdFx0ICBzeW5jaHJvbm91cyBQUFAgd2hpY2ggY2FuIGJlIHVzZWQgb3ZlciBkaWdpdGFsIElTRE4gbGluZXMgZm9yXG4gIDI0Olx0XHQgIGV4YW1wbGUuICBJZiB5b3Ugd2FudCB0byB1c2UgUFBQIG92ZXIgcGhvbmUgbGluZXMgb3Igb3RoZXJcbiAgMjU6XHRcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBsaW5lcywgeW91IG5lZWQgdG8gc2F5IFkgKG9yIE0pIGhlcmUgYW5kIGFsc28gdG9cbiAgMjY6XHRcdCAgdGhlIG5leHQgb3B0aW9uLCBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7LiAgRm9yIFBQUCBvdmVyXG4gIDI3Olx0XHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcJiMzNDtTdXBwb3J0XG4gIDI4Olx0XHQgIHN5bmNocm9ub3VzIFBQUFwmIzM0OywgYmVsb3cuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBzYWlkIFkgdG8gXCYjMzQ7VmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1wmIzM0OyBhYm92ZSwgdGhlblxuICAzMTpcdFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxuICAzMjpcdFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxuICAzMzpcdFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxuICAzNDpcdFxuICAzNTpcdGlmIFBQUFxuICAzNjpcdFxuICAzNzpcdGNvbmZpZyBQUFBfQlNEQ09NUFxuICAzODpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgUFBQLCB3aGljaCB1c2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQUFAgS2VybmVsIE1vZHVsZSoqCgpPa2F5LCBzbyBJIHNlZSBgaWYgUFBQYCByaWdodCB0aGVyZSBvbiBsaW5lIDM1LiBUaGF0IG1lYW5zIGBQUFBgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgYXJlIGFsbCBwcm9wZXJseSBzZXQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIE15IG1haW4gY29uY2VybiBpcyB0aGF0IGBwcHRwX3Jjdl9jb3JlYCBpcyBjdXJyZW50bHkgZGVjbGFyZWQgYXMgYSBgc3RhdGljIGludGAgZnVuY3Rpb24sIHdoaWNoIGlzLCB3ZWxsLCAqbm90IGlkZWFsKiBhY2NvcmRpbmcgdG8gYmVzdCBwcmFjdGljZXMuIEkgc2VlOiBgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBUaGlzIGdvZXMgYWdhaW5zdCB0aGUgdXN1YWwgYWR2aWNlIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIHNpbmNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIHdoaWNoIG1ha2UgZGVidWdnaW5nIGFuZCB0cmFjaW5nIGZhciBlYXNpZXIuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBpbmxpbmVkLiBIYW5nIG9uLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcjogYHNrLSZndDtza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7YC4gU28gdGhhdCBpbXBsaWVzIGl0JiMzOTtzICpub3QqIGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBtaWdodCBiZSBvayBhcyBpdCBpcy4gQnV0LCBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHBwdHBfcmN2YCBvciBgcHB0cF9jcmVhdGVgIC0tIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHBwdHBfcmN2X2NvcmVgLgoKQWgsIHJpZ2h0LCBgcHB0cF9yY3ZfY29yZWAgaXMgY2FsbGVkIGJ5IGBza19yZWNlaXZlX3NrYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHNrX2JhY2tsb2dfcmN2YC4gSXQgc2VlbXMgaXQgbWF5IGJlIGZpbmUsIHNvIGxldCYjMzk7cyBjb250aW51ZSB0byBjaGVjayBmb3Igb3RoZXIgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwX3Jjdl9jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTQ0PXN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2Vybilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTYwOlx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjEtXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBQUFRQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgcHB0cF9yY3ZgIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEkmIzM5O20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgdGhlIHJlY2VpdmUgcGF0aCBpcyBjcnVjaWFsLiBJdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgaW5jb21pbmcgUFBUUCBwYWNrZXRzIGhpdCB0aGUga2VybmVsLCBhbmQgZnJhbmtseSwgYSBjb21tb24gYXJlYSBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRhdGEgZmxvdyBhbmQgYW55IHN1YnRsZSBudWFuY2VzIGluIGhhbmRsaW5nLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbjogdGhlIGludGVycnVwdCBjb250ZXh0LCBhbnkgbG9ja2luZyB0aGF0JiMzOTtzIGluIHBsYWNlLCBhbmQgaG93IHRoZSBwYXlsb2FkIGRhdGEgaXMgZXh0cmFjdGVkIGFuZCBwYXNzZWQgdXAgdGhlIHN0YWNrLiBBbnkgc3VidGxlIG9mZi1ieS1vbmUgZXJyb3JzIGluIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9uIGhlcmUgaGF2ZSBjYXVzZWQgbWUgbXVjaCBwYWluIGluIHRoZSBwYXN0LiBUaGlzIGFsc28gaGVscHMgd2l0aCB0aGUgY29udGV4dCB3aGVuIGFuYWx5emluZyBhbnkgcmVwb3J0cyBmcm9tIG90aGVyIHJlc2VhcmNoZXJzLCBvciBmcm9tIG15IG93biB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NjQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDY6XHQuaGFuZGxlciA9IHBwdHBfcmN2LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDctfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyB0aGUgUGFja2V0IFJlY2VwdGlvbiBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgcHB0cGAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYHBwdHBfcmN2YCBpcyB0aGUgd29ya2hvcnNlIGhlcmU7IHRoYXQmIzM5O3MgdGhlIEdSRSBwcm90b2NvbCBoYW5kbGVyLiBUaGVuLCB0aGVyZSYjMzk7cyBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIEkgZ2F0aGVyIGhhbmRsZXMgdGhlIHNvY2tldCBiYWNrbG9nLCB0aGUgbW9yZSBkaXJlY3QgaW50ZXJmYWNlLiBCb3RoIGFyZSBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIHZpYSBmdW5jdGlvbiBwb2ludGVycywgb2YgY291cnNlLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiB0aGlzIHR5cGUgb2Ygc29ja2V0IGhhbmRsaW5nLiBCdXQgd2FpdCwgaWYgSSAqd2VyZSogdG8gZXhwb3NlIHNvbWUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIGNvdWxkbiYjMzk7dCBJIGp1c3QgdXNlIGVpdGhlciBgcHB0cF9yY3ZgIG9yIGBwcHRwX3Jjdl9jb3JlYD8gVGhleSYjMzk7cmUgdGhlIHByaW1hcnkgcG9pbnRzIG9mIGVudHJ5IGZvciBwYWNrZXQgcmVjZXB0aW9uIHdpdGhpbiB0aGlzIG1vZHVsZS4gTm93IEkgYW0gd29uZGVyaW5nLi4uIEFyZSB0aGVyZSBhY3R1YWxseSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgcHB0cC5jYD8gVGhhdCB3b3VsZCBpbmZsdWVuY2Ugd2hpY2ggZW50cnkgcG9pbnQgdG8gZXhwb3NlLCBpZiBhbnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUGVlcmluZyBpbnRvIHRoZSBQUFRQIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhhdCBgXnN0YXRpYyBpbnQgcHB0cF9gIGNvbnN0cnVjdC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgd2hlcmUgc29tZSBjcnVjaWFsLCBnbG9iYWxseS1hY2Nlc3NpYmxlIHN0YXRlIG9yIHBlcmhhcHMgYSBmdW5jdGlvbiBwb2ludGVyIGlzIGRlZmluZWQgd2l0aGluIHRoZSBQUFRQIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkIChvciBpZiBpdCBpcyBldmVuIGluaXRpYWxpemVkKSwgYW5kIGNydWNpYWxseSwgKmhvdyogaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBxdWVzdGlvbnM6IElzIGl0IHRocmVhZC1zYWZlPyBEb2VzIGl0IGludHJvZHVjZSBhbnkgcmFjZSBjb25kaXRpb25zPyBXaGF0JiMzOTtzIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhpcyBtb2R1bGU/IEkmIzM5O20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjbGVhciBlbm91Z2ggdGhhdCBJIGRvbiYjMzk7dCBoYXZlIHRvIHRyYWNlIHRvbyBkZWVwbHkgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIGl0IG1pZ2h0IGJlIGJlaW5nIG1vZGlmaWVkIGFuZCB3aGF0IHBvdGVudGlhbCBhY2Nlc3MgcGF0dGVybnMgaXQmIzM5O3MgZm9sbG93aW5nLiBUaGlzIHdpbGwgZ2l2ZSBtZSB3aGF0IEkgbmVlZCB0byBzZWUgd2hhdCBJIHdhbnQgdG8gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludCBwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMzI9c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0OTpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM4NDpzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODUtXHRcdCAgICAgaW50IHNvY2thZGRyX2xlbilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDE3OnN0YXRpYyBpbnQgcHB0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxOC1cdFx0XHRpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ4NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODctXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01MzU9c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ1LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTc4OnN0YXRpYyBpbnQgcHB0cF9wcHBfaW9jdGwoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzktXHR1bnNpZ25lZCBsb25nIGFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBQVFAgQm91bmRzIENoZWNrIFBhdGNoKioKCk9rYXksIHNvIHRoZSBmdW5jdGlvbnMgaW4gcXVlc3Rpb24gaGVyZSBhcmUgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBtZWFucyBJIGNhbiBjb25maWRlbnRseSBpbmNsdWRlIGJvdGggYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgIGluIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIHRoYXQgYFBQVFBgIHNlbGVjdHMgYFBQUE9YYC4uLiBZdXAsIHRoZXJlIGl0IGlzOiBgc2VsZWN0IFBQUE9YYC4gR29vZCwgc28gYFBQUE9YYCBpc24mIzM5O3QgKnN0cmljdGx5KiByZXF1aXJlZCBpbiBgRW5hYmxlQ29uZmlnc2Agc2luY2UgaXQmIzM5O3MgaW1wbGllZCBieSBgUFBUUGAsIGJ1dCB0aGVyZSYjMzk7cyBubyBoYXJtIGluIGxlYXZpbmcgaXQgb3V0LiBJJiMzOTtsbCBqdXN0IHN0aWNrIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBUaG9zZSBzaG91bGQgY292ZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKQWxyaWdodCwgYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLiBUaGlzIGlzIGFsbCBhYm91dCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCwgc3BlY2lmaWNhbGx5IHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBmcm9tIHRoZSBgcGF5bG9hZGAuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeC4gQW5kIHNpbmNlIFBQVFAgaXMgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb3ZlciBJUCwgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUuIFNvLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBUaGlzIHBhdGNoIHByZXZlbnRzIGEgcmVhZCB2dWxuZXJhYmlsaXR5IGluIGEgZnVuY3Rpb24gcmVsYXRlZCB0byBQUFRQIHBhY2tldCBwcm9jZXNzaW5nLiBJdCYjMzk7cyBhIG5ldHdvcmsgc3RhY2sgdnVsbmVyYWJpbGl0eSB0aGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgcHJhY3RpY2FsIHVzZSBjYXNlLgpgRm9jdXNTeW1ib2xzYCBhcmUgZGVmaW5pdGVseSBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3JjdmAuCmBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li43MDhkOGZiM2E5MDAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTMxNywxNiAmIzQzOzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKJiM0MzsJCWlmIChwYXlsb2FkX2xlbiAmZ3Q7PSBQUFBfSERSTEVOICYjNDM7IDEgJmFtcDsmYW1wOwomIzQzOwkJICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkgJmFtcDsmYW1wOwomIzQzOwkJICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQICZhbXA7JmFtcDsKJiM0MzsJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQogCQkJZ290byBhbGxvd19wYWNrZXQ7CiAJfSBlbHNlIHsKIAkJb3B0LSZndDtzZXFfcmVjdiA9IHNlcTsKIGFsbG93X3BhY2tldDoKIAkJc2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTsKIAotCQlpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgJmFtcDsmYW1wOyBwYXlsb2FkWzFdID09IFBQUF9VSSkgewomIzQzOwkJaWYgKHBheWxvYWRfbGVuICZndDs9IDIgJmFtcDsmYW1wOwomIzQzOwkJICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHsKIAkJCS8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqLwogCQkJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgMykKIAkJCQlnb3RvIGRyb3A7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY2CgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDU4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHBwdHBfcmN2X2NvcmUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBgcHB0cF9yY3ZfY29yZWAgaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYWJvdXQgYWRkaW5nIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcywgc3BlY2lmaWNhbGx5IGJlZm9yZSBhY2Nlc3NpbmcgYHBheWxvYWRgIGFycmF5IGVsZW1lbnRzIGxpa2UgYHBheWxvYWRbMF1gLCBgcGF5bG9hZFsxXWAsIGFuZCBzbyBvbi4gVGhleSYjMzk7cmUgbWFraW5nIHN1cmUgYHBheWxvYWRfbGVuYCBpcyBiaWcgZW5vdWdoLiBJdCYjMzk7cyB0aGUgY2xhc3NpYyBzYWZlZ3VhcmQuCgpNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGNoZWNrcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugd2hlbiBgcGF5bG9hZGAgaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLCB0aGUgZXhpc3RpbmcgY29kZSBjb3VsZCB0cnkgdG8gcmVhZCBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLCB0cmlnZ2VyaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhvc2UgYXJlICpwcmVjaXNlbHkqIHRoZSBraW5kIG9mIGlzc3VlcyBLQVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuCgpJIG1vbWVudGFyaWx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidXQgYWZ0ZXIgYSBtb21lbnQsIEkgcmVhbGl6ZSB0aGF0IGBwYXlsb2FkYCBwb2ludHMgdG8gZGF0YSB3aXRoaW4gdGhlIGBza2JgLCBzcGVjaWZpY2FsbHkgYHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplYC4gVGhlIHByb2JsZW0gKmlzbiYjMzk7dCogdW5pbml0aWFsaXplZCBtZW1vcnkgZGlyZWN0bHksIGJ1dCByYXRoZXIgdGhhdCB0aGUgbGVuZ3RoIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAgbWlnaHQgYmUgaW5zdWZmaWNpZW50IGFuZCB0aGF0IGl0IG1pZ2h0IGJlIHNtYWxsIGVub3VnaCB0byBhbGxvdyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gTW9yZSBzcGVjaWZpY2FsbHksIGBwYXlsb2FkX2xlbmAgaXMgZGVyaXZlZCBmcm9tIGBza2ItJmd0O2xlbiAtIGhlYWRlcnNpemVgLCBhbmQgaWYgdGhhdCBudW1iZXIgaXMgdG9vIHNtYWxsLCByZWFkaW5nIGBwYXlsb2FkWzRdYCB3b3VsZCByZWFkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBkYXRhLiAKClNvLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpc3N1ZS4gVGhpcyBpcyBjbGVhcmx5IGEgS0FTQU4gY2FzZSwgbm90IGEgS01TQU4gaXNzdWUuIFRoZSBwYXRjaCBpcyBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIGFkZGluZyB0aGVzZSBjaGVja3MgdG8gcHJldmVudCBhIEtBU0FOLWRldGVjdGVkIGZhdWx0LgoKTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IGFnYWluOgoKYGBgYwogCWlmIChzZXEgJmx0OyBvcHQtJmd0O3NlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtJmd0O3NlcV9yZWN2LCBzZXEpKSB7Ci0JCWlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpICZhbXA7JmFtcDsgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSAmYW1wOyZhbXA7Ci0JCQkJKFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSAmYW1wOyZhbXA7Ci0JCQkJKChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpCiYjNDM7CQlpZiAocGF5bG9hZF9sZW4gJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCSAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkKIAkJCWdvdG8gYWxsb3dfcGFja2V0OwpgYGAKClllcywgaXQmIzM5O3MgY3J5c3RhbCBjbGVhcjogT09CIHJlYWQgZml4LiBMZW5ndGggY2hlY2tzIGJlZm9yZSBhY2Nlc3NpbmcgYHBheWxvYWRgLiBLTVNBTiBpcyBub3QgcmVsZXZhbnQgaGVyZS4gU28sIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJJiMzOTttIGNvbmZpZGVudC4gVGltZSB0byBtb3ZlIG9uLiBMZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDFgIGFuZCBgcGF5bG9hZF9sZW4gXHUwMDNlPSAyYCkgYmVmb3JlIGFjY2Vzc2luZyBlbGVtZW50cyBvZiB0aGUgYHBheWxvYWRgIGFycmF5IGluIGBwcHRwX3Jjdl9jb3JlYC4gVGhpcyBpcyBhIGNsYXNzaWMgZml4IGZvciBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWRzLCB3aGVyZSB0aGUgY29kZSBwcmV2aW91c2x5IGFjY2Vzc2VkIHBhY2tldCBwYXlsb2FkIGJ5dGVzIHdpdGhvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIHBhY2tldCB3YXMgbGFyZ2UgZW5vdWdoLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHRoaXMgY2xhc3Mgb2YgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MDcuODgxNzYzMzgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxMDcyNjkxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBQXCIsXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgUFBUUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjA3Ljg4MTc2OTU5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjA5ODU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVkM2RjNDYyNzBiMjc5MGU5NmJkYTQxMzllNTM0YWZjZGIyN2Y4ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG5pbmRleCBhNzk3YTA2MDZmNmI0Li43MDhkOGZiM2E5MDAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuQEAgLTMxNywxNiArMzE3LDE4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiBcXHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXFxuIFxcdGlmIChzZXEgXFx1MDAzYyBvcHQtXFx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcXG4tXFx0XFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXFx1MDAyNlxcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHRcXHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxcbitcXHRcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcXG4gXFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG9wdC1cXHUwMDNlc2VxX3JlY3YgPSBzZXE7XFxuIGFsbG93X3BhY2tldDpcXG4gXFx0XFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcXG4gXFxuLVxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xcbitcXHRcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZT0gMiBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXFx1MDAyNlxcdTAwMjYgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHtcXG4gXFx0XFx0XFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXFxuIFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIFxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MDkuMDg0NTQ1Njg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxMTY2MDMzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBQXCIsXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIFBQVFAgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgKzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuK1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4gXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gXHRcdFx0XHRnb3RvIGRyb3A7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzowOS4wODQ1NDcxMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMzNjQzMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQUFRQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdGFyZ2V0cyBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIFN0cmFpZ2h0IGF3YXksIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBQUFRQIHByb3RvY29sLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g7IGl0J3MgYWRkaW5nIHNvbWUgYmFzaWMgYm91bmRzIGNoZWNraW5nIG9uIGFjY2Vzc2VzIHRvIHRoZSBgcGF5bG9hZGAgYnVmZmVyLiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnRpb24gaXMgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgcmVhZCBiZXlvbmQgdGhlIGFsbG9jYXRlZCBtZW1vcnksIHdoaWNoIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHZ1bG5lcmFiaWxpdHkuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCdzIGd1YXJkaW5nIGFnYWluc3QgcmVhZHMgZnJvbSB2YXJpb3VzIG9mZnNldHMgd2l0aGluIGBwYXlsb2FkYC4gVGhlIHBhdGNoIHZlcmlmaWVzIHRoYXQgYHBheWxvYWRfbGVuYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBtaW5pbXVtIGxlbmd0aCwgc3BlY2lmaWNhbGx5IGBQUFBfSERSTEVOICsgMWAsIGJlZm9yZSByZWFkaW5nIGZyb20sIGZvciBleGFtcGxlLCBgcGF5bG9hZFswXWAsIGBwYXlsb2FkWzFdYCwgb3IgYHBheWxvYWRbNF1gLiBUaGVyZSdzIGFsc28gYSBjaGVjayB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgYXQgbGVhc3QgMiBieXRlcyBsb25nIGJlZm9yZSByZWFkaW5nIGBwYXlsb2FkWzBdYCBhbmQgYHBheWxvYWRbMV1gLlxuXG5TbywgdGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgaXMgYSBidWcgZml4IOKAkyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIGJlaW5nIHNvIG1ldGljdWxvdXMgYWJvdXQgdGhlIGxlbmd0aCBjaGVja3Mgc3VnZ2VzdHMgdGhhdCBwcmV2aW91cyBhc3N1bXB0aW9ucyBhYm91dCBwYWNrZXQgc2l6ZXMgd2VyZSBmbGF3ZWQsIGxlYXZpbmcgdGhlIHN5c3RlbSBvcGVuIHRvIGF0dGFja3MuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHNpZ25pZmljYW50IHRoaXMgdnVsbmVyYWJpbGl0eSBpcywgYnV0IGJhc2VkIG9uIHRoaXMgcXVpY2sgYXNzZXNzbWVudCwgaXQgaXMgYSBsb3ctaGFuZ2luZyBmcnVpdCB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MTMuNjE4MTkzMzU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2Mjk0NDgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX3Jjdl9jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjE0LjE4MTE0NDg5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ1NzI0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZzpcblxuKipGdXp6aW5nIFBQVFAncyBDb3JlIFJlY2VpdmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGNyaXRpY2FsIGBza19iYWNrbG9nX3JjdmAgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIFBQVFAgc29ja2V0cy4gR2l2ZW4gdGhhdCBpdCdzIGhhbmRsaW5nIGluY29taW5nIGRhdGEgYXQgYSBsb3cgbGV2ZWwsIGFuZCBpdCdzIGRpcmVjdGx5IGV4cG9zZWQgYXMgYSByZWNlaXZlIGhhbmRsZXIsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdG8gbWUgdGhhdCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIFBQVFAgaW1wbGVtZW50YXRpb24gcmVhbGx5IHdlbGwgYmVjYXVzZSBpdCBoYXMgYSBoaWdoIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBlbmFibGUgUFBUUCB3aXRoaW4gdGhlIGJ1aWxkLCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIG1vZHVsZSBpcyBpbmNvcnBvcmF0ZWQuIFRoYXQgd2lsbCBhbGxvdyBtZSB0byBzZXQgdXAgYW4gZWZmZWN0aXZlIGZ1enppbmcgZW52aXJvbm1lbnQuIEtub3dpbmcgaG93IHRvIHRvZ2dsZSBQUFRQJ3MgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIHZpdGFsIGZvciBjb25maWd1cmluZyBhbmQgbW9uaXRvcmluZyB0aGUgdGVzdCBlbnZpcm9ubWVudCwgYW5kIGVuc3VyZSBhbnkgZnV6emluZyBlZmZvcnRzIGFyZSB0YXJnZXRlZCBhbmQgcmVwZWF0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjE3LjMwNTcyMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTczNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2MC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjItXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIElQdjQgKFBQVFApXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoxNy4zNTEzMjQ1OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDc3NjQzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipFeGFtaW5pbmcgUFBUUCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gdXNlIGBQUFRQYC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgYFBQVFBgIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBhc3NvY2lhdGVkIG1vZHVsZXMuIEknbSBnb2luZyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIFBQUC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBmcm9tIHRoZXJlLCBJIHNob3VsZCBiZSBhYmxlIHRvIG1hcCBvdXQgd2hhdCdzIHJlcXVpcmVkIGZvciBhIGBQUFRQYCBzZXR1cC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCByZXF1aXJlbWVudHMgZm9yIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMC45NTkwOTIzMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjE6XFx0Y29uZmlnIFBQVFBcXG4gMTYyOlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG4gMTYzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXFxuIDE2NDpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTY1OlxcdFxcdGhlbHBcXG4gMTY2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQIG92ZXIgSVB2NC4oUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKVxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcXG4gMTY5OlxcdFxcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cXG4gMTcwOlxcdFxcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xcbiAxNzE6XFx0XFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUFBQT0wyVFBcXG4gMTc0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbiAxNzU6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQXFxuIDE3NjpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcXG4gMTc5OlxcdFxcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcXG4gMTgwOlxcdFxcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjIwLjk1OTE2MDgyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDI1MzQ4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGJlaGF2aW9yIGhlcmUgaGluZ2VzIG9uIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBORVRfSVBHUkVfREVNVVhgLiBSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgdG8gY29udGludWUuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIEkga25vdyBpbW1lZGlhdGVseSB3aGVyZSB0byBsb29rIGZvciB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIg4oCTIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIElQdjQgZGlyZWN0b3J5LiBMZXQncyBkaXZlIGludG8gYG5ldC9pcHY0L0tjb25maWdgIHRvIGluc3BlY3QgdGhlIGRlZmluaXRpb24gb2YgYE5FVF9JUEdSRV9ERU1VWGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBsb2dpYyBwYXRoIGlzIHRha2VuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMy44MDE2OTg5ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY0MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVfREVNVVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMy44NDc1Njg1NTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzODU2ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogYE5FVF9JUEdSRV9ERU1VWGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfSVBHUkVfREVNVVhgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBjcml0aWNhbCBwYXRoLiBMZXQncyBzdGFydCBieSBsaXN0aW5nIHRoZSBvYnZpb3VzIG9uZXMsIGFuZCBiZSBzdXJlIHRvIGNoZWNrIHRob3NlIGluIHR1cm4uIEknbSB0aGlua2luZy4uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBsaWtlIElQIHN0YWNrIG1vZHVsZXMsIHJvdXRpbmcgcHJvdG9jb2xzLCBhbmQgdHVubmVsaW5nIG1lY2hhbmlzbXM/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvciBpcyBpdCBtb3JlIGFic3RyYWN0ZWQ/IEFuZCBvZiBjb3Vyc2UsIGRvbid0IGZvcmdldCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgd2hhdCBvdGhlciBzZXR0aW5ncyBtaWdodCBpbXBsaWNpdGx5IGluZmx1ZW5jZSBgTkVUX0lQR1JFX0RFTVVYYCdzIGJlaGF2aW9yIG9yIGV2ZW4gaXRzIHZlcnkgYXZhaWxhYmlsaXR5PyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc3VsdCB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHksIG1heWJlIHNvbWUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBpZiBpdCBleGlzdHMsIGFuZCBwb3NzaWJseSBldmVuIHRyYWNlIHNvbWUgbmV0d29yayB0cmFmZmljIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIG1hcCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFueSBtb2RpZmljYXRpb24sIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemF0aW9uLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYW5kIHBvc3NpYmxlIHNpZGUtZWZmZWN0cyBvZiBhbnkgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjIzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjcuMDg2MTM5NTk0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuIDE4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbiAxODI6XFx0XFx0aGVscFxcbiAxODM6XFx0XFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXFxuIDE4NDpcXHRcXHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxcbiAxODU6XFx0XFxuIDE4NjpcXHRjb25maWcgTkVUX0lQX1RVTk5FTFxcbiAxODc6XFx0XFx0dHJpc3RhdGVcXG4gMTg4OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMTg5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjcuMDg2MjQyMTM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDUzMjc3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgYE5FVF9JUEdSRV9ERU1VWGAuIE5vIGRpcmVjdCBkZXBlbmRlbmNpZXMgdGhlcmUsIHRoYXQncyBnb29kLiBXaGljaCBtZWFucyB0aGUgcHJpbWFyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgYXJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgaXRzZWxmLiBOb3csIEkgaGF2ZSB0byBjb25zaWRlciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCwgYXMgaXMgbXkgaGFiaXQuIEkgc3VzcGVjdCB0aGF0IGBQUFBgIGFuZCBgUFBQT1hgIG1pZ2h0IGFsc28gYmUgbmVlZGVkIGhlcmUuIEhvd2V2ZXIsIEkgcmVjYWxsIHRoYXQgYFBQVFBgIHR5cGljYWxseSBzZWxlY3RzIGBQUFBPWGAsIHdoaWNoIG1pZ2h0IGFsbGV2aWF0ZSBvbmUgcmVxdWlyZW1lbnQuIExldCdzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucy4gQmVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBjaGVjayB0aGUgYFBQUGAgY29uZmlnIGFuZCBjbGFyaWZ5IGFueSBwb3RlbnRpYWwgaW50ZXJzZWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjkuODkxNTcyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDk0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY6Y29uZmlnIFBQUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0zNT1pZiBQUFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNzpjb25maWcgUFBQX0JTRENPTVBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiUFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjU1OmNvbmZpZyBQUFBfREVGTEFURVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJQUFAgRGVmbGF0ZSBjb21wcmVzc2lvblxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTY4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY5OmNvbmZpZyBQUFBfRklMVEVSXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiUFBQIGZpbHRlcmluZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgwLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjgxOmNvbmZpZyBQUFBfTVBQRVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgyLVxcdHRyaXN0YXRlIFxcXCJQUFAgTVBQRSBjb21wcmVzc2lvbiAoZW5jcnlwdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05MS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo5Mjpjb25maWcgUFBQX01VTFRJTElOS1xcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIlBQUCBtdWx0aWxpbmsgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBQUE9BVE1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEFUTVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTctXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEV0aGVybmV0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiMSBiaXQgKDIgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiMiBiaXRzICg0IGJ1Y2tldHMpXFxcIlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIjQgYml0cyAoMTYgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiOCBiaXRzICgyNTYgYnVja2V0cylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE4MT1pZiBUVFlcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTgzOmNvbmZpZyBQUFBfQVNZTkNcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODQtXFx0dHJpc3RhdGUgXFxcIlBQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTk2OmNvbmZpZyBQUFBfU1lOQ19UVFlcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIlBQUCBzdXBwb3J0IGZvciBzeW5jIHR0eSBwb3J0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjkuOTQxMDg3ODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MjM5MDQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBQUFRQL1BQUCBSZWxhdGlvbnNoaXAqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGBQUFRQYCBtZW50aW9uZWQgaW4gcmVsYXRpb24gdG8gYFBQUGAsIGFuZCBpbW1lZGlhdGVseSBteSBtZW50YWwgZ2VhcnMgYXJlIHR1cm5pbmcuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgUFBUUGAgaXMgc29tZWhvdyAqaW5zaWRlKiBgUFBQYCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJcyB0aGlzIGEgcHJvdG9jb2wgbGF5ZXJpbmcgaXNzdWUsIGEgZGVwZW5kZW5jeSBpc3N1ZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBwaHJhc2luZyBzdWdnZXN0cyBhIGhpZXJhcmNoaWNhbCByZWxhdGlvbnNoaXAgbWlnaHQgYmUgYXQgcGxheSwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIG5hdHVyZSBvZiB0aGVpciBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlaXIgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgZWxlbWVudHMgaW50ZXJhY3QuIEl0J3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0J2xsIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjMyLjkxMzQ4MTE1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQUFAgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUFBQXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBTTEhDXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXFxuICAxMTpcXHRcXHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXFxuICAxMjpcXHRcXHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXFxuICAxMzpcXHRcXHQgIG90aGVyd2lzZSB5b3UgY2FuJ3QgdXNlIGl0OyBtb3N0IEludGVybmV0IGFjY2VzcyBwcm92aWRlcnMgdGhlc2VcXG4gIDE0OlxcdFxcdCAgZGF5cyBzdXBwb3J0IFBQUCByYXRoZXIgdGhhbiBTTElQLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIHVzZSBQUFAsIHlvdSBuZWVkIGFuIGFkZGl0aW9uYWwgcHJvZ3JhbSBjYWxsZWQgcHBwZCwgYXZhaWxhYmxlIGF0XFxuICAxNzpcXHRcXHQgIFxcdTAwM2NodHRwczovL3BwcC5zYW1iYS5vcmdcXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxcbiAgMTg6XFx0XFx0ICByZWNvbW1lbmRlZCBpbiBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL0NoYW5nZXNcXHUwMDNlLlxcbiAgMTk6XFx0XFx0ICBUaGUgUFBQIG9wdGlvbiBlbmxhcmdlcyB5b3VyIGtlcm5lbCBieSBhYm91dCAxNiBLQi5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBUaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHZlcnNpb25zIG9mIFBQUDogdGhlIHRyYWRpdGlvbmFsIFBQUCBmb3JcXG4gIDIyOlxcdFxcdCAgYXN5bmNocm9ub3VzIGxpbmVzLCBzdWNoIGFzIHJlZ3VsYXIgYW5hbG9nIHBob25lIGxpbmVzLCBhbmRcXG4gIDIzOlxcdFxcdCAgc3luY2hyb25vdXMgUFBQIHdoaWNoIGNhbiBiZSB1c2VkIG92ZXIgZGlnaXRhbCBJU0ROIGxpbmVzIGZvclxcbiAgMjQ6XFx0XFx0ICBleGFtcGxlLiAgSWYgeW91IHdhbnQgdG8gdXNlIFBQUCBvdmVyIHBob25lIGxpbmVzIG9yIG90aGVyXFxuICAyNTpcXHRcXHQgIGFzeW5jaHJvbm91cyBzZXJpYWwgbGluZXMsIHlvdSBuZWVkIHRvIHNheSBZIChvciBNKSBoZXJlIGFuZCBhbHNvIHRvXFxuICAyNjpcXHRcXHQgIHRoZSBuZXh0IG9wdGlvbiwgXFxcIlBQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcXFwiLiAgRm9yIFBQUCBvdmVyXFxuICAyNzpcXHRcXHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcXFwiU3VwcG9ydFxcbiAgMjg6XFx0XFx0ICBzeW5jaHJvbm91cyBQUFBcXFwiLCBiZWxvdy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3Ugc2FpZCBZIHRvIFxcXCJWZXJzaW9uIGluZm9ybWF0aW9uIG9uIGFsbCBzeW1ib2xzXFxcIiBhYm92ZSwgdGhlblxcbiAgMzE6XFx0XFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxcbiAgMzI6XFx0XFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxcbiAgMzM6XFx0XFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRpZiBQUFBcXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIFBQUF9CU0RDT01QXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblxcXCJcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvbiBtZXRob2QgZm9yIFBQUCwgd2hpY2ggdXNlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzozMi45MTM1Njg0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4ODk2NzM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBQUCBLZXJuZWwgTW9kdWxlKipcblxuT2theSwgc28gSSBzZWUgYGlmIFBQUGAgcmlnaHQgdGhlcmUgb24gbGluZSAzNS4gVGhhdCBtZWFucyBgUFBQYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgIGFyZSBhbGwgcHJvcGVybHkgc2V0LlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gTXkgbWFpbiBjb25jZXJuIGlzIHRoYXQgYHBwdHBfcmN2X2NvcmVgIGlzIGN1cnJlbnRseSBkZWNsYXJlZCBhcyBhIGBzdGF0aWMgaW50YCBmdW5jdGlvbiwgd2hpY2ggaXMsIHdlbGwsICpub3QgaWRlYWwqIGFjY29yZGluZyB0byBiZXN0IHByYWN0aWNlcy4gSSBzZWU6IGBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIFRoaXMgZ29lcyBhZ2FpbnN0IHRoZSB1c3VhbCBhZHZpY2UgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgc2luY2UgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgd2hpY2ggbWFrZSBkZWJ1Z2dpbmcgYW5kIHRyYWNpbmcgZmFyIGVhc2llci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBpbmxpbmVkLiBIYW5nIG9uLCBpdCBsb29rcyBsaWtlIGl0J3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyOiBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO2AuIFNvIHRoYXQgaW1wbGllcyBpdCdzICpub3QqIGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBtaWdodCBiZSBvayBhcyBpdCBpcy4gQnV0LCBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHBwdHBfcmN2YCBvciBgcHB0cF9jcmVhdGVgIC0tIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHBwdHBfcmN2X2NvcmVgLlxuXG5BaCwgcmlnaHQsIGBwcHRwX3Jjdl9jb3JlYCBpcyBjYWxsZWQgYnkgYHNrX3JlY2VpdmVfc2tiYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggaW4gdHVybiBjYWxscyBgc2tfYmFja2xvZ19yY3ZgLiBJdCBzZWVtcyBpdCBtYXkgYmUgZmluZSwgc28gbGV0J3MgY29udGludWUgdG8gY2hlY2sgZm9yIG90aGVyIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjM4LjQwMjUzODgxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNDk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01NDQ9c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjA6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU2MS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzozOC40NDc3OTIxNjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMjQyNDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUFBUUCBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIGBwcHRwX3JjdmAgd2l0aGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gSSdtIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSB1bmRlcnN0YW5kaW5nIHRoZSByZWNlaXZlIHBhdGggaXMgY3J1Y2lhbC4gSXQncyB0aGUgcG9pbnQgd2hlcmUgaW5jb21pbmcgUFBUUCBwYWNrZXRzIGhpdCB0aGUga2VybmVsLCBhbmQgZnJhbmtseSwgYSBjb21tb24gYXJlYSBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRhdGEgZmxvdyBhbmQgYW55IHN1YnRsZSBudWFuY2VzIGluIGhhbmRsaW5nLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluOiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGFueSBsb2NraW5nIHRoYXQncyBpbiBwbGFjZSwgYW5kIGhvdyB0aGUgcGF5bG9hZCBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcGFzc2VkIHVwIHRoZSBzdGFjay4gQW55IHN1YnRsZSBvZmYtYnktb25lIGVycm9ycyBpbiBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbiBoZXJlIGhhdmUgY2F1c2VkIG1lIG11Y2ggcGFpbiBpbiB0aGUgcGFzdC4gVGhpcyBhbHNvIGhlbHBzIHdpdGggdGhlIGNvbnRleHQgd2hlbiBhbmFseXppbmcgYW55IHJlcG9ydHMgZnJvbSBvdGhlciByZXNlYXJjaGVycywgb3IgZnJvbSBteSBvd24gdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQxLjg1MDIyMzg1OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1MDE1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTY0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NjpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ3LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQxLjg5NzczMjI1OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE1NDUxMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIHRoZSBQYWNrZXQgUmVjZXB0aW9uIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgcHB0cGAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYHBwdHBfcmN2YCBpcyB0aGUgd29ya2hvcnNlIGhlcmU7IHRoYXQncyB0aGUgR1JFIHByb3RvY29sIGhhbmRsZXIuIFRoZW4sIHRoZXJlJ3MgYHBwdHBfcmN2X2NvcmVgLCB3aGljaCBJIGdhdGhlciBoYW5kbGVzIHRoZSBzb2NrZXQgYmFja2xvZywgdGhlIG1vcmUgZGlyZWN0IGludGVyZmFjZS4gQm90aCBhcmUgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIHZpYSBmdW5jdGlvbiBwb2ludGVycywgb2YgY291cnNlLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiB0aGlzIHR5cGUgb2Ygc29ja2V0IGhhbmRsaW5nLiBCdXQgd2FpdCwgaWYgSSAqd2VyZSogdG8gZXhwb3NlIHNvbWUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIGNvdWxkbid0IEkganVzdCB1c2UgZWl0aGVyIGBwcHRwX3JjdmAgb3IgYHBwdHBfcmN2X2NvcmVgPyBUaGV5J3JlIHRoZSBwcmltYXJ5IHBvaW50cyBvZiBlbnRyeSBmb3IgcGFja2V0IHJlY2VwdGlvbiB3aXRoaW4gdGhpcyBtb2R1bGUuIE5vdyBJIGFtIHdvbmRlcmluZy4uLiBBcmUgdGhlcmUgYWN0dWFsbHkgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYHBwdHAuY2A/IFRoYXQgd291bGQgaW5mbHVlbmNlIHdoaWNoIGVudHJ5IHBvaW50IHRvIGV4cG9zZSwgaWYgYW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQ2LjAxMzE4NTkzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MjA0ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgcHB0cF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NDYuMDU5MTE1NjU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDE1MTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgaW50byB0aGUgUFBUUCBDb2RlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBsZXQncyBkaXZlIHJpZ2h0IGluIGFuZCBleGFtaW5lIHRoYXQgYF5zdGF0aWMgaW50IHBwdHBfYCBjb25zdHJ1Y3QuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHByb2JhYmx5IHdoZXJlIHNvbWUgY3J1Y2lhbCwgZ2xvYmFsbHktYWNjZXNzaWJsZSBzdGF0ZSBvciBwZXJoYXBzIGEgZnVuY3Rpb24gcG9pbnRlciBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgUFBUUCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUsIGhvdyBpdCdzIGluaXRpYWxpemVkIChvciBpZiBpdCBpcyBldmVuIGluaXRpYWxpemVkKSwgYW5kIGNydWNpYWxseSwgKmhvdyogaXQncyBiZWluZyB1c2VkLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zOiBJcyBpdCB0aHJlYWQtc2FmZT8gRG9lcyBpdCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucz8gV2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhpcyBtb2R1bGU/IEknbSBob3BpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNsZWFyIGVub3VnaCB0aGF0IEkgZG9uJ3QgaGF2ZSB0byB0cmFjZSB0b28gZGVlcGx5IHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIGl0IG1pZ2h0IGJlIGJlaW5nIG1vZGlmaWVkIGFuZCB3aGF0IHBvdGVudGlhbCBhY2Nlc3MgcGF0dGVybnMgaXQncyBmb2xsb3dpbmcuIFRoaXMgd2lsbCBnaXZlIG1lIHdoYXQgSSBuZWVkIHRvIHNlZSB3aGF0IEkgd2FudCB0byBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1Nzo0OS43MDA2Mzc5MzVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDgwNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IHBwdHBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMzI9c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM4NDpzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzg1LVxcdFxcdCAgICAgaW50IHNvY2thZGRyX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDE3OnN0YXRpYyBpbnQgcHB0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MTgtXFx0XFx0XFx0aW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODY6c3RhdGljIGludCBwcHRwX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4Ny1cXHRpbnQgcGVlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01MzU9c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3OS1cXHR1bnNpZ25lZCBsb25nIGFyZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NDkuNzUxNzIyNTM0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjg1NzgwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBQVFAgQm91bmRzIENoZWNrIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBoZXJlIGFyZSBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGF0IG1lYW5zIEkgY2FuIGNvbmZpZGVudGx5IGluY2x1ZGUgYm90aCBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3JjdmAgaW4gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgd2l0aCBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgY29uZmlybSB0aGF0IGBQUFRQYCBzZWxlY3RzIGBQUFBPWGAuLi4gWXVwLCB0aGVyZSBpdCBpczogYHNlbGVjdCBQUFBPWGAuIEdvb2QsIHNvIGBQUFBPWGAgaXNuJ3QgKnN0cmljdGx5KiByZXF1aXJlZCBpbiBgRW5hYmxlQ29uZmlnc2Agc2luY2UgaXQncyBpbXBsaWVkIGJ5IGBQUFRQYCwgYnV0IHRoZXJlJ3Mgbm8gaGFybSBpbiBsZWF2aW5nIGl0IG91dC4gSSdsbCBqdXN0IHN0aWNrIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBUaG9zZSBzaG91bGQgY292ZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBwYXRjaCBpdHNlbGYuIFRoaXMgaXMgYWxsIGFib3V0IGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGZyb20gdGhlIGBwYXlsb2FkYC4gSXQncyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXguIEFuZCBzaW5jZSBQUFRQIGlzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG92ZXIgSVAsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuIFNvLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC5cblxuVGhlIGxvZ2ljIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IFRoaXMgcGF0Y2ggcHJldmVudHMgYSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYSBmdW5jdGlvbiByZWxhdGVkIHRvIFBQVFAgcGFja2V0IHByb2Nlc3NpbmcuIEl0J3MgYSBuZXR3b3JrIHN0YWNrIHZ1bG5lcmFiaWxpdHkgdGhhdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgcHJhY3RpY2FsIHVzZSBjYXNlLlxuYEZvY3VzU3ltYm9sc2AgYXJlIGRlZmluaXRlbHkgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgLlxuYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBiZSBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuXG5cblRpbWUgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczNiwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NTYuMTIwMzAzNDU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA4NDI0ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiLFxuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIixcbiAgICBcIlBQVFBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgUFBUUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjU2LjIwMTE1MjE3OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc4Nzg3MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjU2LjIwMTY1NjM1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5Nzg3MzYyMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcXHUwMDNlPSBQUFBfSERSTEVOICsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcXHUwMDNlPSAyYCkgYmVmb3JlIGFjY2Vzc2luZyBlbGVtZW50cyBvZiB0aGUgYHBheWxvYWRgIGFycmF5IGluIGBwcHRwX3Jjdl9jb3JlYC4gVGhpcyBpcyBhIGNsYXNzaWMgZml4IGZvciBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWRzLCB3aGVyZSB0aGUgY29kZSBwcmV2aW91c2x5IGFjY2Vzc2VkIHBhY2tldCBwYXlsb2FkIGJ5dGVzIHdpdGhvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIHBhY2tldCB3YXMgbGFyZ2UgZW5vdWdoLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHRoaXMgY2xhc3Mgb2YgYnVncy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgKzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuK1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4gXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gXHRcdFx0XHRnb3RvIGRyb3A7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1Nzo1Ni4yMDE2NTkxMjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTc4NzMzODY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHBwdHBfcmN2X2NvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGBwcHRwX3Jjdl9jb3JlYCBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGFib3V0IGFkZGluZyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMsIHNwZWNpZmljYWxseSBiZWZvcmUgYWNjZXNzaW5nIGBwYXlsb2FkYCBhcnJheSBlbGVtZW50cyBsaWtlIGBwYXlsb2FkWzBdYCwgYHBheWxvYWRbMV1gLCBhbmQgc28gb24uIFRoZXkncmUgbWFraW5nIHN1cmUgYHBheWxvYWRfbGVuYCBpcyBiaWcgZW5vdWdoLiBJdCdzIHRoZSBjbGFzc2ljIHNhZmVndWFyZC5cblxuTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGVzZSBjaGVja3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gYHBheWxvYWRgIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgdGhlIGV4aXN0aW5nIGNvZGUgY291bGQgdHJ5IHRvIHJlYWQgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciwgdHJpZ2dlcmluZyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRob3NlIGFyZSAqcHJlY2lzZWx5KiB0aGUga2luZCBvZiBpc3N1ZXMgS0FTQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LlxuXG5JIG1vbWVudGFyaWx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidXQgYWZ0ZXIgYSBtb21lbnQsIEkgcmVhbGl6ZSB0aGF0IGBwYXlsb2FkYCBwb2ludHMgdG8gZGF0YSB3aXRoaW4gdGhlIGBza2JgLCBzcGVjaWZpY2FsbHkgYHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZWAuIFRoZSBwcm9ibGVtICppc24ndCogdW5pbml0aWFsaXplZCBtZW1vcnkgZGlyZWN0bHksIGJ1dCByYXRoZXIgdGhhdCB0aGUgbGVuZ3RoIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAgbWlnaHQgYmUgaW5zdWZmaWNpZW50IGFuZCB0aGF0IGl0IG1pZ2h0IGJlIHNtYWxsIGVub3VnaCB0byBhbGxvdyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gTW9yZSBzcGVjaWZpY2FsbHksIGBwYXlsb2FkX2xlbmAgaXMgZGVyaXZlZCBmcm9tIGBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZWAsIGFuZCBpZiB0aGF0IG51bWJlciBpcyB0b28gc21hbGwsIHJlYWRpbmcgYHBheWxvYWRbNF1gIHdvdWxkIHJlYWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGRhdGEuIFxuXG5TbywgaXQncyBkZWZpbml0ZWx5IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpc3N1ZS4gVGhpcyBpcyBjbGVhcmx5IGEgS0FTQU4gY2FzZSwgbm90IGEgS01TQU4gaXNzdWUuIFRoZSBwYXRjaCBpcyBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIGFkZGluZyB0aGVzZSBjaGVja3MgdG8gcHJldmVudCBhIEtBU0FOLWRldGVjdGVkIGZhdWx0LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46XG5cbmBgYGNcbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuYGBgXG5cblllcywgaXQncyBjcnlzdGFsIGNsZWFyOiBPT0IgcmVhZCBmaXguIExlbmd0aCBjaGVja3MgYmVmb3JlIGFjY2Vzc2luZyBgcGF5bG9hZGAuIEtNU0FOIGlzIG5vdCByZWxldmFudCBoZXJlLiBTbywgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEknbSBjb25maWRlbnQuIFRpbWUgdG8gbW92ZSBvbi4gTGV0J3Mgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY2LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU4OjA1Ljk4OTAwMDIwMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 08:55:54 +0000 UTC FinishedAt: 2026-08-13 08:58:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6057f06ef7afa9893ed33603f7917fa39d237b5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP", "PPTP", "NET_IPGRE_DEMUX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6057f06ef7afa9893ed33603f7917fa39d237b5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP", "PPTP", "NET_IPGRE_DEMUX" ], "series_id": "ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7LAogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVkM2RjNDYyNzBiMjc5MGU5NmJkYTQxMzllNTM0YWZjZGIyN2Y4ZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwODo1NzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgJiM0MzszMTcsMTggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4mIzQzO1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDEgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSB8fCBwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpXG4gXHRcdFx0Z290byBhbGxvd19wYWNrZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4mIzQzO1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuIFx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuIFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkVfREVNVVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHRwX3Jjdl9jb3JlJiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIFBQVFAgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWQzZGM0NjI3MGIyNzkwZTk2YmRhNDEzOWU1MzRhZmNkYjI3ZjhlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA4OjU3OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCkBAIC0zMTcsMTYgJiM0MzszMTcsMTggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlwYXlsb2FkID0gc2tiLSZndDtkYXRhICYjNDM7IGhlYWRlcnNpemU7CiAJLyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqLwogCWlmIChzZXEgJmx0OyBvcHQtJmd0O3NlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtJmd0O3NlcV9yZWN2LCBzZXEpKSB7Ci0JCWlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpICZhbXA7JmFtcDsgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSAmYW1wOyZhbXA7Ci0JCQkJKFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSAmYW1wOyZhbXA7Ci0JCQkJKChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpCiYjNDM7CQlpZiAocGF5bG9hZF9sZW4gJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCSAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkKIAkJCWdvdG8gYWxsb3dfcGFja2V0OwogCX0gZWxzZSB7CiAJCW9wdC0mZ3Q7c2VxX3JlY3YgPSBzZXE7CiBhbGxvd19wYWNrZXQ6CiAJCXNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7CiAKLQkJaWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCWlmIChwYXlsb2FkX2xlbiAmZ3Q7PSAyICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7CiAJCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KIAkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiAJCQkJZ290byBkcm9wOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQUFRQIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gU3RyYWlnaHQgYXdheSwgSSBzZWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIHRoZSBQUFRQIHByb3RvY29sLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g7IGl0JiMzOTtzIGFkZGluZyBzb21lIGJhc2ljIGJvdW5kcyBjaGVja2luZyBvbiBhY2Nlc3NlcyB0byB0aGUgYHBheWxvYWRgIGJ1ZmZlci4gSXQgbG9va3MgbGlrZSB0aGUgaW50ZW50aW9uIGlzIHRvIGVuc3VyZSB0aGF0IHdlIGRvbiYjMzk7dCByZWFkIGJleW9uZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgd2hpY2ggaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBndWFyZGluZyBhZ2FpbnN0IHJlYWRzIGZyb20gdmFyaW91cyBvZmZzZXRzIHdpdGhpbiBgcGF5bG9hZGAuIFRoZSBwYXRjaCB2ZXJpZmllcyB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgbWluaW11bSBsZW5ndGgsIHNwZWNpZmljYWxseSBgUFBQX0hEUkxFTiAmIzQzOyAxYCwgYmVmb3JlIHJlYWRpbmcgZnJvbSwgZm9yIGV4YW1wbGUsIGBwYXlsb2FkWzBdYCwgYHBheWxvYWRbMV1gLCBvciBgcGF5bG9hZFs0XWAuIFRoZXJlJiMzOTtzIGFsc28gYSBjaGVjayB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgYXQgbGVhc3QgMiBieXRlcyBsb25nIGJlZm9yZSByZWFkaW5nIGBwYXlsb2FkWzBdYCBhbmQgYHBheWxvYWRbMV1gLgoKU28sIHRoZSByZWFzb25pbmcgaXMgcHJldHR5IGNsZWFyOiBUaGlzIGlzIGEgYnVnIGZpeCDigJMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgYmVpbmcgc28gbWV0aWN1bG91cyBhYm91dCB0aGUgbGVuZ3RoIGNoZWNrcyBzdWdnZXN0cyB0aGF0IHByZXZpb3VzIGFzc3VtcHRpb25zIGFib3V0IHBhY2tldCBzaXplcyB3ZXJlIGZsYXdlZCwgbGVhdmluZyB0aGUgc3lzdGVtIG9wZW4gdG8gYXR0YWNrcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgc2lnbmlmaWNhbnQgdGhpcyB2dWxuZXJhYmlsaXR5IGlzLCBidXQgYmFzZWQgb24gdGhpcyBxdWljayBhc3Nlc3NtZW50LCBpdCBpcyBhIGxvdy1oYW5naW5nIGZydWl0IHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRnV6emluZyBQUFRQJiMzOTtzIENvcmUgUmVjZWl2ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGNyaXRpY2FsIGBza19iYWNrbG9nX3JjdmAgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIFBQVFAgc29ja2V0cy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBoYW5kbGluZyBpbmNvbWluZyBkYXRhIGF0IGEgbG93IGxldmVsLCBhbmQgaXQmIzM5O3MgZGlyZWN0bHkgZXhwb3NlZCBhcyBhIHJlY2VpdmUgaGFuZGxlciwgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdG8gbWUgdGhhdCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIFBQVFAgaW1wbGVtZW50YXRpb24gcmVhbGx5IHdlbGwgYmVjYXVzZSBpdCBoYXMgYSBoaWdoIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLgoKTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gZW5hYmxlIFBQVFAgd2l0aGluIHRoZSBidWlsZCwgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBtb2R1bGUgaXMgaW5jb3Jwb3JhdGVkLiBUaGF0IHdpbGwgYWxsb3cgbWUgdG8gc2V0IHVwIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGVudmlyb25tZW50LiBLbm93aW5nIGhvdyB0byB0b2dnbGUgUFBUUCYjMzk7cyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgdml0YWwgZm9yIGNvbmZpZ3VyaW5nIGFuZCBtb25pdG9yaW5nIHRoZSB0ZXN0IGVudmlyb25tZW50LCBhbmQgZW5zdXJlIGFueSBmdXp6aW5nIGVmZm9ydHMgYXJlIHRhcmdldGVkIGFuZCByZXBlYXRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQxMwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipFeGFtaW5pbmcgUFBUUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIHVzZSBgUFBUUGAuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gZGVsdmUgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1bmRlcnN0YW5kIGhvdyBgUFBUUGAgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgYW55IGFzc29jaWF0ZWQgbW9kdWxlcy4gSSYjMzk7bSBnb2luZyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIFBQUC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBmcm9tIHRoZXJlLCBJIHNob3VsZCBiZSBhYmxlIHRvIG1hcCBvdXQgd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgYSBgUFBUUGAgc2V0dXAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgcmVxdWlyZW1lbnRzIGZvciB0aGUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdGNvbmZpZyBQUFRQXG4gMTYyOlx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuIDE2MzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxNjQ6XHRcdHNlbGVjdCBQUFBPWFxuIDE2NTpcdFx0aGVscFxuIDE2NjpcdFx0ICBTdXBwb3J0IGZvciBQUFAgb3ZlciBJUHY0LihQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcbiAxNjk6XHRcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cbiAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGUgYmVoYXZpb3IgaGVyZSBoaW5nZXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYE5FVF9JUEdSRV9ERU1VWGAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCB0byBjb250aW51ZS4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBjb25kaXRpb25hbC4gSSBrbm93IGltbWVkaWF0ZWx5IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBkZWZpbml0aXZlIGFuc3dlciDigJMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgSVB2NCBkaXJlY3RvcnkuIExldCYjMzk7cyBkaXZlIGludG8gYG5ldC9pcHY0L0tjb25maWdgIHRvIGluc3BlY3QgdGhlIGRlZmluaXRpb24gb2YgYE5FVF9JUEdSRV9ERU1VWGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBsb2dpYyBwYXRoIGlzIHRha2VuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZXBlbmRlbmN5IENoZWNrOiBgTkVUX0lQR1JFX0RFTVVYYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfSVBHUkVfREVNVVhgLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGdsYW5jZTsgSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgY3JpdGljYWwgcGF0aC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxpc3RpbmcgdGhlIG9idmlvdXMgb25lcywgYW5kIGJlIHN1cmUgdG8gY2hlY2sgdGhvc2UgaW4gdHVybi4gSSYjMzk7bSB0aGlua2luZy4uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBsaWtlIElQIHN0YWNrIG1vZHVsZXMsIHJvdXRpbmcgcHJvdG9jb2xzLCBhbmQgdHVubmVsaW5nIG1lY2hhbmlzbXM/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvciBpcyBpdCBtb3JlIGFic3RyYWN0ZWQ/IEFuZCBvZiBjb3Vyc2UsIGRvbiYjMzk7dCBmb3JnZXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMg4oCTIHdoYXQgb3RoZXIgc2V0dGluZ3MgbWlnaHQgaW1wbGljaXRseSBpbmZsdWVuY2UgYE5FVF9JUEdSRV9ERU1VWGAmIzM5O3MgYmVoYXZpb3Igb3IgZXZlbiBpdHMgdmVyeSBhdmFpbGFiaWxpdHk/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc3VsdCB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHksIG1heWJlIHNvbWUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBpZiBpdCBleGlzdHMsIGFuZCBwb3NzaWJseSBldmVuIHRyYWNlIHNvbWUgbmV0d29yayB0cmFmZmljIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIG1hcCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFueSBtb2RpZmljYXRpb24sIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemF0aW9uLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYW5kIHBvc3NpYmxlIHNpZGUtZWZmZWN0cyBvZiBhbnkgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdGNvbmZpZyBORVRfSVBHUkVfREVNVVhcbiAxODE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuIDE4MjpcdFx0aGVscFxuIDE4MzpcdFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXG4gMTg0Olx0XHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxuIDE4NTpcdFxuIDE4NjpcdGNvbmZpZyBORVRfSVBfVFVOTkVMXG4gMTg3Olx0XHR0cmlzdGF0ZVxuIDE4ODpcdFx0c2VsZWN0IERTVF9DQUNIRVxuIDE4OTpcdFx0c2VsZWN0IEdST19DRUxMU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBlbmFibGluZyBgTkVUX0lQR1JFX0RFTVVYYC4gTm8gZGlyZWN0IGRlcGVuZGVuY2llcyB0aGVyZSwgdGhhdCYjMzk7cyBnb29kLiBXaGljaCBtZWFucyB0aGUgcHJpbWFyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgYXJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgaXRzZWxmLiBOb3csIEkgaGF2ZSB0byBjb25zaWRlciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCwgYXMgaXMgbXkgaGFiaXQuIEkgc3VzcGVjdCB0aGF0IGBQUFBgIGFuZCBgUFBQT1hgIG1pZ2h0IGFsc28gYmUgbmVlZGVkIGhlcmUuIEhvd2V2ZXIsIEkgcmVjYWxsIHRoYXQgYFBQVFBgIHR5cGljYWxseSBzZWxlY3RzIGBQUFBPWGAsIHdoaWNoIG1pZ2h0IGFsbGV2aWF0ZSBvbmUgcmVxdWlyZW1lbnQuIExldCYjMzk7cyBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIEJlc3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBgUFBQYCBjb25maWcgYW5kIGNsYXJpZnkgYW55IHBvdGVudGlhbCBpbnRlcnNlY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY6Y29uZmlnIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0zNT1pZiBQUFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Mzc6Y29uZmlnIFBQUF9CU0RDT01QXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O1BQUCBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb25cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjU1OmNvbmZpZyBQUFBfREVGTEFURVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgRGVmbGF0ZSBjb21wcmVzc2lvblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njk6Y29uZmlnIFBQUF9GSUxURVJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtQUFAgZmlsdGVyaW5nXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo4MTpjb25maWcgUFBQX01QUEVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgyLVx0dHJpc3RhdGUgXCYjMzQ7UFBQIE1QUEUgY29tcHJlc3Npb24gKGVuY3J5cHRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTEtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo5Mjpjb25maWcgUFBQX01VTFRJTElOS1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTMtXHRib29sIFwmIzM0O1BQUCBtdWx0aWxpbmsgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgQVRNXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIEV0aGVybmV0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7MSBiaXQgKDIgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7MiBiaXRzICg0IGJ1Y2tldHMpXCYjMzQ7XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXHRib29sIFwmIzM0OzQgYml0cyAoMTYgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7OCBiaXRzICgyNTYgYnVja2V0cylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTM6Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVx0aW50XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE4MT1pZiBUVFlcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4Mi1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE4Mzpjb25maWcgUFBQX0FTWU5DXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODQtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTk1LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTk2OmNvbmZpZyBQUFBfU1lOQ19UVFlcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O1BQUCBzdXBwb3J0IGZvciBzeW5jIHR0eSBwb3J0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBQUFRQL1BQUCBSZWxhdGlvbnNoaXAqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgYFBQVFBgIG1lbnRpb25lZCBpbiByZWxhdGlvbiB0byBgUFBQYCwgYW5kIGltbWVkaWF0ZWx5IG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBQUFRQYCBpcyBzb21laG93ICppbnNpZGUqIGBQUFBgIGluIHRoZSBjdXJyZW50IGNvbnRleHQuIElzIHRoaXMgYSBwcm90b2NvbCBsYXllcmluZyBpc3N1ZSwgYSBkZXBlbmRlbmN5IGlzc3VlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHBocmFzaW5nIHN1Z2dlc3RzIGEgaGllcmFyY2hpY2FsIHJlbGF0aW9uc2hpcCBtaWdodCBiZSBhdCBwbGF5LCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgbmF0dXJlIG9mIHRoZWlyIGludGVyYWN0aW9uLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGVpciBjb25uZWN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoYXQmIzM5O2xsIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBQUCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQUFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTTEhDXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXG4gIDExOlx0XHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXG4gIDEyOlx0XHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXG4gIDEzOlx0XHQgIG90aGVyd2lzZSB5b3UgY2FuJiMzOTt0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXG4gIDE0Olx0XHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gdXNlIFBQUCwgeW91IG5lZWQgYW4gYWRkaXRpb25hbCBwcm9ncmFtIGNhbGxlZCBwcHBkLCBhdmFpbGFibGUgYXRcbiAgMTc6XHRcdCAgXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxuICAxODpcdFx0ICByZWNvbW1lbmRlZCBpbiBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZS5cbiAgMTk6XHRcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIFRoZXJlIGFyZSBhY3R1YWxseSB0d28gdmVyc2lvbnMgb2YgUFBQOiB0aGUgdHJhZGl0aW9uYWwgUFBQIGZvclxuICAyMjpcdFx0ICBhc3luY2hyb25vdXMgbGluZXMsIHN1Y2ggYXMgcmVndWxhciBhbmFsb2cgcGhvbmUgbGluZXMsIGFuZFxuICAyMzpcdFx0ICBzeW5jaHJvbm91cyBQUFAgd2hpY2ggY2FuIGJlIHVzZWQgb3ZlciBkaWdpdGFsIElTRE4gbGluZXMgZm9yXG4gIDI0Olx0XHQgIGV4YW1wbGUuICBJZiB5b3Ugd2FudCB0byB1c2UgUFBQIG92ZXIgcGhvbmUgbGluZXMgb3Igb3RoZXJcbiAgMjU6XHRcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBsaW5lcywgeW91IG5lZWQgdG8gc2F5IFkgKG9yIE0pIGhlcmUgYW5kIGFsc28gdG9cbiAgMjY6XHRcdCAgdGhlIG5leHQgb3B0aW9uLCBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7LiAgRm9yIFBQUCBvdmVyXG4gIDI3Olx0XHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcJiMzNDtTdXBwb3J0XG4gIDI4Olx0XHQgIHN5bmNocm9ub3VzIFBQUFwmIzM0OywgYmVsb3cuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBzYWlkIFkgdG8gXCYjMzQ7VmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1wmIzM0OyBhYm92ZSwgdGhlblxuICAzMTpcdFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxuICAzMjpcdFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxuICAzMzpcdFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxuICAzNDpcdFxuICAzNTpcdGlmIFBQUFxuICAzNjpcdFxuICAzNzpcdGNvbmZpZyBQUFBfQlNEQ09NUFxuICAzODpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgUFBQLCB3aGljaCB1c2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQUFAgS2VybmVsIE1vZHVsZSoqCgpPa2F5LCBzbyBJIHNlZSBgaWYgUFBQYCByaWdodCB0aGVyZSBvbiBsaW5lIDM1LiBUaGF0IG1lYW5zIGBQUFBgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgYXJlIGFsbCBwcm9wZXJseSBzZXQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIE15IG1haW4gY29uY2VybiBpcyB0aGF0IGBwcHRwX3Jjdl9jb3JlYCBpcyBjdXJyZW50bHkgZGVjbGFyZWQgYXMgYSBgc3RhdGljIGludGAgZnVuY3Rpb24sIHdoaWNoIGlzLCB3ZWxsLCAqbm90IGlkZWFsKiBhY2NvcmRpbmcgdG8gYmVzdCBwcmFjdGljZXMuIEkgc2VlOiBgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBUaGlzIGdvZXMgYWdhaW5zdCB0aGUgdXN1YWwgYWR2aWNlIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMsIHNpbmNlIHRoZXkgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIHdoaWNoIG1ha2UgZGVidWdnaW5nIGFuZCB0cmFjaW5nIGZhciBlYXNpZXIuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBpbmxpbmVkLiBIYW5nIG9uLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlcjogYHNrLSZndDtza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7YC4gU28gdGhhdCBpbXBsaWVzIGl0JiMzOTtzICpub3QqIGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBtaWdodCBiZSBvayBhcyBpdCBpcy4gQnV0LCBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHBwdHBfcmN2YCBvciBgcHB0cF9jcmVhdGVgIC0tIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHBwdHBfcmN2X2NvcmVgLgoKQWgsIHJpZ2h0LCBgcHB0cF9yY3ZfY29yZWAgaXMgY2FsbGVkIGJ5IGBza19yZWNlaXZlX3NrYmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHNrX2JhY2tsb2dfcmN2YC4gSXQgc2VlbXMgaXQgbWF5IGJlIGZpbmUsIHNvIGxldCYjMzk7cyBjb250aW51ZSB0byBjaGVjayBmb3Igb3RoZXIgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwX3Jjdl9jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTQ0PXN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2Vybilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTYwOlx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjEtXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBQUFRQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgcHB0cF9yY3ZgIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEkmIzM5O20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgdGhlIHJlY2VpdmUgcGF0aCBpcyBjcnVjaWFsLiBJdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgaW5jb21pbmcgUFBUUCBwYWNrZXRzIGhpdCB0aGUga2VybmVsLCBhbmQgZnJhbmtseSwgYSBjb21tb24gYXJlYSBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRhdGEgZmxvdyBhbmQgYW55IHN1YnRsZSBudWFuY2VzIGluIGhhbmRsaW5nLiBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbjogdGhlIGludGVycnVwdCBjb250ZXh0LCBhbnkgbG9ja2luZyB0aGF0JiMzOTtzIGluIHBsYWNlLCBhbmQgaG93IHRoZSBwYXlsb2FkIGRhdGEgaXMgZXh0cmFjdGVkIGFuZCBwYXNzZWQgdXAgdGhlIHN0YWNrLiBBbnkgc3VidGxlIG9mZi1ieS1vbmUgZXJyb3JzIGluIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9uIGhlcmUgaGF2ZSBjYXVzZWQgbWUgbXVjaCBwYWluIGluIHRoZSBwYXN0LiBUaGlzIGFsc28gaGVscHMgd2l0aCB0aGUgY29udGV4dCB3aGVuIGFuYWx5emluZyBhbnkgcmVwb3J0cyBmcm9tIG90aGVyIHJlc2VhcmNoZXJzLCBvciBmcm9tIG15IG93biB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NjQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDY6XHQuaGFuZGxlciA9IHBwdHBfcmN2LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDctfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyB0aGUgUGFja2V0IFJlY2VwdGlvbiBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgcHB0cGAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYHBwdHBfcmN2YCBpcyB0aGUgd29ya2hvcnNlIGhlcmU7IHRoYXQmIzM5O3MgdGhlIEdSRSBwcm90b2NvbCBoYW5kbGVyLiBUaGVuLCB0aGVyZSYjMzk7cyBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIEkgZ2F0aGVyIGhhbmRsZXMgdGhlIHNvY2tldCBiYWNrbG9nLCB0aGUgbW9yZSBkaXJlY3QgaW50ZXJmYWNlLiBCb3RoIGFyZSBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIHZpYSBmdW5jdGlvbiBwb2ludGVycywgb2YgY291cnNlLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiB0aGlzIHR5cGUgb2Ygc29ja2V0IGhhbmRsaW5nLiBCdXQgd2FpdCwgaWYgSSAqd2VyZSogdG8gZXhwb3NlIHNvbWUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIGNvdWxkbiYjMzk7dCBJIGp1c3QgdXNlIGVpdGhlciBgcHB0cF9yY3ZgIG9yIGBwcHRwX3Jjdl9jb3JlYD8gVGhleSYjMzk7cmUgdGhlIHByaW1hcnkgcG9pbnRzIG9mIGVudHJ5IGZvciBwYWNrZXQgcmVjZXB0aW9uIHdpdGhpbiB0aGlzIG1vZHVsZS4gTm93IEkgYW0gd29uZGVyaW5nLi4uIEFyZSB0aGVyZSBhY3R1YWxseSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9ucyBpbiBgcHB0cC5jYD8gVGhhdCB3b3VsZCBpbmZsdWVuY2Ugd2hpY2ggZW50cnkgcG9pbnQgdG8gZXhwb3NlLCBpZiBhbnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUGVlcmluZyBpbnRvIHRoZSBQUFRQIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4gYW5kIGV4YW1pbmUgdGhhdCBgXnN0YXRpYyBpbnQgcHB0cF9gIGNvbnN0cnVjdC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcHJvYmFibHkgd2hlcmUgc29tZSBjcnVjaWFsLCBnbG9iYWxseS1hY2Nlc3NpYmxlIHN0YXRlIG9yIHBlcmhhcHMgYSBmdW5jdGlvbiBwb2ludGVyIGlzIGRlZmluZWQgd2l0aGluIHRoZSBQUFRQIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSwgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkIChvciBpZiBpdCBpcyBldmVuIGluaXRpYWxpemVkKSwgYW5kIGNydWNpYWxseSwgKmhvdyogaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBxdWVzdGlvbnM6IElzIGl0IHRocmVhZC1zYWZlPyBEb2VzIGl0IGludHJvZHVjZSBhbnkgcmFjZSBjb25kaXRpb25zPyBXaGF0JiMzOTtzIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhpcyBtb2R1bGU/IEkmIzM5O20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjbGVhciBlbm91Z2ggdGhhdCBJIGRvbiYjMzk7dCBoYXZlIHRvIHRyYWNlIHRvbyBkZWVwbHkgdG8gZ2V0IGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIGl0IG1pZ2h0IGJlIGJlaW5nIG1vZGlmaWVkIGFuZCB3aGF0IHBvdGVudGlhbCBhY2Nlc3MgcGF0dGVybnMgaXQmIzM5O3MgZm9sbG93aW5nLiBUaGlzIHdpbGwgZ2l2ZSBtZSB3aGF0IEkgbmVlZCB0byBzZWUgd2hhdCBJIHdhbnQgdG8gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludCBwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMzI9c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0OTpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM4NDpzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODUtXHRcdCAgICAgaW50IHNvY2thZGRyX2xlbilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDE3OnN0YXRpYyBpbnQgcHB0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxOC1cdFx0XHRpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ4NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODctXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01MzU9c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ1LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTc4OnN0YXRpYyBpbnQgcHB0cF9wcHBfaW9jdGwoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzktXHR1bnNpZ25lZCBsb25nIGFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBQVFAgQm91bmRzIENoZWNrIFBhdGNoKioKCk9rYXksIHNvIHRoZSBmdW5jdGlvbnMgaW4gcXVlc3Rpb24gaGVyZSBhcmUgc3RhdGljLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhhdCBtZWFucyBJIGNhbiBjb25maWRlbnRseSBpbmNsdWRlIGJvdGggYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgIGluIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIHRoYXQgYFBQVFBgIHNlbGVjdHMgYFBQUE9YYC4uLiBZdXAsIHRoZXJlIGl0IGlzOiBgc2VsZWN0IFBQUE9YYC4gR29vZCwgc28gYFBQUE9YYCBpc24mIzM5O3QgKnN0cmljdGx5KiByZXF1aXJlZCBpbiBgRW5hYmxlQ29uZmlnc2Agc2luY2UgaXQmIzM5O3MgaW1wbGllZCBieSBgUFBUUGAsIGJ1dCB0aGVyZSYjMzk7cyBubyBoYXJtIGluIGxlYXZpbmcgaXQgb3V0LiBJJiMzOTtsbCBqdXN0IHN0aWNrIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBUaG9zZSBzaG91bGQgY292ZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKQWxyaWdodCwgYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLiBUaGlzIGlzIGFsbCBhYm91dCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCwgc3BlY2lmaWNhbGx5IHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBmcm9tIHRoZSBgcGF5bG9hZGAuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeC4gQW5kIHNpbmNlIFBQVFAgaXMgdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb3ZlciBJUCwgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUuIFNvLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBUaGlzIHBhdGNoIHByZXZlbnRzIGEgcmVhZCB2dWxuZXJhYmlsaXR5IGluIGEgZnVuY3Rpb24gcmVsYXRlZCB0byBQUFRQIHBhY2tldCBwcm9jZXNzaW5nLiBJdCYjMzk7cyBhIG5ldHdvcmsgc3RhY2sgdnVsbmVyYWJpbGl0eSB0aGF0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgcHJhY3RpY2FsIHVzZSBjYXNlLgpgRm9jdXNTeW1ib2xzYCBhcmUgZGVmaW5pdGVseSBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3JjdmAuCmBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLgoKVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDg6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li43MDhkOGZiM2E5MDAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTMxNywxNiAmIzQzOzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKJiM0MzsJCWlmIChwYXlsb2FkX2xlbiAmZ3Q7PSBQUFBfSERSTEVOICYjNDM7IDEgJmFtcDsmYW1wOwomIzQzOwkJICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkgJmFtcDsmYW1wOwomIzQzOwkJICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQICZhbXA7JmFtcDsKJiM0MzsJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQogCQkJZ290byBhbGxvd19wYWNrZXQ7CiAJfSBlbHNlIHsKIAkJb3B0LSZndDtzZXFfcmVjdiA9IHNlcTsKIGFsbG93X3BhY2tldDoKIAkJc2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTsKIAotCQlpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgJmFtcDsmYW1wOyBwYXlsb2FkWzFdID09IFBQUF9VSSkgewomIzQzOwkJaWYgKHBheWxvYWRfbGVuICZndDs9IDIgJmFtcDsmYW1wOwomIzQzOwkJICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TICZhbXA7JmFtcDsgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHsKIAkJCS8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqLwogCQkJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgMykKIAkJCQlnb3RvIGRyb3A7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY2CgkJCQkJCQlvdXRwdXQ6IDE3NwoJCQkJCQkJdGhvdWdodHM6IDU4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHBwdHBfcmN2X2NvcmUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBgcHB0cF9yY3ZfY29yZWAgaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYWJvdXQgYWRkaW5nIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcywgc3BlY2lmaWNhbGx5IGJlZm9yZSBhY2Nlc3NpbmcgYHBheWxvYWRgIGFycmF5IGVsZW1lbnRzIGxpa2UgYHBheWxvYWRbMF1gLCBgcGF5bG9hZFsxXWAsIGFuZCBzbyBvbi4gVGhleSYjMzk7cmUgbWFraW5nIHN1cmUgYHBheWxvYWRfbGVuYCBpcyBiaWcgZW5vdWdoLiBJdCYjMzk7cyB0aGUgY2xhc3NpYyBzYWZlZ3VhcmQuCgpNeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGNoZWNrcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugd2hlbiBgcGF5bG9hZGAgaXMgc21hbGxlciB0aGFuIGV4cGVjdGVkLCB0aGUgZXhpc3RpbmcgY29kZSBjb3VsZCB0cnkgdG8gcmVhZCBwYXN0IHRoZSBhbGxvY2F0ZWQgYnVmZmVyLCB0cmlnZ2VyaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gVGhvc2UgYXJlICpwcmVjaXNlbHkqIHRoZSBraW5kIG9mIGlzc3VlcyBLQVNBTiBpcyBkZXNpZ25lZCB0byBkZXRlY3QuCgpJIG1vbWVudGFyaWx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidXQgYWZ0ZXIgYSBtb21lbnQsIEkgcmVhbGl6ZSB0aGF0IGBwYXlsb2FkYCBwb2ludHMgdG8gZGF0YSB3aXRoaW4gdGhlIGBza2JgLCBzcGVjaWZpY2FsbHkgYHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplYC4gVGhlIHByb2JsZW0gKmlzbiYjMzk7dCogdW5pbml0aWFsaXplZCBtZW1vcnkgZGlyZWN0bHksIGJ1dCByYXRoZXIgdGhhdCB0aGUgbGVuZ3RoIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAgbWlnaHQgYmUgaW5zdWZmaWNpZW50IGFuZCB0aGF0IGl0IG1pZ2h0IGJlIHNtYWxsIGVub3VnaCB0byBhbGxvdyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gTW9yZSBzcGVjaWZpY2FsbHksIGBwYXlsb2FkX2xlbmAgaXMgZGVyaXZlZCBmcm9tIGBza2ItJmd0O2xlbiAtIGhlYWRlcnNpemVgLCBhbmQgaWYgdGhhdCBudW1iZXIgaXMgdG9vIHNtYWxsLCByZWFkaW5nIGBwYXlsb2FkWzRdYCB3b3VsZCByZWFkIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBkYXRhLiAKClNvLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpc3N1ZS4gVGhpcyBpcyBjbGVhcmx5IGEgS0FTQU4gY2FzZSwgbm90IGEgS01TQU4gaXNzdWUuIFRoZSBwYXRjaCBpcyBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIGFkZGluZyB0aGVzZSBjaGVja3MgdG8gcHJldmVudCBhIEtBU0FOLWRldGVjdGVkIGZhdWx0LgoKTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0IGFnYWluOgoKYGBgYwogCWlmIChzZXEgJmx0OyBvcHQtJmd0O3NlcV9yZWN2ICYjNDM7IDEgfHwgV1JBUFBFRChvcHQtJmd0O3NlcV9yZWN2LCBzZXEpKSB7Ci0JCWlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpICZhbXA7JmFtcDsgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSAmYW1wOyZhbXA7Ci0JCQkJKFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSAmYW1wOyZhbXA7Ci0JCQkJKChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpCiYjNDM7CQlpZiAocGF5bG9hZF9sZW4gJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxICZhbXA7JmFtcDsKJiM0MzsJCSAgICBwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCSAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkKIAkJCWdvdG8gYWxsb3dfcGFja2V0OwpgYGAKClllcywgaXQmIzM5O3MgY3J5c3RhbCBjbGVhcjogT09CIHJlYWQgZml4LiBMZW5ndGggY2hlY2tzIGJlZm9yZSBhY2Nlc3NpbmcgYHBheWxvYWRgLiBLTVNBTiBpcyBub3QgcmVsZXZhbnQgaGVyZS4gU28sIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJJiMzOTttIGNvbmZpZGVudC4gVGltZSB0byBtb3ZlIG9uLiBMZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcdTAwM2U9IDJgKSBiZWZvcmUgYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHRoZSBgcGF5bG9hZGAgYXJyYXkgaW4gYHBwdHBfcmN2X2NvcmVgLiBUaGlzIGlzIGEgY2xhc3NpYyBmaXggZm9yIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZHMsIHdoZXJlIHRoZSBjb2RlIHByZXZpb3VzbHkgYWNjZXNzZWQgcGFja2V0IHBheWxvYWQgYnl0ZXMgd2l0aG91dCB2ZXJpZnlpbmcgdGhhdCB0aGUgcGFja2V0IHdhcyBsYXJnZSBlbm91Z2guIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBzdGFjay9oZWFwIGluZm8tbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIGZpZWxkcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBjbGFzcyBvZiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDFgIGFuZCBgcGF5bG9hZF9sZW4gXHUwMDNlPSAyYCkgYmVmb3JlIGFjY2Vzc2luZyBlbGVtZW50cyBvZiB0aGUgYHBheWxvYWRgIGFycmF5IGluIGBwcHRwX3Jjdl9jb3JlYC4gVGhpcyBpcyBhIGNsYXNzaWMgZml4IGZvciBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWRzLCB3aGVyZSB0aGUgY29kZSBwcmV2aW91c2x5IGFjY2Vzc2VkIHBhY2tldCBwYXlsb2FkIGJ5dGVzIHdpdGhvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIHBhY2tldCB3YXMgbGFyZ2UgZW5vdWdoLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHRoaXMgY2xhc3Mgb2YgYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MDcuODgxNzYzMzgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxMDcyNjkxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBQXCIsXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgUFBUUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjA3Ljg4MTc2OTU5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjA5ODU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVkM2RjNDYyNzBiMjc5MGU5NmJkYTQxMzllNTM0YWZjZGIyN2Y4ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG5pbmRleCBhNzk3YTA2MDZmNmI0Li43MDhkOGZiM2E5MDAyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuQEAgLTMxNywxNiArMzE3LDE4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiBcXHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXFxuIFxcdGlmIChzZXEgXFx1MDAzYyBvcHQtXFx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcXG4tXFx0XFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXFx1MDAyNlxcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHRcXHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxcbitcXHRcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcXG4gXFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG9wdC1cXHUwMDNlc2VxX3JlY3YgPSBzZXE7XFxuIGFsbG93X3BhY2tldDpcXG4gXFx0XFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcXG4gXFxuLVxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xcbitcXHRcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZT0gMiBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXFx1MDAyNlxcdTAwMjYgcGF5bG9hZFsxXSA9PSBQUFBfVUkpIHtcXG4gXFx0XFx0XFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXFxuIFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIFxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MDkuMDg0NTQ1Njg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxMTY2MDMzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBQXCIsXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBwcHRwX3Jjdl9jb3JlYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwcm9jZXNzaW5nIFBQVFAgcGFja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgKzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuK1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4gXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gXHRcdFx0XHRnb3RvIGRyb3A7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzowOS4wODQ1NDcxMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMzNjQzMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQUFRQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdGFyZ2V0cyBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIFN0cmFpZ2h0IGF3YXksIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBQUFRQIHByb3RvY29sLCB3aGljaCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZSBlbm91Z2g7IGl0J3MgYWRkaW5nIHNvbWUgYmFzaWMgYm91bmRzIGNoZWNraW5nIG9uIGFjY2Vzc2VzIHRvIHRoZSBgcGF5bG9hZGAgYnVmZmVyLiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnRpb24gaXMgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgcmVhZCBiZXlvbmQgdGhlIGFsbG9jYXRlZCBtZW1vcnksIHdoaWNoIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHZ1bG5lcmFiaWxpdHkuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCdzIGd1YXJkaW5nIGFnYWluc3QgcmVhZHMgZnJvbSB2YXJpb3VzIG9mZnNldHMgd2l0aGluIGBwYXlsb2FkYC4gVGhlIHBhdGNoIHZlcmlmaWVzIHRoYXQgYHBheWxvYWRfbGVuYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBtaW5pbXVtIGxlbmd0aCwgc3BlY2lmaWNhbGx5IGBQUFBfSERSTEVOICsgMWAsIGJlZm9yZSByZWFkaW5nIGZyb20sIGZvciBleGFtcGxlLCBgcGF5bG9hZFswXWAsIGBwYXlsb2FkWzFdYCwgb3IgYHBheWxvYWRbNF1gLiBUaGVyZSdzIGFsc28gYSBjaGVjayB0aGF0IGBwYXlsb2FkX2xlbmAgaXMgYXQgbGVhc3QgMiBieXRlcyBsb25nIGJlZm9yZSByZWFkaW5nIGBwYXlsb2FkWzBdYCBhbmQgYHBheWxvYWRbMV1gLlxuXG5TbywgdGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgaXMgYSBidWcgZml4IOKAkyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhlIGZhY3QgdGhhdCB0aGV5J3JlIGJlaW5nIHNvIG1ldGljdWxvdXMgYWJvdXQgdGhlIGxlbmd0aCBjaGVja3Mgc3VnZ2VzdHMgdGhhdCBwcmV2aW91cyBhc3N1bXB0aW9ucyBhYm91dCBwYWNrZXQgc2l6ZXMgd2VyZSBmbGF3ZWQsIGxlYXZpbmcgdGhlIHN5c3RlbSBvcGVuIHRvIGF0dGFja3MuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHNpZ25pZmljYW50IHRoaXMgdnVsbmVyYWJpbGl0eSBpcywgYnV0IGJhc2VkIG9uIHRoaXMgcXVpY2sgYXNzZXNzbWVudCwgaXQgaXMgYSBsb3ctaGFuZ2luZyBmcnVpdCB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MTMuNjE4MTkzMzU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2Mjk0NDgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX3Jjdl9jb3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjE0LjE4MTE0NDg5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ1NzI0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZzpcblxuKipGdXp6aW5nIFBQVFAncyBDb3JlIFJlY2VpdmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGNyaXRpY2FsIGBza19iYWNrbG9nX3JjdmAgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIFBQVFAgc29ja2V0cy4gR2l2ZW4gdGhhdCBpdCdzIGhhbmRsaW5nIGluY29taW5nIGRhdGEgYXQgYSBsb3cgbGV2ZWwsIGFuZCBpdCdzIGRpcmVjdGx5IGV4cG9zZWQgYXMgYSByZWNlaXZlIGhhbmRsZXIsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdG8gbWUgdGhhdCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIFBQVFAgaW1wbGVtZW50YXRpb24gcmVhbGx5IHdlbGwgYmVjYXVzZSBpdCBoYXMgYSBoaWdoIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzLlxuXG5NeSBuZXh0IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBlbmFibGUgUFBUUCB3aXRoaW4gdGhlIGJ1aWxkLCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIG1vZHVsZSBpcyBpbmNvcnBvcmF0ZWQuIFRoYXQgd2lsbCBhbGxvdyBtZSB0byBzZXQgdXAgYW4gZWZmZWN0aXZlIGZ1enppbmcgZW52aXJvbm1lbnQuIEtub3dpbmcgaG93IHRvIHRvZ2dsZSBQUFRQJ3MgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIHZpdGFsIGZvciBjb25maWd1cmluZyBhbmQgbW9uaXRvcmluZyB0aGUgdGVzdCBlbnZpcm9ubWVudCwgYW5kIGVuc3VyZSBhbnkgZnV6emluZyBlZmZvcnRzIGFyZSB0YXJnZXRlZCBhbmQgcmVwZWF0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjE3LjMwNTcyMTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTczNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2MC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjItXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIElQdjQgKFBQVFApXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoxNy4zNTEzMjQ1OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDc3NjQzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipFeGFtaW5pbmcgUFBUUCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gdXNlIGBQUFRQYC4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgYFBQVFBgIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBhc3NvY2lhdGVkIG1vZHVsZXMuIEknbSBnb2luZyBzdHJhaWdodCB0byBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIFBQUC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBmcm9tIHRoZXJlLCBJIHNob3VsZCBiZSBhYmxlIHRvIG1hcCBvdXQgd2hhdCdzIHJlcXVpcmVkIGZvciBhIGBQUFRQYCBzZXR1cC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCByZXF1aXJlbWVudHMgZm9yIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMC45NTkwOTIzMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjE6XFx0Y29uZmlnIFBQVFBcXG4gMTYyOlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG4gMTYzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXFxuIDE2NDpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTY1OlxcdFxcdGhlbHBcXG4gMTY2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQIG92ZXIgSVB2NC4oUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKVxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcXG4gMTY5OlxcdFxcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cXG4gMTcwOlxcdFxcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xcbiAxNzE6XFx0XFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUFBQT0wyVFBcXG4gMTc0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbiAxNzU6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQXFxuIDE3NjpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcXG4gMTc5OlxcdFxcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcXG4gMTgwOlxcdFxcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjIwLjk1OTE2MDgyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDI1MzQ4NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlIGJlaGF2aW9yIGhlcmUgaGluZ2VzIG9uIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBORVRfSVBHUkVfREVNVVhgLiBSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgdG8gY29udGludWUuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY29uZGl0aW9uYWwuIEkga25vdyBpbW1lZGlhdGVseSB3aGVyZSB0byBsb29rIGZvciB0aGUgZGVmaW5pdGl2ZSBhbnN3ZXIg4oCTIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBuZXR3b3JraW5nIElQdjQgZGlyZWN0b3J5LiBMZXQncyBkaXZlIGludG8gYG5ldC9pcHY0L0tjb25maWdgIHRvIGluc3BlY3QgdGhlIGRlZmluaXRpb24gb2YgYE5FVF9JUEdSRV9ERU1VWGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBsb2dpYyBwYXRoIGlzIHRha2VuLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMy44MDE2OTg5ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY0MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVfREVNVVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzoyMy44NDc1Njg1NTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzODU2ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogYE5FVF9JUEdSRV9ERU1VWGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBORVRfSVBHUkVfREVNVVhgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBjcml0aWNhbCBwYXRoLiBMZXQncyBzdGFydCBieSBsaXN0aW5nIHRoZSBvYnZpb3VzIG9uZXMsIGFuZCBiZSBzdXJlIHRvIGNoZWNrIHRob3NlIGluIHR1cm4uIEknbSB0aGlua2luZy4uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBsaWtlIElQIHN0YWNrIG1vZHVsZXMsIHJvdXRpbmcgcHJvdG9jb2xzLCBhbmQgdHVubmVsaW5nIG1lY2hhbmlzbXM/IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvciBpcyBpdCBtb3JlIGFic3RyYWN0ZWQ/IEFuZCBvZiBjb3Vyc2UsIGRvbid0IGZvcmdldCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgd2hhdCBvdGhlciBzZXR0aW5ncyBtaWdodCBpbXBsaWNpdGx5IGluZmx1ZW5jZSBgTkVUX0lQR1JFX0RFTVVYYCdzIGJlaGF2aW9yIG9yIGV2ZW4gaXRzIHZlcnkgYXZhaWxhYmlsaXR5PyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc3VsdCB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHksIG1heWJlIHNvbWUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBpZiBpdCBleGlzdHMsIGFuZCBwb3NzaWJseSBldmVuIHRyYWNlIHNvbWUgbmV0d29yayB0cmFmZmljIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIG1hcCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgdHJlZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgcGFyYW1vdW50IHRvIGFueSBtb2RpZmljYXRpb24sIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemF0aW9uLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QgYW5kIHBvc3NpYmxlIHNpZGUtZWZmZWN0cyBvZiBhbnkgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjIzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjcuMDg2MTM5NTk0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuIDE4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbiAxODI6XFx0XFx0aGVscFxcbiAxODM6XFx0XFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXFxuIDE4NDpcXHRcXHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxcbiAxODU6XFx0XFxuIDE4NjpcXHRjb25maWcgTkVUX0lQX1RVTk5FTFxcbiAxODc6XFx0XFx0dHJpc3RhdGVcXG4gMTg4OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMTg5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjcuMDg2MjQyMTM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDUzMjc3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgYE5FVF9JUEdSRV9ERU1VWGAuIE5vIGRpcmVjdCBkZXBlbmRlbmNpZXMgdGhlcmUsIHRoYXQncyBnb29kLiBXaGljaCBtZWFucyB0aGUgcHJpbWFyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgYXJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgaXRzZWxmLiBOb3csIEkgaGF2ZSB0byBjb25zaWRlciBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCwgYXMgaXMgbXkgaGFiaXQuIEkgc3VzcGVjdCB0aGF0IGBQUFBgIGFuZCBgUFBQT1hgIG1pZ2h0IGFsc28gYmUgbmVlZGVkIGhlcmUuIEhvd2V2ZXIsIEkgcmVjYWxsIHRoYXQgYFBQVFBgIHR5cGljYWxseSBzZWxlY3RzIGBQUFBPWGAsIHdoaWNoIG1pZ2h0IGFsbGV2aWF0ZSBvbmUgcmVxdWlyZW1lbnQuIExldCdzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucy4gQmVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBnbyBjaGVjayB0aGUgYFBQUGAgY29uZmlnIGFuZCBjbGFyaWZ5IGFueSBwb3RlbnRpYWwgaW50ZXJzZWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjkuODkxNTcyNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MDk0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY6Y29uZmlnIFBQUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0zNT1pZiBQUFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNzpjb25maWcgUFBQX0JTRENPTVBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiUFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjU1OmNvbmZpZyBQUFBfREVGTEFURVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJQUFAgRGVmbGF0ZSBjb21wcmVzc2lvblxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTY4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjY5OmNvbmZpZyBQUFBfRklMVEVSXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiUFBQIGZpbHRlcmluZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgwLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjgxOmNvbmZpZyBQUFBfTVBQRVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTgyLVxcdHRyaXN0YXRlIFxcXCJQUFAgTVBQRSBjb21wcmVzc2lvbiAoZW5jcnlwdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05MS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo5Mjpjb25maWcgUFBQX01VTFRJTElOS1xcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIlBQUCBtdWx0aWxpbmsgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBQUE9BVE1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEFUTVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTctXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEV0aGVybmV0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiMSBiaXQgKDIgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiMiBiaXRzICg0IGJ1Y2tldHMpXFxcIlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIjQgYml0cyAoMTYgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiOCBiaXRzICgyNTYgYnVja2V0cylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE4MT1pZiBUVFlcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTgzOmNvbmZpZyBQUFBfQVNZTkNcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xODQtXFx0dHJpc3RhdGUgXFxcIlBQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTk2OmNvbmZpZyBQUFBfU1lOQ19UVFlcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIlBQUCBzdXBwb3J0IGZvciBzeW5jIHR0eSBwb3J0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6MjkuOTQxMDg3ODlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3MjM5MDQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBQUFRQL1BQUCBSZWxhdGlvbnNoaXAqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGBQUFRQYCBtZW50aW9uZWQgaW4gcmVsYXRpb24gdG8gYFBQUGAsIGFuZCBpbW1lZGlhdGVseSBteSBtZW50YWwgZ2VhcnMgYXJlIHR1cm5pbmcuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgUFBUUGAgaXMgc29tZWhvdyAqaW5zaWRlKiBgUFBQYCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJcyB0aGlzIGEgcHJvdG9jb2wgbGF5ZXJpbmcgaXNzdWUsIGEgZGVwZW5kZW5jeSBpc3N1ZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBwaHJhc2luZyBzdWdnZXN0cyBhIGhpZXJhcmNoaWNhbCByZWxhdGlvbnNoaXAgbWlnaHQgYmUgYXQgcGxheSwgYnV0IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIG5hdHVyZSBvZiB0aGVpciBpbnRlcmFjdGlvbi4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlaXIgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayB0byBzZWUgZXhhY3RseSBob3cgdGhlc2UgZWxlbWVudHMgaW50ZXJhY3QuIEl0J3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiB0aGF0J2xsIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjMyLjkxMzQ4MTE1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTgwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQUFAgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUFBQXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBTTEhDXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXFxuICAxMTpcXHRcXHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXFxuICAxMjpcXHRcXHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXFxuICAxMzpcXHRcXHQgIG90aGVyd2lzZSB5b3UgY2FuJ3QgdXNlIGl0OyBtb3N0IEludGVybmV0IGFjY2VzcyBwcm92aWRlcnMgdGhlc2VcXG4gIDE0OlxcdFxcdCAgZGF5cyBzdXBwb3J0IFBQUCByYXRoZXIgdGhhbiBTTElQLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIHVzZSBQUFAsIHlvdSBuZWVkIGFuIGFkZGl0aW9uYWwgcHJvZ3JhbSBjYWxsZWQgcHBwZCwgYXZhaWxhYmxlIGF0XFxuICAxNzpcXHRcXHQgIFxcdTAwM2NodHRwczovL3BwcC5zYW1iYS5vcmdcXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxcbiAgMTg6XFx0XFx0ICByZWNvbW1lbmRlZCBpbiBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL0NoYW5nZXNcXHUwMDNlLlxcbiAgMTk6XFx0XFx0ICBUaGUgUFBQIG9wdGlvbiBlbmxhcmdlcyB5b3VyIGtlcm5lbCBieSBhYm91dCAxNiBLQi5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBUaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHZlcnNpb25zIG9mIFBQUDogdGhlIHRyYWRpdGlvbmFsIFBQUCBmb3JcXG4gIDIyOlxcdFxcdCAgYXN5bmNocm9ub3VzIGxpbmVzLCBzdWNoIGFzIHJlZ3VsYXIgYW5hbG9nIHBob25lIGxpbmVzLCBhbmRcXG4gIDIzOlxcdFxcdCAgc3luY2hyb25vdXMgUFBQIHdoaWNoIGNhbiBiZSB1c2VkIG92ZXIgZGlnaXRhbCBJU0ROIGxpbmVzIGZvclxcbiAgMjQ6XFx0XFx0ICBleGFtcGxlLiAgSWYgeW91IHdhbnQgdG8gdXNlIFBQUCBvdmVyIHBob25lIGxpbmVzIG9yIG90aGVyXFxuICAyNTpcXHRcXHQgIGFzeW5jaHJvbm91cyBzZXJpYWwgbGluZXMsIHlvdSBuZWVkIHRvIHNheSBZIChvciBNKSBoZXJlIGFuZCBhbHNvIHRvXFxuICAyNjpcXHRcXHQgIHRoZSBuZXh0IG9wdGlvbiwgXFxcIlBQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcXFwiLiAgRm9yIFBQUCBvdmVyXFxuICAyNzpcXHRcXHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcXFwiU3VwcG9ydFxcbiAgMjg6XFx0XFx0ICBzeW5jaHJvbm91cyBQUFBcXFwiLCBiZWxvdy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBJZiB5b3Ugc2FpZCBZIHRvIFxcXCJWZXJzaW9uIGluZm9ybWF0aW9uIG9uIGFsbCBzeW1ib2xzXFxcIiBhYm92ZSwgdGhlblxcbiAgMzE6XFx0XFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxcbiAgMzI6XFx0XFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxcbiAgMzM6XFx0XFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRpZiBQUFBcXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIFBQUF9CU0RDT01QXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblxcXCJcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvbiBtZXRob2QgZm9yIFBQUCwgd2hpY2ggdXNlc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzozMi45MTM1Njg0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ4ODk2NzM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBQUCBLZXJuZWwgTW9kdWxlKipcblxuT2theSwgc28gSSBzZWUgYGlmIFBQUGAgcmlnaHQgdGhlcmUgb24gbGluZSAzNS4gVGhhdCBtZWFucyBgUFBQYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgIGFyZSBhbGwgcHJvcGVybHkgc2V0LlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gTXkgbWFpbiBjb25jZXJuIGlzIHRoYXQgYHBwdHBfcmN2X2NvcmVgIGlzIGN1cnJlbnRseSBkZWNsYXJlZCBhcyBhIGBzdGF0aWMgaW50YCBmdW5jdGlvbiwgd2hpY2ggaXMsIHdlbGwsICpub3QgaWRlYWwqIGFjY29yZGluZyB0byBiZXN0IHByYWN0aWNlcy4gSSBzZWU6IGBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKWAuIFRoaXMgZ29lcyBhZ2FpbnN0IHRoZSB1c3VhbCBhZHZpY2UgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucywgc2luY2UgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgd2hpY2ggbWFrZSBkZWJ1Z2dpbmcgYW5kIHRyYWNpbmcgZmFyIGVhc2llci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBpbmxpbmVkLiBIYW5nIG9uLCBpdCBsb29rcyBsaWtlIGl0J3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyOiBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO2AuIFNvIHRoYXQgaW1wbGllcyBpdCdzICpub3QqIGlubGluZWQsIGFuZCBpdCBkb2VzIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtZWFucyBpdCBtaWdodCBiZSBvayBhcyBpdCBpcy4gQnV0LCBJIGNvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHBwdHBfcmN2YCBvciBgcHB0cF9jcmVhdGVgIC0tIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYHBwdHBfcmN2X2NvcmVgLlxuXG5BaCwgcmlnaHQsIGBwcHRwX3Jjdl9jb3JlYCBpcyBjYWxsZWQgYnkgYHNrX3JlY2VpdmVfc2tiYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggaW4gdHVybiBjYWxscyBgc2tfYmFja2xvZ19yY3ZgLiBJdCBzZWVtcyBpdCBtYXkgYmUgZmluZSwgc28gbGV0J3MgY29udGludWUgdG8gY2hlY2sgZm9yIG90aGVyIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjM4LjQwMjUzODgxOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNDk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01NDQ9c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjA6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU2MS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1NzozOC40NDc3OTIxNjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMjQyNDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUFBUUCBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIGBwcHRwX3JjdmAgd2l0aGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gSSdtIHN0YXJ0aW5nIGhlcmUgYmVjYXVzZSB1bmRlcnN0YW5kaW5nIHRoZSByZWNlaXZlIHBhdGggaXMgY3J1Y2lhbC4gSXQncyB0aGUgcG9pbnQgd2hlcmUgaW5jb21pbmcgUFBUUCBwYWNrZXRzIGhpdCB0aGUga2VybmVsLCBhbmQgZnJhbmtseSwgYSBjb21tb24gYXJlYSBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRhdGEgZmxvdyBhbmQgYW55IHN1YnRsZSBudWFuY2VzIGluIGhhbmRsaW5nLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluOiB0aGUgaW50ZXJydXB0IGNvbnRleHQsIGFueSBsb2NraW5nIHRoYXQncyBpbiBwbGFjZSwgYW5kIGhvdyB0aGUgcGF5bG9hZCBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgcGFzc2VkIHVwIHRoZSBzdGFjay4gQW55IHN1YnRsZSBvZmYtYnktb25lIGVycm9ycyBpbiBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbiBoZXJlIGhhdmUgY2F1c2VkIG1lIG11Y2ggcGFpbiBpbiB0aGUgcGFzdC4gVGhpcyBhbHNvIGhlbHBzIHdpdGggdGhlIGNvbnRleHQgd2hlbiBhbmFseXppbmcgYW55IHJlcG9ydHMgZnJvbSBvdGhlciByZXNlYXJjaGVycywgb3IgZnJvbSBteSBvd24gdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQxLjg1MDIyMzg1OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1MDE1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0ND1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MDpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYxLVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTY0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NjpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ3LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQxLjg5NzczMjI1OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTE1NDUxMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIHRoZSBQYWNrZXQgUmVjZXB0aW9uIEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgcHB0cGAgbW9kdWxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYHBwdHBfcmN2YCBpcyB0aGUgd29ya2hvcnNlIGhlcmU7IHRoYXQncyB0aGUgR1JFIHByb3RvY29sIGhhbmRsZXIuIFRoZW4sIHRoZXJlJ3MgYHBwdHBfcmN2X2NvcmVgLCB3aGljaCBJIGdhdGhlciBoYW5kbGVzIHRoZSBzb2NrZXQgYmFja2xvZywgdGhlIG1vcmUgZGlyZWN0IGludGVyZmFjZS4gQm90aCBhcmUgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGV5IGFyZW4ndCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIHZpYSBmdW5jdGlvbiBwb2ludGVycywgb2YgY291cnNlLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiB0aGlzIHR5cGUgb2Ygc29ja2V0IGhhbmRsaW5nLiBCdXQgd2FpdCwgaWYgSSAqd2VyZSogdG8gZXhwb3NlIHNvbWUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIGNvdWxkbid0IEkganVzdCB1c2UgZWl0aGVyIGBwcHRwX3JjdmAgb3IgYHBwdHBfcmN2X2NvcmVgPyBUaGV5J3JlIHRoZSBwcmltYXJ5IHBvaW50cyBvZiBlbnRyeSBmb3IgcGFja2V0IHJlY2VwdGlvbiB3aXRoaW4gdGhpcyBtb2R1bGUuIE5vdyBJIGFtIHdvbmRlcmluZy4uLiBBcmUgdGhlcmUgYWN0dWFsbHkgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gYHBwdHAuY2A/IFRoYXQgd291bGQgaW5mbHVlbmNlIHdoaWNoIGVudHJ5IHBvaW50IHRvIGV4cG9zZSwgaWYgYW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjQ2LjAxMzE4NTkzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5MjA0ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgcHB0cF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NDYuMDU5MTE1NjU4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDE1MTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgaW50byB0aGUgUFBUUCBDb2RlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBsZXQncyBkaXZlIHJpZ2h0IGluIGFuZCBleGFtaW5lIHRoYXQgYF5zdGF0aWMgaW50IHBwdHBfYCBjb25zdHJ1Y3QuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHByb2JhYmx5IHdoZXJlIHNvbWUgY3J1Y2lhbCwgZ2xvYmFsbHktYWNjZXNzaWJsZSBzdGF0ZSBvciBwZXJoYXBzIGEgZnVuY3Rpb24gcG9pbnRlciBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgUFBUUCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUsIGhvdyBpdCdzIGluaXRpYWxpemVkIChvciBpZiBpdCBpcyBldmVuIGluaXRpYWxpemVkKSwgYW5kIGNydWNpYWxseSwgKmhvdyogaXQncyBiZWluZyB1c2VkLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zOiBJcyBpdCB0aHJlYWQtc2FmZT8gRG9lcyBpdCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucz8gV2hhdCdzIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIHN0YXRpYyB2YXJpYWJsZXMgaW4gdGhpcyBtb2R1bGU/IEknbSBob3BpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNsZWFyIGVub3VnaCB0aGF0IEkgZG9uJ3QgaGF2ZSB0byB0cmFjZSB0b28gZGVlcGx5IHRvIGdldCBhIGhpZ2gtbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIGl0IG1pZ2h0IGJlIGJlaW5nIG1vZGlmaWVkIGFuZCB3aGF0IHBvdGVudGlhbCBhY2Nlc3MgcGF0dGVybnMgaXQncyBmb2xsb3dpbmcuIFRoaXMgd2lsbCBnaXZlIG1lIHdoYXQgSSBuZWVkIHRvIHNlZSB3aGF0IEkgd2FudCB0byBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1Nzo0OS43MDA2Mzc5MzVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDgwNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IHBwdHBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMzI9c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM4NDpzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzg1LVxcdFxcdCAgICAgaW50IHNvY2thZGRyX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDE3OnN0YXRpYyBpbnQgcHB0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MTgtXFx0XFx0XFx0aW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODY6c3RhdGljIGludCBwcHRwX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4Ny1cXHRpbnQgcGVlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MDQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01MzU9c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3OS1cXHR1bnNpZ25lZCBsb25nIGFyZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NDkuNzUxNzIyNTM0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjg1NzgwNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBQVFAgQm91bmRzIENoZWNrIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBoZXJlIGFyZSBzdGF0aWMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGF0IG1lYW5zIEkgY2FuIGNvbmZpZGVudGx5IGluY2x1ZGUgYm90aCBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3JjdmAgaW4gbXkgYEZvY3VzU3ltYm9sc2AgbGlzdC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb25zLiBJJ20gZ29pbmcgd2l0aCBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgY29uZmlybSB0aGF0IGBQUFRQYCBzZWxlY3RzIGBQUFBPWGAuLi4gWXVwLCB0aGVyZSBpdCBpczogYHNlbGVjdCBQUFBPWGAuIEdvb2QsIHNvIGBQUFBPWGAgaXNuJ3QgKnN0cmljdGx5KiByZXF1aXJlZCBpbiBgRW5hYmxlQ29uZmlnc2Agc2luY2UgaXQncyBpbXBsaWVkIGJ5IGBQUFRQYCwgYnV0IHRoZXJlJ3Mgbm8gaGFybSBpbiBsZWF2aW5nIGl0IG91dC4gSSdsbCBqdXN0IHN0aWNrIHdpdGggYFBQUGAsIGBQUFRQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBUaG9zZSBzaG91bGQgY292ZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBwYXRjaCBpdHNlbGYuIFRoaXMgaXMgYWxsIGFib3V0IGFkZGluZyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGZyb20gdGhlIGBwYXlsb2FkYC4gSXQncyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXguIEFuZCBzaW5jZSBQUFRQIGlzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG92ZXIgSVAsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuIFNvLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC5cblxuVGhlIGxvZ2ljIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IFRoaXMgcGF0Y2ggcHJldmVudHMgYSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gYSBmdW5jdGlvbiByZWxhdGVkIHRvIFBQVFAgcGFja2V0IHByb2Nlc3NpbmcuIEl0J3MgYSBuZXR3b3JrIHN0YWNrIHZ1bG5lcmFiaWxpdHkgdGhhdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgcHJhY3RpY2FsIHVzZSBjYXNlLlxuYEZvY3VzU3ltYm9sc2AgYXJlIGRlZmluaXRlbHkgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgLlxuYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBiZSBgUFBQYCwgYFBQVFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuXG5cblRpbWUgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczNiwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDg6NTc6NTYuMTIwMzAzNDU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA4NDI0ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiLFxuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgcHB0cF9yY3ZfY29yZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcHJvY2Vzc2luZyBQUFRQIHBhY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIixcbiAgICBcIlBQVFBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfcmN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYHBwdHBfcmN2X2NvcmVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHByb2Nlc3NpbmcgUFBUUCBwYWNrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjU2LjIwMTE1MjE3OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc4Nzg3MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU3OjU2LjIwMTY1NjM1OFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5Nzg3MzYyMzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgKGBwYXlsb2FkX2xlbiBcXHUwMDNlPSBQUFBfSERSTEVOICsgMWAgYW5kIGBwYXlsb2FkX2xlbiBcXHUwMDNlPSAyYCkgYmVmb3JlIGFjY2Vzc2luZyBlbGVtZW50cyBvZiB0aGUgYHBheWxvYWRgIGFycmF5IGluIGBwcHRwX3Jjdl9jb3JlYC4gVGhpcyBpcyBhIGNsYXNzaWMgZml4IGZvciBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWRzLCB3aGVyZSB0aGUgY29kZSBwcmV2aW91c2x5IGFjY2Vzc2VkIHBhY2tldCBwYXlsb2FkIGJ5dGVzIHdpdGhvdXQgdmVyaWZ5aW5nIHRoYXQgdGhlIHBhY2tldCB3YXMgbGFyZ2UgZW5vdWdoLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgc3RhY2svaGVhcCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBmaWVsZHMgYmVpbmcgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHRoaXMgY2xhc3Mgb2YgYnVncy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZDNkYzQ2MjcwYjI3OTBlOTZiZGE0MTM5ZTUzNGFmY2RiMjdmOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMDg6NTc6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNzA4ZDhmYjNhOTAwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0zMTcsMTYgKzMxNywxOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuK1x0XHRpZiAocGF5bG9hZF9sZW4gXHUwMDNlPSAyIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4gXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gXHRcdFx0XHRnb3RvIGRyb3A7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwODo1Nzo1Ni4yMDE2NTkxMjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTc4NzMzODY5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHBwdHBfcmN2X2NvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGBwcHRwX3Jjdl9jb3JlYCBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGFib3V0IGFkZGluZyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMsIHNwZWNpZmljYWxseSBiZWZvcmUgYWNjZXNzaW5nIGBwYXlsb2FkYCBhcnJheSBlbGVtZW50cyBsaWtlIGBwYXlsb2FkWzBdYCwgYHBheWxvYWRbMV1gLCBhbmQgc28gb24uIFRoZXkncmUgbWFraW5nIHN1cmUgYHBheWxvYWRfbGVuYCBpcyBiaWcgZW5vdWdoLiBJdCdzIHRoZSBjbGFzc2ljIHNhZmVndWFyZC5cblxuTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGVzZSBjaGVja3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHdoZW4gYHBheWxvYWRgIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgdGhlIGV4aXN0aW5nIGNvZGUgY291bGQgdHJ5IHRvIHJlYWQgcGFzdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciwgdHJpZ2dlcmluZyBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRob3NlIGFyZSAqcHJlY2lzZWx5KiB0aGUga2luZCBvZiBpc3N1ZXMgS0FTQU4gaXMgZGVzaWduZWQgdG8gZGV0ZWN0LlxuXG5JIG1vbWVudGFyaWx5IGNvbnNpZGVyZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidXQgYWZ0ZXIgYSBtb21lbnQsIEkgcmVhbGl6ZSB0aGF0IGBwYXlsb2FkYCBwb2ludHMgdG8gZGF0YSB3aXRoaW4gdGhlIGBza2JgLCBzcGVjaWZpY2FsbHkgYHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZWAuIFRoZSBwcm9ibGVtICppc24ndCogdW5pbml0aWFsaXplZCBtZW1vcnkgZGlyZWN0bHksIGJ1dCByYXRoZXIgdGhhdCB0aGUgbGVuZ3RoIGNoZWNrIG9uIGBwYXlsb2FkX2xlbmAgbWlnaHQgYmUgaW5zdWZmaWNpZW50IGFuZCB0aGF0IGl0IG1pZ2h0IGJlIHNtYWxsIGVub3VnaCB0byBhbGxvdyBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gTW9yZSBzcGVjaWZpY2FsbHksIGBwYXlsb2FkX2xlbmAgaXMgZGVyaXZlZCBmcm9tIGBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZWAsIGFuZCBpZiB0aGF0IG51bWJlciBpcyB0b28gc21hbGwsIHJlYWRpbmcgYHBheWxvYWRbNF1gIHdvdWxkIHJlYWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGRhdGEuIFxuXG5TbywgaXQncyBkZWZpbml0ZWx5IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpc3N1ZS4gVGhpcyBpcyBjbGVhcmx5IGEgS0FTQU4gY2FzZSwgbm90IGEgS01TQU4gaXNzdWUuIFRoZSBwYXRjaCBpcyBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIGFkZGluZyB0aGVzZSBjaGVja3MgdG8gcHJldmVudCBhIEtBU0FOLWRldGVjdGVkIGZhdWx0LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46XG5cbmBgYGNcbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiArIDEgfHwgV1JBUFBFRChvcHQtXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcbi1cdFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXHUwMDI2XHUwMDI2IChwYXlsb2FkWzFdID09IFBQUF9VSSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSkgfHwgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSkpXG4rXHRcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2U9IFBQUF9IRFJMRU4gKyAxIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuYGBgXG5cblllcywgaXQncyBjcnlzdGFsIGNsZWFyOiBPT0IgcmVhZCBmaXguIExlbmd0aCBjaGVja3MgYmVmb3JlIGFjY2Vzc2luZyBgcGF5bG9hZGAuIEtNU0FOIGlzIG5vdCByZWxldmFudCBoZXJlLiBTbywgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEknbSBjb25maWRlbnQuIFRpbWUgdG8gbW92ZSBvbi4gTGV0J3Mgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY2LCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA4OjU4OjA1Ljk4OTAwMDIwMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIChgcGF5bG9hZF9sZW4gXFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9sZW4gXFx1MDAzZT0gMmApIGJlZm9yZSBhY2Nlc3NpbmcgZWxlbWVudHMgb2YgdGhlIGBwYXlsb2FkYCBhcnJheSBpbiBgcHB0cF9yY3ZfY29yZWAuIFRoaXMgaXMgYSBjbGFzc2ljIGZpeCBmb3Igb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkcywgd2hlcmUgdGhlIGNvZGUgcHJldmlvdXNseSBhY2Nlc3NlZCBwYWNrZXQgcGF5bG9hZCBieXRlcyB3aXRob3V0IHZlcmlmeWluZyB0aGF0IHRoZSBwYWNrZXQgd2FzIGxhcmdlIGVub3VnaC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHN0YWNrL2hlYXAgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgZmllbGRzIGJlaW5nIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGNsYXNzIG9mIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[1] Phase: Succeeded StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 08:58:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 08:58:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2] Phase: Succeeded StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 12:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 12:43:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 08:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 08:58:18 +0000 UTC FinishedAt: 2026-08-13 08:58:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz4xvm/series-workflowz4xvm-convert-artifact-2165632386/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 08:58:28 +0000 UTC FinishedAt: 2026-08-13 09:14:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 08:58:28 +0000 UTC FinishedAt: 2026-08-13 09:14:48 +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:*7ce234ef-0b77-4c01-b7fe-d0c936646c8b,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-workflowz4xvm/series-workflowz4xvm-convert-artifact-2165632386/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": "6600dc6c-102e-40ee-a694-b73393eece23", "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-workflowz4xvm/series-workflowz4xvm-build-action-3841227840/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 08:58:28 +0000 UTC FinishedAt: 2026-08-13 09:14:38 +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:*7ce234ef-0b77-4c01-b7fe-d0c936646c8b,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-workflowz4xvm/series-workflowz4xvm-convert-artifact-2165632386/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": "6600dc6c-102e-40ee-a694-b73393eece23", "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-workflowz4xvm/series-workflowz4xvm-build-action-3841227840/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 09:14:48 +0000 UTC FinishedAt: 2026-08-13 09:14:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 09:14:48 +0000 UTC FinishedAt: 2026-08-13 09:14:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 09:14:48 +0000 UTC FinishedAt: 2026-08-13 09:14:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 09:14:48 +0000 UTC FinishedAt: 2026-08-13 09:14:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz4xvm/series-workflowz4xvm-convert-artifact-229113053/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 09:14:59 +0000 UTC FinishedAt: 2026-08-13 09:17:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 09:14:59 +0000 UTC FinishedAt: 2026-08-13 09:17:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6600dc6c-102e-40ee-a694-b73393eece23,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-workflowz4xvm/series-workflowz4xvm-build-action-3841227840/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-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 09:17:14 +0000 UTC FinishedAt: 2026-08-13 09:17:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 09:17:14 +0000 UTC FinishedAt: 2026-08-13 09:17:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 09:17:14 +0000 UTC FinishedAt: 2026-08-13 09:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 09:17:14 +0000 UTC FinishedAt: 2026-08-13 09:33:41 +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:*7ce234ef-0b77-4c01-b7fe-d0c936646c8b,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-workflowz4xvm/series-workflowz4xvm-convert-artifact-229113053/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": "d4b5908b-cf80-47de-b384-27ac05e247f9", "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-workflowz4xvm/series-workflowz4xvm-build-action-956120505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 09:17:14 +0000 UTC FinishedAt: 2026-08-13 09:33:31 +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:*7ce234ef-0b77-4c01-b7fe-d0c936646c8b,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-workflowz4xvm/series-workflowz4xvm-convert-artifact-229113053/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": "d4b5908b-cf80-47de-b384-27ac05e247f9", "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-workflowz4xvm/series-workflowz4xvm-build-action-956120505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 09:33:41 +0000 UTC FinishedAt: 2026-08-13 09:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 09:33:41 +0000 UTC FinishedAt: 2026-08-13 09:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 09:33:41 +0000 UTC FinishedAt: 2026-08-13 09:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 09:33:41 +0000 UTC FinishedAt: 2026-08-13 09:35:51 +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:*d4b5908b-cf80-47de-b384-27ac05e247f9,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-workflowz4xvm/series-workflowz4xvm-build-action-956120505/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-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 12:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 12:43:56 +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":["pptp_rcv_core","pptp_rcv"],"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:*6600dc6c-102e-40ee-a694-b73393eece23,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d4b5908b-cf80-47de-b384-27ac05e247f9,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-workflowz4xvm/series-workflowz4xvm-build-action-3841227840/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-workflowz4xvm/series-workflowz4xvm-build-action-956120505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 09:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 09:36:06 +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":["pptp_rcv_core","pptp_rcv"],"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-workflowz4xvm/series-workflowz4xvm-convert-artifact-1122083938/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 09:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 09:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 09:36:01 +0000 UTC FinishedAt: 2026-08-13 09:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 09:36:11 +0000 UTC FinishedAt: 2026-08-13 12:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz4xvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6057f06ef7afa9893ed33603f7917fa39d237b5","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP","PPTP","NET_IPGRE_DEMUX"],"series_id":"ddcf2f6a-bb2a-4e2a-bb3e-7c6e384a28f6","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 09:36:11 +0000 UTC FinishedAt: 2026-08-13 12:43:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6600dc6c-102e-40ee-a694-b73393eece23,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d4b5908b-cf80-47de-b384-27ac05e247f9,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-workflowz4xvm/series-workflowz4xvm-build-action-3841227840/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-workflowz4xvm/series-workflowz4xvm-build-action-956120505/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-workflowz4xvm/series-workflowz4xvm-convert-artifact-1122083938/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,}