Name: series-workflowfkpjv Phase: Succeeded StartedAt: 2026-07-31 07:01:53 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[0] Phase: Succeeded StartedAt: 2026-07-31 07:01:53 +0000 UTC FinishedAt: 2026-07-31 07:26:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 07:01:53 +0000 UTC FinishedAt: 2026-07-31 07:26:12 +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": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "L2TP", "L2TP_V3", "L2TP_ETH", "L2TP_IP", "PPPOL2TP" ], "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": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "L2TP", "L2TP_V3", "L2TP_ETH", "L2TP_IP", "PPPOL2TP" ], "series_id": "73d4e6fc-4879-47b4-a82a-a3c9769114d7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "l2tp_tunnel_register", "l2tp_xmit_skb", "l2tp_eth_create", "l2tp_eth_dev_xmit", "pppol2tp_sendmsg", "pppol2tp_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "9b3d30fe-b87f-4b00-99a6-464f0a271312" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZGEzNzA3YWE4ZjBhZTY3MzJhMGQ5NzI5ZmQ3MjhjMGM3MTFhYWI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6MTY6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuaW5kZXggNDcxMmNjNDE4ODFhMy4uZjUyYmYzYjUzMjkwNyAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuQEAgLTEyMjcsMTggJiM0MzsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tXHUwMDNldHVubmVsO1xuIFx0dW5zaWduZWQgaW50IGRhdGFfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiBcdHN0cnVjdCBzb2NrICpzayA9IHR1bm5lbC1cdTAwM2Vzb2NrO1xuLVx0aW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjtcbiBcdGludCByZXQgPSBORVRfWE1JVF9TVUNDRVNTO1xuIFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuJiM0MztcdGludCB1ZHBfbGVuO1xuIFxuIFx0LyogQ2hlY2sgdGhhdCB0aGVyZSYjMzk7cyBlbm91Z2ggaGVhZHJvb20gaW4gdGhlIHNrYiB0byBpbnNlcnQgSVAsXG4gXHQgKiBVRFAgYW5kIEwyVFAgaGVhZGVycy4gSWYgbm90IGVub3VnaCwgZXhwYW5kIGl0IHRvXG4gXHQgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS5cbiBcdCAqL1xuLVx0dWhsZW4gPSAodHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkgPyBzaXplb2YoKnVoKSA6IDA7XG4tXHRoZWFkcm9vbSA9IE5FVF9TS0JfUEFEICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVobGVuICYjNDM7IHNlc3Npb24tXHUwMDNlaGRyX2xlbjtcbi1cdGlmIChza2JfY293X2hlYWQoc2tiLCBoZWFkcm9vbSkpIHtcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpKSkge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5AQCAtMTI5MCw3ICYjNDM7MTI4OCw5IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRcdHVoID0gdWRwX2hkcihza2IpO1xuIFx0XHR1aC1cdTAwM2Vzb3VyY2UgPSBpbmV0LVx1MDAzZWluZXRfc3BvcnQ7XG4gXHRcdHVoLVx1MDAzZWRlc3QgPSBpbmV0LVx1MDAzZWluZXRfZHBvcnQ7XG4tXHRcdHVkcF9sZW4gPSB1aGxlbiAmIzQzOyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gJiM0MzsgZGF0YV9sZW47XG4mIzQzO1xuJiM0MztcdFx0dWRwX2xlbiA9IGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKTtcbiYjNDM7XHRcdHVkcF9sZW4gJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiAmIzQzOyBkYXRhX2xlbjtcbiBcdFx0aWYgKHVkcF9sZW4gXHUwMDNlIFUxNl9NQVgpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXQgPSBORVRfWE1JVF9EUk9QO1xuQEAgLTE2ODgsNiAmIzQzOzE2ODgsNyBAQCBpbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdHNrLVx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xuJiM0MztcdHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHNrKTtcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXG4gXHRzb2NrX2hvbGQoc2spO1xuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5oIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcbmluZGV4IGZmZDhjZWQzYTUxZmYuLjJjNDE4NzdiNmNlNTcgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcbkBAIC0xNjcsNiAmIzQzOzE2Nyw3IEBAIHN0cnVjdCBsMnRwX3R1bm5lbCB7XG4gXHR1MzJcdFx0XHR0dW5uZWxfaWQ7XG4gXHR1MzJcdFx0XHRwZWVyX3R1bm5lbF9pZDtcbiBcdGludFx0XHRcdHZlcnNpb247XHQvKiAyPVx1MDAzZUwyVFB2MiwgMz1cdTAwM2VMMlRQdjMgKi9cbiYjNDM7XHRpbnRcdFx0XHRsM19vdmVyaGVhZDtcdC8qIElQIGhlYWRlciBvdmVyaGVhZCAqL1xuIFxuIFx0Y2hhclx0XHRcdG5hbWVbTDJUUF9UVU5ORUxfTkFNRV9NQVhdOyAvKiBmb3IgbG9nZ2luZyAqL1xuIFx0ZW51bSBsMnRwX2VuY2FwX3R5cGVcdGVuY2FwO1xuQEAgLTMzNCw2ICYjNDM7MzM1LDI1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGwydHBfdjNfZW5zdXJlX29wdF9pbl9saW5lYXIoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RyXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGwydHBfdHVubmVsX3VkcF9oZHJsZW4oc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCA/XG4mIzQzO1x0XHRzaXplb2Yoc3RydWN0IHVkcGhkcikgOiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbixcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKSAmIzQzOyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gJiM0MztcbiYjNDM7XHRcdHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLFxuJiM0MztcdFx0XHRcdFx0ICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuJiM0Mzt9XG4mIzQzO1xuICNkZWZpbmUgTU9EVUxFX0FMSUFTX0wyVFBfUFdUWVBFKHR5cGUpIFxcXG4gXHRNT0RVTEVfQUxJQVMoXCYjMzQ7bmV0LWwydHAtdHlwZS1cJiMzNDsgX19zdHJpbmdpZnkodHlwZSkpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9ldGguYyBiL25ldC9sMnRwL2wydHBfZXRoLmNcbmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jXG5AQCAtMTg4LDIwICYjNDM7MTg4LDkgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dW5zaWduZWQgaW50IG92ZXJoZWFkID0gMDtcbi1cdHUzMiBsM19vdmVyaGVhZCA9IDA7XG4gXHR1MzIgbXR1O1xuIFxuLVx0LyogaWYgdGhlIGVuY2FwIGlzIFVEUCwgYWNjb3VudCBmb3IgVURQIGhlYWRlciBzaXplICovXG4tXHRpZiAodHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkge1xuLVx0XHRvdmVyaGVhZCAmIzQzOz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuLVx0XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4tXHR9XG4tXG4tXHRsb2NrX3NvY2sodHVubmVsLVx1MDAzZXNvY2spO1xuLVx0bDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtXHUwMDNlc29jayk7XG4tXHRyZWxlYXNlX3NvY2sodHVubmVsLVx1MDAzZXNvY2spO1xuLVxuLVx0aWYgKGwzX292ZXJoZWFkID09IDApIHtcbiYjNDM7XHRpZiAodHVubmVsLVx1MDAzZWwzX292ZXJoZWFkID09IDApIHtcbiBcdFx0LyogTDMgT3ZlcmhlYWQgY291bGRuJiMzOTt0IGJlIGlkZW50aWZpZWQsIHRoaXMgY291bGQgYmVcbiBcdFx0ICogYmVjYXVzZSB0dW5uZWwtXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0JiMzOTtzXG4gXHRcdCAqIGFkZHJlc3MgZmFtaWx5IHdhcyBub3QgSVB2NCBvciBJUHY2LFxuQEAgLTIwOSwxMCAmIzQzOzE5OCw4IEBAIHN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm47XG4gXHR9XG4tXHQvKiBBZGp1c3QgTVRVLCBmYWN0b3Igb3ZlcmhlYWQgLSB1bmRlcmxheSBMMywgb3ZlcmxheSBMMiBoZHJcbi1cdCAqIFVEUCBvdmVyaGVhZCwgaWYgYW55LCB3YXMgYWxyZWFkeSBmYWN0b3JlZCBpbiBhYm92ZS5cbi1cdCAqL1xuLVx0b3ZlcmhlYWQgJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiAmIzQzOyBFVEhfSExFTiAmIzQzOyBsM19vdmVyaGVhZDtcbiYjNDM7XHQvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi9cbiYjNDM7XHRvdmVyaGVhZCA9IEVUSF9ITEVOICYjNDM7IGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuIFxuIFx0bXR1ID0gbDJ0cF90dW5uZWxfZHN0X210dSh0dW5uZWwpIC0gb3ZlcmhlYWQ7XG4gXHRpZiAobXR1IFx1MDAzYyBkZXYtXHUwMDNlbWluX210dSB8fCBtdHUgXHUwMDNlIGRldi1cdTAwM2VtYXhfbXR1KVxuQEAgLTIyMCw3ICYjNDM7MjA3LDcgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdGVsc2VcbiBcdFx0ZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbjtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGwydHBfZXRoX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMMlRQJiMzNDssCiAgICAmIzM0O0wyVFBfVjMmIzM0OywKICAgICYjMzQ7TDJUUF9FVEgmIzM0OywKICAgICYjMzQ7TDJUUF9JUCYjMzQ7LAogICAgJiMzNDtQUFBPTDJUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2wydHBfdHVubmVsX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2wydHBfeG1pdF9za2ImIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfY3JlYXRlJiMzNDssCiAgICAmIzM0O2wydHBfZXRoX2Rldl94bWl0JiMzNDssCiAgICAmIzM0O3BwcG9sMnRwX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBMMlRQIG92ZXJoZWFkIGFuZCBoZWFkcm9vbSBjYWxjdWxhdGlvbnMsIGNhY2hpbmcgdGhlIEwzIG92ZXJoZWFkIGR1cmluZyB0dW5uZWwgcmVnaXN0cmF0aW9uIGFuZCB1c2luZyBpdCBpbiBNVFUgYWRqdXN0bWVudCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBMMlRQIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRhMzcwN2FhOGYwYWU2NzMyYTBkOTcyOWZkNzI4YzBjNzExYWFiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA3OjE2OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwppbmRleCA0NzEyY2M0MTg4MWEzLi5mNTJiZjNiNTMyOTA3IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwpAQCAtMTIyNywxOCAmIzQzOzEyMjcsMTYgQEAgc3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnMKIAlzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tJmd0O3R1bm5lbDsKIAl1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSBza2ItJmd0O2xlbjsKIAlzdHJ1Y3Qgc29jayAqc2sgPSB0dW5uZWwtJmd0O3NvY2s7Ci0JaW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjsKIAlpbnQgcmV0ID0gTkVUX1hNSVRfU1VDQ0VTUzsKIAlzdHJ1Y3QgaW5ldF9zb2NrICppbmV0OwogCXN0cnVjdCB1ZHBoZHIgKnVoOwomIzQzOwlpbnQgdWRwX2xlbjsKIAogCS8qIENoZWNrIHRoYXQgdGhlcmUmIzM5O3MgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBza2IgdG8gaW5zZXJ0IElQLAogCSAqIFVEUCBhbmQgTDJUUCBoZWFkZXJzLiBJZiBub3QgZW5vdWdoLCBleHBhbmQgaXQgdG8KIAkgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS4KIAkgKi8KLQl1aGxlbiA9ICh0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkgPyBzaXplb2YoKnVoKSA6IDA7Ci0JaGVhZHJvb20gPSBORVRfU0tCX1BBRCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1aGxlbiAmIzQzOyBzZXNzaW9uLSZndDtoZHJfbGVuOwotCWlmIChza2JfY293X2hlYWQoc2tiLCBoZWFkcm9vbSkpIHsKJiM0MzsJaWYgKHNrYl9jb3dfaGVhZChza2IsIGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc2Vzc2lvbiwgdHVubmVsKSkpIHsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBORVRfWE1JVF9EUk9QOwogCX0KQEAgLTEyOTAsNyAmIzQzOzEyODgsOSBAQCBzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVucwogCQl1aCA9IHVkcF9oZHIoc2tiKTsKIAkJdWgtJmd0O3NvdXJjZSA9IGluZXQtJmd0O2luZXRfc3BvcnQ7CiAJCXVoLSZndDtkZXN0ID0gaW5ldC0mZ3Q7aW5ldF9kcG9ydDsKLQkJdWRwX2xlbiA9IHVobGVuICYjNDM7IHNlc3Npb24tJmd0O2hkcl9sZW4gJiM0MzsgZGF0YV9sZW47CiYjNDM7CiYjNDM7CQl1ZHBfbGVuID0gbDJ0cF90dW5uZWxfdWRwX2hkcmxlbih0dW5uZWwpOwomIzQzOwkJdWRwX2xlbiAmIzQzOz0gc2Vzc2lvbi0mZ3Q7aGRyX2xlbiAmIzQzOyBkYXRhX2xlbjsKIAkJaWYgKHVkcF9sZW4gJmd0OyBVMTZfTUFYKSB7CiAJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldCA9IE5FVF9YTUlUX0RST1A7CkBAIC0xNjg4LDYgJiM0MzsxNjg4LDcgQEAgaW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsCiAJfQogCiAJc2stJmd0O3NrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDOwomIzQzOwl0dW5uZWwtJmd0O2wzX292ZXJoZWFkID0ga2VybmVsX3NvY2tfaXBfb3ZlcmhlYWQoc2spOwogCXJlbGVhc2Vfc29jayhzayk7CiAKIAlzb2NrX2hvbGQoc2spOwpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmggYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaAppbmRleCBmZmQ4Y2VkM2E1MWZmLi4yYzQxODc3YjZjZTU3IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaApAQCAtMTY3LDYgJiM0MzsxNjcsNyBAQCBzdHJ1Y3QgbDJ0cF90dW5uZWwgewogCXUzMgkJCXR1bm5lbF9pZDsKIAl1MzIJCQlwZWVyX3R1bm5lbF9pZDsKIAlpbnQJCQl2ZXJzaW9uOwkvKiAyPSZndDtMMlRQdjIsIDM9Jmd0O0wyVFB2MyAqLwomIzQzOwlpbnQJCQlsM19vdmVyaGVhZDsJLyogSVAgaGVhZGVyIG92ZXJoZWFkICovCiAKIAljaGFyCQkJbmFtZVtMMlRQX1RVTk5FTF9OQU1FX01BWF07IC8qIGZvciBsb2dnaW5nICovCiAJZW51bSBsMnRwX2VuY2FwX3R5cGUJZW5jYXA7CkBAIC0zMzQsNiAmIzQzOzMzNSwyNSBAQCBzdGF0aWMgaW5saW5lIGludCBsMnRwX3YzX2Vuc3VyZV9vcHRfaW5fbGluZWFyKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cgogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBpbnQgbDJ0cF90dW5uZWxfdWRwX2hkcmxlbihzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCA/CiYjNDM7CQlzaXplb2Yoc3RydWN0IHVkcGhkcikgOiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwKJiM0MzsJCQkJCXN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKQomIzQzO3sKJiM0MzsJcmV0dXJuIGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKSAmIzQzOyBzZXNzaW9uLSZndDtoZHJfbGVuICYjNDM7CiYjNDM7CQl0dW5uZWwtJmd0O2wzX292ZXJoZWFkOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sCiYjNDM7CQkJCQkgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpCiYjNDM7ewomIzQzOwlyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7CiYjNDM7fQomIzQzOwogI2RlZmluZSBNT0RVTEVfQUxJQVNfTDJUUF9QV1RZUEUodHlwZSkgXAogCU1PRFVMRV9BTElBUygmIzM0O25ldC1sMnRwLXR5cGUtJiMzNDsgX19zdHJpbmdpZnkodHlwZSkpCiAKZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfZXRoLmMgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jCmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0Ci0tLSBhL25ldC9sMnRwL2wydHBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2wydHAvbDJ0cF9ldGguYwpAQCAtMTg4LDIwICYjNDM7MTg4LDkgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7Ci0JdTMyIGwzX292ZXJoZWFkID0gMDsKIAl1MzIgbXR1OwogCi0JLyogaWYgdGhlIGVuY2FwIGlzIFVEUCwgYWNjb3VudCBmb3IgVURQIGhlYWRlciBzaXplICovCi0JaWYgKHR1bm5lbC0mZ3Q7ZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSB7Ci0JCW92ZXJoZWFkICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7Ci0JCWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7Ci0JfQotCi0JbG9ja19zb2NrKHR1bm5lbC0mZ3Q7c29jayk7Ci0JbDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtJmd0O3NvY2spOwotCXJlbGVhc2Vfc29jayh0dW5uZWwtJmd0O3NvY2spOwotCi0JaWYgKGwzX292ZXJoZWFkID09IDApIHsKJiM0MzsJaWYgKHR1bm5lbC0mZ3Q7bDNfb3ZlcmhlYWQgPT0gMCkgewogCQkvKiBMMyBPdmVyaGVhZCBjb3VsZG4mIzM5O3QgYmUgaWRlbnRpZmllZCwgdGhpcyBjb3VsZCBiZQogCQkgKiBiZWNhdXNlIHR1bm5lbC0mZ3Q7c29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0JiMzOTtzCiAJCSAqIGFkZHJlc3MgZmFtaWx5IHdhcyBub3QgSVB2NCBvciBJUHY2LApAQCAtMjA5LDEwICYjNDM7MTk4LDggQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKIAkJICovCiAJCXJldHVybjsKIAl9Ci0JLyogQWRqdXN0IE1UVSwgZmFjdG9yIG92ZXJoZWFkIC0gdW5kZXJsYXkgTDMsIG92ZXJsYXkgTDIgaGRyCi0JICogVURQIG92ZXJoZWFkLCBpZiBhbnksIHdhcyBhbHJlYWR5IGZhY3RvcmVkIGluIGFib3ZlLgotCSAqLwotCW92ZXJoZWFkICYjNDM7PSBzZXNzaW9uLSZndDtoZHJfbGVuICYjNDM7IEVUSF9ITEVOICYjNDM7IGwzX292ZXJoZWFkOwomIzQzOwkvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi8KJiM0MzsJb3ZlcmhlYWQgPSBFVEhfSExFTiAmIzQzOyBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc2Vzc2lvbiwgdHVubmVsKTsKIAogCW10dSA9IGwydHBfdHVubmVsX2RzdF9tdHUodHVubmVsKSAtIG92ZXJoZWFkOwogCWlmIChtdHUgJmx0OyBkZXYtJmd0O21pbl9tdHUgfHwgbXR1ICZndDsgZGV2LSZndDttYXhfbXR1KQpAQCAtMjIwLDcgJiM0MzsyMDcsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLAogCWVsc2UKIAkJZGV2LSZndDttdHUgPSBtdHU7CiAKLQlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSAmIzQzOz0gc2Vzc2lvbi0mZ3Q7aGRyX2xlbjsKJiM0MzsJZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCk7CiB9CiAKIHN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMMlRQIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbDJ0cC9sMnRwX2NvcmUuY2AsIGBuZXQvbDJ0cC9sMnRwX2NvcmUuaGAsIGFuZCBgbmV0L2wydHAvbDJ0cF9ldGguY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggaG93IEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGFyZSBoYW5kbGVkLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBjYWxjdWxhdGluZyBpdCBjb3JyZWN0bHkgbm93LCB3aGljaCBpcyBhIGdvb2Qgc3RhcnQuIEkgc2VlIHRoZXkmIzM5O3JlIGNhY2hpbmcgdGhlIGBsM19vdmVyaGVhZGAgdmFsdWUgaW4gdGhlIGBzdHJ1Y3QgbDJ0cF90dW5uZWxgIGR1cmluZyBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbnNpc3RlbmN5LiBUaGV5JiMzOTtyZSB0aGVuIHVzaW5nIHRoYXQgY2FjaGVkIHZhbHVlIGluIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBhbmQgYGwydHBfeG1pdF9jb3JlYC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmbG93LgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBrbm9icyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSBpbnN0YW5jZXMgb2YgYGwydHBfdHVubmVsX3JlZ2lzdGVyYCBhbmQgYGwydHBfZXRoX2NyZWF0ZWAgaW4gS2NvbmZpZyBmaWxlcyBvciBNYWtlZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2wydHBfdHVubmVsX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sMnRwL2wydHBfY29yZS5jPTE2MTM9c3RhdGljIGludCBsMnRwX3ZhbGlkYXRlX3NvY2tldChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNjQyLVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTY0MzppbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTE2NDQtXHRcdFx0IHN0cnVjdCBsMnRwX3R1bm5lbF9jZmcgKmNmZylcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNzIwLX1cbm5ldC9sMnRwL2wydHBfY29yZS5jOjE3MjE6RVhQT1JUX1NZTUJPTF9HUEwobDJ0cF90dW5uZWxfcmVnaXN0ZXIpO1xubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMi1cbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaD0yMzY9aW50IGwydHBfdHVubmVsX2NyZWF0ZShpbnQgZmQsIGludCB2ZXJzaW9uLCB1MzIgdHVubmVsX2lkLFxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5oLTIzOC1cdFx0ICAgICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqKnR1bm5lbHApO1xubmV0L2wydHAvbDJ0cF9jb3JlLmg6MjM5OmludCBsMnRwX3R1bm5lbF9yZWdpc3RlcihzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IG5ldCAqbmV0LFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjQwLVx0XHRcdCBzdHJ1Y3QgbDJ0cF90dW5uZWxfY2ZnICpjZmcpO1xuLS1cbm5ldC9sMnRwL2wydHBfbmV0bGluay5jPTE4NT1zdGF0aWMgaW50IGwydHBfbmxfY21kX3R1bm5lbF9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDUtXHRyZWZjb3VudF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZXJlZl9jb3VudCk7XG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYzoyNDY6XHRyZXQgPSBsMnRwX3R1bm5lbF9yZWdpc3Rlcih0dW5uZWwsIG5ldCwgXHUwMDI2Y2ZnKTtcbm5ldC9sMnRwL2wydHBfbmV0bGluay5jLTI0Ny1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTYyNz1zdGF0aWMgc3RydWN0IGwydHBfdHVubmVsICpwcHBvbDJ0cF90dW5uZWxfZ2V0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY0Ny1cbm5ldC9sMnRwL2wydHBfcHBwLmM6NjQ4Olx0XHRcdC8qIFByZXZlbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoKSBmcm9tIHRyeWluZyB0byBzZXQgdXBcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjQ5LVx0XHRcdCAqIGEga2VybmVsIHNvY2tldC5cbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY2Mi1cdFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZXJlZl9jb3VudCk7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjY2MzpcdFx0XHRlcnJvciA9IGwydHBfdHVubmVsX3JlZ2lzdGVyKHR1bm5lbCwgbmV0LCBcdTAwMjZ0Y2ZnKTtcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjY0LVx0XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEwyVFAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgTDJUUC4mIzM0OyBXZSBhbGwga25vdyB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGNhbiBiZSBhIGxhYnlyaW50aCwgYnV0IGl0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZSBvZiB0cnV0aCBmb3IgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIHdoYXQsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBhbnkgcmVsZXZhbnQgbW9kdWxlcyBJJiMzOTttIHdvcmtpbmcgd2l0aC4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdyYXNwIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyBhbmQgYXZvaWQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSeKAmW0gdGhpbmtpbmcsIOKAnFdoYXQgYXJlIHRoZSBrZXkgTDJUUCBmZWF0dXJlcyBiZWluZyBjb25zaWRlcmVkIGF0IHRoaXMgc3RhZ2U/IEFuZCB3aGF0IGFib3V0IHRoZSByZWxhdGVkIHByb3RvY29scywgbGlrZSBVRFAgZW5jYXBzdWxhdGlvbj8mIzM0OyBJIHdhbnQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBydW50aW1lIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMMlRQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sMnRwL0tjb25maWctNS1cbm5ldC9sMnRwL0tjb25maWc6NjptZW51Y29uZmlnIEwyVFBcbm5ldC9sMnRwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0xheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2wgKEwyVFApXCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy0zNS1cbm5ldC9sMnRwL0tjb25maWc6MzY6Y29uZmlnIEwyVFBfREVCVUdGU1xubmV0L2wydHAvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0wyVFAgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy00OC1cbm5ldC9sMnRwL0tjb25maWc6NDk6Y29uZmlnIEwyVFBfVjNcbm5ldC9sMnRwL0tjb25maWctNTAtXHRib29sIFwmIzM0O0wyVFB2MyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy02OS1cbm5ldC9sMnRwL0tjb25maWc6NzA6Y29uZmlnIEwyVFBfSVBcbm5ldC9sMnRwL0tjb25maWctNzEtXHR0cmlzdGF0ZSBcJiMzNDtMMlRQIElQIGVuY2Fwc3VsYXRpb24gZm9yIEwyVFB2M1wmIzM0O1xuLS1cbm5ldC9sMnRwL0tjb25maWctODYtXG5uZXQvbDJ0cC9LY29uZmlnOjg3OmNvbmZpZyBMMlRQX0VUSFxubmV0L2wydHAvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O0wyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTU3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCBhbmQgYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgTDJUUGAgYW5kLCBzcGVjaWZpY2FsbHksIGBMMlRQX0VUSGAuIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogZG9lcyBgTDJUUF9FVEhgIGhhdmUgYW55IGRlcGVuZGVuY2llcz8gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYEwyVFBfVjNgIGJlaW5nIHBvdGVudGlhbGx5IGludm9sdmVkLiBUbyBiZSBjZXJ0YWluLCBJIHNob3VsZCBjaGVjayB0aGUgYG5ldC9sMnRwL0tjb25maWdgIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBhY3R1YWxseSBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2wydHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgd2hlbiBVRFAgZW5jYXBzdWxhdGlvbiBpcyBub3QgcmVxdWlyZWQuIFdoZW4gTDJUUCBpcyBjYXJyaWVkXG4gIDgxOlx0XHQgIGluIElQIHBhY2tldHMsIGl0IHVzZWQgSVAgcHJvdG9jb2wgbnVtYmVyIDExNSwgc28gdGhpcyBwb3J0XG4gIDgyOlx0XHQgIG11c3QgYmUgZW5hYmxlZCBpbiBmaXJld2FsbHMuXG4gIDgzOlx0XG4gIDg0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgODU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbDJ0cF9pcC5cbiAgODY6XHRcbiAgODc6XHRjb25maWcgTDJUUF9FVEhcbiAgODg6XHRcdHRyaXN0YXRlIFwmIzM0O0wyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcJiMzNDtcbiAgODk6XHRcdGRlcGVuZHMgb24gTDJUUF9WM1xuICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBTdXBwb3J0IGZvciBjYXJyeWluZyByYXcgZXRoZXJuZXQgZnJhbWVzIG92ZXIgTDJUUHYzLlxuICA5MjpcdFxuICA5MzpcdFx0ICBGcm9tIFJGQyA0NzE5IFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzQ3MTkudHh0XHUwMDNlLlxuICA5NDpcdFxuICA5NTpcdFx0ICBUaGUgTGF5ZXIgMiBUdW5uZWxpbmcgUHJvdG9jb2wsIFZlcnNpb24gMyAoTDJUUHYzKSBjYW4gYmVcbiAgOTY6XHRcdCAgdXNlZCBhcyBhIGNvbnRyb2wgcHJvdG9jb2wgYW5kIGZvciBkYXRhIGVuY2Fwc3VsYXRpb24gdG8gc2V0XG4gIDk3Olx0XHQgIHVwIFBzZXVkb3dpcmVzIGZvciB0cmFuc3BvcnRpbmcgbGF5ZXIgMiBQYWNrZXQgRGF0YSBVbml0c1xuICA5ODpcdFx0ICBhY3Jvc3MgYW4gSVAgbmV0d29yayBbUkZDMzkzMV0uXG4gIDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEwyVFAgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYEwyVFBgLCBgTDJUUF9WM2AsIGFuZCBgTDJUUF9FVEhgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gVGhlIGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB3aGljaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiB0aGUgY29kZWJhc2UuCgpNeSBpbml0aWFsIHNjYW4gc2hvd3MgY2hhbmdlcyBpbiB0aGVzZToKCiogICBgbDJ0cF94bWl0X2NvcmVgIGxvY2F0ZWQgaW4gYG5ldC9sMnRwL2wydHBfY29yZS5jYC4gVGhpcyBpcyBrZXk7IGFueSBjaGFuZ2VzIHRvIHRoZSBjb3JlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiBhcmUgc2lnbmlmaWNhbnQgYW5kIHdvdWxkIGFmZmVjdCBob3cgcGFja2V0cyBhcmUgaGFuZGxlZC4KKiAgIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgYWxzbyBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUdW5uZWwgcmVnaXN0cmF0aW9uIGlzIG9idmlvdXNseSBpbXBvcnRhbnQgZm9yIEwyVFAmIzM5O3Mgb3BlcmF0aW9uLgoqICAgYGwydHBfZXRoX2FkanVzdF9tdHVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTVRVIGFkanVzdG1lbnRzIGFyZSBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkgb24gRXRoZXJuZXQgbGlua3MuCiogICBBbmQgZmluYWxseSwgYGwydHBfZXRoX2NyZWF0ZWAgaW4gYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBUaGUgY29udGV4dCBvZiB0aGUgZGlmZiBkb2VzIGluZGljYXRlIHRoaXMgZnVuY3Rpb24gbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9ldGguYz0xODY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTIxMi1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MjEzOnN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTIxNC1cdFx0XHQgICB1MzIgc2Vzc2lvbl9pZCwgdTMyIHBlZXJfc2Vzc2lvbl9pZCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGwydHBfbmxfY21kX29wcyBsMnRwX2V0aF9ubF9jbWRfb3BzID0ge1xubmV0L2wydHAvbDJ0cF9ldGguYzozMDc6XHQuc2Vzc2lvbl9jcmVhdGVcdD0gbDJ0cF9ldGhfY3JlYXRlLFxubmV0L2wydHAvbDJ0cF9ldGguYy0zMDgtXHQuc2Vzc2lvbl9kZWxldGVcdD0gbDJ0cF9zZXNzaW9uX2RlbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBMMlRQIEV0aGVybmV0IE1UVSBJc3N1ZSoqCgpBbHJpZ2h0LCB0aGUgZGlmZiBjb250ZXh0IG1lbnRpb25zIGBsMnRwX2V0aF9jcmVhdGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSBhY3R1YWwgKnBhdGNoKiBtb2RpZmllcyBgbDJ0cF9ldGhfYWRqdXN0X210dWAuIEhtbSwgdGhhdCByYWlzZXMgYSBmbGFnLiBXaHkgYWRqdXN0IHRoZSBNVFUgaWYgd2UmIzM5O3JlIGFwcGFyZW50bHkgY3JlYXRpbmcgYSBuZXcgaW50ZXJmYWNlPyBBcmUgd2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBpc29sYXRlZD8gQ291bGQgdGhpcyBhZGp1c3RtZW50IGhhdmUgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIG9yIGlzIHRoZXJlIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlIHNvbWV3aGVyZT8KCk15IGluc3RpbmN0IGlzIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzICpjYWxsZXJzKi4gSSBuZWVkIHRvIHNlZSAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYW5kICp3aGVuKi4gS25vd2luZyB0aGUgY2FsbCBwYXRocyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb250ZXh0IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQsIG9yIHBvdGVudGlhbGx5IGltcGFjdGluZyBvdGhlciBtb2R1bGVzLiBJcyB0aGlzIGFkanVzdCBmdW5jdGlvbiBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UgYnJpbmctdXAsIG1vZGlmaWNhdGlvbiwgb3IgdGVhcmRvd24gc2VxdWVuY2U/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29kZSB3aWxsIHRlbGwgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2wydHBfZXRoX2FkanVzdF9tdHUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9ldGguYz0xNjY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZylcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4NS1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MTg2OnN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4Ny1cdFx0XHRcdHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXG4tLVxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI0OS1cdGRldi1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG5uZXQvbDJ0cC9sMnRwX2V0aC5jOjI1MDpcdGwydHBfZXRoX2FkanVzdF9tdHUodHVubmVsLCBzZXNzaW9uLCBkZXYpO1xubmV0L2wydHAvbDJ0cF9ldGguYy0yNTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQgbmV0d29yayBlbmdpbmVlcjoKCioqTXkgVW5kZXJzdGFuZGluZyBvZiB0aGUgTDJUUCBFdGhlcm5ldCBNVFUgYW5kIFRyYW5zbWlzc2lvbiBQYXRoKioKClJpZ2h0LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBsaWtlbHkgYSBjcnVjaWFsIGZ1bmN0aW9uIGNhbGxlZCByaWdodCB3aGVuIGFuIEwyVFAgdHVubmVsIGlzIGJlaW5nIGVzdGFibGlzaGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBsMnRwX2V0aF9jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBvZiB0aGUgdW5kZXJseWluZyBFdGhlcm5ldCBpbnRlcmZhY2UgaXMgY29ycmVjdGx5IGFjY291bnRlZCBmb3IgaW4gdGhlIEwyVFAgdHVubmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBmaXJzdCBsaW5lIG9mIGRlZmVuc2UgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgbGF0ZXIgb24sIGVuc3VyaW5nIHRoZSB0dW5uZWwmIzM5O3MgcGF5bG9hZCBmaXRzIHRoZSBFdGhlcm5ldCBmcmFtZSBzaXplLiBTbWFydCwgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHByZXZlbnQgaGVhZGFjaGVzLgoKVGhlbiB3ZSBoYXZlIGBsMnRwX3htaXRfY29yZWAsIGl0JiMzOTtzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBsMnRwX3htaXRfc2tiYC4gU28sIHRoaXMgYGwydHBfeG1pdF9jb3JlYCBhcHBlYXJzIHRvIGJlIHRoZSBjb3JlLCB0aGUgZW5naW5lIG9mIHRoZSBMMlRQIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGUgYGwydHBfeG1pdF9za2JgIHdyYXBwZXIgcHJvYmFibHkgZG9lcyBzb21lIHByZXAgd29yaywgbWF5YmUgcGFja2V0IGFzc2VtYmx5IG9yIGhlYWRlciBhZGp1c3RtZW50cywgYmVmb3JlIGhhbmRpbmcgb2ZmIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIHRvIGBsMnRwX3htaXRfY29yZWAuIEkmIzM5O20gZ3Vlc3NpbmcgYGwydHBfeG1pdF9jb3JlYCBoYW5kbGVzIHRoaW5ncyBsaWtlIGVuY2Fwc3VsYXRpb24sIGhlYWRlciBmb3JtYXR0aW5nLCBjaGVja3N1bSBjYWxjdWxhdGlvbnMsIGFuZCB1bHRpbWF0ZWx5LCBnZXR0aW5nIHRoZSBwYWNrZXQgb250byB0aGUgd2lyZS4gRWZmaWNpZW50IGRlc2lnbi4gSXQmIzM5O3MgYSBjbGVhbiBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zOiBwcmVwYXJlIHRoZSBwYWNrZXQsIHRoZW4gc2VuZCB0aGUgcGFja2V0LCB0aGF0JiMzOTtzIHRoZSBsaWtlbHkgZmxvdyBoZXJlLiBJJiMzOTttIHN0YXJ0aW5nIHRvIHB1dCB0aGUgcGllY2VzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsMnRwX3htaXRfY29yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjA5PXN0YXRpYyBpbnQgbDJ0cF94bWl0X3F1ZXVlKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjQtXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYzoxMjI1OnN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjI2LXtcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMzI4PWludCBsMnRwX3htaXRfc2tiKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzMi1cbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMzM6XHRyZXQgPSBsMnRwX3htaXRfY29yZShzZXNzaW9uLCBza2IsIFx1MDAyNmxlbik7XG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzM0LVx0aWYgKHJldCA9PSBORVRfWE1JVF9TVUNDRVNTKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6CgoqKkwyVFAgUGFja2V0IFRyYW5zbWlzc2lvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEwyVFAgcGFja2V0cyBhcmUgaGFuZGxlZCBhdCB0aGUga2VybmVsIGxldmVsLiBTcGVjaWZpY2FsbHksIGBsMnRwX3htaXRfc2tiYC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGFzIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksICp1c2VkKiBieSBhIGNvdXBsZSBvZiBjcml0aWNhbCBtb2R1bGVzOiBgbDJ0cF9ldGguY2AgYW5kIGBsMnRwX3BwcC5jYC4gVGhpcyB0ZWxscyBtZSBpbW1lZGlhdGVseSB0aGF0IGBsMnRwX3htaXRfc2tiYCBpcyB0aGUgY29yZSBtZWNoYW5pc20gZm9yIGFjdHVhbGx5IHNlbmRpbmcgb3V0IEwyVFAgdHJhZmZpYywgd2hldGhlciBpdCYjMzk7cyBlbmNhcHN1bGF0ZWQgRXRoZXJuZXQgZnJhbWVzIG9yIFBvaW50LXRvLVBvaW50IFByb3RvY29sIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gaG93IGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gdGhvc2UgdHdvIGZpbGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBidXQgdGhpcyBleHBvcnQgYW5kIHVzYWdlIHBhdHRlcm4gcG9pbnRzIHRvIGl0cyBmdW5kYW1lbnRhbCByb2xlLiBVbmRlcnN0YW5kaW5nIGl0cyBsb2dpYyBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgdHJhbnNtaXNzaW9uIGlzc3VlcyBvciBvcHRpbWl6aW5nIEwyVFAgcGVyZm9ybWFuY2Ugd2l0aGluIHRoZSBzdGFjay4gSXQgd2lsbCBhbGxvdyBhIGNvbXBsZXRlIGNvbXByZWhlbnNpb24gb2YgdGhlIGNvbXBsZXRlIGRhdGEgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMyNy0gKi9cbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMjg6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzMjkte1xuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDQtfVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTM0NTpFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3htaXRfc2tiKTtcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDYtXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmg9MjYxPXZvaWQgbDJ0cF9zZXNzaW9uX3NldF9oZWFkZXJfbGVuKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIGludCB2ZXJzaW9uLFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjYyLVx0XHRcdFx0IGVudW0gbDJ0cF9lbmNhcF90eXBlIGVuY2FwKTtcbm5ldC9sMnRwL2wydHBfY29yZS5oOjI2MzppbnQgbDJ0cF94bWl0X3NrYihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9sMnRwL2wydHBfY29yZS5oLTI2NC1cbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTcwPXN0YXRpYyBuZXRkZXZfdHhfdCBsMnRwX2V0aF9kZXZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9sMnRwL2wydHBfZXRoLmMtNzQtXHR1bnNpZ25lZCBpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbm5ldC9sMnRwL2wydHBfZXRoLmM6NzU6XHRpbnQgcmV0ID0gbDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYy03Ni1cbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTI1MD1zdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMwMi1cdGxvY2FsX2JoX2Rpc2FibGUoKTtcbm5ldC9sMnRwL2wydHBfcHBwLmM6MzAzOlx0bDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xubmV0L2wydHAvbDJ0cF9wcHAuYy0zMDQtXHRsb2NhbF9iaF9lbmFibGUoKTtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTMzMD1zdGF0aWMgaW50IHBwcG9sMnRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMzYxLVx0bG9jYWxfYmhfZGlzYWJsZSgpO1xubmV0L2wydHAvbDJ0cF9wcHAuYzozNjI6XHRsMnRwX3htaXRfc2tiKHNlc3Npb24sIHNrYik7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTM2My1cdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjM2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBMMlRQIFBhY2tldCBGbG93KioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIEwyVFAgcGFja2V0IGhhbmRsaW5nLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nLCBnaXZlbiBteSBleHBlcmllbmNlLCBwb2ludHMgdG8gdGhlc2UgYXMgY29yZTogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2Rldl94bWl0YCwgYHBwcG9sMnRwX3NlbmRtc2dgLCBhbmQgYHBwcG9sMnRwX3htaXRgLgoKTm93LCB1cG9uIGNsb3NlciBjb25zaWRlcmF0aW9uLCBgbDJ0cF9ldGhfZGV2X3htaXRgIGFuZCBgcHBwb2wydHBfeG1pdGAgcmVhbGx5IHN0YW5kIG91dCBhcyBwcm9taXNpbmcgZW50cnkgcG9pbnRzIGludG8gdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBEZWZpbml0ZWx5IG1hcmtpbmcgdGhvc2UgZm9yIGNsb3NlciBpbnNwZWN0aW9uLiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQsIHNvIHRoYXQgYWxzby4KCkkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgYEwyVFBfUFBQYCwgc2luY2UgYHBwcG9sMnRwX3NlbmRtc2dgIHN1Z2dlc3RzIGEgUFBQIGludm9sdmVtZW50LiBSaWdodCwgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgbmV0L2wydHAvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMMlRQX1BQUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NjYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh5cG90aGVzaXMgRm9ybXVsYXRpb246IFBvdGVudGlhbCBBY3JvbnltIElkZW50aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB3aGV0aGVyICYjMzQ7UFBQT0wyVFAmIzM0OyBjb3VsZCByZXByZXNlbnQgYW4gYWNyb255bSBvciBpbml0aWFsaXNtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCBwb3NzaWJsZSBmcmFtZXdvcmtzIG9yIGRhdGEgbW9kZWxzIHRoYXQgdXNlIHN1Y2ggY29uY2lzZSwgcG90ZW50aWFsbHkgbmVzdGVkLCByZXByZXNlbnRhdGlvbnMuIEkmIzM5O20gaW1wbGljaXRseSBjb25zaWRlcmluZyB0aGUgbGlrZWx5IHN0cnVjdHVyZSAtIHRocmVlIFBzLCBmb2xsb3dlZCBieSBhbiBPIGFuZCBhbiBMLCBhIDIsIGFuZCBmaW5hbGx5IGEgVCBhbmQgYSBQLiBUaGUgbnVtZXJpYyBjaGFyYWN0ZXIgY291bGQgaW5kaWNhdGUgYSB2ZXJzaW9uLCBvciBhIGdyb3VwaW5nIGVsZW1lbnQ7IGl0IGFsbCBkZXBlbmRzIG9uIHRoZSBjb250ZXh0IGFuZCBpbmR1c3RyeS4gTXkgbmV4dCBzdGVwIHdvdWxkIGJlIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgbGlrZWx5IGZpZWxkcyBvciBkb21haW5zIGluIHdoaWNoIHN1Y2ggYSByZXByZXNlbnRhdGlvbiBtaWdodCBiZSBlbXBsb3llZCwgcGVyaGFwcyBzdGFydGluZyB3aXRoIHNvbWUgb2YgdGhlIG1vcmUgY29tbW9uLCBvciBteSBzdHJvbmdlc3QsIGRvbWFpbnMgb2YgZXhwZXJ0aXNlLiBUaGUgYnJldml0eSBvZiB0aGUgc3RyaW5nIHN1Z2dlc3RzIGl0IGNvdWxkIGJlIGFuIGludGVybmFsIGRlc2lnbmF0aW9uIG9yIHNvbWV0aGluZyBzcGVjaWZpYyB0byBhIHNpbmdsZSBvcmdhbml6YXRpb24uIEkgbmVlZCBtb3JlIGluZm9ybWF0aW9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBQTyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz05Mj1jb25maWcgUFBQX01VTFRJTElOS1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgQVRNXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIEV0aGVybmV0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7MSBiaXQgKDIgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7MiBiaXRzICg0IGJ1Y2tldHMpXCYjMzQ7XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXHRib29sIFwmIzM0OzQgYml0cyAoMTYgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7OCBiaXRzICgyNTYgYnVja2V0cylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTM6Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVx0aW50XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ5OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMMlRQIE1vZHVsZSBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBQUFBPTDJUUGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGF0JiMzOTtzIHB1dCB0b2dldGhlci4gVGltZSB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgdGhhdCB0aGluZy4gT2theSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYG5ldC9sMnRwL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGV4YWN0bHkgd2hpY2ggYnVpbGQgdGFyZ2V0cyBpbmNvcnBvcmF0ZSBgbDJ0cF9wcHAuY2AuIE5vIG5lZWQgdG8gZ3Vlc3MsIGxldCYjMzk7cyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBydWxlcyB0aGF0IGdlbmVyYXRlIHRoZSBvYmplY3QgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgcXVpY2suIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBwcHAgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9sMnRwL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciB0aGUgTDJUUC5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0wyVFApICYjNDM7PSBsMnRwX2NvcmUub1xuICAgNzpcdFxuICAgODpcdENGTEFHU19sMnRwX2NvcmUubyAmIzQzOz0gLUkkKHNyYylcbiAgIDk6XHRcbiAgMTA6XHQjIEJ1aWxkIGwydHAgYXMgbW9kdWxlcyBpZiBMMlRQIGlzIE1cbiAgMTE6XHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX1BQUE9MMlRQKSkgJiM0Mzs9IGwydHBfcHBwLm9cbiAgMTI6XHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfSVApKSAmIzQzOz0gbDJ0cF9pcC5vXG4gIDEzOlx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX1YzKSkgJiM0Mzs9IGwydHBfbmV0bGluay5vXG4gIDE0Olx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0VUSCkpICYjNDM7PSBsMnRwX2V0aC5vXG4gIDE1Olx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0RFQlVHRlMpKSAmIzQzOz0gbDJ0cF9kZWJ1Z2ZzLm9cbiAgMTY6XHRpZm5lcSAoJChDT05GSUdfSVBWNiksKVxuICAxNzpcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9JUCkpICYjNDM7PSBsMnRwX2lwNi5vXG4gIDE4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMMlRQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gTDJUUC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNhdGVnb3JpemUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYW5kIGBQUFBPTDJUUGAuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgYGwydHBfY29yZS5jYCBhbmQgYGwydHBfZXRoLmNgLgoKTXkgcHJpbWFyeSBpbnRlcmVzdCBsaWVzIGluIHRoZXNlIGZ1bmN0aW9uczogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX3htaXRfc2tiYCwgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuIExldCYjMzk7cyBkaWcgaW50byBlYWNoIG9mIHRoZXNlLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAuIEdvb2QsIGl0JiMzOTtzIGV4cG9ydGVkLCBzbyB0aGF0JiMzOTtzIGFjY2Vzc2libGUuIE5leHQsIGBsMnRwX2V0aF9jcmVhdGVgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYC4gUmlnaHQsIHNvIHRoYXQmIzM5O3MgYSBuZXRsaW5rIGNhbGxiYWNrLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhbiBlbnRyeSBwb2ludC4gYGwydHBfeG1pdF9za2JgIGlzIGFsc28gZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLCBzbyBpdCYjMzk7cyBnbG9iYWxseSB2aXNpYmxlLiBgbDJ0cF9ldGhfZGV2X3htaXRgIGlzIHN0YXRpYywgYnV0IGNydWNpYWxseSwgaXQmIzM5O3MgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBTbywgdGhhdCBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgYW5kIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBPaCwgYW5kIEkgc2VlIGBsMnRwX3htaXRfY29yZWAgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gbGlrZWx5IG5vdCBkaXJlY3RseSByZWxldmFudC4KClNvIG5vdyB0aGF0IEkmIzM5O3ZlIHJldmlld2VkIHRoZSB2aXNpYmlsaXR5LCBJIGtub3cgdGhhdCBteSBrZXkgc3ltYm9scyB3aWxsIGJlIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuCgpIYW5nIG9uLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoaXMgcmlnaHQuIEV2ZW4gdGhvdWdoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIHN0YXRpYywgaXQmIzM5O3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGludGVyYWN0aW9uLiBBbmQgdGhlIHNhbWUgZ29lcyBmb3IgYGwydHBfZXRoX2Rldl94bWl0YCwgYmVjYXVzZSBpdCYjMzk7cyBhbiBuZG8gY2FsbGJhY2sgYW5kIGFjdHMgYXMgYW4gZW50cnkgcG9pbnQgYXMgd2VsbC4gT2theSwgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgaXMgaW5kZWVkIGV4cG9ydGVkOyBjaGVja2VkIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKGwydHBfdHVubmVsX3JlZ2lzdGVyKTtgLgoKTGV0JiMzOTtzIHF1aWNrbHkgcmVmcmVzaCB0aGUgY29uZmlndXJhdGlvbnMgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYWdhaW46IGBMMlRQYCwgYEwyVFBfVjNgLCBgTDJUUF9FVEhgLCBhbmQgYFBQUE9MMlRQYC4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgcmVnYXJkaW5nIGRlcGVuZGVuY2llcz8gQWhhLCBgTDJUUF9FVEhgIGRlcGVuZHMgb24gYEwyVFBfVjNgLiBBbmQgYFBQUE9MMlRQYCBuZWVkcyBgUFBQYCBhbmQgYEwyVFBgLCBzbyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIHRvIGJlIGNvbXBsZXRlLiBUaGF0JiMzOTtzIHRoZSBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4gMTgxOlx0aWYgVFRZXG4gMTgyOlx0XG4gMTgzOlx0Y29uZmlnIFBQUF9BU1lOQ1xuIDE4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1wmIzM0O1xuIDE4NTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSAob3IgTSkgaGVyZSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBQUFAgb3ZlciBzdGFuZGFyZFxuIDE4ODpcdFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBzdWNoIGFzIENPTTEgb3IgQ09NMiBvbiBhIFBDLiAgSWYgeW91IHVzZVxuIDE4OTpcdFx0ICBhIG1vZGVtIChub3QgYSBzeW5jaHJvbm91cyBvciBJU0ROIG1vZGVtKSB0byBjb250YWN0IHlvdXIgSVNQLCB5b3VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjb21wbGV0ZWx5LiBJdCBsb29rcyBsaWtlIGBQUFBPTDJUUGAgcmVsaWVzIG9uIGBMMlRQYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEJ1dCBJIHNlZSB0aGF0IGBMMlRQX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBMMlRQX1YzYCwgYW5kICp0aGF0KiBpbiB0dXJuIGlzIGRlcGVuZGVudCBvbiBgTDJUUGAuIFRoaXMgc2V0dXAgc2NyZWFtcyBmb3IgY2FyZWZ1bCByZXZpZXcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEwyVFBgIGRlcGVuZGVuY2llcyBzcGVjaWZpY2FsbHksIGp1c3QgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHBlcmZvcm1hbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbDJ0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTGF5ZXIgVHdvIFR1bm5lbGluZyBQcm90b2NvbCAoTDJUUClcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBMMlRQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgTGF5ZXIgVHdvIFR1bm5lbGluZyBQcm90b2NvbFxuICAxMjpcdFxuICAxMzpcdFx0ICBGcm9tIFJGQyAyNjYxIFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2NjEudHh0XHUwMDNlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBMMlRQIGZhY2lsaXRhdGVzIHRoZSB0dW5uZWxpbmcgb2YgcGFja2V0cyBhY3Jvc3MgYW5cbiAgMTY6XHRcdCAgaW50ZXJ2ZW5pbmcgbmV0d29yayBpbiBhIHdheSB0aGF0IGlzIGFzIHRyYW5zcGFyZW50IGFzXG4gIDE3Olx0XHQgIHBvc3NpYmxlIHRvIGJvdGggZW5kLXVzZXJzIGFuZCBhcHBsaWNhdGlvbnMuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIEwyVFAgaXMgb2Z0ZW4gdXNlZCB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBJUFxuICAyMDpcdFx0ICB0dW5uZWxzLiBPbmUgSVAgdHVubmVsIG1heSBjYXJyeSB0aG91c2FuZHMgb2YgaW5kaXZpZHVhbCBQUFBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTDJUUCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIHRlc3RpbmcgdGhlIEwyVFAgaW1wbGVtZW50YXRpb24sIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGluaGVyZW50bHkgcmVsaWVzIG9uIElORVQuIFRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZTogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGFuZCBgUFBQT0wyVFBgLgoKTm93LCB0aGUgdGhpbmcgdGhhdCYjMzk7cyBuYWdnaW5nIGF0IG1lIGlzIGBQUFBPTDJUUGAuIFdoaWxlIGl0JiMzOTtzIG5vdCAqc3RyaWN0bHkqIG5lY2Vzc2FyeSBmb3IgaGl0dGluZyB0aGUgYGwydHBfZXRoLmNgIGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkg4oCTIGVzcGVjaWFsbHkgdGVzdGluZyB0aGUgY29yZSBmdW5jdGlvbnMgbGlrZSBgbDJ0cF94bWl0X3NrYmAgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAg4oCTIGluY2x1ZGluZyBpdCBvZmZlcnMgYSB2YWx1YWJsZSBhbHRlcm5hdGl2ZSBwYXRoLiBJdCBnaXZlcyBtZSBhbm90aGVyIHdheSB0byBleGVyY2lzZSB0aG9zZSBrZXkgY29kZSBzZWN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgZm9yIGNvbXByZWhlbnNpdmUgdGVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGl0LgoKSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMgc2hhcnAuIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF94bWl0X3NrYmAsIGBsMnRwX2V0aF9jcmVhdGVgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuCgpGaW5hbGx5LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgc2hvdWxkIGNvbmZpcm0gd2hldGhlciBgcHBwb2wydHBfc2VuZG1zZ2AgYW5kIGBwcHBvbDJ0cF94bWl0YCBhcmUgZGVjbGFyZWQgYXMgc3RhdGljLiBHb3R0YSBtYWtlIHN1cmUgdGhlIHNjb3BlIGlzIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcG9sMnRwX3NlbmRtc2cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9wcHAuYz0xOTg9c3RhdGljIHZvaWQgcHBwb2wydHBfcmVjdihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZGF0YV9sZW4pXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYy0yNDktICovXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjI1MDpzdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjUxLVx0XHRcdCAgICBzaXplX3QgdG90YWxfbGVuKVxuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMzE4LSAqXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjMxOTogKiBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBwcHBvbDJ0cF9zZW5kbXNnKCksIGJ1dCByYXRoZXIgdGhhblxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMjAtICogYmVpbmcgY2FsbGVkIHdpdGggYSBtc2doZHIgZnJvbSB1c2Vyc3BhY2UsIGl0IGlzIGNhbGxlZCB3aXRoIGEgc2tiXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2NDktXHQuZ2V0c29ja29wdF9pdGVyID0gcHBwb2wydHBfZ2V0c29ja29wdCxcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTY1MDpcdC5zZW5kbXNnXHQ9IHBwcG9sMnRwX3NlbmRtc2csXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2NTEtXHQucmVjdm1zZ1x0PSBwcHBvbDJ0cF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA3MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhbGxiYWNrIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkLCBwYXJ0aWN1bGFybHkgdGhvc2UgbWFya2VkIGFzIGBzdGF0aWNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBldmVuIHRob3VnaCB0aGV5IGFyZSBzdGF0aWMsIHRoZXkmIzM5O3JlIGJlaW5nIHV0aWxpemVkIGFzIGNhbGxiYWNrcy4gVGhhdOKAmXMgdGhlIGtleSBoZXJlLgoKTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIHNvIGZhci4gSSYjMzk7bSBzZWVpbmcgdGhhdCwgZGVzcGl0ZSBiZWluZyBkZWNsYXJlZCBgc3RhdGljYCwgYm90aCBgbDJ0cF9ldGhfY3JlYXRlYCBpcyBhc3NpZ25lZCB0byBgbDJ0cF9ldGhfbmxfY21kX29wcy5zZXNzaW9uX2NyZWF0ZWAsIGFuZCBgbDJ0cF9ldGhfZGV2X3htaXRgIGlzIGFzc2lnbmVkIHRvIGBuZXRkZXZfb3BzLm5kb19zdGFydF94bWl0YC4gVGhpcyBkZWZpbml0ZWx5IHBvaW50cyB0b3dhcmRzIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgcGFydCBvZiBzb21lIGtpbmQgb2YgZnVuY3Rpb25hbCB0YWJsZSBvciBjYWxsYmFjayBzdHJ1Y3R1cmUuCgpUbyBmdXJ0aGVyIGNsYXJpZnkgdGhpcyBwYXR0ZXJuLCBJJiMzOTtsbCBjb21waWxlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgb3RoZXIgY2FsbGJhY2sgZnVuY3Rpb25zIEkgc2VlIGJlaW5nIGltcGxlbWVudGVkIHRvIGJldHRlciBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHNob3VsZCByZXZpZXc6CgoqICAgYGwydHBfdHVubmVsX3JlZ2lzdGVyYAoqICAgYGwydHBfeG1pdF9za2JgCiogICBgbDJ0cF9ldGhfY3JlYXRlYAoqICAgYGwydHBfZXRoX2Rldl94bWl0YAoqICAgYHBwcG9sMnRwX3NlbmRtc2dgCiogICBgcHBwb2wydHBfeG1pdGAKCkhvbGQgb24sIEkgc2VlIHRoYXQgYHBwcG9sMnRwX3htaXRgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIHRoZSBwYXR0ZXJuIEkmIzM5O20gc2VlaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgaG93IHRoaXMgaXMgaGFwcGVuaW5nIGJlY2F1c2Ugc29tZXRoaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUmIzM5O3MgbW9yZSB0byB1bmRlcnN0YW5kIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcG9sMnRwX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9wcHAuYz0xMTc9c3RydWN0IHBwcG9sMnRwX3Nlc3Npb24ge1xuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI0LVxubmV0L2wydHAvbDJ0cF9wcHAuYzoxMjU6c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTEyNi1cbm5ldC9sMnRwL2wydHBfcHBwLmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwcG9sMnRwX2NoYW5fb3BzID0ge1xubmV0L2wydHAvbDJ0cF9wcHAuYzoxMjg6XHQuc3RhcnRfeG1pdCA9ICBwcHBvbDJ0cF94bWl0LFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xMjktfTtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTI1MD1zdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMyOS0gKi9cbm5ldC9sMnRwL2wydHBfcHBwLmM6MzMwOnN0YXRpYyBpbnQgcHBwb2wydHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTQ4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkwyVFAgT3ZlcmhlYWQgRml4IGFuZCBGdXp6aW5nIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gb24gdGhpcyBwYXRjaCwgYXNzaWduZWQgdG8gYHBwcF9jaGFubmVsX29wcy5zdGFydF94bWl0YC4gVGhlIG1haW4gdGhpbmcgaXMgZml4aW5nIGhvdyBMMlRQIG92ZXJoZWFkIGlzIGNhbGN1bGF0ZWQsIHdoaWNoIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFsd2F5cyBnb29kIHRvIGJlIG1pbmRmdWwgb2YgdGhvc2UuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBjYWNoaW5nIHRoZSBMMyBvdmVyaGVhZCBpbiBgdHVubmVsLSZndDtsM19vdmVyaGVhZGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBwZXJmb3JtYW5jZSwgSSBzdXBwb3NlLgoKVGhpcyBpcyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgJiMzNDtmdXp6aW5nIGNhbmRpZGF0ZSYjMzQ7IHRvIG1lLiBBbnkgY2hhbmdlIGluIG92ZXJoZWFkIGNhbGN1bGF0aW9uIGxpa2UgdGhpcyBjYW4gb3BlbiB1cCBpbnRlcmVzdGluZyBhdHRhY2sgdmVjdG9ycywgc28gSSYjMzk7bGwgZGVmaW5pdGVseSB3YW50IHRvIHB1dCBzb21lIGZ1enplcnMgYWdhaW5zdCB0aGlzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJvdW5kIEwyVFAuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hldGhlciBgTDJUUF9JUGAgaXMgcmVsZXZhbnQgaGVyZSwgZm9yIHRoZSBJUCBlbmNhcHN1bGF0aW9uIHBpZWNlLiBMZXQgbWUgcHVsbCB1cCBgbmV0L2wydHAvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgb3Igc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9sMnRwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XHQgIG9yaWdpbmFsbHkgZGVmaW5lZCBpbiBSRkMgMjY2MSwgaXMgYSBzdGFuZGFyZCBtZXRob2QgZm9yXG4gIDYxOlx0XHQgIHR1bm5lbGluZyBQb2ludC10by1Qb2ludCBQcm90b2NvbCAoUFBQKSBbUkZDMTY2MV0gc2Vzc2lvbnMuXG4gIDYyOlx0XHQgIEwyVFAgaGFzIHNpbmNlIGJlZW4gYWRvcHRlZCBmb3IgdHVubmVsaW5nIGEgbnVtYmVyIG9mIG90aGVyXG4gIDYzOlx0XHQgIEwyIHByb3RvY29scywgaW5jbHVkaW5nIEFUTSwgRnJhbWUgUmVsYXksIEhETEMgYW5kIGV2ZW4gcmF3XG4gIDY0Olx0XHQgIGV0aGVybmV0IGZyYW1lcy5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgSWYgeW91IGFyZSBjb25uZWN0aW5nIHRvIEwyVFB2MyBlcXVpcG1lbnQsIG9yIHlvdSB3YW50IHRvXG4gIDY3Olx0XHQgIHR1bm5lbCByYXcgZXRoZXJuZXQgZnJhbWVzIHVzaW5nIEwyVFAsIHNheSBZIGhlcmUuIElmXG4gIDY4Olx0XHQgIHVuc3VyZSwgc2F5IE4uXG4gIDY5Olx0XG4gIDcwOlx0Y29uZmlnIEwyVFBfSVBcbiAgNzE6XHRcdHRyaXN0YXRlIFwmIzM0O0wyVFAgSVAgZW5jYXBzdWxhdGlvbiBmb3IgTDJUUHYzXCYjMzQ7XG4gIDcyOlx0XHRkZXBlbmRzIG9uIEwyVFBfVjNcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgU3VwcG9ydCBmb3IgTDJUUC1vdmVyLUlQIHNvY2tldCBmYW1pbHkuXG4gIDc1Olx0XG4gIDc2Olx0XHQgIFRoZSBMMlRQdjMgcHJvdG9jb2wgZGVmaW5lcyB0d28gcG9zc2libGUgZW5jYXBzdWxhdGlvbnMgZm9yXG4gIDc3Olx0XHQgIEwyVFAgZnJhbWVzLCBuYW1lbHkgVURQIGFuZCBwbGFpbiBJUCAod2l0aG91dCBVRFApLiBUaGlzXG4gIDc4Olx0XHQgIGRyaXZlciBwcm92aWRlcyBhIG5ldyBMMlRQSVAgc29ja2V0IGZhbWlseSB3aXRoIHdoaWNoXG4gIDc5Olx0XHQgIHVzZXJzcGFjZSBMMlRQdjMgZGFlbW9ucyBtYXkgY3JlYXRlIEwyVFAvSVAgdHVubmVsIHNvY2tldHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2NDkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEwyVFAgQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgYEwyVFBfSVBgIGlzIGluZGVlZCBmb3IgSVAgZW5jYXBzdWxhdGlvbiwgdGhhdCBjaGVja3Mgb3V0LiBUaGUgcGF0Y2ggYWNjb3VudHMgZm9yIGJvdGggVURQIGFuZCBJUCBlbmNhcHN1bGF0aW9uIG92ZXJoZWFkcywgd2hpY2ggaXMgZ29vZC4gVGhlIGBsMnRwX3R1bm5lbF91ZHBfaGRybGVuYCBmdW5jdGlvbiB1c2VzIHRoZSBgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpYCB3aGVuIGB0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGFuZCBtZWFucyB3ZSYjMzk7cmUgY292ZXJlZC4gVGhpcyByZWluZm9yY2VzIHdoeSBgTDJUUF9JUGAgaXMgYSB2YWxpZCBvcHRpb24gaGVyZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYEwyVFBfSVBgLCBhbmQgYFBQUE9MMlRQYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgYEwyVFBfSVBgIGhhcyBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIG5vdGVzLCBpdCBhcHBlYXJzIHRvIGRlcGVuZCBvbiBgTDJUUF9WM2AsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuCgpJJiMzOTtsbCBrZWVwIHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGhhbmR5OgpgTDJUUGAKYEwyVFBfVjNgCmBMMlRQX0VUSGAKYEwyVFBfSVBgCmBQUFBPTDJUUGAKCkkmIzM5O2xsIGtlZXAgYSBzaGFycCBleWUgb3V0IGZvciB0aGVzZSBmdW5jdGlvbnM6IGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX2V0aF9kZXZfeG1pdGAsIGBwcHBvbDJ0cF9zZW5kbXNnYCwgYW5kIGBwcHBvbDJ0cF94bWl0YC4KCldhaXQgYSBtaW51dGUsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgbDJ0cF9ldGhfY3JlYXRlYC4gSW50ZXJlc3RpbmdseSwgaXQgaXMgYWxzbyBjYWxsZWQgZnJvbSBgbDJ0cF9ldGhfc2hvd2AsIGFuZCB0aGF0IHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBkZWJ1Z2ZzL3NlcV9maWxlIGZ1bmN0aW9uYWxpdHk/IEkmIzM5O2QgYmV0dGVyIGludmVzdGlnYXRlIGBsMnRwX2V0aF9zaG93YCB0byB1bmRlcnN0YW5kIHRoYXQgY29ubmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bDJ0cF9ldGhfc2hvdyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2V0aC5jPTE0Nj1zdGF0aWMgdm9pZCBsMnRwX2V0aF9kZWxldGUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE2NS1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MTY2OnN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE2Ny17XG4tLVxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI1Ny1cdGlmIChJU19FTkFCTEVEKENPTkZJR19MMlRQX0RFQlVHRlMpKVxubmV0L2wydHAvbDJ0cF9ldGguYzoyNTg6XHRcdHNlc3Npb24tXHUwMDNlc2hvdyA9IGwydHBfZXRoX3Nob3c7XG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2ODEKCQkJCQkJCW91dHB1dDogMTg4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipSZWZsZWN0aW5nIG9uIERlYnVnZ2luZyBUb29scyBhbmQgUmVzdWx0IFNldHRpbmcqKgoKUmlnaHQsIGBsMnRwX2V0aF9zaG93YCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhhdCBkZWJ1Z2ZzIHJlYWxtLiBUaGF04oCZcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGl0LiBHb29kLiBJIGxpa2UgaG93IHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB3b3JraW5nOyB0aGV5JiMzOTtyZSBtYWtpbmcgaXQgZWFzaWVyIHRvIHBhcnNlIHdoYXQmIzM5O3MgZ29pbmcgb24sIGFuZCBhcmUgYWlkaW5nIGluIHRoZSBhbmFseXNpcy4KCk5vdywgSSYjMzk7bGwgbW92ZSBvbiB0byB0aGUgbmV4dCB0YXNrIHdoaWNoIGludm9sdmVzIGNhbGxpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoxNjoyMC45NDg2OTI3MDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODAzMzIwNTE0NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTDJUUFwiLFxuICAgIFwiTDJUUF9WM1wiLFxuICAgIFwiTDJUUF9FVEhcIixcbiAgICBcIkwyVFBfSVBcIixcbiAgICBcIlBQUE9MMlRQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibDJ0cF90dW5uZWxfcmVnaXN0ZXJcIixcbiAgICBcImwydHBfeG1pdF9za2JcIixcbiAgICBcImwydHBfZXRoX2NyZWF0ZVwiLFxuICAgIFwibDJ0cF9ldGhfZGV2X3htaXRcIixcbiAgICBcInBwcG9sMnRwX3NlbmRtc2dcIixcbiAgICBcInBwcG9sMnRwX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBMMlRQIG92ZXJoZWFkIGFuZCBoZWFkcm9vbSBjYWxjdWxhdGlvbnMsIGNhY2hpbmcgdGhlIEwzIG92ZXJoZWFkIGR1cmluZyB0dW5uZWwgcmVnaXN0cmF0aW9uIGFuZCB1c2luZyBpdCBpbiBNVFUgYWRqdXN0bWVudCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBMMlRQIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoxNjoyMC45NDg3MDAwNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjc3NjAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhkYTM3MDdhYThmMGFlNjczMmEwZDk3MjlmZDcyOGMwYzcxMWFhYjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6MTY6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xcbmluZGV4IDQ3MTJjYzQxODgxYTMuLmY1MmJmM2I1MzI5MDcgMTAwNjQ0XFxuLS0tIGEvbmV0L2wydHAvbDJ0cF9jb3JlLmNcXG4rKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xcbkBAIC0xMjI3LDE4ICsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXFxuIFxcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsID0gc2Vzc2lvbi1cXHUwMDNldHVubmVsO1xcbiBcXHR1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4gXFx0c3RydWN0IHNvY2sgKnNrID0gdHVubmVsLVxcdTAwM2Vzb2NrO1xcbi1cXHRpbnQgaGVhZHJvb20sIHVobGVuLCB1ZHBfbGVuO1xcbiBcXHRpbnQgcmV0ID0gTkVUX1hNSVRfU1VDQ0VTUztcXG4gXFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcXG4gXFx0c3RydWN0IHVkcGhkciAqdWg7XFxuK1xcdGludCB1ZHBfbGVuO1xcbiBcXG4gXFx0LyogQ2hlY2sgdGhhdCB0aGVyZSdzIGVub3VnaCBoZWFkcm9vbSBpbiB0aGUgc2tiIHRvIGluc2VydCBJUCxcXG4gXFx0ICogVURQIGFuZCBMMlRQIGhlYWRlcnMuIElmIG5vdCBlbm91Z2gsIGV4cGFuZCBpdCB0b1xcbiBcXHQgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS5cXG4gXFx0ICovXFxuLVxcdHVobGVuID0gKHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSA/IHNpemVvZigqdWgpIDogMDtcXG4tXFx0aGVhZHJvb20gPSBORVRfU0tCX1BBRCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWhsZW4gKyBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuO1xcbi1cXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGVhZHJvb20pKSB7XFxuK1xcdGlmIChza2JfY293X2hlYWQoc2tiLCBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCkpKSB7XFxuIFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTkVUX1hNSVRfRFJPUDtcXG4gXFx0fVxcbkBAIC0xMjkwLDcgKzEyODgsOSBAQCBzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVuc1xcbiBcXHRcXHR1aCA9IHVkcF9oZHIoc2tiKTtcXG4gXFx0XFx0dWgtXFx1MDAzZXNvdXJjZSA9IGluZXQtXFx1MDAzZWluZXRfc3BvcnQ7XFxuIFxcdFxcdHVoLVxcdTAwM2VkZXN0ID0gaW5ldC1cXHUwMDNlaW5ldF9kcG9ydDtcXG4tXFx0XFx0dWRwX2xlbiA9IHVobGVuICsgc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbiArIGRhdGFfbGVuO1xcbitcXG4rXFx0XFx0dWRwX2xlbiA9IGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKTtcXG4rXFx0XFx0dWRwX2xlbiArPSBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XFxuIFxcdFxcdGlmICh1ZHBfbGVuIFxcdTAwM2UgVTE2X01BWCkge1xcbiBcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0ID0gTkVUX1hNSVRfRFJPUDtcXG5AQCAtMTY4OCw2ICsxNjg4LDcgQEAgaW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdH1cXG4gXFxuIFxcdHNrLVxcdTAwM2Vza19hbGxvY2F0aW9uID0gR0ZQX0FUT01JQztcXG4rXFx0dHVubmVsLVxcdTAwM2VsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHNrKTtcXG4gXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gXFxuIFxcdHNvY2tfaG9sZChzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5oIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcXG5pbmRleCBmZmQ4Y2VkM2E1MWZmLi4yYzQxODc3YjZjZTU3IDEwMDY0NFxcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5oXFxuKysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcXG5AQCAtMTY3LDYgKzE2Nyw3IEBAIHN0cnVjdCBsMnRwX3R1bm5lbCB7XFxuIFxcdHUzMlxcdFxcdFxcdHR1bm5lbF9pZDtcXG4gXFx0dTMyXFx0XFx0XFx0cGVlcl90dW5uZWxfaWQ7XFxuIFxcdGludFxcdFxcdFxcdHZlcnNpb247XFx0LyogMj1cXHUwMDNlTDJUUHYyLCAzPVxcdTAwM2VMMlRQdjMgKi9cXG4rXFx0aW50XFx0XFx0XFx0bDNfb3ZlcmhlYWQ7XFx0LyogSVAgaGVhZGVyIG92ZXJoZWFkICovXFxuIFxcbiBcXHRjaGFyXFx0XFx0XFx0bmFtZVtMMlRQX1RVTk5FTF9OQU1FX01BWF07IC8qIGZvciBsb2dnaW5nICovXFxuIFxcdGVudW0gbDJ0cF9lbmNhcF90eXBlXFx0ZW5jYXA7XFxuQEAgLTMzNCw2ICszMzUsMjUgQEAgc3RhdGljIGlubGluZSBpbnQgbDJ0cF92M19lbnN1cmVfb3B0X2luX2xpbmVhcihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgaW50IGwydHBfdHVubmVsX3VkcF9oZHJsZW4oc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXFxuK3tcXG4rXFx0cmV0dXJuIHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQID9cXG4rXFx0XFx0c2l6ZW9mKHN0cnVjdCB1ZHBoZHIpIDogMDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxcbit7XFxuK1xcdHJldHVybiBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCkgKyBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuICtcXG4rXFx0XFx0dHVubmVsLVxcdTAwM2VsM19vdmVyaGVhZDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXFxuK3tcXG4rXFx0cmV0dXJuIE5FVF9TS0JfUEFEICsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7XFxuK31cXG4rXFxuICNkZWZpbmUgTU9EVUxFX0FMSUFTX0wyVFBfUFdUWVBFKHR5cGUpIFxcXFxcXG4gXFx0TU9EVUxFX0FMSUFTKFxcXCJuZXQtbDJ0cC10eXBlLVxcXCIgX19zdHJpbmdpZnkodHlwZSkpXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAvbDJ0cF9ldGguY1xcbmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0XFxuLS0tIGEvbmV0L2wydHAvbDJ0cF9ldGguY1xcbisrKyBiL25ldC9sMnRwL2wydHBfZXRoLmNcXG5AQCAtMTg4LDIwICsxODgsOSBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7XFxuLVxcdHUzMiBsM19vdmVyaGVhZCA9IDA7XFxuIFxcdHUzMiBtdHU7XFxuIFxcbi1cXHQvKiBpZiB0aGUgZW5jYXAgaXMgVURQLCBhY2NvdW50IGZvciBVRFAgaGVhZGVyIHNpemUgKi9cXG4tXFx0aWYgKHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSB7XFxuLVxcdFxcdG92ZXJoZWFkICs9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcXG4tXFx0XFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbi1cXHR9XFxuLVxcbi1cXHRsb2NrX3NvY2sodHVubmVsLVxcdTAwM2Vzb2NrKTtcXG4tXFx0bDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtXFx1MDAzZXNvY2spO1xcbi1cXHRyZWxlYXNlX3NvY2sodHVubmVsLVxcdTAwM2Vzb2NrKTtcXG4tXFxuLVxcdGlmIChsM19vdmVyaGVhZCA9PSAwKSB7XFxuK1xcdGlmICh0dW5uZWwtXFx1MDAzZWwzX292ZXJoZWFkID09IDApIHtcXG4gXFx0XFx0LyogTDMgT3ZlcmhlYWQgY291bGRuJ3QgYmUgaWRlbnRpZmllZCwgdGhpcyBjb3VsZCBiZVxcbiBcXHRcXHQgKiBiZWNhdXNlIHR1bm5lbC1cXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0J3NcXG4gXFx0XFx0ICogYWRkcmVzcyBmYW1pbHkgd2FzIG5vdCBJUHY0IG9yIElQdjYsXFxuQEAgLTIwOSwxMCArMTk4LDggQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbi1cXHQvKiBBZGp1c3QgTVRVLCBmYWN0b3Igb3ZlcmhlYWQgLSB1bmRlcmxheSBMMywgb3ZlcmxheSBMMiBoZHJcXG4tXFx0ICogVURQIG92ZXJoZWFkLCBpZiBhbnksIHdhcyBhbHJlYWR5IGZhY3RvcmVkIGluIGFib3ZlLlxcbi1cXHQgKi9cXG4tXFx0b3ZlcmhlYWQgKz0gc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbiArIEVUSF9ITEVOICsgbDNfb3ZlcmhlYWQ7XFxuK1xcdC8qIENhbGN1bGF0ZSByZXF1aXJlZCBvdmVyaGVhZCAqL1xcbitcXHRvdmVyaGVhZCA9IEVUSF9ITEVOICsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7XFxuIFxcbiBcXHRtdHUgPSBsMnRwX3R1bm5lbF9kc3RfbXR1KHR1bm5lbCkgLSBvdmVyaGVhZDtcXG4gXFx0aWYgKG10dSBcXHUwMDNjIGRldi1cXHUwMDNlbWluX210dSB8fCBtdHUgXFx1MDAzZSBkZXYtXFx1MDAzZW1heF9tdHUpXFxuQEAgLTIyMCw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbiBcXHRlbHNlXFxuIFxcdFxcdGRldi1cXHUwMDNlbXR1ID0gbXR1O1xcbiBcXG4tXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbjtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjE2OjIxLjI3MjE3MDIxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU4MDAwODU2NjE5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMMlRQXCIsXG4gICAgXCJMMlRQX1YzXCIsXG4gICAgXCJMMlRQX0VUSFwiLFxuICAgIFwiTDJUUF9JUFwiLFxuICAgIFwiUFBQT0wyVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiLFxuICAgIFwibDJ0cF94bWl0X3NrYlwiLFxuICAgIFwibDJ0cF9ldGhfY3JlYXRlXCIsXG4gICAgXCJsMnRwX2V0aF9kZXZfeG1pdFwiLFxuICAgIFwicHBwb2wydHBfc2VuZG1zZ1wiLFxuICAgIFwicHBwb2wydHBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhkYTM3MDdhYThmMGFlNjczMmEwZDk3MjlmZDcyOGMwYzcxMWFhYjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNzoxNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5jIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmNcbmluZGV4IDQ3MTJjYzQxODgxYTMuLmY1MmJmM2I1MzI5MDcgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuKysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmNcbkBAIC0xMjI3LDE4ICsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tXHUwMDNldHVubmVsO1xuIFx0dW5zaWduZWQgaW50IGRhdGFfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiBcdHN0cnVjdCBzb2NrICpzayA9IHR1bm5lbC1cdTAwM2Vzb2NrO1xuLVx0aW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjtcbiBcdGludCByZXQgPSBORVRfWE1JVF9TVUNDRVNTO1xuIFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuK1x0aW50IHVkcF9sZW47XG4gXG4gXHQvKiBDaGVjayB0aGF0IHRoZXJlJ3MgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBza2IgdG8gaW5zZXJ0IElQLFxuIFx0ICogVURQIGFuZCBMMlRQIGhlYWRlcnMuIElmIG5vdCBlbm91Z2gsIGV4cGFuZCBpdCB0b1xuIFx0ICogbWFrZSByb29tLiBBZGp1c3QgdHJ1ZXNpemUuXG4gXHQgKi9cbi1cdHVobGVuID0gKHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFApID8gc2l6ZW9mKCp1aCkgOiAwO1xuLVx0aGVhZHJvb20gPSBORVRfU0tCX1BBRCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWhsZW4gKyBzZXNzaW9uLVx1MDAzZWhkcl9sZW47XG4tXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGVhZHJvb20pKSB7XG4rXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpKSkge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5AQCAtMTI5MCw3ICsxMjg4LDkgQEAgc3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNcbiBcdFx0dWggPSB1ZHBfaGRyKHNrYik7XG4gXHRcdHVoLVx1MDAzZXNvdXJjZSA9IGluZXQtXHUwMDNlaW5ldF9zcG9ydDtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGluZXQtXHUwMDNlaW5ldF9kcG9ydDtcbi1cdFx0dWRwX2xlbiA9IHVobGVuICsgc2Vzc2lvbi1cdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XG4rXG4rXHRcdHVkcF9sZW4gPSBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCk7XG4rXHRcdHVkcF9sZW4gKz0gc2Vzc2lvbi1cdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XG4gXHRcdGlmICh1ZHBfbGVuIFx1MDAzZSBVMTZfTUFYKSB7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0ID0gTkVUX1hNSVRfRFJPUDtcbkBAIC0xNjg4LDYgKzE2ODgsNyBAQCBpbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdHNrLVx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xuK1x0dHVubmVsLVx1MDAzZWwzX292ZXJoZWFkID0ga2VybmVsX3NvY2tfaXBfb3ZlcmhlYWQoc2spO1xuIFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcbiBcdHNvY2tfaG9sZChzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmggYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuaW5kZXggZmZkOGNlZDNhNTFmZi4uMmM0MTg3N2I2Y2U1NyAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5oXG4rKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuQEAgLTE2Nyw2ICsxNjcsNyBAQCBzdHJ1Y3QgbDJ0cF90dW5uZWwge1xuIFx0dTMyXHRcdFx0dHVubmVsX2lkO1xuIFx0dTMyXHRcdFx0cGVlcl90dW5uZWxfaWQ7XG4gXHRpbnRcdFx0XHR2ZXJzaW9uO1x0LyogMj1cdTAwM2VMMlRQdjIsIDM9XHUwMDNlTDJUUHYzICovXG4rXHRpbnRcdFx0XHRsM19vdmVyaGVhZDtcdC8qIElQIGhlYWRlciBvdmVyaGVhZCAqL1xuIFxuIFx0Y2hhclx0XHRcdG5hbWVbTDJUUF9UVU5ORUxfTkFNRV9NQVhdOyAvKiBmb3IgbG9nZ2luZyAqL1xuIFx0ZW51bSBsMnRwX2VuY2FwX3R5cGVcdGVuY2FwO1xuQEAgLTMzNCw2ICszMzUsMjUgQEAgc3RhdGljIGlubGluZSBpbnQgbDJ0cF92M19lbnN1cmVfb3B0X2luX2xpbmVhcihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGludCBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiB0dW5uZWwtXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQID9cbitcdFx0c2l6ZW9mKHN0cnVjdCB1ZHBoZHIpIDogMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXG4rXHRcdFx0XHRcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCkgKyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gK1xuK1x0XHR0dW5uZWwtXHUwMDNlbDNfb3ZlcmhlYWQ7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgaW50IGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbixcbitcdFx0XHRcdFx0ICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiBORVRfU0tCX1BBRCArIGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuK31cbitcbiAjZGVmaW5lIE1PRFVMRV9BTElBU19MMlRQX1BXVFlQRSh0eXBlKSBcXFxuIFx0TU9EVUxFX0FMSUFTKFwibmV0LWwydHAtdHlwZS1cIiBfX3N0cmluZ2lmeSh0eXBlKSlcbiBcbmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAvbDJ0cF9ldGguY1xuaW5kZXggYTQ5NTZlZjk1NzRjYy4uNmY0NTE2MTgwYzkyMiAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfZXRoLmNcbisrKyBiL25ldC9sMnRwL2wydHBfZXRoLmNcbkBAIC0xODgsMjAgKzE4OCw5IEBAIHN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7XG4tXHR1MzIgbDNfb3ZlcmhlYWQgPSAwO1xuIFx0dTMyIG10dTtcbiBcbi1cdC8qIGlmIHRoZSBlbmNhcCBpcyBVRFAsIGFjY291bnQgZm9yIFVEUCBoZWFkZXIgc2l6ZSAqL1xuLVx0aWYgKHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFApIHtcbi1cdFx0b3ZlcmhlYWQgKz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuLVx0XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tICs9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbi1cdH1cbi1cbi1cdGxvY2tfc29jayh0dW5uZWwtXHUwMDNlc29jayk7XG4tXHRsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHR1bm5lbC1cdTAwM2Vzb2NrKTtcbi1cdHJlbGVhc2Vfc29jayh0dW5uZWwtXHUwMDNlc29jayk7XG4tXG4tXHRpZiAobDNfb3ZlcmhlYWQgPT0gMCkge1xuK1x0aWYgKHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZCA9PSAwKSB7XG4gXHRcdC8qIEwzIE92ZXJoZWFkIGNvdWxkbid0IGJlIGlkZW50aWZpZWQsIHRoaXMgY291bGQgYmVcbiBcdFx0ICogYmVjYXVzZSB0dW5uZWwtXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0J3NcbiBcdFx0ICogYWRkcmVzcyBmYW1pbHkgd2FzIG5vdCBJUHY0IG9yIElQdjYsXG5AQCAtMjA5LDEwICsxOTgsOCBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuO1xuIFx0fVxuLVx0LyogQWRqdXN0IE1UVSwgZmFjdG9yIG92ZXJoZWFkIC0gdW5kZXJsYXkgTDMsIG92ZXJsYXkgTDIgaGRyXG4tXHQgKiBVRFAgb3ZlcmhlYWQsIGlmIGFueSwgd2FzIGFscmVhZHkgZmFjdG9yZWQgaW4gYWJvdmUuXG4tXHQgKi9cbi1cdG92ZXJoZWFkICs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiArIEVUSF9ITEVOICsgbDNfb3ZlcmhlYWQ7XG4rXHQvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi9cbitcdG92ZXJoZWFkID0gRVRIX0hMRU4gKyBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc2Vzc2lvbiwgdHVubmVsKTtcbiBcbiBcdG10dSA9IGwydHBfdHVubmVsX2RzdF9tdHUodHVubmVsKSAtIG92ZXJoZWFkO1xuIFx0aWYgKG10dSBcdTAwM2MgZGV2LVx1MDAzZW1pbl9tdHUgfHwgbXR1IFx1MDAzZSBkZXYtXHUwMDNlbWF4X210dSlcbkBAIC0yMjAsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdGVsc2VcbiBcdFx0ZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2Vzc2lvbi1cdTAwM2VoZHJfbGVuO1xuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc2Vzc2lvbiwgdHVubmVsKTtcbiB9XG4gXG4gc3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjE2OjIxLjI3MjE3MTY2OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTg3Nzg4ODQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEwyVFAgU3Vic3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCwgYG5ldC9sMnRwL2wydHBfY29yZS5oYCwgYW5kIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBob3cgTDJUUCBvdmVyaGVhZCBhbmQgaGVhZHJvb20gYXJlIGhhbmRsZWQuIEl0IHNlZW1zIHRoZXkncmUgY2FsY3VsYXRpbmcgaXQgY29ycmVjdGx5IG5vdywgd2hpY2ggaXMgYSBnb29kIHN0YXJ0LiBJIHNlZSB0aGV5J3JlIGNhY2hpbmcgdGhlIGBsM19vdmVyaGVhZGAgdmFsdWUgaW4gdGhlIGBzdHJ1Y3QgbDJ0cF90dW5uZWxgIGR1cmluZyBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbnNpc3RlbmN5LiBUaGV5J3JlIHRoZW4gdXNpbmcgdGhhdCBjYWNoZWQgdmFsdWUgaW4gYGwydHBfZXRoX2FkanVzdF9tdHVgIGFuZCBgbDJ0cF94bWl0X2NvcmVgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIGZsb3cuXG5cbk5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBrbm9icyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGluc3RhbmNlcyBvZiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgIGFuZCBgbDJ0cF9ldGhfY3JlYXRlYCBpbiBLY29uZmlnIGZpbGVzIG9yIE1ha2VmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjoxMS4xNTAwNjM5ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNzk3MTc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xNjEzPXN0YXRpYyBpbnQgbDJ0cF92YWxpZGF0ZV9zb2NrZXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNjQyLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjE2NDM6aW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTY0NC1cXHRcXHRcXHQgc3RydWN0IGwydHBfdHVubmVsX2NmZyAqY2ZnKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMC19XFxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3R1bm5lbF9yZWdpc3Rlcik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMi1cXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5oPTIzNj1pbnQgbDJ0cF90dW5uZWxfY3JlYXRlKGludCBmZCwgaW50IHZlcnNpb24sIHUzMiB0dW5uZWxfaWQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yMzgtXFx0XFx0ICAgICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqKnR1bm5lbHApO1xcbm5ldC9sMnRwL2wydHBfY29yZS5oOjIzOTppbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yNDAtXFx0XFx0XFx0IHN0cnVjdCBsMnRwX3R1bm5lbF9jZmcgKmNmZyk7XFxuLS1cXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYz0xODU9c3RhdGljIGludCBsMnRwX25sX2NtZF90dW5uZWxfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDUtXFx0cmVmY291bnRfaW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXJlZl9jb3VudCk7XFxubmV0L2wydHAvbDJ0cF9uZXRsaW5rLmM6MjQ2OlxcdHJldCA9IGwydHBfdHVubmVsX3JlZ2lzdGVyKHR1bm5lbCwgbmV0LCBcXHUwMDI2Y2ZnKTtcXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDctXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9NjI3PXN0YXRpYyBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnBwcG9sMnRwX3R1bm5lbF9nZXQoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy02NDctXFxubmV0L2wydHAvbDJ0cF9wcHAuYzo2NDg6XFx0XFx0XFx0LyogUHJldmVudCBsMnRwX3R1bm5lbF9yZWdpc3RlcigpIGZyb20gdHJ5aW5nIHRvIHNldCB1cFxcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjQ5LVxcdFxcdFxcdCAqIGEga2VybmVsIHNvY2tldC5cXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjYyLVxcdFxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dHVubmVsLVxcdTAwM2VyZWZfY291bnQpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6NjYzOlxcdFxcdFxcdGVycm9yID0gbDJ0cF90dW5uZWxfcmVnaXN0ZXIodHVubmVsLCBuZXQsIFxcdTAwMjZ0Y2ZnKTtcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY2NC1cXHRcXHRcXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjEzLjM1ODA0MjAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzU4MDM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTDJUUCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgTDJUUC5cIiBXZSBhbGwga25vdyB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0gY2FuIGJlIGEgbGFieXJpbnRoLCBidXQgaXQncyB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQncyBkZXBlbmRlbnQgb24gd2hhdCwgZXNwZWNpYWxseSBnaXZlbiB0aGUga2VybmVsIHZlcnNpb24gYW5kIGFueSByZWxldmFudCBtb2R1bGVzIEknbSB3b3JraW5nIHdpdGguIEl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdyYXNwIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyBhbmQgYXZvaWQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSeKAmW0gdGhpbmtpbmcsIOKAnFdoYXQgYXJlIHRoZSBrZXkgTDJUUCBmZWF0dXJlcyBiZWluZyBjb25zaWRlcmVkIGF0IHRoaXMgc3RhZ2U/IEFuZCB3aGF0IGFib3V0IHRoZSByZWxhdGVkIHByb3RvY29scywgbGlrZSBVRFAgZW5jYXBzdWxhdGlvbj9cIiBJIHdhbnQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBydW50aW1lIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6MTYuNzMzODQ4NzM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTc2NDUwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEwyVFBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvS2NvbmZpZy01LVxcbm5ldC9sMnRwL0tjb25maWc6NjptZW51Y29uZmlnIEwyVFBcXG5uZXQvbDJ0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkxheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2wgKEwyVFApXFxcIlxcbi0tXFxubmV0L2wydHAvS2NvbmZpZy0zNS1cXG5uZXQvbDJ0cC9LY29uZmlnOjM2OmNvbmZpZyBMMlRQX0RFQlVHRlNcXG5uZXQvbDJ0cC9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJMMlRQIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctNDgtXFxubmV0L2wydHAvS2NvbmZpZzo0OTpjb25maWcgTDJUUF9WM1xcbm5ldC9sMnRwL0tjb25maWctNTAtXFx0Ym9vbCBcXFwiTDJUUHYzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbDJ0cC9LY29uZmlnLTY5LVxcbm5ldC9sMnRwL0tjb25maWc6NzA6Y29uZmlnIEwyVFBfSVBcXG5uZXQvbDJ0cC9LY29uZmlnLTcxLVxcdHRyaXN0YXRlIFxcXCJMMlRQIElQIGVuY2Fwc3VsYXRpb24gZm9yIEwyVFB2M1xcXCJcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctODYtXFxubmV0L2wydHAvS2NvbmZpZzo4Nzpjb25maWcgTDJUUF9FVEhcXG5uZXQvbDJ0cC9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJMMlRQIGV0aGVybmV0IHBzZXVkb3dpcmUgc3VwcG9ydCBmb3IgTDJUUHYzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjoxOS4wOTE1MDMzNDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzk3MDA5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCBhbmQgYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGBMMlRQYCBhbmQsIHNwZWNpZmljYWxseSwgYEwyVFBfRVRIYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBkb2VzIGBMMlRQX0VUSGAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzPyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTDJUUF9WM2AgYmVpbmcgcG90ZW50aWFsbHkgaW52b2x2ZWQuIFRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBgbmV0L2wydHAvS2NvbmZpZ2AgZmlsZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU1NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI0LjQ4ODUxNjQzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sMnRwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ICB3aGVuIFVEUCBlbmNhcHN1bGF0aW9uIGlzIG5vdCByZXF1aXJlZC4gV2hlbiBMMlRQIGlzIGNhcnJpZWRcXG4gIDgxOlxcdFxcdCAgaW4gSVAgcGFja2V0cywgaXQgdXNlZCBJUCBwcm90b2NvbCBudW1iZXIgMTE1LCBzbyB0aGlzIHBvcnRcXG4gIDgyOlxcdFxcdCAgbXVzdCBiZSBlbmFibGVkIGluIGZpcmV3YWxscy5cXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA4NTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGwydHBfaXAuXFxuICA4NjpcXHRcXG4gIDg3OlxcdGNvbmZpZyBMMlRQX0VUSFxcbiAgODg6XFx0XFx0dHJpc3RhdGUgXFxcIkwyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcXFwiXFxuICA4OTpcXHRcXHRkZXBlbmRzIG9uIEwyVFBfVjNcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2FycnlpbmcgcmF3IGV0aGVybmV0IGZyYW1lcyBvdmVyIEwyVFB2My5cXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0ICBGcm9tIFJGQyA0NzE5IFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0NzE5LnR4dFxcdTAwM2UuXFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdCAgVGhlIExheWVyIDIgVHVubmVsaW5nIFByb3RvY29sLCBWZXJzaW9uIDMgKEwyVFB2MykgY2FuIGJlXFxuICA5NjpcXHRcXHQgIHVzZWQgYXMgYSBjb250cm9sIHByb3RvY29sIGFuZCBmb3IgZGF0YSBlbmNhcHN1bGF0aW9uIHRvIHNldFxcbiAgOTc6XFx0XFx0ICB1cCBQc2V1ZG93aXJlcyBmb3IgdHJhbnNwb3J0aW5nIGxheWVyIDIgUGFja2V0IERhdGEgVW5pdHNcXG4gIDk4OlxcdFxcdCAgYWNyb3NzIGFuIElQIG5ldHdvcmsgW1JGQzM5MzFdLlxcbiAgOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI0LjQ4ODYwMzk0N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTI2OTg4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMMlRQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTDJUUGAsIGBMMlRQX1YzYCwgYW5kIGBMMlRQX0VUSGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGNoYW5nZWQuIFRoZSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhlIGNvZGViYXNlLlxuXG5NeSBpbml0aWFsIHNjYW4gc2hvd3MgY2hhbmdlcyBpbiB0aGVzZTpcblxuKiAgIGBsMnRwX3htaXRfY29yZWAgbG9jYXRlZCBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUaGlzIGlzIGtleTsgYW55IGNoYW5nZXMgdG8gdGhlIGNvcmUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFyZSBzaWduaWZpY2FudCBhbmQgd291bGQgYWZmZWN0IGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkLlxuKiAgIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgYWxzbyBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUdW5uZWwgcmVnaXN0cmF0aW9uIGlzIG9idmlvdXNseSBpbXBvcnRhbnQgZm9yIEwyVFAncyBvcGVyYXRpb24uXG4qICAgYGwydHBfZXRoX2FkanVzdF9tdHVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTVRVIGFkanVzdG1lbnRzIGFyZSBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkgb24gRXRoZXJuZXQgbGlua3MuXG4qICAgQW5kIGZpbmFsbHksIGBsMnRwX2V0aF9jcmVhdGVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gVGhlIGNvbnRleHQgb2YgdGhlIGRpZmYgZG9lcyBpbmRpY2F0ZSB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGRpZmYgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI4LjUwMTMwNjIwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MDcwNzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX2V0aF9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvbDJ0cF9ldGguYz0xODY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjEyLVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MjEzOnN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXFxubmV0L2wydHAvbDJ0cF9ldGguYy0yMTQtXFx0XFx0XFx0ICAgdTMyIHNlc3Npb25faWQsIHUzMiBwZWVyX3Nlc3Npb25faWQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGwydHBfbmxfY21kX29wcyBsMnRwX2V0aF9ubF9jbWRfb3BzID0ge1xcbm5ldC9sMnRwL2wydHBfZXRoLmM6MzA3OlxcdC5zZXNzaW9uX2NyZWF0ZVxcdD0gbDJ0cF9ldGhfY3JlYXRlLFxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMzA4LVxcdC5zZXNzaW9uX2RlbGV0ZVxcdD0gbDJ0cF9zZXNzaW9uX2RlbGV0ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6MzAuNzcyMDIwMDU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4OTI2NDUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBMMlRQIEV0aGVybmV0IE1UVSBJc3N1ZSoqXG5cbkFscmlnaHQsIHRoZSBkaWZmIGNvbnRleHQgbWVudGlvbnMgYGwydHBfZXRoX2NyZWF0ZWAg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCB0aGUgYWN0dWFsICpwYXRjaCogbW9kaWZpZXMgYGwydHBfZXRoX2FkanVzdF9tdHVgLiBIbW0sIHRoYXQgcmFpc2VzIGEgZmxhZy4gV2h5IGFkanVzdCB0aGUgTVRVIGlmIHdlJ3JlIGFwcGFyZW50bHkgY3JlYXRpbmcgYSBuZXcgaW50ZXJmYWNlPyBBcmUgd2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBpc29sYXRlZD8gQ291bGQgdGhpcyBhZGp1c3RtZW50IGhhdmUgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIG9yIGlzIHRoZXJlIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlIHNvbWV3aGVyZT9cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgYGwydHBfZXRoX2FkanVzdF9tdHVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgKmNhbGxlcnMqLiBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbmQgKndoZW4qLiBLbm93aW5nIHRoZSBjYWxsIHBhdGhzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB0YXJnZXRlZCwgb3IgcG90ZW50aWFsbHkgaW1wYWN0aW5nIG90aGVyIG1vZHVsZXMuIElzIHRoaXMgYWRqdXN0IGZ1bmN0aW9uIHBhcnQgb2YgdGhlIGludGVyZmFjZSBicmluZy11cCwgbW9kaWZpY2F0aW9uLCBvciB0ZWFyZG93biBzZXF1ZW5jZT8gS25vd2luZyB0aGUgY2FsbGluZyBjb2RlIHdpbGwgdGVsbCBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjM4LjY2NDY3MTI1NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NjYyMTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX2V0aF9hZGp1c3RfbXR1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sMnRwL2wydHBfZXRoLmM9MTY2PXN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4NS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jOjE4NjpzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMTg3LVxcdFxcdFxcdFxcdHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTIxMz1zdGF0aWMgaW50IGwydHBfZXRoX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYy0yNDktXFx0ZGV2LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxubmV0L2wydHAvbDJ0cF9ldGguYzoyNTA6XFx0bDJ0cF9ldGhfYWRqdXN0X210dSh0dW5uZWwsIHNlc3Npb24sIGRldik7XFxubmV0L2wydHAvbDJ0cF9ldGguYy0yNTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjQwLjk0MTI5ODg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTk3MjUyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQgbmV0d29yayBlbmdpbmVlcjpcblxuKipNeSBVbmRlcnN0YW5kaW5nIG9mIHRoZSBMMlRQIEV0aGVybmV0IE1UVSBhbmQgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5SaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBsaWtlbHkgYSBjcnVjaWFsIGZ1bmN0aW9uIGNhbGxlZCByaWdodCB3aGVuIGFuIEwyVFAgdHVubmVsIGlzIGJlaW5nIGVzdGFibGlzaGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBsMnRwX2V0aF9jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIGl0J3MgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoZSBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0IChNVFUpIG9mIHRoZSB1bmRlcmx5aW5nIEV0aGVybmV0IGludGVyZmFjZSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciBpbiB0aGUgTDJUUCB0dW5uZWwncyBjb25maWd1cmF0aW9uLiBJdCdzIHRoZSBmaXJzdCBsaW5lIG9mIGRlZmVuc2UgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgbGF0ZXIgb24sIGVuc3VyaW5nIHRoZSB0dW5uZWwncyBwYXlsb2FkIGZpdHMgdGhlIEV0aGVybmV0IGZyYW1lIHNpemUuIFNtYXJ0LCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gcHJldmVudCBoZWFkYWNoZXMuXG5cblRoZW4gd2UgaGF2ZSBgbDJ0cF94bWl0X2NvcmVgLCBpdCdzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBsMnRwX3htaXRfc2tiYC4gU28sIHRoaXMgYGwydHBfeG1pdF9jb3JlYCBhcHBlYXJzIHRvIGJlIHRoZSBjb3JlLCB0aGUgZW5naW5lIG9mIHRoZSBMMlRQIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGUgYGwydHBfeG1pdF9za2JgIHdyYXBwZXIgcHJvYmFibHkgZG9lcyBzb21lIHByZXAgd29yaywgbWF5YmUgcGFja2V0IGFzc2VtYmx5IG9yIGhlYWRlciBhZGp1c3RtZW50cywgYmVmb3JlIGhhbmRpbmcgb2ZmIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIHRvIGBsMnRwX3htaXRfY29yZWAuIEknbSBndWVzc2luZyBgbDJ0cF94bWl0X2NvcmVgIGhhbmRsZXMgdGhpbmdzIGxpa2UgZW5jYXBzdWxhdGlvbiwgaGVhZGVyIGZvcm1hdHRpbmcsIGNoZWNrc3VtIGNhbGN1bGF0aW9ucywgYW5kIHVsdGltYXRlbHksIGdldHRpbmcgdGhlIHBhY2tldCBvbnRvIHRoZSB3aXJlLiBFZmZpY2llbnQgZGVzaWduLiBJdCdzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJuczogcHJlcGFyZSB0aGUgcGFja2V0LCB0aGVuIHNlbmQgdGhlIHBhY2tldCwgdGhhdCdzIHRoZSBsaWtlbHkgZmxvdyBoZXJlLiBJJ20gc3RhcnRpbmcgdG8gcHV0IHRoZSBwaWVjZXMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NTAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjo0Ny4wMDEwMjcxOTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ2MzYxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF94bWl0X2NvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvbDJ0cF9jb3JlLmM9MTIwOT1zdGF0aWMgaW50IGwydHBfeG1pdF9xdWV1ZShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpICpmbClcXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjQtXFxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTIyNTpzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqbGVuKVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjYte1xcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmM9MTMyOD1pbnQgbDJ0cF94bWl0X3NrYihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzMi1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYzoxMzMzOlxcdHJldCA9IGwydHBfeG1pdF9jb3JlKHNlc3Npb24sIHNrYiwgXFx1MDAyNmxlbik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzNC1cXHRpZiAocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6NDkuMjg1NjY3OTY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDgxMjkxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6XG5cbioqTDJUUCBQYWNrZXQgVHJhbnNtaXNzaW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEwyVFAgcGFja2V0cyBhcmUgaGFuZGxlZCBhdCB0aGUga2VybmVsIGxldmVsLiBTcGVjaWZpY2FsbHksIGBsMnRwX3htaXRfc2tiYC4gSXQncyBhIGtleSBmdW5jdGlvbiwgYXMgaXQncyBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgYSBjb3VwbGUgb2YgY3JpdGljYWwgbW9kdWxlczogYGwydHBfZXRoLmNgIGFuZCBgbDJ0cF9wcHAuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCBgbDJ0cF94bWl0X3NrYmAgaXMgdGhlIGNvcmUgbWVjaGFuaXNtIGZvciBhY3R1YWxseSBzZW5kaW5nIG91dCBMMlRQIHRyYWZmaWMsIHdoZXRoZXIgaXQncyBlbmNhcHN1bGF0ZWQgRXRoZXJuZXQgZnJhbWVzIG9yIFBvaW50LXRvLVBvaW50IFByb3RvY29sIGRhdGEuIEknbGwgbmVlZCB0byBkaWcgaW50byBob3cgaXQncyBjYWxsZWQgd2l0aGluIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IHRoaXMgZXhwb3J0IGFuZCB1c2FnZSBwYXR0ZXJuIHBvaW50cyB0byBpdHMgZnVuZGFtZW50YWwgcm9sZS4gVW5kZXJzdGFuZGluZyBpdHMgbG9naWMgaXMgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB0cm91Ymxlc2hvb3RpbmcgYW55IHRyYW5zbWlzc2lvbiBpc3N1ZXMgb3Igb3B0aW1pemluZyBMMlRQIHBlcmZvcm1hbmNlIHdpdGhpbiB0aGUgc3RhY2suIEl0IHdpbGwgYWxsb3cgYSBjb21wbGV0ZSBjb21wcmVoZW5zaW9uIG9mIHRoZSBjb21wbGV0ZSBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjo1Mi43OTM4MDAyNzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzU0MDM3NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF94bWl0X3NrYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzI3LSAqL1xcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMjg6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzI5LXtcXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDQtfVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzNDU6RVhQT1JUX1NZTUJPTF9HUEwobDJ0cF94bWl0X3NrYik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTM0Ni1cXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5oPTI2MT12b2lkIGwydHBfc2Vzc2lvbl9zZXRfaGVhZGVyX2xlbihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBpbnQgdmVyc2lvbixcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yNjItXFx0XFx0XFx0XFx0IGVudW0gbDJ0cF9lbmNhcF90eXBlIGVuY2FwKTtcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaDoyNjM6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjY0LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz03MD1zdGF0aWMgbmV0ZGV2X3R4X3QgbDJ0cF9ldGhfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtNzQtXFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbm5ldC9sMnRwL2wydHBfZXRoLmM6NzU6XFx0aW50IHJldCA9IGwydHBfeG1pdF9za2Ioc2Vzc2lvbiwgc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTc2LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0yNTA9c3RhdGljIGludCBwcHBvbDJ0cF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMwMi1cXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxubmV0L2wydHAvbDJ0cF9wcHAuYzozMDM6XFx0bDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzA0LVxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0zMzA9c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzYxLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjM2MjpcXHRsMnRwX3htaXRfc2tiKHNlc3Npb24sIHNrYik7XFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zNjMtXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjU1LjEyOTIwOTY1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE4MzMyMDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBMMlRQIFBhY2tldCBGbG93KipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gTDJUUCBwYWNrZXQgaGFuZGxpbmcuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcsIGdpdmVuIG15IGV4cGVyaWVuY2UsIHBvaW50cyB0byB0aGVzZSBhcyBjb3JlOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfeG1pdF9za2JgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuXG5cbk5vdywgdXBvbiBjbG9zZXIgY29uc2lkZXJhdGlvbiwgYGwydHBfZXRoX2Rldl94bWl0YCBhbmQgYHBwcG9sMnRwX3htaXRgIHJlYWxseSBzdGFuZCBvdXQgYXMgcHJvbWlzaW5nIGVudHJ5IHBvaW50cyBpbnRvIHRoZSB0cmFuc21pc3Npb24gcHJvY2Vzcy4gRGVmaW5pdGVseSBtYXJraW5nIHRob3NlIGZvciBjbG9zZXIgaW5zcGVjdGlvbi4gYGwydHBfdHVubmVsX3JlZ2lzdGVyYCBpcyBhbHNvIGEgY3JpdGljYWwgY29tcG9uZW50LCBzbyB0aGF0IGFsc28uXG5cbkknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGBMMlRQX1BQUGAsIHNpbmNlIGBwcHBvbDJ0cF9zZW5kbXNnYCBzdWdnZXN0cyBhIFBQUCBpbnZvbHZlbWVudC4gUmlnaHQsIGxldCdzIGhlYWQgb3ZlciB0byBgbmV0L2wydHAvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDAuMTQ3NTUzODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY1ODU4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBMMlRQX1BQUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDIuMTc0MTUxOTM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzEwODQyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSHlwb3RoZXNpcyBGb3JtdWxhdGlvbjogUG90ZW50aWFsIEFjcm9ueW0gSWRlbnRpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB3aGV0aGVyIFwiUFBQT0wyVFBcIiBjb3VsZCByZXByZXNlbnQgYW4gYWNyb255bSBvciBpbml0aWFsaXNtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCBwb3NzaWJsZSBmcmFtZXdvcmtzIG9yIGRhdGEgbW9kZWxzIHRoYXQgdXNlIHN1Y2ggY29uY2lzZSwgcG90ZW50aWFsbHkgbmVzdGVkLCByZXByZXNlbnRhdGlvbnMuIEknbSBpbXBsaWNpdGx5IGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgc3RydWN0dXJlIC0gdGhyZWUgUHMsIGZvbGxvd2VkIGJ5IGFuIE8gYW5kIGFuIEwsIGEgMiwgYW5kIGZpbmFsbHkgYSBUIGFuZCBhIFAuIFRoZSBudW1lcmljIGNoYXJhY3RlciBjb3VsZCBpbmRpY2F0ZSBhIHZlcnNpb24sIG9yIGEgZ3JvdXBpbmcgZWxlbWVudDsgaXQgYWxsIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIGluZHVzdHJ5LiBNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gc3RhcnQgYnJhaW5zdG9ybWluZyBsaWtlbHkgZmllbGRzIG9yIGRvbWFpbnMgaW4gd2hpY2ggc3VjaCBhIHJlcHJlc2VudGF0aW9uIG1pZ2h0IGJlIGVtcGxveWVkLCBwZXJoYXBzIHN0YXJ0aW5nIHdpdGggc29tZSBvZiB0aGUgbW9yZSBjb21tb24sIG9yIG15IHN0cm9uZ2VzdCwgZG9tYWlucyBvZiBleHBlcnRpc2UuIFRoZSBicmV2aXR5IG9mIHRoZSBzdHJpbmcgc3VnZ2VzdHMgaXQgY291bGQgYmUgYW4gaW50ZXJuYWwgZGVzaWduYXRpb24gb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgc2luZ2xlIG9yZ2FuaXphdGlvbi4gSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMzowNi4yNDUyMzg5MjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY4ODY0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQUE9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9OTI9Y29uZmlnIFBQUF9NVUxUSUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBQUE9BVE1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEFUTVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTctXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEV0aGVybmV0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiMSBiaXQgKDIgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiMiBiaXRzICg0IGJ1Y2tldHMpXFxcIlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIjQgYml0cyAoMTYgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiOCBiaXRzICgyNTYgYnVja2V0cylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDguMzkyMTMxNjExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjc3MDgyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkwyVFAgTW9kdWxlIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBQUFBPTDJUUGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGF0J3MgcHV0IHRvZ2V0aGVyLiBUaW1lIHRvIGNoZWNrIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGF0IHRoaW5nLiBPa2F5LCBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBuZXQvbDJ0cC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCBleGFjdGx5IHdoaWNoIGJ1aWxkIHRhcmdldHMgaW5jb3Jwb3JhdGUgYGwydHBfcHBwLmNgLiBObyBuZWVkIHRvIGd1ZXNzLCBsZXQncyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHJ1bGVzIHRoYXQgZ2VuZXJhdGUgdGhlIG9iamVjdCBmaWxlcy4gVGhpcyBpcyBnb2luZyB0byBiZSBxdWljay4gSSdsbCBmb2N1cyBvbiB0aGUgcHBwIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMzoxNC43NTk4NDIwMTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wydHAvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUgTDJUUC5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0wyVFApICs9IGwydHBfY29yZS5vXFxuICAgNzpcXHRcXG4gICA4OlxcdENGTEFHU19sMnRwX2NvcmUubyArPSAtSSQoc3JjKVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjIEJ1aWxkIGwydHAgYXMgbW9kdWxlcyBpZiBMMlRQIGlzIE1cXG4gIDExOlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfUFBQT0wyVFApKSArPSBsMnRwX3BwcC5vXFxuICAxMjpcXHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfSVApKSArPSBsMnRwX2lwLm9cXG4gIDEzOlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9WMykpICs9IGwydHBfbmV0bGluay5vXFxuICAxNDpcXHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfRVRIKSkgKz0gbDJ0cF9ldGgub1xcbiAgMTU6XFx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0RFQlVHRlMpKSArPSBsMnRwX2RlYnVnZnMub1xcbiAgMTY6XFx0aWZuZXEgKCQoQ09ORklHX0lQVjYpLClcXG4gIDE3OlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9JUCkpICs9IGwydHBfaXA2Lm9cXG4gIDE4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIzOjE0Ljc1OTkzMTk3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzE2NDUzNDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEwyVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gTDJUUC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNhdGVnb3JpemUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYW5kIGBQUFBPTDJUUGAuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgYGwydHBfY29yZS5jYCBhbmQgYGwydHBfZXRoLmNgLlxuXG5NeSBwcmltYXJ5IGludGVyZXN0IGxpZXMgaW4gdGhlc2UgZnVuY3Rpb25zOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfeG1pdF9za2JgLCBhbmQgYGwydHBfZXRoX2Rldl94bWl0YC4gTGV0J3MgZGlnIGludG8gZWFjaCBvZiB0aGVzZS5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAuIEdvb2QsIGl0J3MgZXhwb3J0ZWQsIHNvIHRoYXQncyBhY2Nlc3NpYmxlLiBOZXh0LCBgbDJ0cF9ldGhfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIGJ1dCBpdCdzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYC4gUmlnaHQsIHNvIHRoYXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIGlzIGVzc2VudGlhbGx5IGFuIGVudHJ5IHBvaW50LiBgbDJ0cF94bWl0X3NrYmAgaXMgYWxzbyBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZCB0byBzZWUsIHNvIGl0J3MgZ2xvYmFsbHkgdmlzaWJsZS4gYGwydHBfZXRoX2Rldl94bWl0YCBpcyBzdGF0aWMsIGJ1dCBjcnVjaWFsbHksIGl0J3MgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBTbywgdGhhdCBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgYW5kIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBPaCwgYW5kIEkgc2VlIGBsMnRwX3htaXRfY29yZWAgYnV0IGl0J3Mgc3RhdGljLCBzbyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50LlxuXG5TbyBub3cgdGhhdCBJJ3ZlIHJldmlld2VkIHRoZSB2aXNpYmlsaXR5LCBJIGtub3cgdGhhdCBteSBrZXkgc3ltYm9scyB3aWxsIGJlIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuXG5cbkhhbmcgb24sIGxldCdzIGp1c3QgbWFrZSBzdXJlIEkndmUgZ290IHRoaXMgcmlnaHQuIEV2ZW4gdGhvdWdoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIHN0YXRpYywgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0J3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBpbnRlcmFjdGlvbi4gQW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBsMnRwX2V0aF9kZXZfeG1pdGAsIGJlY2F1c2UgaXQncyBhbiBuZG8gY2FsbGJhY2sgYW5kIGFjdHMgYXMgYW4gZW50cnkgcG9pbnQgYXMgd2VsbC4gT2theSwgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgaXMgaW5kZWVkIGV4cG9ydGVkOyBjaGVja2VkIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKGwydHBfdHVubmVsX3JlZ2lzdGVyKTtgLlxuXG5MZXQncyBxdWlja2x5IHJlZnJlc2ggdGhlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGxvb2tpbmcgYXQgYWdhaW46IGBMMlRQYCwgYEwyVFBfVjNgLCBgTDJUUF9FVEhgLCBhbmQgYFBQUE9MMlRQYC4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgcmVnYXJkaW5nIGRlcGVuZGVuY2llcz8gQWhhLCBgTDJUUF9FVEhgIGRlcGVuZHMgb24gYEwyVFBfVjNgLiBBbmQgYFBQUE9MMlRQYCBuZWVkcyBgUFBQYCBhbmQgYEwyVFBgLCBzbyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIHRvIGJlIGNvbXBsZXRlLiBUaGF0J3MgdGhlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MjcuOTI0NDcwMjM2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBTZWUgaHR0cDovL2FjY2VsLXBwdHAuc291cmNlZm9yZ2UubmV0LyBmb3IgaW5mb3JtYXRpb24gaG93IHRvXFxuIDE3MTpcXHRcXHQgIHV0aWxpemUgdGhpcyBtb2R1bGUuXFxuIDE3MjpcXHRcXG4gMTczOlxcdGNvbmZpZyBQUFBPTDJUUFxcbiAxNzQ6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEwyVFBcXFwiXFxuIDE3NTpcXHRcXHRkZXBlbmRzIG9uIEwyVFBcXG4gMTc2OlxcdFxcdHNlbGVjdCBQUFBPWFxcbiAxNzc6XFx0XFx0aGVscFxcbiAxNzg6XFx0XFx0ICBTdXBwb3J0IGZvciBQUFAtb3Zlci1MMlRQIHNvY2tldCBmYW1pbHkuIEwyVFAgaXMgYSBwcm90b2NvbFxcbiAxNzk6XFx0XFx0ICB1c2VkIGJ5IElTUHMgYW5kIGVudGVycHJpc2VzIHRvIHR1bm5lbCBQUFAgdHJhZmZpYyBvdmVyIFVEUFxcbiAxODA6XFx0XFx0ICB0dW5uZWxzLiBMMlRQIGlzIHJlcGxhY2luZyBQUFRQIGZvciBWUE4gdXNlcy5cXG4gMTgxOlxcdGlmIFRUWVxcbiAxODI6XFx0XFxuIDE4MzpcXHRjb25maWcgUFBQX0FTWU5DXFxuIDE4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1xcXCJcXG4gMTg1OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgKG9yIE0pIGhlcmUgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgUFBQIG92ZXIgc3RhbmRhcmRcXG4gMTg4OlxcdFxcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBwb3J0cywgc3VjaCBhcyBDT00xIG9yIENPTTIgb24gYSBQQy4gIElmIHlvdSB1c2VcXG4gMTg5OlxcdFxcdCAgYSBtb2RlbSAobm90IGEgc3luY2hyb25vdXMgb3IgSVNETiBtb2RlbSkgdG8gY29udGFjdCB5b3VyIElTUCwgeW91XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIzOjI3LjkyNDU3NDMyNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjAxMTEyNzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY29tcGxldGVseS4gSXQgbG9va3MgbGlrZSBgUFBQT0wyVFBgIHJlbGllcyBvbiBgTDJUUGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgSSBzZWUgdGhhdCBgTDJUUF9FVEhgIGlzIGRlcGVuZGVudCBvbiBgTDJUUF9WM2AsIGFuZCAqdGhhdCogaW4gdHVybiBpcyBkZXBlbmRlbnQgb24gYEwyVFBgLiBUaGlzIHNldHVwIHNjcmVhbXMgZm9yIGNhcmVmdWwgcmV2aWV3LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBMMlRQYCBkZXBlbmRlbmNpZXMgc3BlY2lmaWNhbGx5LCBqdXN0IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHBlcmZvcm1hbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIGlzIHBhcmFtb3VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI0OjMzLjkzNTcwNDI2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wydHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIEwyVFBcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIExheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2xcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBGcm9tIFJGQyAyNjYxIFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjYxLnR4dFxcdTAwM2UuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgTDJUUCBmYWNpbGl0YXRlcyB0aGUgdHVubmVsaW5nIG9mIHBhY2tldHMgYWNyb3NzIGFuXFxuICAxNjpcXHRcXHQgIGludGVydmVuaW5nIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhc1xcbiAgMTc6XFx0XFx0ICBwb3NzaWJsZSB0byBib3RoIGVuZC11c2VycyBhbmQgYXBwbGljYXRpb25zLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIEwyVFAgaXMgb2Z0ZW4gdXNlZCB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBJUFxcbiAgMjA6XFx0XFx0ICB0dW5uZWxzLiBPbmUgSVAgdHVubmVsIG1heSBjYXJyeSB0aG91c2FuZHMgb2YgaW5kaXZpZHVhbCBQUFBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjQ6MzMuOTM1ODE0NjEzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MzA4ODYwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEwyVFAgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGVzdGluZyB0aGUgTDJUUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0J3MgY2xlYXIgdGhhdCBpdCBpbmhlcmVudGx5IHJlbGllcyBvbiBJTkVULiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZTogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGFuZCBgUFBQT0wyVFBgLlxuXG5Ob3csIHRoZSB0aGluZyB0aGF0J3MgbmFnZ2luZyBhdCBtZSBpcyBgUFBQT0wyVFBgLiBXaGlsZSBpdCdzIG5vdCAqc3RyaWN0bHkqIG5lY2Vzc2FyeSBmb3IgaGl0dGluZyB0aGUgYGwydHBfZXRoLmNgIGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkg4oCTIGVzcGVjaWFsbHkgdGVzdGluZyB0aGUgY29yZSBmdW5jdGlvbnMgbGlrZSBgbDJ0cF94bWl0X3NrYmAgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAg4oCTIGluY2x1ZGluZyBpdCBvZmZlcnMgYSB2YWx1YWJsZSBhbHRlcm5hdGl2ZSBwYXRoLiBJdCBnaXZlcyBtZSBhbm90aGVyIHdheSB0byBleGVyY2lzZSB0aG9zZSBrZXkgY29kZSBzZWN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgZm9yIGNvbXByZWhlbnNpdmUgdGVzdGluZy4gSSdtIGdvaW5nIHRvIGluY2x1ZGUgaXQuXG5cbkkgbmVlZCB0byBrZWVwIG15IGZvY3VzIHNoYXJwLiBJJ20gemVyb2luZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF94bWl0X3NrYmAsIGBsMnRwX2V0aF9jcmVhdGVgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuXG5cbkZpbmFsbHksIGJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSBzaG91bGQgY29uZmlybSB3aGV0aGVyIGBwcHBvbDJ0cF9zZW5kbXNnYCBhbmQgYHBwcG9sMnRwX3htaXRgIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgc2NvcGUgaXMgd2hhdCBJIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMzQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNDo1OC4yNDQ2Nzg0OTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDM0OTExMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwb2wydHBfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX3BwcC5jPTE5OD1zdGF0aWMgdm9pZCBwcHBvbDJ0cF9yZWN2KHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIGludCBkYXRhX2xlbilcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjQ5LSAqL1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6MjUwOnN0YXRpYyBpbnQgcHBwb2wydHBfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjUxLVxcdFxcdFxcdCAgICBzaXplX3QgdG90YWxfbGVuKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMTgtICpcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjMxOTogKiBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBwcHBvbDJ0cF9zZW5kbXNnKCksIGJ1dCByYXRoZXIgdGhhblxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzIwLSAqIGJlaW5nIGNhbGxlZCB3aXRoIGEgbXNnaGRyIGZyb20gdXNlcnNwYWNlLCBpdCBpcyBjYWxsZWQgd2l0aCBhIHNrYlxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTY0OS1cXHQuZ2V0c29ja29wdF9pdGVyID0gcHBwb2wydHBfZ2V0c29ja29wdCxcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjE2NTA6XFx0LnNlbmRtc2dcXHQ9IHBwcG9sMnRwX3NlbmRtc2csXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xNjUxLVxcdC5yZWN2bXNnXFx0PSBwcHBvbDJ0cF9yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTowMC4zODgxNzUwMzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzczNTI3Njc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGxiYWNrIEZ1bmN0aW9uIFVzYWdlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCwgcGFydGljdWxhcmx5IHRob3NlIG1hcmtlZCBhcyBgc3RhdGljYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBldmVuIHRob3VnaCB0aGV5IGFyZSBzdGF0aWMsIHRoZXkncmUgYmVpbmcgdXRpbGl6ZWQgYXMgY2FsbGJhY2tzLiBUaGF04oCZcyB0aGUga2V5IGhlcmUuXG5cbkxldCBtZSBicmVhayBkb3duIHdoYXQgSSd2ZSBpZGVudGlmaWVkIHNvIGZhci4gSSdtIHNlZWluZyB0aGF0LCBkZXNwaXRlIGJlaW5nIGRlY2xhcmVkIGBzdGF0aWNgLCBib3RoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYCwgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAgaXMgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBUaGlzIGRlZmluaXRlbHkgcG9pbnRzIHRvd2FyZHMgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBiZWluZyBwYXJ0IG9mIHNvbWUga2luZCBvZiBmdW5jdGlvbmFsIHRhYmxlIG9yIGNhbGxiYWNrIHN0cnVjdHVyZS5cblxuVG8gZnVydGhlciBjbGFyaWZ5IHRoaXMgcGF0dGVybiwgSSdsbCBjb21waWxlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgb3RoZXIgY2FsbGJhY2sgZnVuY3Rpb25zIEkgc2VlIGJlaW5nIGltcGxlbWVudGVkIHRvIGJldHRlciBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHNob3VsZCByZXZpZXc6XG5cbiogICBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgXG4qICAgYGwydHBfeG1pdF9za2JgXG4qICAgYGwydHBfZXRoX2NyZWF0ZWBcbiogICBgbDJ0cF9ldGhfZGV2X3htaXRgXG4qICAgYHBwcG9sMnRwX3NlbmRtc2dgXG4qICAgYHBwcG9sMnRwX3htaXRgXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYHBwcG9sMnRwX3htaXRgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIHRoZSBwYXR0ZXJuIEknbSBzZWVpbmcuIEknbGwgbmVlZCB0byBleHBsb3JlIGhvdyB0aGlzIGlzIGhhcHBlbmluZyBiZWNhdXNlIHNvbWV0aGluZyBpcyB0ZWxsaW5nIG1lIHRoZXJlJ3MgbW9yZSB0byB1bmRlcnN0YW5kIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDcyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI1OjA4LjEyMzQ1NDI0MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5OTEwNDkzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHBvbDJ0cF94bWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sMnRwL2wydHBfcHBwLmM9MTE3PXN0cnVjdCBwcHBvbDJ0cF9zZXNzaW9uIHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI0LVxcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTI1OnN0YXRpYyBpbnQgcHBwb2wydHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI2LVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwcG9sMnRwX2NoYW5fb3BzID0ge1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTI4OlxcdC5zdGFydF94bWl0ID0gIHBwcG9sMnRwX3htaXQsXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xMjktfTtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9MjUwPXN0YXRpYyBpbnQgcHBwb2wydHBfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMjktICovXFxubmV0L2wydHAvbDJ0cF9wcHAuYzozMzA6c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI1OjEwLjQyMjU2NDkxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMxNTAxMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkwyVFAgT3ZlcmhlYWQgRml4IGFuZCBGdXp6aW5nIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIG9uIHRoaXMgcGF0Y2gsIGFzc2lnbmVkIHRvIGBwcHBfY2hhbm5lbF9vcHMuc3RhcnRfeG1pdGAuIFRoZSBtYWluIHRoaW5nIGlzIGZpeGluZyBob3cgTDJUUCBvdmVyaGVhZCBpcyBjYWxjdWxhdGVkLCB3aGljaCBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhbHdheXMgZ29vZCB0byBiZSBtaW5kZnVsIG9mIHRob3NlLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgaW4gYHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBwZXJmb3JtYW5jZSwgSSBzdXBwb3NlLlxuXG5UaGlzIGlzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcImZ1enppbmcgY2FuZGlkYXRlXCIgdG8gbWUuIEFueSBjaGFuZ2UgaW4gb3ZlcmhlYWQgY2FsY3VsYXRpb24gbGlrZSB0aGlzIGNhbiBvcGVuIHVwIGludGVyZXN0aW5nIGF0dGFjayB2ZWN0b3JzLCBzbyBJJ2xsIGRlZmluaXRlbHkgd2FudCB0byBwdXQgc29tZSBmdXp6ZXJzIGFnYWluc3QgdGhpcy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJvdW5kIEwyVFAuIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGBMMlRQX0lQYCBpcyByZWxldmFudCBoZXJlLCBmb3IgdGhlIElQIGVuY2Fwc3VsYXRpb24gcGllY2UuIExldCBtZSBwdWxsIHVwIGBuZXQvbDJ0cC9LY29uZmlnYCBhZ2FpbiwganVzdCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIG9yIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5NDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjU6MTUuMjU0MDY4NTYxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbDJ0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdCAgb3JpZ2luYWxseSBkZWZpbmVkIGluIFJGQyAyNjYxLCBpcyBhIHN0YW5kYXJkIG1ldGhvZCBmb3JcXG4gIDYxOlxcdFxcdCAgdHVubmVsaW5nIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIFtSRkMxNjYxXSBzZXNzaW9ucy5cXG4gIDYyOlxcdFxcdCAgTDJUUCBoYXMgc2luY2UgYmVlbiBhZG9wdGVkIGZvciB0dW5uZWxpbmcgYSBudW1iZXIgb2Ygb3RoZXJcXG4gIDYzOlxcdFxcdCAgTDIgcHJvdG9jb2xzLCBpbmNsdWRpbmcgQVRNLCBGcmFtZSBSZWxheSwgSERMQyBhbmQgZXZlbiByYXdcXG4gIDY0OlxcdFxcdCAgZXRoZXJuZXQgZnJhbWVzLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHlvdSBhcmUgY29ubmVjdGluZyB0byBMMlRQdjMgZXF1aXBtZW50LCBvciB5b3Ugd2FudCB0b1xcbiAgNjc6XFx0XFx0ICB0dW5uZWwgcmF3IGV0aGVybmV0IGZyYW1lcyB1c2luZyBMMlRQLCBzYXkgWSBoZXJlLiBJZlxcbiAgNjg6XFx0XFx0ICB1bnN1cmUsIHNheSBOLlxcbiAgNjk6XFx0XFxuICA3MDpcXHRjb25maWcgTDJUUF9JUFxcbiAgNzE6XFx0XFx0dHJpc3RhdGUgXFxcIkwyVFAgSVAgZW5jYXBzdWxhdGlvbiBmb3IgTDJUUHYzXFxcIlxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQX1YzXFxuICA3MzpcXHRcXHRoZWxwXFxuICA3NDpcXHRcXHQgIFN1cHBvcnQgZm9yIEwyVFAtb3Zlci1JUCBzb2NrZXQgZmFtaWx5LlxcbiAgNzU6XFx0XFxuICA3NjpcXHRcXHQgIFRoZSBMMlRQdjMgcHJvdG9jb2wgZGVmaW5lcyB0d28gcG9zc2libGUgZW5jYXBzdWxhdGlvbnMgZm9yXFxuICA3NzpcXHRcXHQgIEwyVFAgZnJhbWVzLCBuYW1lbHkgVURQIGFuZCBwbGFpbiBJUCAod2l0aG91dCBVRFApLiBUaGlzXFxuICA3ODpcXHRcXHQgIGRyaXZlciBwcm92aWRlcyBhIG5ldyBMMlRQSVAgc29ja2V0IGZhbWlseSB3aXRoIHdoaWNoXFxuICA3OTpcXHRcXHQgIHVzZXJzcGFjZSBMMlRQdjMgZGFlbW9ucyBtYXkgY3JlYXRlIEwyVFAvSVAgdHVubmVsIHNvY2tldHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjU6MTUuMjU0MjE5MjcxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjI3OTUyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBMMlRQIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGNvbmZpcm1pbmcgdGhhdCBgTDJUUF9JUGAgaXMgaW5kZWVkIGZvciBJUCBlbmNhcHN1bGF0aW9uLCB0aGF0IGNoZWNrcyBvdXQuIFRoZSBwYXRjaCBhY2NvdW50cyBmb3IgYm90aCBVRFAgYW5kIElQIGVuY2Fwc3VsYXRpb24gb3ZlcmhlYWRzLCB3aGljaCBpcyBnb29kLiBUaGUgYGwydHBfdHVubmVsX3VkcF9oZHJsZW5gIGZ1bmN0aW9uIHVzZXMgdGhlIGBzaXplb2Yoc3RydWN0IHVkcGhkcilgIHdoZW4gYHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFBgLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgbWVhbnMgd2UncmUgY292ZXJlZC4gVGhpcyByZWluZm9yY2VzIHdoeSBgTDJUUF9JUGAgaXMgYSB2YWxpZCBvcHRpb24gaGVyZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uczogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGBMMlRQX0lQYCwgYW5kIGBQUFBPTDJUUGAuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGBMMlRQX0lQYCBoYXMgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBub3RlcywgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYEwyVFBfVjNgLCB3aGljaCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG5JJ2xsIGtlZXAgdGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgaGFuZHk6XG5gTDJUUGBcbmBMMlRQX1YzYFxuYEwyVFBfRVRIYFxuYEwyVFBfSVBgXG5gUFBQT0wyVFBgXG5cbkknbGwga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIHRoZXNlIGZ1bmN0aW9uczogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfeG1pdF9za2JgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfZXRoX2Rldl94bWl0YCwgYHBwcG9sMnRwX3NlbmRtc2dgLCBhbmQgYHBwcG9sMnRwX3htaXRgLlxuXG5XYWl0IGEgbWludXRlLCBgbDJ0cF9ldGhfYWRqdXN0X210dWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGZyb20gYGwydHBfZXRoX2NyZWF0ZWAuIEludGVyZXN0aW5nbHksIGl0IGlzIGFsc28gY2FsbGVkIGZyb20gYGwydHBfZXRoX3Nob3dgLCBhbmQgdGhhdCBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gZGVidWdmcy9zZXFfZmlsZSBmdW5jdGlvbmFsaXR5PyBJJ2QgYmV0dGVyIGludmVzdGlnYXRlIGBsMnRwX2V0aF9zaG93YCB0byB1bmRlcnN0YW5kIHRoYXQgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NDksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTo1MS44ODIxNzM5OTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjQyMzQ4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF9ldGhfc2hvd1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2V0aC5jPTE0Nj1zdGF0aWMgdm9pZCBsMnRwX2V0aF9kZWxldGUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbilcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMTY1LVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MTY2OnN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXFxubmV0L2wydHAvbDJ0cF9ldGguYy0xNjcte1xcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjU3LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19MMlRQX0RFQlVHRlMpKVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MjU4OlxcdFxcdHNlc3Npb24tXFx1MDAzZXNob3cgPSBsMnRwX2V0aF9zaG93O1xcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTo1NC4xMDY0MTY4NzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA1MTA5Mjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gRGVidWdnaW5nIFRvb2xzIGFuZCBSZXN1bHQgU2V0dGluZyoqXG5cblJpZ2h0LCBgbDJ0cF9ldGhfc2hvd2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoYXQgZGVidWdmcyByZWFsbS4gVGhhdOKAmXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGl0LiBHb29kLiBJIGxpa2UgaG93IHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB3b3JraW5nOyB0aGV5J3JlIG1ha2luZyBpdCBlYXNpZXIgdG8gcGFyc2Ugd2hhdCdzIGdvaW5nIG9uLCBhbmQgYXJlIGFpZGluZyBpbiB0aGUgYW5hbHlzaXMuXG5cbk5vdywgSSdsbCBtb3ZlIG9uIHRvIHRoZSBuZXh0IHRhc2sgd2hpY2ggaW52b2x2ZXMgY2FsbGluZyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY4MSwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNjowMS4xNTc1MTIyMTRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMjE0MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkwyVFBcIixcbiAgICBcIkwyVFBfVjNcIixcbiAgICBcIkwyVFBfRVRIXCIsXG4gICAgXCJMMlRQX0lQXCIsXG4gICAgXCJQUFBPTDJUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImwydHBfdHVubmVsX3JlZ2lzdGVyXCIsXG4gICAgXCJsMnRwX3htaXRfc2tiXCIsXG4gICAgXCJsMnRwX2V0aF9jcmVhdGVcIixcbiAgICBcImwydHBfZXRoX2Rldl94bWl0XCIsXG4gICAgXCJwcHBvbDJ0cF9zZW5kbXNnXCIsXG4gICAgXCJwcHBvbDJ0cF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTDJUUCBvdmVyaGVhZCBhbmQgaGVhZHJvb20gY2FsY3VsYXRpb25zLCBjYWNoaW5nIHRoZSBMMyBvdmVyaGVhZCBkdXJpbmcgdHVubmVsIHJlZ2lzdHJhdGlvbiBhbmQgdXNpbmcgaXQgaW4gTVRVIGFkanVzdG1lbnQgYW5kIHBhY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTDJUUCBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMMlRQXCIsXG4gICAgXCJMMlRQX1YzXCIsXG4gICAgXCJMMlRQX0VUSFwiLFxuICAgIFwiTDJUUF9JUFwiLFxuICAgIFwiUFBQT0wyVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiLFxuICAgIFwibDJ0cF94bWl0X3NrYlwiLFxuICAgIFwibDJ0cF9ldGhfY3JlYXRlXCIsXG4gICAgXCJsMnRwX2V0aF9kZXZfeG1pdFwiLFxuICAgIFwicHBwb2wydHBfc2VuZG1zZ1wiLFxuICAgIFwicHBwb2wydHBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowfkpjv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 07:01:53 +0000 UTC FinishedAt: 2026-07-31 07:26:02 +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": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "L2TP", "L2TP_V3", "L2TP_ETH", "L2TP_IP", "PPPOL2TP" ], "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": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "L2TP", "L2TP_V3", "L2TP_ETH", "L2TP_IP", "PPPOL2TP" ], "series_id": "73d4e6fc-4879-47b4-a82a-a3c9769114d7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "l2tp_tunnel_register", "l2tp_xmit_skb", "l2tp_eth_create", "l2tp_eth_dev_xmit", "pppol2tp_sendmsg", "pppol2tp_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "9b3d30fe-b87f-4b00-99a6-464f0a271312" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4ZGEzNzA3YWE4ZjBhZTY3MzJhMGQ5NzI5ZmQ3MjhjMGM3MTFhYWI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6MTY6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuaW5kZXggNDcxMmNjNDE4ODFhMy4uZjUyYmYzYjUzMjkwNyAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuQEAgLTEyMjcsMTggJiM0MzsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tXHUwMDNldHVubmVsO1xuIFx0dW5zaWduZWQgaW50IGRhdGFfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiBcdHN0cnVjdCBzb2NrICpzayA9IHR1bm5lbC1cdTAwM2Vzb2NrO1xuLVx0aW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjtcbiBcdGludCByZXQgPSBORVRfWE1JVF9TVUNDRVNTO1xuIFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuJiM0MztcdGludCB1ZHBfbGVuO1xuIFxuIFx0LyogQ2hlY2sgdGhhdCB0aGVyZSYjMzk7cyBlbm91Z2ggaGVhZHJvb20gaW4gdGhlIHNrYiB0byBpbnNlcnQgSVAsXG4gXHQgKiBVRFAgYW5kIEwyVFAgaGVhZGVycy4gSWYgbm90IGVub3VnaCwgZXhwYW5kIGl0IHRvXG4gXHQgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS5cbiBcdCAqL1xuLVx0dWhsZW4gPSAodHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkgPyBzaXplb2YoKnVoKSA6IDA7XG4tXHRoZWFkcm9vbSA9IE5FVF9TS0JfUEFEICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVobGVuICYjNDM7IHNlc3Npb24tXHUwMDNlaGRyX2xlbjtcbi1cdGlmIChza2JfY293X2hlYWQoc2tiLCBoZWFkcm9vbSkpIHtcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpKSkge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5AQCAtMTI5MCw3ICYjNDM7MTI4OCw5IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRcdHVoID0gdWRwX2hkcihza2IpO1xuIFx0XHR1aC1cdTAwM2Vzb3VyY2UgPSBpbmV0LVx1MDAzZWluZXRfc3BvcnQ7XG4gXHRcdHVoLVx1MDAzZWRlc3QgPSBpbmV0LVx1MDAzZWluZXRfZHBvcnQ7XG4tXHRcdHVkcF9sZW4gPSB1aGxlbiAmIzQzOyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gJiM0MzsgZGF0YV9sZW47XG4mIzQzO1xuJiM0MztcdFx0dWRwX2xlbiA9IGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKTtcbiYjNDM7XHRcdHVkcF9sZW4gJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiAmIzQzOyBkYXRhX2xlbjtcbiBcdFx0aWYgKHVkcF9sZW4gXHUwMDNlIFUxNl9NQVgpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRyZXQgPSBORVRfWE1JVF9EUk9QO1xuQEAgLTE2ODgsNiAmIzQzOzE2ODgsNyBAQCBpbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdHNrLVx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xuJiM0MztcdHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHNrKTtcbiBcdHJlbGVhc2Vfc29jayhzayk7XG4gXG4gXHRzb2NrX2hvbGQoc2spO1xuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5oIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcbmluZGV4IGZmZDhjZWQzYTUxZmYuLjJjNDE4NzdiNmNlNTcgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcbkBAIC0xNjcsNiAmIzQzOzE2Nyw3IEBAIHN0cnVjdCBsMnRwX3R1bm5lbCB7XG4gXHR1MzJcdFx0XHR0dW5uZWxfaWQ7XG4gXHR1MzJcdFx0XHRwZWVyX3R1bm5lbF9pZDtcbiBcdGludFx0XHRcdHZlcnNpb247XHQvKiAyPVx1MDAzZUwyVFB2MiwgMz1cdTAwM2VMMlRQdjMgKi9cbiYjNDM7XHRpbnRcdFx0XHRsM19vdmVyaGVhZDtcdC8qIElQIGhlYWRlciBvdmVyaGVhZCAqL1xuIFxuIFx0Y2hhclx0XHRcdG5hbWVbTDJUUF9UVU5ORUxfTkFNRV9NQVhdOyAvKiBmb3IgbG9nZ2luZyAqL1xuIFx0ZW51bSBsMnRwX2VuY2FwX3R5cGVcdGVuY2FwO1xuQEAgLTMzNCw2ICYjNDM7MzM1LDI1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGwydHBfdjNfZW5zdXJlX29wdF9pbl9saW5lYXIoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RyXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IGwydHBfdHVubmVsX3VkcF9oZHJsZW4oc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCA/XG4mIzQzO1x0XHRzaXplb2Yoc3RydWN0IHVkcGhkcikgOiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbixcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKSAmIzQzOyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gJiM0MztcbiYjNDM7XHRcdHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLFxuJiM0MztcdFx0XHRcdFx0ICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuJiM0Mzt9XG4mIzQzO1xuICNkZWZpbmUgTU9EVUxFX0FMSUFTX0wyVFBfUFdUWVBFKHR5cGUpIFxcXG4gXHRNT0RVTEVfQUxJQVMoXCYjMzQ7bmV0LWwydHAtdHlwZS1cJiMzNDsgX19zdHJpbmdpZnkodHlwZSkpXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9ldGguYyBiL25ldC9sMnRwL2wydHBfZXRoLmNcbmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jXG5AQCAtMTg4LDIwICYjNDM7MTg4LDkgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0dW5zaWduZWQgaW50IG92ZXJoZWFkID0gMDtcbi1cdHUzMiBsM19vdmVyaGVhZCA9IDA7XG4gXHR1MzIgbXR1O1xuIFxuLVx0LyogaWYgdGhlIGVuY2FwIGlzIFVEUCwgYWNjb3VudCBmb3IgVURQIGhlYWRlciBzaXplICovXG4tXHRpZiAodHVubmVsLVx1MDAzZWVuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkge1xuLVx0XHRvdmVyaGVhZCAmIzQzOz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuLVx0XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7XG4tXHR9XG4tXG4tXHRsb2NrX3NvY2sodHVubmVsLVx1MDAzZXNvY2spO1xuLVx0bDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtXHUwMDNlc29jayk7XG4tXHRyZWxlYXNlX3NvY2sodHVubmVsLVx1MDAzZXNvY2spO1xuLVxuLVx0aWYgKGwzX292ZXJoZWFkID09IDApIHtcbiYjNDM7XHRpZiAodHVubmVsLVx1MDAzZWwzX292ZXJoZWFkID09IDApIHtcbiBcdFx0LyogTDMgT3ZlcmhlYWQgY291bGRuJiMzOTt0IGJlIGlkZW50aWZpZWQsIHRoaXMgY291bGQgYmVcbiBcdFx0ICogYmVjYXVzZSB0dW5uZWwtXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0JiMzOTtzXG4gXHRcdCAqIGFkZHJlc3MgZmFtaWx5IHdhcyBub3QgSVB2NCBvciBJUHY2LFxuQEAgLTIwOSwxMCAmIzQzOzE5OCw4IEBAIHN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm47XG4gXHR9XG4tXHQvKiBBZGp1c3QgTVRVLCBmYWN0b3Igb3ZlcmhlYWQgLSB1bmRlcmxheSBMMywgb3ZlcmxheSBMMiBoZHJcbi1cdCAqIFVEUCBvdmVyaGVhZCwgaWYgYW55LCB3YXMgYWxyZWFkeSBmYWN0b3JlZCBpbiBhYm92ZS5cbi1cdCAqL1xuLVx0b3ZlcmhlYWQgJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiAmIzQzOyBFVEhfSExFTiAmIzQzOyBsM19vdmVyaGVhZDtcbiYjNDM7XHQvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi9cbiYjNDM7XHRvdmVyaGVhZCA9IEVUSF9ITEVOICYjNDM7IGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuIFxuIFx0bXR1ID0gbDJ0cF90dW5uZWxfZHN0X210dSh0dW5uZWwpIC0gb3ZlcmhlYWQ7XG4gXHRpZiAobXR1IFx1MDAzYyBkZXYtXHUwMDNlbWluX210dSB8fCBtdHUgXHUwMDNlIGRldi1cdTAwM2VtYXhfbXR1KVxuQEAgLTIyMCw3ICYjNDM7MjA3LDcgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdGVsc2VcbiBcdFx0ZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gJiM0Mzs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbjtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpO1xuIH1cbiBcbiBzdGF0aWMgaW50IGwydHBfZXRoX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMMlRQJiMzNDssCiAgICAmIzM0O0wyVFBfVjMmIzM0OywKICAgICYjMzQ7TDJUUF9FVEgmIzM0OywKICAgICYjMzQ7TDJUUF9JUCYjMzQ7LAogICAgJiMzNDtQUFBPTDJUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2wydHBfdHVubmVsX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2wydHBfeG1pdF9za2ImIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfY3JlYXRlJiMzNDssCiAgICAmIzM0O2wydHBfZXRoX2Rldl94bWl0JiMzNDssCiAgICAmIzM0O3BwcG9sMnRwX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBMMlRQIG92ZXJoZWFkIGFuZCBoZWFkcm9vbSBjYWxjdWxhdGlvbnMsIGNhY2hpbmcgdGhlIEwzIG92ZXJoZWFkIGR1cmluZyB0dW5uZWwgcmVnaXN0cmF0aW9uIGFuZCB1c2luZyBpdCBpbiBNVFUgYWRqdXN0bWVudCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBMMlRQIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGRhMzcwN2FhOGYwYWU2NzMyYTBkOTcyOWZkNzI4YzBjNzExYWFiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA3OjE2OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwppbmRleCA0NzEyY2M0MTg4MWEzLi5mNTJiZjNiNTMyOTA3IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuYwpAQCAtMTIyNywxOCAmIzQzOzEyMjcsMTYgQEAgc3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnMKIAlzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tJmd0O3R1bm5lbDsKIAl1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSBza2ItJmd0O2xlbjsKIAlzdHJ1Y3Qgc29jayAqc2sgPSB0dW5uZWwtJmd0O3NvY2s7Ci0JaW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjsKIAlpbnQgcmV0ID0gTkVUX1hNSVRfU1VDQ0VTUzsKIAlzdHJ1Y3QgaW5ldF9zb2NrICppbmV0OwogCXN0cnVjdCB1ZHBoZHIgKnVoOwomIzQzOwlpbnQgdWRwX2xlbjsKIAogCS8qIENoZWNrIHRoYXQgdGhlcmUmIzM5O3MgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBza2IgdG8gaW5zZXJ0IElQLAogCSAqIFVEUCBhbmQgTDJUUCBoZWFkZXJzLiBJZiBub3QgZW5vdWdoLCBleHBhbmQgaXQgdG8KIAkgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS4KIAkgKi8KLQl1aGxlbiA9ICh0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCkgPyBzaXplb2YoKnVoKSA6IDA7Ci0JaGVhZHJvb20gPSBORVRfU0tCX1BBRCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1aGxlbiAmIzQzOyBzZXNzaW9uLSZndDtoZHJfbGVuOwotCWlmIChza2JfY293X2hlYWQoc2tiLCBoZWFkcm9vbSkpIHsKJiM0MzsJaWYgKHNrYl9jb3dfaGVhZChza2IsIGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc2Vzc2lvbiwgdHVubmVsKSkpIHsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiBORVRfWE1JVF9EUk9QOwogCX0KQEAgLTEyOTAsNyAmIzQzOzEyODgsOSBAQCBzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVucwogCQl1aCA9IHVkcF9oZHIoc2tiKTsKIAkJdWgtJmd0O3NvdXJjZSA9IGluZXQtJmd0O2luZXRfc3BvcnQ7CiAJCXVoLSZndDtkZXN0ID0gaW5ldC0mZ3Q7aW5ldF9kcG9ydDsKLQkJdWRwX2xlbiA9IHVobGVuICYjNDM7IHNlc3Npb24tJmd0O2hkcl9sZW4gJiM0MzsgZGF0YV9sZW47CiYjNDM7CiYjNDM7CQl1ZHBfbGVuID0gbDJ0cF90dW5uZWxfdWRwX2hkcmxlbih0dW5uZWwpOwomIzQzOwkJdWRwX2xlbiAmIzQzOz0gc2Vzc2lvbi0mZ3Q7aGRyX2xlbiAmIzQzOyBkYXRhX2xlbjsKIAkJaWYgKHVkcF9sZW4gJmd0OyBVMTZfTUFYKSB7CiAJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCXJldCA9IE5FVF9YTUlUX0RST1A7CkBAIC0xNjg4LDYgJiM0MzsxNjg4LDcgQEAgaW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsCiAJfQogCiAJc2stJmd0O3NrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDOwomIzQzOwl0dW5uZWwtJmd0O2wzX292ZXJoZWFkID0ga2VybmVsX3NvY2tfaXBfb3ZlcmhlYWQoc2spOwogCXJlbGVhc2Vfc29jayhzayk7CiAKIAlzb2NrX2hvbGQoc2spOwpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmggYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaAppbmRleCBmZmQ4Y2VkM2E1MWZmLi4yYzQxODc3YjZjZTU3IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaApAQCAtMTY3LDYgJiM0MzsxNjcsNyBAQCBzdHJ1Y3QgbDJ0cF90dW5uZWwgewogCXUzMgkJCXR1bm5lbF9pZDsKIAl1MzIJCQlwZWVyX3R1bm5lbF9pZDsKIAlpbnQJCQl2ZXJzaW9uOwkvKiAyPSZndDtMMlRQdjIsIDM9Jmd0O0wyVFB2MyAqLwomIzQzOwlpbnQJCQlsM19vdmVyaGVhZDsJLyogSVAgaGVhZGVyIG92ZXJoZWFkICovCiAKIAljaGFyCQkJbmFtZVtMMlRQX1RVTk5FTF9OQU1FX01BWF07IC8qIGZvciBsb2dnaW5nICovCiAJZW51bSBsMnRwX2VuY2FwX3R5cGUJZW5jYXA7CkBAIC0zMzQsNiAmIzQzOzMzNSwyNSBAQCBzdGF0aWMgaW5saW5lIGludCBsMnRwX3YzX2Vuc3VyZV9vcHRfaW5fbGluZWFyKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cgogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBpbnQgbDJ0cF90dW5uZWxfdWRwX2hkcmxlbihzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUCA/CiYjNDM7CQlzaXplb2Yoc3RydWN0IHVkcGhkcikgOiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwKJiM0MzsJCQkJCXN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKQomIzQzO3sKJiM0MzsJcmV0dXJuIGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKSAmIzQzOyBzZXNzaW9uLSZndDtoZHJfbGVuICYjNDM7CiYjNDM7CQl0dW5uZWwtJmd0O2wzX292ZXJoZWFkOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIGludCBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sCiYjNDM7CQkJCQkgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpCiYjNDM7ewomIzQzOwlyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7CiYjNDM7fQomIzQzOwogI2RlZmluZSBNT0RVTEVfQUxJQVNfTDJUUF9QV1RZUEUodHlwZSkgXAogCU1PRFVMRV9BTElBUygmIzM0O25ldC1sMnRwLXR5cGUtJiMzNDsgX19zdHJpbmdpZnkodHlwZSkpCiAKZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfZXRoLmMgYi9uZXQvbDJ0cC9sMnRwX2V0aC5jCmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0Ci0tLSBhL25ldC9sMnRwL2wydHBfZXRoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2wydHAvbDJ0cF9ldGguYwpAQCAtMTg4LDIwICYjNDM7MTg4LDkgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7Ci0JdTMyIGwzX292ZXJoZWFkID0gMDsKIAl1MzIgbXR1OwogCi0JLyogaWYgdGhlIGVuY2FwIGlzIFVEUCwgYWNjb3VudCBmb3IgVURQIGhlYWRlciBzaXplICovCi0JaWYgKHR1bm5lbC0mZ3Q7ZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSB7Ci0JCW92ZXJoZWFkICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7Ci0JCWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tICYjNDM7PSBzaXplb2Yoc3RydWN0IHVkcGhkcik7Ci0JfQotCi0JbG9ja19zb2NrKHR1bm5lbC0mZ3Q7c29jayk7Ci0JbDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtJmd0O3NvY2spOwotCXJlbGVhc2Vfc29jayh0dW5uZWwtJmd0O3NvY2spOwotCi0JaWYgKGwzX292ZXJoZWFkID09IDApIHsKJiM0MzsJaWYgKHR1bm5lbC0mZ3Q7bDNfb3ZlcmhlYWQgPT0gMCkgewogCQkvKiBMMyBPdmVyaGVhZCBjb3VsZG4mIzM5O3QgYmUgaWRlbnRpZmllZCwgdGhpcyBjb3VsZCBiZQogCQkgKiBiZWNhdXNlIHR1bm5lbC0mZ3Q7c29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0JiMzOTtzCiAJCSAqIGFkZHJlc3MgZmFtaWx5IHdhcyBub3QgSVB2NCBvciBJUHY2LApAQCAtMjA5LDEwICYjNDM7MTk4LDggQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwKIAkJICovCiAJCXJldHVybjsKIAl9Ci0JLyogQWRqdXN0IE1UVSwgZmFjdG9yIG92ZXJoZWFkIC0gdW5kZXJsYXkgTDMsIG92ZXJsYXkgTDIgaGRyCi0JICogVURQIG92ZXJoZWFkLCBpZiBhbnksIHdhcyBhbHJlYWR5IGZhY3RvcmVkIGluIGFib3ZlLgotCSAqLwotCW92ZXJoZWFkICYjNDM7PSBzZXNzaW9uLSZndDtoZHJfbGVuICYjNDM7IEVUSF9ITEVOICYjNDM7IGwzX292ZXJoZWFkOwomIzQzOwkvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi8KJiM0MzsJb3ZlcmhlYWQgPSBFVEhfSExFTiAmIzQzOyBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc2Vzc2lvbiwgdHVubmVsKTsKIAogCW10dSA9IGwydHBfdHVubmVsX2RzdF9tdHUodHVubmVsKSAtIG92ZXJoZWFkOwogCWlmIChtdHUgJmx0OyBkZXYtJmd0O21pbl9tdHUgfHwgbXR1ICZndDsgZGV2LSZndDttYXhfbXR1KQpAQCAtMjIwLDcgJiM0MzsyMDcsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLAogCWVsc2UKIAkJZGV2LSZndDttdHUgPSBtdHU7CiAKLQlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSAmIzQzOz0gc2Vzc2lvbi0mZ3Q7aGRyX2xlbjsKJiM0MzsJZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCk7CiB9CiAKIHN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMMlRQIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbDJ0cC9sMnRwX2NvcmUuY2AsIGBuZXQvbDJ0cC9sMnRwX2NvcmUuaGAsIGFuZCBgbmV0L2wydHAvbDJ0cF9ldGguY2AuIE15IGluaXRpYWwgcmVhZCB0ZWxscyBtZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggaG93IEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGFyZSBoYW5kbGVkLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBjYWxjdWxhdGluZyBpdCBjb3JyZWN0bHkgbm93LCB3aGljaCBpcyBhIGdvb2Qgc3RhcnQuIEkgc2VlIHRoZXkmIzM5O3JlIGNhY2hpbmcgdGhlIGBsM19vdmVyaGVhZGAgdmFsdWUgaW4gdGhlIGBzdHJ1Y3QgbDJ0cF90dW5uZWxgIGR1cmluZyBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbnNpc3RlbmN5LiBUaGV5JiMzOTtyZSB0aGVuIHVzaW5nIHRoYXQgY2FjaGVkIHZhbHVlIGluIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBhbmQgYGwydHBfeG1pdF9jb3JlYC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBmbG93LgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBrbm9icyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSBpbnN0YW5jZXMgb2YgYGwydHBfdHVubmVsX3JlZ2lzdGVyYCBhbmQgYGwydHBfZXRoX2NyZWF0ZWAgaW4gS2NvbmZpZyBmaWxlcyBvciBNYWtlZmlsZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2wydHBfdHVubmVsX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sMnRwL2wydHBfY29yZS5jPTE2MTM9c3RhdGljIGludCBsMnRwX3ZhbGlkYXRlX3NvY2tldChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNjQyLVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTY0MzppbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTE2NDQtXHRcdFx0IHN0cnVjdCBsMnRwX3R1bm5lbF9jZmcgKmNmZylcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNzIwLX1cbm5ldC9sMnRwL2wydHBfY29yZS5jOjE3MjE6RVhQT1JUX1NZTUJPTF9HUEwobDJ0cF90dW5uZWxfcmVnaXN0ZXIpO1xubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMi1cbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaD0yMzY9aW50IGwydHBfdHVubmVsX2NyZWF0ZShpbnQgZmQsIGludCB2ZXJzaW9uLCB1MzIgdHVubmVsX2lkLFxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5oLTIzOC1cdFx0ICAgICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqKnR1bm5lbHApO1xubmV0L2wydHAvbDJ0cF9jb3JlLmg6MjM5OmludCBsMnRwX3R1bm5lbF9yZWdpc3RlcihzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IG5ldCAqbmV0LFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjQwLVx0XHRcdCBzdHJ1Y3QgbDJ0cF90dW5uZWxfY2ZnICpjZmcpO1xuLS1cbm5ldC9sMnRwL2wydHBfbmV0bGluay5jPTE4NT1zdGF0aWMgaW50IGwydHBfbmxfY21kX3R1bm5lbF9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDUtXHRyZWZjb3VudF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZXJlZl9jb3VudCk7XG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYzoyNDY6XHRyZXQgPSBsMnRwX3R1bm5lbF9yZWdpc3Rlcih0dW5uZWwsIG5ldCwgXHUwMDI2Y2ZnKTtcbm5ldC9sMnRwL2wydHBfbmV0bGluay5jLTI0Ny1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTYyNz1zdGF0aWMgc3RydWN0IGwydHBfdHVubmVsICpwcHBvbDJ0cF90dW5uZWxfZ2V0KHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY0Ny1cbm5ldC9sMnRwL2wydHBfcHBwLmM6NjQ4Olx0XHRcdC8qIFByZXZlbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoKSBmcm9tIHRyeWluZyB0byBzZXQgdXBcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjQ5LVx0XHRcdCAqIGEga2VybmVsIHNvY2tldC5cbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY2Mi1cdFx0XHRyZWZjb3VudF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZXJlZl9jb3VudCk7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjY2MzpcdFx0XHRlcnJvciA9IGwydHBfdHVubmVsX3JlZ2lzdGVyKHR1bm5lbCwgbmV0LCBcdTAwMjZ0Y2ZnKTtcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjY0LVx0XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIEwyVFAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgTDJUUC4mIzM0OyBXZSBhbGwga25vdyB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGNhbiBiZSBhIGxhYnlyaW50aCwgYnV0IGl0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZSBvZiB0cnV0aCBmb3IgYWxsIHRoZSBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIHdoYXQsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBhbnkgcmVsZXZhbnQgbW9kdWxlcyBJJiMzOTttIHdvcmtpbmcgd2l0aC4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdyYXNwIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyBhbmQgYXZvaWQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSeKAmW0gdGhpbmtpbmcsIOKAnFdoYXQgYXJlIHRoZSBrZXkgTDJUUCBmZWF0dXJlcyBiZWluZyBjb25zaWRlcmVkIGF0IHRoaXMgc3RhZ2U/IEFuZCB3aGF0IGFib3V0IHRoZSByZWxhdGVkIHByb3RvY29scywgbGlrZSBVRFAgZW5jYXBzdWxhdGlvbj8mIzM0OyBJIHdhbnQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBydW50aW1lIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMMlRQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sMnRwL0tjb25maWctNS1cbm5ldC9sMnRwL0tjb25maWc6NjptZW51Y29uZmlnIEwyVFBcbm5ldC9sMnRwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O0xheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2wgKEwyVFApXCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy0zNS1cbm5ldC9sMnRwL0tjb25maWc6MzY6Y29uZmlnIEwyVFBfREVCVUdGU1xubmV0L2wydHAvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0wyVFAgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy00OC1cbm5ldC9sMnRwL0tjb25maWc6NDk6Y29uZmlnIEwyVFBfVjNcbm5ldC9sMnRwL0tjb25maWctNTAtXHRib29sIFwmIzM0O0wyVFB2MyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2wydHAvS2NvbmZpZy02OS1cbm5ldC9sMnRwL0tjb25maWc6NzA6Y29uZmlnIEwyVFBfSVBcbm5ldC9sMnRwL0tjb25maWctNzEtXHR0cmlzdGF0ZSBcJiMzNDtMMlRQIElQIGVuY2Fwc3VsYXRpb24gZm9yIEwyVFB2M1wmIzM0O1xuLS1cbm5ldC9sMnRwL0tjb25maWctODYtXG5uZXQvbDJ0cC9LY29uZmlnOjg3OmNvbmZpZyBMMlRQX0VUSFxubmV0L2wydHAvS2NvbmZpZy04OC1cdHRyaXN0YXRlIFwmIzM0O0wyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTU3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCBhbmQgYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoYXQgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgTDJUUGAgYW5kLCBzcGVjaWZpY2FsbHksIGBMMlRQX0VUSGAuIE5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogZG9lcyBgTDJUUF9FVEhgIGhhdmUgYW55IGRlcGVuZGVuY2llcz8gSSBzZWVtIHRvIHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYEwyVFBfVjNgIGJlaW5nIHBvdGVudGlhbGx5IGludm9sdmVkLiBUbyBiZSBjZXJ0YWluLCBJIHNob3VsZCBjaGVjayB0aGUgYG5ldC9sMnRwL0tjb25maWdgIGZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiBhY3R1YWxseSBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2wydHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgd2hlbiBVRFAgZW5jYXBzdWxhdGlvbiBpcyBub3QgcmVxdWlyZWQuIFdoZW4gTDJUUCBpcyBjYXJyaWVkXG4gIDgxOlx0XHQgIGluIElQIHBhY2tldHMsIGl0IHVzZWQgSVAgcHJvdG9jb2wgbnVtYmVyIDExNSwgc28gdGhpcyBwb3J0XG4gIDgyOlx0XHQgIG11c3QgYmUgZW5hYmxlZCBpbiBmaXJld2FsbHMuXG4gIDgzOlx0XG4gIDg0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgODU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbDJ0cF9pcC5cbiAgODY6XHRcbiAgODc6XHRjb25maWcgTDJUUF9FVEhcbiAgODg6XHRcdHRyaXN0YXRlIFwmIzM0O0wyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcJiMzNDtcbiAgODk6XHRcdGRlcGVuZHMgb24gTDJUUF9WM1xuICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBTdXBwb3J0IGZvciBjYXJyeWluZyByYXcgZXRoZXJuZXQgZnJhbWVzIG92ZXIgTDJUUHYzLlxuICA5MjpcdFxuICA5MzpcdFx0ICBGcm9tIFJGQyA0NzE5IFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzQ3MTkudHh0XHUwMDNlLlxuICA5NDpcdFxuICA5NTpcdFx0ICBUaGUgTGF5ZXIgMiBUdW5uZWxpbmcgUHJvdG9jb2wsIFZlcnNpb24gMyAoTDJUUHYzKSBjYW4gYmVcbiAgOTY6XHRcdCAgdXNlZCBhcyBhIGNvbnRyb2wgcHJvdG9jb2wgYW5kIGZvciBkYXRhIGVuY2Fwc3VsYXRpb24gdG8gc2V0XG4gIDk3Olx0XHQgIHVwIFBzZXVkb3dpcmVzIGZvciB0cmFuc3BvcnRpbmcgbGF5ZXIgMiBQYWNrZXQgRGF0YSBVbml0c1xuICA5ODpcdFx0ICBhY3Jvc3MgYW4gSVAgbmV0d29yayBbUkZDMzkzMV0uXG4gIDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEwyVFAgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYEwyVFBgLCBgTDJUUF9WM2AsIGFuZCBgTDJUUF9FVEhgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gVGhlIGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB3aGljaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGhpbiB0aGUgY29kZWJhc2UuCgpNeSBpbml0aWFsIHNjYW4gc2hvd3MgY2hhbmdlcyBpbiB0aGVzZToKCiogICBgbDJ0cF94bWl0X2NvcmVgIGxvY2F0ZWQgaW4gYG5ldC9sMnRwL2wydHBfY29yZS5jYC4gVGhpcyBpcyBrZXk7IGFueSBjaGFuZ2VzIHRvIHRoZSBjb3JlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiBhcmUgc2lnbmlmaWNhbnQgYW5kIHdvdWxkIGFmZmVjdCBob3cgcGFja2V0cyBhcmUgaGFuZGxlZC4KKiAgIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgYWxzbyBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUdW5uZWwgcmVnaXN0cmF0aW9uIGlzIG9idmlvdXNseSBpbXBvcnRhbnQgZm9yIEwyVFAmIzM5O3Mgb3BlcmF0aW9uLgoqICAgYGwydHBfZXRoX2FkanVzdF9tdHVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTVRVIGFkanVzdG1lbnRzIGFyZSBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkgb24gRXRoZXJuZXQgbGlua3MuCiogICBBbmQgZmluYWxseSwgYGwydHBfZXRoX2NyZWF0ZWAgaW4gYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBUaGUgY29udGV4dCBvZiB0aGUgZGlmZiBkb2VzIGluZGljYXRlIHRoaXMgZnVuY3Rpb24gbWlnaHQgaGF2ZSBiZWVuIGNoYW5nZWQsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9ldGguYz0xODY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTIxMi1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MjEzOnN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTIxNC1cdFx0XHQgICB1MzIgc2Vzc2lvbl9pZCwgdTMyIHBlZXJfc2Vzc2lvbl9pZCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGwydHBfbmxfY21kX29wcyBsMnRwX2V0aF9ubF9jbWRfb3BzID0ge1xubmV0L2wydHAvbDJ0cF9ldGguYzozMDc6XHQuc2Vzc2lvbl9jcmVhdGVcdD0gbDJ0cF9ldGhfY3JlYXRlLFxubmV0L2wydHAvbDJ0cF9ldGguYy0zMDgtXHQuc2Vzc2lvbl9kZWxldGVcdD0gbDJ0cF9zZXNzaW9uX2RlbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFBvdGVudGlhbCBMMlRQIEV0aGVybmV0IE1UVSBJc3N1ZSoqCgpBbHJpZ2h0LCB0aGUgZGlmZiBjb250ZXh0IG1lbnRpb25zIGBsMnRwX2V0aF9jcmVhdGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gQnV0IHRoZSBhY3R1YWwgKnBhdGNoKiBtb2RpZmllcyBgbDJ0cF9ldGhfYWRqdXN0X210dWAuIEhtbSwgdGhhdCByYWlzZXMgYSBmbGFnLiBXaHkgYWRqdXN0IHRoZSBNVFUgaWYgd2UmIzM5O3JlIGFwcGFyZW50bHkgY3JlYXRpbmcgYSBuZXcgaW50ZXJmYWNlPyBBcmUgd2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBpc29sYXRlZD8gQ291bGQgdGhpcyBhZGp1c3RtZW50IGhhdmUgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIG9yIGlzIHRoZXJlIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlIHNvbWV3aGVyZT8KCk15IGluc3RpbmN0IGlzIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzICpjYWxsZXJzKi4gSSBuZWVkIHRvIHNlZSAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYW5kICp3aGVuKi4gS25vd2luZyB0aGUgY2FsbCBwYXRocyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBjb250ZXh0IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQsIG9yIHBvdGVudGlhbGx5IGltcGFjdGluZyBvdGhlciBtb2R1bGVzLiBJcyB0aGlzIGFkanVzdCBmdW5jdGlvbiBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UgYnJpbmctdXAsIG1vZGlmaWNhdGlvbiwgb3IgdGVhcmRvd24gc2VxdWVuY2U/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29kZSB3aWxsIHRlbGwgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2wydHBfZXRoX2FkanVzdF9tdHUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9ldGguYz0xNjY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZylcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4NS1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MTg2OnN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4Ny1cdFx0XHRcdHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXG4tLVxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI0OS1cdGRldi1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG5uZXQvbDJ0cC9sMnRwX2V0aC5jOjI1MDpcdGwydHBfZXRoX2FkanVzdF9tdHUodHVubmVsLCBzZXNzaW9uLCBkZXYpO1xubmV0L2wydHAvbDJ0cF9ldGguYy0yNTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NTAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQgbmV0d29yayBlbmdpbmVlcjoKCioqTXkgVW5kZXJzdGFuZGluZyBvZiB0aGUgTDJUUCBFdGhlcm5ldCBNVFUgYW5kIFRyYW5zbWlzc2lvbiBQYXRoKioKClJpZ2h0LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBsaWtlbHkgYSBjcnVjaWFsIGZ1bmN0aW9uIGNhbGxlZCByaWdodCB3aGVuIGFuIEwyVFAgdHVubmVsIGlzIGJlaW5nIGVzdGFibGlzaGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBsMnRwX2V0aF9jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCAoTVRVKSBvZiB0aGUgdW5kZXJseWluZyBFdGhlcm5ldCBpbnRlcmZhY2UgaXMgY29ycmVjdGx5IGFjY291bnRlZCBmb3IgaW4gdGhlIEwyVFAgdHVubmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBmaXJzdCBsaW5lIG9mIGRlZmVuc2UgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgbGF0ZXIgb24sIGVuc3VyaW5nIHRoZSB0dW5uZWwmIzM5O3MgcGF5bG9hZCBmaXRzIHRoZSBFdGhlcm5ldCBmcmFtZSBzaXplLiBTbWFydCwgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHByZXZlbnQgaGVhZGFjaGVzLgoKVGhlbiB3ZSBoYXZlIGBsMnRwX3htaXRfY29yZWAsIGl0JiMzOTtzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBsMnRwX3htaXRfc2tiYC4gU28sIHRoaXMgYGwydHBfeG1pdF9jb3JlYCBhcHBlYXJzIHRvIGJlIHRoZSBjb3JlLCB0aGUgZW5naW5lIG9mIHRoZSBMMlRQIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGUgYGwydHBfeG1pdF9za2JgIHdyYXBwZXIgcHJvYmFibHkgZG9lcyBzb21lIHByZXAgd29yaywgbWF5YmUgcGFja2V0IGFzc2VtYmx5IG9yIGhlYWRlciBhZGp1c3RtZW50cywgYmVmb3JlIGhhbmRpbmcgb2ZmIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIHRvIGBsMnRwX3htaXRfY29yZWAuIEkmIzM5O20gZ3Vlc3NpbmcgYGwydHBfeG1pdF9jb3JlYCBoYW5kbGVzIHRoaW5ncyBsaWtlIGVuY2Fwc3VsYXRpb24sIGhlYWRlciBmb3JtYXR0aW5nLCBjaGVja3N1bSBjYWxjdWxhdGlvbnMsIGFuZCB1bHRpbWF0ZWx5LCBnZXR0aW5nIHRoZSBwYWNrZXQgb250byB0aGUgd2lyZS4gRWZmaWNpZW50IGRlc2lnbi4gSXQmIzM5O3MgYSBjbGVhbiBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zOiBwcmVwYXJlIHRoZSBwYWNrZXQsIHRoZW4gc2VuZCB0aGUgcGFja2V0LCB0aGF0JiMzOTtzIHRoZSBsaWtlbHkgZmxvdyBoZXJlLiBJJiMzOTttIHN0YXJ0aW5nIHRvIHB1dCB0aGUgcGllY2VzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsMnRwX3htaXRfY29yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjA5PXN0YXRpYyBpbnQgbDJ0cF94bWl0X3F1ZXVlKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjQtXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYzoxMjI1OnN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMjI2LXtcbi0tXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMzI4PWludCBsMnRwX3htaXRfc2tiKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzMi1cbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMzM6XHRyZXQgPSBsMnRwX3htaXRfY29yZShzZXNzaW9uLCBza2IsIFx1MDAyNmxlbik7XG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzM0LVx0aWYgKHJldCA9PSBORVRfWE1JVF9TVUNDRVNTKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6CgoqKkwyVFAgUGFja2V0IFRyYW5zbWlzc2lvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEwyVFAgcGFja2V0cyBhcmUgaGFuZGxlZCBhdCB0aGUga2VybmVsIGxldmVsLiBTcGVjaWZpY2FsbHksIGBsMnRwX3htaXRfc2tiYC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24sIGFzIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCwgaW1wb3J0YW50bHksICp1c2VkKiBieSBhIGNvdXBsZSBvZiBjcml0aWNhbCBtb2R1bGVzOiBgbDJ0cF9ldGguY2AgYW5kIGBsMnRwX3BwcC5jYC4gVGhpcyB0ZWxscyBtZSBpbW1lZGlhdGVseSB0aGF0IGBsMnRwX3htaXRfc2tiYCBpcyB0aGUgY29yZSBtZWNoYW5pc20gZm9yIGFjdHVhbGx5IHNlbmRpbmcgb3V0IEwyVFAgdHJhZmZpYywgd2hldGhlciBpdCYjMzk7cyBlbmNhcHN1bGF0ZWQgRXRoZXJuZXQgZnJhbWVzIG9yIFBvaW50LXRvLVBvaW50IFByb3RvY29sIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gaG93IGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gdGhvc2UgdHdvIGZpbGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBidXQgdGhpcyBleHBvcnQgYW5kIHVzYWdlIHBhdHRlcm4gcG9pbnRzIHRvIGl0cyBmdW5kYW1lbnRhbCByb2xlLiBVbmRlcnN0YW5kaW5nIGl0cyBsb2dpYyBpcyBnb2luZyB0byBiZSBlc3NlbnRpYWwgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgdHJhbnNtaXNzaW9uIGlzc3VlcyBvciBvcHRpbWl6aW5nIEwyVFAgcGVyZm9ybWFuY2Ugd2l0aGluIHRoZSBzdGFjay4gSXQgd2lsbCBhbGxvdyBhIGNvbXBsZXRlIGNvbXByZWhlbnNpb24gb2YgdGhlIGNvbXBsZXRlIGRhdGEgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMyNy0gKi9cbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMjg6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzMjkte1xuLS1cbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDQtfVxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTM0NTpFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3htaXRfc2tiKTtcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDYtXG4tLVxubmV0L2wydHAvbDJ0cF9jb3JlLmg9MjYxPXZvaWQgbDJ0cF9zZXNzaW9uX3NldF9oZWFkZXJfbGVuKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIGludCB2ZXJzaW9uLFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjYyLVx0XHRcdFx0IGVudW0gbDJ0cF9lbmNhcF90eXBlIGVuY2FwKTtcbm5ldC9sMnRwL2wydHBfY29yZS5oOjI2MzppbnQgbDJ0cF94bWl0X3NrYihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC9sMnRwL2wydHBfY29yZS5oLTI2NC1cbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTcwPXN0YXRpYyBuZXRkZXZfdHhfdCBsMnRwX2V0aF9kZXZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9sMnRwL2wydHBfZXRoLmMtNzQtXHR1bnNpZ25lZCBpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbm5ldC9sMnRwL2wydHBfZXRoLmM6NzU6XHRpbnQgcmV0ID0gbDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xubmV0L2wydHAvbDJ0cF9ldGguYy03Ni1cbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTI1MD1zdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMwMi1cdGxvY2FsX2JoX2Rpc2FibGUoKTtcbm5ldC9sMnRwL2wydHBfcHBwLmM6MzAzOlx0bDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xubmV0L2wydHAvbDJ0cF9wcHAuYy0zMDQtXHRsb2NhbF9iaF9lbmFibGUoKTtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTMzMD1zdGF0aWMgaW50IHBwcG9sMnRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMzYxLVx0bG9jYWxfYmhfZGlzYWJsZSgpO1xubmV0L2wydHAvbDJ0cF9wcHAuYzozNjI6XHRsMnRwX3htaXRfc2tiKHNlc3Npb24sIHNrYik7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTM2My1cdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjM2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBMMlRQIFBhY2tldCBGbG93KioKCk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIEwyVFAgcGFja2V0IGhhbmRsaW5nLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nLCBnaXZlbiBteSBleHBlcmllbmNlLCBwb2ludHMgdG8gdGhlc2UgYXMgY29yZTogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2Rldl94bWl0YCwgYHBwcG9sMnRwX3NlbmRtc2dgLCBhbmQgYHBwcG9sMnRwX3htaXRgLgoKTm93LCB1cG9uIGNsb3NlciBjb25zaWRlcmF0aW9uLCBgbDJ0cF9ldGhfZGV2X3htaXRgIGFuZCBgcHBwb2wydHBfeG1pdGAgcmVhbGx5IHN0YW5kIG91dCBhcyBwcm9taXNpbmcgZW50cnkgcG9pbnRzIGludG8gdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBEZWZpbml0ZWx5IG1hcmtpbmcgdGhvc2UgZm9yIGNsb3NlciBpbnNwZWN0aW9uLiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgIGlzIGFsc28gYSBjcml0aWNhbCBjb21wb25lbnQsIHNvIHRoYXQgYWxzby4KCkkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgYEwyVFBfUFBQYCwgc2luY2UgYHBwcG9sMnRwX3NlbmRtc2dgIHN1Z2dlc3RzIGEgUFBQIGludm9sdmVtZW50LiBSaWdodCwgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgbmV0L2wydHAvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMMlRQX1BQUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NjYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkh5cG90aGVzaXMgRm9ybXVsYXRpb246IFBvdGVudGlhbCBBY3JvbnltIElkZW50aWZpY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB3aGV0aGVyICYjMzQ7UFBQT0wyVFAmIzM0OyBjb3VsZCByZXByZXNlbnQgYW4gYWNyb255bSBvciBpbml0aWFsaXNtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCBwb3NzaWJsZSBmcmFtZXdvcmtzIG9yIGRhdGEgbW9kZWxzIHRoYXQgdXNlIHN1Y2ggY29uY2lzZSwgcG90ZW50aWFsbHkgbmVzdGVkLCByZXByZXNlbnRhdGlvbnMuIEkmIzM5O20gaW1wbGljaXRseSBjb25zaWRlcmluZyB0aGUgbGlrZWx5IHN0cnVjdHVyZSAtIHRocmVlIFBzLCBmb2xsb3dlZCBieSBhbiBPIGFuZCBhbiBMLCBhIDIsIGFuZCBmaW5hbGx5IGEgVCBhbmQgYSBQLiBUaGUgbnVtZXJpYyBjaGFyYWN0ZXIgY291bGQgaW5kaWNhdGUgYSB2ZXJzaW9uLCBvciBhIGdyb3VwaW5nIGVsZW1lbnQ7IGl0IGFsbCBkZXBlbmRzIG9uIHRoZSBjb250ZXh0IGFuZCBpbmR1c3RyeS4gTXkgbmV4dCBzdGVwIHdvdWxkIGJlIHRvIHN0YXJ0IGJyYWluc3Rvcm1pbmcgbGlrZWx5IGZpZWxkcyBvciBkb21haW5zIGluIHdoaWNoIHN1Y2ggYSByZXByZXNlbnRhdGlvbiBtaWdodCBiZSBlbXBsb3llZCwgcGVyaGFwcyBzdGFydGluZyB3aXRoIHNvbWUgb2YgdGhlIG1vcmUgY29tbW9uLCBvciBteSBzdHJvbmdlc3QsIGRvbWFpbnMgb2YgZXhwZXJ0aXNlLiBUaGUgYnJldml0eSBvZiB0aGUgc3RyaW5nIHN1Z2dlc3RzIGl0IGNvdWxkIGJlIGFuIGludGVybmFsIGRlc2lnbmF0aW9uIG9yIHNvbWV0aGluZyBzcGVjaWZpYyB0byBhIHNpbmdsZSBvcmdhbml6YXRpb24uIEkgbmVlZCBtb3JlIGluZm9ybWF0aW9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBQTyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz05Mj1jb25maWcgUFBQX01VTFRJTElOS1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgQVRNXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIEV0aGVybmV0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEzOC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7MSBiaXQgKDIgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7MiBiaXRzICg0IGJ1Y2tldHMpXCYjMzQ7XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDQtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXHRib29sIFwmIzM0OzQgYml0cyAoMTYgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cdGJvb2wgXCYjMzQ7OCBiaXRzICgyNTYgYnVja2V0cylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTM6Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVx0aW50XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ5OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMMlRQIE1vZHVsZSBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBQUFBPTDJUUGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGF0JiMzOTtzIHB1dCB0b2dldGhlci4gVGltZSB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgdGhhdCB0aGluZy4gT2theSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYG5ldC9sMnRwL01ha2VmaWxlYC4gVGhhdCBzaG91bGQgcmV2ZWFsIGV4YWN0bHkgd2hpY2ggYnVpbGQgdGFyZ2V0cyBpbmNvcnBvcmF0ZSBgbDJ0cF9wcHAuY2AuIE5vIG5lZWQgdG8gZ3Vlc3MsIGxldCYjMzk7cyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBydWxlcyB0aGF0IGdlbmVyYXRlIHRoZSBvYmplY3QgZmlsZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgcXVpY2suIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBwcHAgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9sMnRwL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciB0aGUgTDJUUC5cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0wyVFApICYjNDM7PSBsMnRwX2NvcmUub1xuICAgNzpcdFxuICAgODpcdENGTEFHU19sMnRwX2NvcmUubyAmIzQzOz0gLUkkKHNyYylcbiAgIDk6XHRcbiAgMTA6XHQjIEJ1aWxkIGwydHAgYXMgbW9kdWxlcyBpZiBMMlRQIGlzIE1cbiAgMTE6XHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX1BQUE9MMlRQKSkgJiM0Mzs9IGwydHBfcHBwLm9cbiAgMTI6XHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfSVApKSAmIzQzOz0gbDJ0cF9pcC5vXG4gIDEzOlx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX1YzKSkgJiM0Mzs9IGwydHBfbmV0bGluay5vXG4gIDE0Olx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0VUSCkpICYjNDM7PSBsMnRwX2V0aC5vXG4gIDE1Olx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0RFQlVHRlMpKSAmIzQzOz0gbDJ0cF9kZWJ1Z2ZzLm9cbiAgMTY6XHRpZm5lcSAoJChDT05GSUdfSVBWNiksKVxuICAxNzpcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9JUCkpICYjNDM7PSBsMnRwX2lwNi5vXG4gIDE4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExMDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMMlRQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gTDJUUC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNhdGVnb3JpemUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYW5kIGBQUFBPTDJUUGAuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgYGwydHBfY29yZS5jYCBhbmQgYGwydHBfZXRoLmNgLgoKTXkgcHJpbWFyeSBpbnRlcmVzdCBsaWVzIGluIHRoZXNlIGZ1bmN0aW9uczogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX3htaXRfc2tiYCwgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuIExldCYjMzk7cyBkaWcgaW50byBlYWNoIG9mIHRoZXNlLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAuIEdvb2QsIGl0JiMzOTtzIGV4cG9ydGVkLCBzbyB0aGF0JiMzOTtzIGFjY2Vzc2libGUuIE5leHQsIGBsMnRwX2V0aF9jcmVhdGVgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYC4gUmlnaHQsIHNvIHRoYXQmIzM5O3MgYSBuZXRsaW5rIGNhbGxiYWNrLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhbiBlbnRyeSBwb2ludC4gYGwydHBfeG1pdF9za2JgIGlzIGFsc28gZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLCBzbyBpdCYjMzk7cyBnbG9iYWxseSB2aXNpYmxlLiBgbDJ0cF9ldGhfZGV2X3htaXRgIGlzIHN0YXRpYywgYnV0IGNydWNpYWxseSwgaXQmIzM5O3MgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBTbywgdGhhdCBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgYW5kIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBPaCwgYW5kIEkgc2VlIGBsMnRwX3htaXRfY29yZWAgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gbGlrZWx5IG5vdCBkaXJlY3RseSByZWxldmFudC4KClNvIG5vdyB0aGF0IEkmIzM5O3ZlIHJldmlld2VkIHRoZSB2aXNpYmlsaXR5LCBJIGtub3cgdGhhdCBteSBrZXkgc3ltYm9scyB3aWxsIGJlIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuCgpIYW5nIG9uLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoaXMgcmlnaHQuIEV2ZW4gdGhvdWdoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIHN0YXRpYywgaXQmIzM5O3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgcG9pbnQgb2YgaW50ZXJlc3QgZm9yIGludGVyYWN0aW9uLiBBbmQgdGhlIHNhbWUgZ29lcyBmb3IgYGwydHBfZXRoX2Rldl94bWl0YCwgYmVjYXVzZSBpdCYjMzk7cyBhbiBuZG8gY2FsbGJhY2sgYW5kIGFjdHMgYXMgYW4gZW50cnkgcG9pbnQgYXMgd2VsbC4gT2theSwgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgaXMgaW5kZWVkIGV4cG9ydGVkOyBjaGVja2VkIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKGwydHBfdHVubmVsX3JlZ2lzdGVyKTtgLgoKTGV0JiMzOTtzIHF1aWNrbHkgcmVmcmVzaCB0aGUgY29uZmlndXJhdGlvbnMgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYWdhaW46IGBMMlRQYCwgYEwyVFBfVjNgLCBgTDJUUF9FVEhgLCBhbmQgYFBQUE9MMlRQYC4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgcmVnYXJkaW5nIGRlcGVuZGVuY2llcz8gQWhhLCBgTDJUUF9FVEhgIGRlcGVuZHMgb24gYEwyVFBfVjNgLiBBbmQgYFBQUE9MMlRQYCBuZWVkcyBgUFBQYCBhbmQgYEwyVFBgLCBzbyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIHRvIGJlIGNvbXBsZXRlLiBUaGF0JiMzOTtzIHRoZSBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4gMTgxOlx0aWYgVFRZXG4gMTgyOlx0XG4gMTgzOlx0Y29uZmlnIFBQUF9BU1lOQ1xuIDE4NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1wmIzM0O1xuIDE4NTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSAob3IgTSkgaGVyZSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBQUFAgb3ZlciBzdGFuZGFyZFxuIDE4ODpcdFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBzdWNoIGFzIENPTTEgb3IgQ09NMiBvbiBhIFBDLiAgSWYgeW91IHVzZVxuIDE4OTpcdFx0ICBhIG1vZGVtIChub3QgYSBzeW5jaHJvbm91cyBvciBJU0ROIG1vZGVtKSB0byBjb250YWN0IHlvdXIgSVNQLCB5b3VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjb21wbGV0ZWx5LiBJdCBsb29rcyBsaWtlIGBQUFBPTDJUUGAgcmVsaWVzIG9uIGBMMlRQYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEJ1dCBJIHNlZSB0aGF0IGBMMlRQX0VUSGAgaXMgZGVwZW5kZW50IG9uIGBMMlRQX1YzYCwgYW5kICp0aGF0KiBpbiB0dXJuIGlzIGRlcGVuZGVudCBvbiBgTDJUUGAuIFRoaXMgc2V0dXAgc2NyZWFtcyBmb3IgY2FyZWZ1bCByZXZpZXcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEwyVFBgIGRlcGVuZGVuY2llcyBzcGVjaWZpY2FsbHksIGp1c3QgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHBlcmZvcm1hbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIGlzIHBhcmFtb3VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbDJ0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTGF5ZXIgVHdvIFR1bm5lbGluZyBQcm90b2NvbCAoTDJUUClcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBMMlRQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgTGF5ZXIgVHdvIFR1bm5lbGluZyBQcm90b2NvbFxuICAxMjpcdFxuICAxMzpcdFx0ICBGcm9tIFJGQyAyNjYxIFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2NjEudHh0XHUwMDNlLlxuICAxNDpcdFxuICAxNTpcdFx0ICBMMlRQIGZhY2lsaXRhdGVzIHRoZSB0dW5uZWxpbmcgb2YgcGFja2V0cyBhY3Jvc3MgYW5cbiAgMTY6XHRcdCAgaW50ZXJ2ZW5pbmcgbmV0d29yayBpbiBhIHdheSB0aGF0IGlzIGFzIHRyYW5zcGFyZW50IGFzXG4gIDE3Olx0XHQgIHBvc3NpYmxlIHRvIGJvdGggZW5kLXVzZXJzIGFuZCBhcHBsaWNhdGlvbnMuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIEwyVFAgaXMgb2Z0ZW4gdXNlZCB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBJUFxuICAyMDpcdFx0ICB0dW5uZWxzLiBPbmUgSVAgdHVubmVsIG1heSBjYXJyeSB0aG91c2FuZHMgb2YgaW5kaXZpZHVhbCBQUFBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMzQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTDJUUCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIHRlc3RpbmcgdGhlIEwyVFAgaW1wbGVtZW50YXRpb24sIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGluaGVyZW50bHkgcmVsaWVzIG9uIElORVQuIFRoYXQmIzM5O3MgdGhlIGZvdW5kYXRpb24uIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZTogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGFuZCBgUFBQT0wyVFBgLgoKTm93LCB0aGUgdGhpbmcgdGhhdCYjMzk7cyBuYWdnaW5nIGF0IG1lIGlzIGBQUFBPTDJUUGAuIFdoaWxlIGl0JiMzOTtzIG5vdCAqc3RyaWN0bHkqIG5lY2Vzc2FyeSBmb3IgaGl0dGluZyB0aGUgYGwydHBfZXRoLmNgIGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkg4oCTIGVzcGVjaWFsbHkgdGVzdGluZyB0aGUgY29yZSBmdW5jdGlvbnMgbGlrZSBgbDJ0cF94bWl0X3NrYmAgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAg4oCTIGluY2x1ZGluZyBpdCBvZmZlcnMgYSB2YWx1YWJsZSBhbHRlcm5hdGl2ZSBwYXRoLiBJdCBnaXZlcyBtZSBhbm90aGVyIHdheSB0byBleGVyY2lzZSB0aG9zZSBrZXkgY29kZSBzZWN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgZm9yIGNvbXByZWhlbnNpdmUgdGVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGl0LgoKSSBuZWVkIHRvIGtlZXAgbXkgZm9jdXMgc2hhcnAuIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF94bWl0X3NrYmAsIGBsMnRwX2V0aF9jcmVhdGVgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuCgpGaW5hbGx5LCBiZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgc2hvdWxkIGNvbmZpcm0gd2hldGhlciBgcHBwb2wydHBfc2VuZG1zZ2AgYW5kIGBwcHBvbDJ0cF94bWl0YCBhcmUgZGVjbGFyZWQgYXMgc3RhdGljLiBHb3R0YSBtYWtlIHN1cmUgdGhlIHNjb3BlIGlzIHdoYXQgSSBleHBlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcG9sMnRwX3NlbmRtc2cmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9wcHAuYz0xOTg9c3RhdGljIHZvaWQgcHBwb2wydHBfcmVjdihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZGF0YV9sZW4pXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYy0yNDktICovXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjI1MDpzdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjUxLVx0XHRcdCAgICBzaXplX3QgdG90YWxfbGVuKVxuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMzE4LSAqXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjMxOTogKiBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBwcHBvbDJ0cF9zZW5kbXNnKCksIGJ1dCByYXRoZXIgdGhhblxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMjAtICogYmVpbmcgY2FsbGVkIHdpdGggYSBtc2doZHIgZnJvbSB1c2Vyc3BhY2UsIGl0IGlzIGNhbGxlZCB3aXRoIGEgc2tiXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2NDktXHQuZ2V0c29ja29wdF9pdGVyID0gcHBwb2wydHBfZ2V0c29ja29wdCxcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTY1MDpcdC5zZW5kbXNnXHQ9IHBwcG9sMnRwX3NlbmRtc2csXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2NTEtXHQucmVjdm1zZ1x0PSBwcHBvbDJ0cF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA3MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhbGxiYWNrIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkLCBwYXJ0aWN1bGFybHkgdGhvc2UgbWFya2VkIGFzIGBzdGF0aWNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBldmVuIHRob3VnaCB0aGV5IGFyZSBzdGF0aWMsIHRoZXkmIzM5O3JlIGJlaW5nIHV0aWxpemVkIGFzIGNhbGxiYWNrcy4gVGhhdOKAmXMgdGhlIGtleSBoZXJlLgoKTGV0IG1lIGJyZWFrIGRvd24gd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIHNvIGZhci4gSSYjMzk7bSBzZWVpbmcgdGhhdCwgZGVzcGl0ZSBiZWluZyBkZWNsYXJlZCBgc3RhdGljYCwgYm90aCBgbDJ0cF9ldGhfY3JlYXRlYCBpcyBhc3NpZ25lZCB0byBgbDJ0cF9ldGhfbmxfY21kX29wcy5zZXNzaW9uX2NyZWF0ZWAsIGFuZCBgbDJ0cF9ldGhfZGV2X3htaXRgIGlzIGFzc2lnbmVkIHRvIGBuZXRkZXZfb3BzLm5kb19zdGFydF94bWl0YC4gVGhpcyBkZWZpbml0ZWx5IHBvaW50cyB0b3dhcmRzIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYmVpbmcgcGFydCBvZiBzb21lIGtpbmQgb2YgZnVuY3Rpb25hbCB0YWJsZSBvciBjYWxsYmFjayBzdHJ1Y3R1cmUuCgpUbyBmdXJ0aGVyIGNsYXJpZnkgdGhpcyBwYXR0ZXJuLCBJJiMzOTtsbCBjb21waWxlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgb3RoZXIgY2FsbGJhY2sgZnVuY3Rpb25zIEkgc2VlIGJlaW5nIGltcGxlbWVudGVkIHRvIGJldHRlciBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHNob3VsZCByZXZpZXc6CgoqICAgYGwydHBfdHVubmVsX3JlZ2lzdGVyYAoqICAgYGwydHBfeG1pdF9za2JgCiogICBgbDJ0cF9ldGhfY3JlYXRlYAoqICAgYGwydHBfZXRoX2Rldl94bWl0YAoqICAgYHBwcG9sMnRwX3NlbmRtc2dgCiogICBgcHBwb2wydHBfeG1pdGAKCkhvbGQgb24sIEkgc2VlIHRoYXQgYHBwcG9sMnRwX3htaXRgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIHRoZSBwYXR0ZXJuIEkmIzM5O20gc2VlaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGxvcmUgaG93IHRoaXMgaXMgaGFwcGVuaW5nIGJlY2F1c2Ugc29tZXRoaW5nIGlzIHRlbGxpbmcgbWUgdGhlcmUmIzM5O3MgbW9yZSB0byB1bmRlcnN0YW5kIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcG9sMnRwX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2wydHAvbDJ0cF9wcHAuYz0xMTc9c3RydWN0IHBwcG9sMnRwX3Nlc3Npb24ge1xuLS1cbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI0LVxubmV0L2wydHAvbDJ0cF9wcHAuYzoxMjU6c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTEyNi1cbm5ldC9sMnRwL2wydHBfcHBwLmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwcG9sMnRwX2NoYW5fb3BzID0ge1xubmV0L2wydHAvbDJ0cF9wcHAuYzoxMjg6XHQuc3RhcnRfeG1pdCA9ICBwcHBvbDJ0cF94bWl0LFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xMjktfTtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jPTI1MD1zdGF0aWMgaW50IHBwcG9sMnRwX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSxcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMyOS0gKi9cbm5ldC9sMnRwL2wydHBfcHBwLmM6MzMwOnN0YXRpYyBpbnQgcHBwb2wydHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTQ4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkwyVFAgT3ZlcmhlYWQgRml4IGFuZCBGdXp6aW5nIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gb24gdGhpcyBwYXRjaCwgYXNzaWduZWQgdG8gYHBwcF9jaGFubmVsX29wcy5zdGFydF94bWl0YC4gVGhlIG1haW4gdGhpbmcgaXMgZml4aW5nIGhvdyBMMlRQIG92ZXJoZWFkIGlzIGNhbGN1bGF0ZWQsIHdoaWNoIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGFsd2F5cyBnb29kIHRvIGJlIG1pbmRmdWwgb2YgdGhvc2UuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBjYWNoaW5nIHRoZSBMMyBvdmVyaGVhZCBpbiBgdHVubmVsLSZndDtsM19vdmVyaGVhZGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBwZXJmb3JtYW5jZSwgSSBzdXBwb3NlLgoKVGhpcyBpcyBpbW1lZGlhdGVseSBzY3JlYW1pbmcgJiMzNDtmdXp6aW5nIGNhbmRpZGF0ZSYjMzQ7IHRvIG1lLiBBbnkgY2hhbmdlIGluIG92ZXJoZWFkIGNhbGN1bGF0aW9uIGxpa2UgdGhpcyBjYW4gb3BlbiB1cCBpbnRlcmVzdGluZyBhdHRhY2sgdmVjdG9ycywgc28gSSYjMzk7bGwgZGVmaW5pdGVseSB3YW50IHRvIHB1dCBzb21lIGZ1enplcnMgYWdhaW5zdCB0aGlzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJvdW5kIEwyVFAuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hldGhlciBgTDJUUF9JUGAgaXMgcmVsZXZhbnQgaGVyZSwgZm9yIHRoZSBJUCBlbmNhcHN1bGF0aW9uIHBpZWNlLiBMZXQgbWUgcHVsbCB1cCBgbmV0L2wydHAvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMgb3Igc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9sMnRwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0XHQgIG9yaWdpbmFsbHkgZGVmaW5lZCBpbiBSRkMgMjY2MSwgaXMgYSBzdGFuZGFyZCBtZXRob2QgZm9yXG4gIDYxOlx0XHQgIHR1bm5lbGluZyBQb2ludC10by1Qb2ludCBQcm90b2NvbCAoUFBQKSBbUkZDMTY2MV0gc2Vzc2lvbnMuXG4gIDYyOlx0XHQgIEwyVFAgaGFzIHNpbmNlIGJlZW4gYWRvcHRlZCBmb3IgdHVubmVsaW5nIGEgbnVtYmVyIG9mIG90aGVyXG4gIDYzOlx0XHQgIEwyIHByb3RvY29scywgaW5jbHVkaW5nIEFUTSwgRnJhbWUgUmVsYXksIEhETEMgYW5kIGV2ZW4gcmF3XG4gIDY0Olx0XHQgIGV0aGVybmV0IGZyYW1lcy5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgSWYgeW91IGFyZSBjb25uZWN0aW5nIHRvIEwyVFB2MyBlcXVpcG1lbnQsIG9yIHlvdSB3YW50IHRvXG4gIDY3Olx0XHQgIHR1bm5lbCByYXcgZXRoZXJuZXQgZnJhbWVzIHVzaW5nIEwyVFAsIHNheSBZIGhlcmUuIElmXG4gIDY4Olx0XHQgIHVuc3VyZSwgc2F5IE4uXG4gIDY5Olx0XG4gIDcwOlx0Y29uZmlnIEwyVFBfSVBcbiAgNzE6XHRcdHRyaXN0YXRlIFwmIzM0O0wyVFAgSVAgZW5jYXBzdWxhdGlvbiBmb3IgTDJUUHYzXCYjMzQ7XG4gIDcyOlx0XHRkZXBlbmRzIG9uIEwyVFBfVjNcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgU3VwcG9ydCBmb3IgTDJUUC1vdmVyLUlQIHNvY2tldCBmYW1pbHkuXG4gIDc1Olx0XG4gIDc2Olx0XHQgIFRoZSBMMlRQdjMgcHJvdG9jb2wgZGVmaW5lcyB0d28gcG9zc2libGUgZW5jYXBzdWxhdGlvbnMgZm9yXG4gIDc3Olx0XHQgIEwyVFAgZnJhbWVzLCBuYW1lbHkgVURQIGFuZCBwbGFpbiBJUCAod2l0aG91dCBVRFApLiBUaGlzXG4gIDc4Olx0XHQgIGRyaXZlciBwcm92aWRlcyBhIG5ldyBMMlRQSVAgc29ja2V0IGZhbWlseSB3aXRoIHdoaWNoXG4gIDc5Olx0XHQgIHVzZXJzcGFjZSBMMlRQdjMgZGFlbW9ucyBtYXkgY3JlYXRlIEwyVFAvSVAgdHVubmVsIHNvY2tldHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2NDkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEwyVFAgQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBjb25maXJtaW5nIHRoYXQgYEwyVFBfSVBgIGlzIGluZGVlZCBmb3IgSVAgZW5jYXBzdWxhdGlvbiwgdGhhdCBjaGVja3Mgb3V0LiBUaGUgcGF0Y2ggYWNjb3VudHMgZm9yIGJvdGggVURQIGFuZCBJUCBlbmNhcHN1bGF0aW9uIG92ZXJoZWFkcywgd2hpY2ggaXMgZ29vZC4gVGhlIGBsMnRwX3R1bm5lbF91ZHBfaGRybGVuYCBmdW5jdGlvbiB1c2VzIHRoZSBgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpYCB3aGVuIGB0dW5uZWwtJmd0O2VuY2FwID09IEwyVFBfRU5DQVBUWVBFX1VEUGAuIFRoYXQgbWFrZXMgc2Vuc2UsIGFuZCBtZWFucyB3ZSYjMzk7cmUgY292ZXJlZC4gVGhpcyByZWluZm9yY2VzIHdoeSBgTDJUUF9JUGAgaXMgYSB2YWxpZCBvcHRpb24gaGVyZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYEwyVFBfSVBgLCBhbmQgYFBQUE9MMlRQYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgaWYgYEwyVFBfSVBgIGhhcyBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIG5vdGVzLCBpdCBhcHBlYXJzIHRvIGRlcGVuZCBvbiBgTDJUUF9WM2AsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuCgpJJiMzOTtsbCBrZWVwIHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGhhbmR5OgpgTDJUUGAKYEwyVFBfVjNgCmBMMlRQX0VUSGAKYEwyVFBfSVBgCmBQUFBPTDJUUGAKCkkmIzM5O2xsIGtlZXAgYSBzaGFycCBleWUgb3V0IGZvciB0aGVzZSBmdW5jdGlvbnM6IGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAsIGBsMnRwX2V0aF9kZXZfeG1pdGAsIGBwcHBvbDJ0cF9zZW5kbXNnYCwgYW5kIGBwcHBvbDJ0cF94bWl0YC4KCldhaXQgYSBtaW51dGUsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgbDJ0cF9ldGhfY3JlYXRlYC4gSW50ZXJlc3RpbmdseSwgaXQgaXMgYWxzbyBjYWxsZWQgZnJvbSBgbDJ0cF9ldGhfc2hvd2AsIGFuZCB0aGF0IHNlZW1zIGxpa2UgaXQgbWlnaHQgYmUgcmVsYXRlZCB0byBkZWJ1Z2ZzL3NlcV9maWxlIGZ1bmN0aW9uYWxpdHk/IEkmIzM5O2QgYmV0dGVyIGludmVzdGlnYXRlIGBsMnRwX2V0aF9zaG93YCB0byB1bmRlcnN0YW5kIHRoYXQgY29ubmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bDJ0cF9ldGhfc2hvdyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDJ0cC9sMnRwX2V0aC5jPTE0Nj1zdGF0aWMgdm9pZCBsMnRwX2V0aF9kZWxldGUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbilcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE2NS1cbm5ldC9sMnRwL2wydHBfZXRoLmM6MTY2OnN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE2Ny17XG4tLVxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbi0tXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI1Ny1cdGlmIChJU19FTkFCTEVEKENPTkZJR19MMlRQX0RFQlVHRlMpKVxubmV0L2wydHAvbDJ0cF9ldGguYzoyNTg6XHRcdHNlc3Npb24tXHUwMDNlc2hvdyA9IGwydHBfZXRoX3Nob3c7XG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTI1OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2ODEKCQkJCQkJCW91dHB1dDogMTg4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipSZWZsZWN0aW5nIG9uIERlYnVnZ2luZyBUb29scyBhbmQgUmVzdWx0IFNldHRpbmcqKgoKUmlnaHQsIGBsMnRwX2V0aF9zaG93YCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhhdCBkZWJ1Z2ZzIHJlYWxtLiBUaGF04oCZcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGl0LiBHb29kLiBJIGxpa2UgaG93IHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB3b3JraW5nOyB0aGV5JiMzOTtyZSBtYWtpbmcgaXQgZWFzaWVyIHRvIHBhcnNlIHdoYXQmIzM5O3MgZ29pbmcgb24sIGFuZCBhcmUgYWlkaW5nIGluIHRoZSBhbmFseXNpcy4KCk5vdywgSSYjMzk7bGwgbW92ZSBvbiB0byB0aGUgbmV4dCB0YXNrIHdoaWNoIGludm9sdmVzIGNhbGxpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0wyVFAmIzM0OywKICAgICYjMzQ7TDJUUF9WMyYjMzQ7LAogICAgJiMzNDtMMlRQX0VUSCYjMzQ7LAogICAgJiMzNDtMMlRQX0lQJiMzNDssCiAgICAmIzM0O1BQUE9MMlRQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bDJ0cF90dW5uZWxfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7bDJ0cF94bWl0X3NrYiYjMzQ7LAogICAgJiMzNDtsMnRwX2V0aF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bDJ0cF9ldGhfZGV2X3htaXQmIzM0OywKICAgICYjMzQ7cHBwb2wydHBfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwcHBvbDJ0cF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoxNjoyMC45NDg2OTI3MDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODAzMzIwNTE0NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTDJUUFwiLFxuICAgIFwiTDJUUF9WM1wiLFxuICAgIFwiTDJUUF9FVEhcIixcbiAgICBcIkwyVFBfSVBcIixcbiAgICBcIlBQUE9MMlRQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibDJ0cF90dW5uZWxfcmVnaXN0ZXJcIixcbiAgICBcImwydHBfeG1pdF9za2JcIixcbiAgICBcImwydHBfZXRoX2NyZWF0ZVwiLFxuICAgIFwibDJ0cF9ldGhfZGV2X3htaXRcIixcbiAgICBcInBwcG9sMnRwX3NlbmRtc2dcIixcbiAgICBcInBwcG9sMnRwX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBMMlRQIG92ZXJoZWFkIGFuZCBoZWFkcm9vbSBjYWxjdWxhdGlvbnMsIGNhY2hpbmcgdGhlIEwzIG92ZXJoZWFkIGR1cmluZyB0dW5uZWwgcmVnaXN0cmF0aW9uIGFuZCB1c2luZyBpdCBpbiBNVFUgYWRqdXN0bWVudCBhbmQgcGFja2V0IHRyYW5zbWlzc2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBMMlRQIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoxNjoyMC45NDg3MDAwNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjc3NjAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhkYTM3MDdhYThmMGFlNjczMmEwZDk3MjlmZDcyOGMwYzcxMWFhYjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6MTY6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmMgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xcbmluZGV4IDQ3MTJjYzQxODgxYTMuLmY1MmJmM2I1MzI5MDcgMTAwNjQ0XFxuLS0tIGEvbmV0L2wydHAvbDJ0cF9jb3JlLmNcXG4rKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xcbkBAIC0xMjI3LDE4ICsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXFxuIFxcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsID0gc2Vzc2lvbi1cXHUwMDNldHVubmVsO1xcbiBcXHR1bnNpZ25lZCBpbnQgZGF0YV9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG4gXFx0c3RydWN0IHNvY2sgKnNrID0gdHVubmVsLVxcdTAwM2Vzb2NrO1xcbi1cXHRpbnQgaGVhZHJvb20sIHVobGVuLCB1ZHBfbGVuO1xcbiBcXHRpbnQgcmV0ID0gTkVUX1hNSVRfU1VDQ0VTUztcXG4gXFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcXG4gXFx0c3RydWN0IHVkcGhkciAqdWg7XFxuK1xcdGludCB1ZHBfbGVuO1xcbiBcXG4gXFx0LyogQ2hlY2sgdGhhdCB0aGVyZSdzIGVub3VnaCBoZWFkcm9vbSBpbiB0aGUgc2tiIHRvIGluc2VydCBJUCxcXG4gXFx0ICogVURQIGFuZCBMMlRQIGhlYWRlcnMuIElmIG5vdCBlbm91Z2gsIGV4cGFuZCBpdCB0b1xcbiBcXHQgKiBtYWtlIHJvb20uIEFkanVzdCB0cnVlc2l6ZS5cXG4gXFx0ICovXFxuLVxcdHVobGVuID0gKHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSA/IHNpemVvZigqdWgpIDogMDtcXG4tXFx0aGVhZHJvb20gPSBORVRfU0tCX1BBRCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWhsZW4gKyBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuO1xcbi1cXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGVhZHJvb20pKSB7XFxuK1xcdGlmIChza2JfY293X2hlYWQoc2tiLCBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCkpKSB7XFxuIFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRyZXR1cm4gTkVUX1hNSVRfRFJPUDtcXG4gXFx0fVxcbkBAIC0xMjkwLDcgKzEyODgsOSBAQCBzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVuc1xcbiBcXHRcXHR1aCA9IHVkcF9oZHIoc2tiKTtcXG4gXFx0XFx0dWgtXFx1MDAzZXNvdXJjZSA9IGluZXQtXFx1MDAzZWluZXRfc3BvcnQ7XFxuIFxcdFxcdHVoLVxcdTAwM2VkZXN0ID0gaW5ldC1cXHUwMDNlaW5ldF9kcG9ydDtcXG4tXFx0XFx0dWRwX2xlbiA9IHVobGVuICsgc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbiArIGRhdGFfbGVuO1xcbitcXG4rXFx0XFx0dWRwX2xlbiA9IGwydHBfdHVubmVsX3VkcF9oZHJsZW4odHVubmVsKTtcXG4rXFx0XFx0dWRwX2xlbiArPSBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XFxuIFxcdFxcdGlmICh1ZHBfbGVuIFxcdTAwM2UgVTE2X01BWCkge1xcbiBcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0XFx0cmV0ID0gTkVUX1hNSVRfRFJPUDtcXG5AQCAtMTY4OCw2ICsxNjg4LDcgQEAgaW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdH1cXG4gXFxuIFxcdHNrLVxcdTAwM2Vza19hbGxvY2F0aW9uID0gR0ZQX0FUT01JQztcXG4rXFx0dHVubmVsLVxcdTAwM2VsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHNrKTtcXG4gXFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gXFxuIFxcdHNvY2tfaG9sZChzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5oIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcXG5pbmRleCBmZmQ4Y2VkM2E1MWZmLi4yYzQxODc3YjZjZTU3IDEwMDY0NFxcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5oXFxuKysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmhcXG5AQCAtMTY3LDYgKzE2Nyw3IEBAIHN0cnVjdCBsMnRwX3R1bm5lbCB7XFxuIFxcdHUzMlxcdFxcdFxcdHR1bm5lbF9pZDtcXG4gXFx0dTMyXFx0XFx0XFx0cGVlcl90dW5uZWxfaWQ7XFxuIFxcdGludFxcdFxcdFxcdHZlcnNpb247XFx0LyogMj1cXHUwMDNlTDJUUHYyLCAzPVxcdTAwM2VMMlRQdjMgKi9cXG4rXFx0aW50XFx0XFx0XFx0bDNfb3ZlcmhlYWQ7XFx0LyogSVAgaGVhZGVyIG92ZXJoZWFkICovXFxuIFxcbiBcXHRjaGFyXFx0XFx0XFx0bmFtZVtMMlRQX1RVTk5FTF9OQU1FX01BWF07IC8qIGZvciBsb2dnaW5nICovXFxuIFxcdGVudW0gbDJ0cF9lbmNhcF90eXBlXFx0ZW5jYXA7XFxuQEAgLTMzNCw2ICszMzUsMjUgQEAgc3RhdGljIGlubGluZSBpbnQgbDJ0cF92M19lbnN1cmVfb3B0X2luX2xpbmVhcihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgaW50IGwydHBfdHVubmVsX3VkcF9oZHJsZW4oc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXFxuK3tcXG4rXFx0cmV0dXJuIHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQID9cXG4rXFx0XFx0c2l6ZW9mKHN0cnVjdCB1ZHBoZHIpIDogMDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxcbit7XFxuK1xcdHJldHVybiBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCkgKyBzZXNzaW9uLVxcdTAwM2VoZHJfbGVuICtcXG4rXFx0XFx0dHVubmVsLVxcdTAwM2VsM19vdmVyaGVhZDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwpXFxuK3tcXG4rXFx0cmV0dXJuIE5FVF9TS0JfUEFEICsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7XFxuK31cXG4rXFxuICNkZWZpbmUgTU9EVUxFX0FMSUFTX0wyVFBfUFdUWVBFKHR5cGUpIFxcXFxcXG4gXFx0TU9EVUxFX0FMSUFTKFxcXCJuZXQtbDJ0cC10eXBlLVxcXCIgX19zdHJpbmdpZnkodHlwZSkpXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAvbDJ0cF9ldGguY1xcbmluZGV4IGE0OTU2ZWY5NTc0Y2MuLjZmNDUxNjE4MGM5MjIgMTAwNjQ0XFxuLS0tIGEvbmV0L2wydHAvbDJ0cF9ldGguY1xcbisrKyBiL25ldC9sMnRwL2wydHBfZXRoLmNcXG5AQCAtMTg4LDIwICsxODgsOSBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7XFxuLVxcdHUzMiBsM19vdmVyaGVhZCA9IDA7XFxuIFxcdHUzMiBtdHU7XFxuIFxcbi1cXHQvKiBpZiB0aGUgZW5jYXAgaXMgVURQLCBhY2NvdW50IGZvciBVRFAgaGVhZGVyIHNpemUgKi9cXG4tXFx0aWYgKHR1bm5lbC1cXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQKSB7XFxuLVxcdFxcdG92ZXJoZWFkICs9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcXG4tXFx0XFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xcbi1cXHR9XFxuLVxcbi1cXHRsb2NrX3NvY2sodHVubmVsLVxcdTAwM2Vzb2NrKTtcXG4tXFx0bDNfb3ZlcmhlYWQgPSBrZXJuZWxfc29ja19pcF9vdmVyaGVhZCh0dW5uZWwtXFx1MDAzZXNvY2spO1xcbi1cXHRyZWxlYXNlX3NvY2sodHVubmVsLVxcdTAwM2Vzb2NrKTtcXG4tXFxuLVxcdGlmIChsM19vdmVyaGVhZCA9PSAwKSB7XFxuK1xcdGlmICh0dW5uZWwtXFx1MDAzZWwzX292ZXJoZWFkID09IDApIHtcXG4gXFx0XFx0LyogTDMgT3ZlcmhlYWQgY291bGRuJ3QgYmUgaWRlbnRpZmllZCwgdGhpcyBjb3VsZCBiZVxcbiBcXHRcXHQgKiBiZWNhdXNlIHR1bm5lbC1cXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0J3NcXG4gXFx0XFx0ICogYWRkcmVzcyBmYW1pbHkgd2FzIG5vdCBJUHY0IG9yIElQdjYsXFxuQEAgLTIwOSwxMCArMTk4LDggQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbi1cXHQvKiBBZGp1c3QgTVRVLCBmYWN0b3Igb3ZlcmhlYWQgLSB1bmRlcmxheSBMMywgb3ZlcmxheSBMMiBoZHJcXG4tXFx0ICogVURQIG92ZXJoZWFkLCBpZiBhbnksIHdhcyBhbHJlYWR5IGZhY3RvcmVkIGluIGFib3ZlLlxcbi1cXHQgKi9cXG4tXFx0b3ZlcmhlYWQgKz0gc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbiArIEVUSF9ITEVOICsgbDNfb3ZlcmhlYWQ7XFxuK1xcdC8qIENhbGN1bGF0ZSByZXF1aXJlZCBvdmVyaGVhZCAqL1xcbitcXHRvdmVyaGVhZCA9IEVUSF9ITEVOICsgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHNlc3Npb24sIHR1bm5lbCk7XFxuIFxcbiBcXHRtdHUgPSBsMnRwX3R1bm5lbF9kc3RfbXR1KHR1bm5lbCkgLSBvdmVyaGVhZDtcXG4gXFx0aWYgKG10dSBcXHUwMDNjIGRldi1cXHUwMDNlbWluX210dSB8fCBtdHUgXFx1MDAzZSBkZXYtXFx1MDAzZW1heF9tdHUpXFxuQEAgLTIyMCw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbiBcXHRlbHNlXFxuIFxcdFxcdGRldi1cXHUwMDNlbXR1ID0gbXR1O1xcbiBcXG4tXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2Vzc2lvbi1cXHUwMDNlaGRyX2xlbjtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBsMnRwX3Nlc3Npb25fc2tiX2hlYWRyb29tKHNlc3Npb24sIHR1bm5lbCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjE2OjIxLjI3MjE3MDIxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU4MDAwODU2NjE5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMMlRQXCIsXG4gICAgXCJMMlRQX1YzXCIsXG4gICAgXCJMMlRQX0VUSFwiLFxuICAgIFwiTDJUUF9JUFwiLFxuICAgIFwiUFBQT0wyVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiLFxuICAgIFwibDJ0cF94bWl0X3NrYlwiLFxuICAgIFwibDJ0cF9ldGhfY3JlYXRlXCIsXG4gICAgXCJsMnRwX2V0aF9kZXZfeG1pdFwiLFxuICAgIFwicHBwb2wydHBfc2VuZG1zZ1wiLFxuICAgIFwicHBwb2wydHBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhkYTM3MDdhYThmMGFlNjczMmEwZDk3MjlmZDcyOGMwYzcxMWFhYjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNzoxNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfY29yZS5jIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmNcbmluZGV4IDQ3MTJjYzQxODgxYTMuLmY1MmJmM2I1MzI5MDcgMTAwNjQ0XG4tLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuY1xuKysrIGIvbmV0L2wydHAvbDJ0cF9jb3JlLmNcbkBAIC0xMjI3LDE4ICsxMjI3LDE2IEBAIHN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zXG4gXHRzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCA9IHNlc3Npb24tXHUwMDNldHVubmVsO1xuIFx0dW5zaWduZWQgaW50IGRhdGFfbGVuID0gc2tiLVx1MDAzZWxlbjtcbiBcdHN0cnVjdCBzb2NrICpzayA9IHR1bm5lbC1cdTAwM2Vzb2NrO1xuLVx0aW50IGhlYWRyb29tLCB1aGxlbiwgdWRwX2xlbjtcbiBcdGludCByZXQgPSBORVRfWE1JVF9TVUNDRVNTO1xuIFx0c3RydWN0IGluZXRfc29jayAqaW5ldDtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuK1x0aW50IHVkcF9sZW47XG4gXG4gXHQvKiBDaGVjayB0aGF0IHRoZXJlJ3MgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBza2IgdG8gaW5zZXJ0IElQLFxuIFx0ICogVURQIGFuZCBMMlRQIGhlYWRlcnMuIElmIG5vdCBlbm91Z2gsIGV4cGFuZCBpdCB0b1xuIFx0ICogbWFrZSByb29tLiBBZGp1c3QgdHJ1ZXNpemUuXG4gXHQgKi9cbi1cdHVobGVuID0gKHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFApID8gc2l6ZW9mKCp1aCkgOiAwO1xuLVx0aGVhZHJvb20gPSBORVRfU0tCX1BBRCArIHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgdWhsZW4gKyBzZXNzaW9uLVx1MDAzZWhkcl9sZW47XG4tXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGVhZHJvb20pKSB7XG4rXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgbDJ0cF9zZXNzaW9uX3NrYl9oZWFkcm9vbShzZXNzaW9uLCB0dW5uZWwpKSkge1xuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5AQCAtMTI5MCw3ICsxMjg4LDkgQEAgc3RhdGljIGludCBsMnRwX3htaXRfY29yZShzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNcbiBcdFx0dWggPSB1ZHBfaGRyKHNrYik7XG4gXHRcdHVoLVx1MDAzZXNvdXJjZSA9IGluZXQtXHUwMDNlaW5ldF9zcG9ydDtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGluZXQtXHUwMDNlaW5ldF9kcG9ydDtcbi1cdFx0dWRwX2xlbiA9IHVobGVuICsgc2Vzc2lvbi1cdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XG4rXG4rXHRcdHVkcF9sZW4gPSBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCk7XG4rXHRcdHVkcF9sZW4gKz0gc2Vzc2lvbi1cdTAwM2VoZHJfbGVuICsgZGF0YV9sZW47XG4gXHRcdGlmICh1ZHBfbGVuIFx1MDAzZSBVMTZfTUFYKSB7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdFx0cmV0ID0gTkVUX1hNSVRfRFJPUDtcbkBAIC0xNjg4LDYgKzE2ODgsNyBAQCBpbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdH1cbiBcbiBcdHNrLVx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xuK1x0dHVubmVsLVx1MDAzZWwzX292ZXJoZWFkID0ga2VybmVsX3NvY2tfaXBfb3ZlcmhlYWQoc2spO1xuIFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcbiBcdHNvY2tfaG9sZChzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9jb3JlLmggYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuaW5kZXggZmZkOGNlZDNhNTFmZi4uMmM0MTg3N2I2Y2U1NyAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfY29yZS5oXG4rKysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaFxuQEAgLTE2Nyw2ICsxNjcsNyBAQCBzdHJ1Y3QgbDJ0cF90dW5uZWwge1xuIFx0dTMyXHRcdFx0dHVubmVsX2lkO1xuIFx0dTMyXHRcdFx0cGVlcl90dW5uZWxfaWQ7XG4gXHRpbnRcdFx0XHR2ZXJzaW9uO1x0LyogMj1cdTAwM2VMMlRQdjIsIDM9XHUwMDNlTDJUUHYzICovXG4rXHRpbnRcdFx0XHRsM19vdmVyaGVhZDtcdC8qIElQIGhlYWRlciBvdmVyaGVhZCAqL1xuIFxuIFx0Y2hhclx0XHRcdG5hbWVbTDJUUF9UVU5ORUxfTkFNRV9NQVhdOyAvKiBmb3IgbG9nZ2luZyAqL1xuIFx0ZW51bSBsMnRwX2VuY2FwX3R5cGVcdGVuY2FwO1xuQEAgLTMzNCw2ICszMzUsMjUgQEAgc3RhdGljIGlubGluZSBpbnQgbDJ0cF92M19lbnN1cmVfb3B0X2luX2xpbmVhcihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIGludCBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiB0dW5uZWwtXHUwMDNlZW5jYXAgPT0gTDJUUF9FTkNBUFRZUEVfVURQID9cbitcdFx0c2l6ZW9mKHN0cnVjdCB1ZHBoZHIpIDogMDtcbit9XG4rXG4rc3RhdGljIGlubGluZSBpbnQgbDJ0cF9zZXNzaW9uX292ZXJoZWFkKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXG4rXHRcdFx0XHRcdHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiBsMnRwX3R1bm5lbF91ZHBfaGRybGVuKHR1bm5lbCkgKyBzZXNzaW9uLVx1MDAzZWhkcl9sZW4gK1xuK1x0XHR0dW5uZWwtXHUwMDNlbDNfb3ZlcmhlYWQ7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgaW50IGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbixcbitcdFx0XHRcdFx0ICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsKVxuK3tcbitcdHJldHVybiBORVRfU0tCX1BBRCArIGwydHBfc2Vzc2lvbl9vdmVyaGVhZChzZXNzaW9uLCB0dW5uZWwpO1xuK31cbitcbiAjZGVmaW5lIE1PRFVMRV9BTElBU19MMlRQX1BXVFlQRSh0eXBlKSBcXFxuIFx0TU9EVUxFX0FMSUFTKFwibmV0LWwydHAtdHlwZS1cIiBfX3N0cmluZ2lmeSh0eXBlKSlcbiBcbmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2V0aC5jIGIvbmV0L2wydHAvbDJ0cF9ldGguY1xuaW5kZXggYTQ5NTZlZjk1NzRjYy4uNmY0NTE2MTgwYzkyMiAxMDA2NDRcbi0tLSBhL25ldC9sMnRwL2wydHBfZXRoLmNcbisrKyBiL25ldC9sMnRwL2wydHBfZXRoLmNcbkBAIC0xODgsMjAgKzE4OCw5IEBAIHN0YXRpYyB2b2lkIGwydHBfZXRoX2FkanVzdF9tdHUoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHVuc2lnbmVkIGludCBvdmVyaGVhZCA9IDA7XG4tXHR1MzIgbDNfb3ZlcmhlYWQgPSAwO1xuIFx0dTMyIG10dTtcbiBcbi1cdC8qIGlmIHRoZSBlbmNhcCBpcyBVRFAsIGFjY291bnQgZm9yIFVEUCBoZWFkZXIgc2l6ZSAqL1xuLVx0aWYgKHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFApIHtcbi1cdFx0b3ZlcmhlYWQgKz0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpO1xuLVx0XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tICs9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbi1cdH1cbi1cbi1cdGxvY2tfc29jayh0dW5uZWwtXHUwMDNlc29jayk7XG4tXHRsM19vdmVyaGVhZCA9IGtlcm5lbF9zb2NrX2lwX292ZXJoZWFkKHR1bm5lbC1cdTAwM2Vzb2NrKTtcbi1cdHJlbGVhc2Vfc29jayh0dW5uZWwtXHUwMDNlc29jayk7XG4tXG4tXHRpZiAobDNfb3ZlcmhlYWQgPT0gMCkge1xuK1x0aWYgKHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZCA9PSAwKSB7XG4gXHRcdC8qIEwzIE92ZXJoZWFkIGNvdWxkbid0IGJlIGlkZW50aWZpZWQsIHRoaXMgY291bGQgYmVcbiBcdFx0ICogYmVjYXVzZSB0dW5uZWwtXHUwMDNlc29jayB3YXMgTlVMTCBvciB0aGUgc29ja2V0J3NcbiBcdFx0ICogYWRkcmVzcyBmYW1pbHkgd2FzIG5vdCBJUHY0IG9yIElQdjYsXG5AQCAtMjA5LDEwICsxOTgsOCBAQCBzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuO1xuIFx0fVxuLVx0LyogQWRqdXN0IE1UVSwgZmFjdG9yIG92ZXJoZWFkIC0gdW5kZXJsYXkgTDMsIG92ZXJsYXkgTDIgaGRyXG4tXHQgKiBVRFAgb3ZlcmhlYWQsIGlmIGFueSwgd2FzIGFscmVhZHkgZmFjdG9yZWQgaW4gYWJvdmUuXG4tXHQgKi9cbi1cdG92ZXJoZWFkICs9IHNlc3Npb24tXHUwMDNlaGRyX2xlbiArIEVUSF9ITEVOICsgbDNfb3ZlcmhlYWQ7XG4rXHQvKiBDYWxjdWxhdGUgcmVxdWlyZWQgb3ZlcmhlYWQgKi9cbitcdG92ZXJoZWFkID0gRVRIX0hMRU4gKyBsMnRwX3Nlc3Npb25fb3ZlcmhlYWQoc2Vzc2lvbiwgdHVubmVsKTtcbiBcbiBcdG10dSA9IGwydHBfdHVubmVsX2RzdF9tdHUodHVubmVsKSAtIG92ZXJoZWFkO1xuIFx0aWYgKG10dSBcdTAwM2MgZGV2LVx1MDAzZW1pbl9tdHUgfHwgbXR1IFx1MDAzZSBkZXYtXHUwMDNlbWF4X210dSlcbkBAIC0yMjAsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiBcdGVsc2VcbiBcdFx0ZGV2LVx1MDAzZW10dSA9IG10dTtcbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gKz0gc2Vzc2lvbi1cdTAwM2VoZHJfbGVuO1xuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IGwydHBfc2Vzc2lvbl9za2JfaGVhZHJvb20oc2Vzc2lvbiwgdHVubmVsKTtcbiB9XG4gXG4gc3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjE2OjIxLjI3MjE3MTY2OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTg3Nzg4ODQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEwyVFAgU3Vic3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCwgYG5ldC9sMnRwL2wydHBfY29yZS5oYCwgYW5kIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBob3cgTDJUUCBvdmVyaGVhZCBhbmQgaGVhZHJvb20gYXJlIGhhbmRsZWQuIEl0IHNlZW1zIHRoZXkncmUgY2FsY3VsYXRpbmcgaXQgY29ycmVjdGx5IG5vdywgd2hpY2ggaXMgYSBnb29kIHN0YXJ0LiBJIHNlZSB0aGV5J3JlIGNhY2hpbmcgdGhlIGBsM19vdmVyaGVhZGAgdmFsdWUgaW4gdGhlIGBzdHJ1Y3QgbDJ0cF90dW5uZWxgIGR1cmluZyBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbnNpc3RlbmN5LiBUaGV5J3JlIHRoZW4gdXNpbmcgdGhhdCBjYWNoZWQgdmFsdWUgaW4gYGwydHBfZXRoX2FkanVzdF9tdHVgIGFuZCBgbDJ0cF94bWl0X2NvcmVgLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIGZsb3cuXG5cbk5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBrbm9icyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSdsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGluc3RhbmNlcyBvZiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgIGFuZCBgbDJ0cF9ldGhfY3JlYXRlYCBpbiBLY29uZmlnIGZpbGVzIG9yIE1ha2VmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjoxMS4xNTAwNjM5ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNzk3MTc0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xNjEzPXN0YXRpYyBpbnQgbDJ0cF92YWxpZGF0ZV9zb2NrZXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xNjQyLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjE2NDM6aW50IGwydHBfdHVubmVsX3JlZ2lzdGVyKHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTY0NC1cXHRcXHRcXHQgc3RydWN0IGwydHBfdHVubmVsX2NmZyAqY2ZnKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMC19XFxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTcyMTpFWFBPUlRfU1lNQk9MX0dQTChsMnRwX3R1bm5lbF9yZWdpc3Rlcik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTcyMi1cXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5oPTIzNj1pbnQgbDJ0cF90dW5uZWxfY3JlYXRlKGludCBmZCwgaW50IHZlcnNpb24sIHUzMiB0dW5uZWxfaWQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yMzgtXFx0XFx0ICAgICAgIHN0cnVjdCBsMnRwX3R1bm5lbCAqKnR1bm5lbHApO1xcbm5ldC9sMnRwL2wydHBfY29yZS5oOjIzOTppbnQgbDJ0cF90dW5uZWxfcmVnaXN0ZXIoc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsIHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yNDAtXFx0XFx0XFx0IHN0cnVjdCBsMnRwX3R1bm5lbF9jZmcgKmNmZyk7XFxuLS1cXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYz0xODU9c3RhdGljIGludCBsMnRwX25sX2NtZF90dW5uZWxfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDUtXFx0cmVmY291bnRfaW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXJlZl9jb3VudCk7XFxubmV0L2wydHAvbDJ0cF9uZXRsaW5rLmM6MjQ2OlxcdHJldCA9IGwydHBfdHVubmVsX3JlZ2lzdGVyKHR1bm5lbCwgbmV0LCBcXHUwMDI2Y2ZnKTtcXG5uZXQvbDJ0cC9sMnRwX25ldGxpbmsuYy0yNDctXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9NjI3PXN0YXRpYyBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnBwcG9sMnRwX3R1bm5lbF9nZXQoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy02NDctXFxubmV0L2wydHAvbDJ0cF9wcHAuYzo2NDg6XFx0XFx0XFx0LyogUHJldmVudCBsMnRwX3R1bm5lbF9yZWdpc3RlcigpIGZyb20gdHJ5aW5nIHRvIHNldCB1cFxcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjQ5LVxcdFxcdFxcdCAqIGEga2VybmVsIHNvY2tldC5cXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtNjYyLVxcdFxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dHVubmVsLVxcdTAwM2VyZWZfY291bnQpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6NjYzOlxcdFxcdFxcdGVycm9yID0gbDJ0cF90dW5uZWxfcmVnaXN0ZXIodHVubmVsLCBuZXQsIFxcdTAwMjZ0Y2ZnKTtcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTY2NC1cXHRcXHRcXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjEzLjM1ODA0MjAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzU4MDM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTDJUUCBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgTDJUUC5cIiBXZSBhbGwga25vdyB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0gY2FuIGJlIGEgbGFieXJpbnRoLCBidXQgaXQncyB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCB0aGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCB2YWx1ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIHdoYXQncyBkZXBlbmRlbnQgb24gd2hhdCwgZXNwZWNpYWxseSBnaXZlbiB0aGUga2VybmVsIHZlcnNpb24gYW5kIGFueSByZWxldmFudCBtb2R1bGVzIEknbSB3b3JraW5nIHdpdGguIEl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGdyYXNwIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyBhbmQgYXZvaWQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSeKAmW0gdGhpbmtpbmcsIOKAnFdoYXQgYXJlIHRoZSBrZXkgTDJUUCBmZWF0dXJlcyBiZWluZyBjb25zaWRlcmVkIGF0IHRoaXMgc3RhZ2U/IEFuZCB3aGF0IGFib3V0IHRoZSByZWxhdGVkIHByb3RvY29scywgbGlrZSBVRFAgZW5jYXBzdWxhdGlvbj9cIiBJIHdhbnQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBydW50aW1lIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDE1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6MTYuNzMzODQ4NzM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTc2NDUwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEwyVFBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvS2NvbmZpZy01LVxcbm5ldC9sMnRwL0tjb25maWc6NjptZW51Y29uZmlnIEwyVFBcXG5uZXQvbDJ0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkxheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2wgKEwyVFApXFxcIlxcbi0tXFxubmV0L2wydHAvS2NvbmZpZy0zNS1cXG5uZXQvbDJ0cC9LY29uZmlnOjM2OmNvbmZpZyBMMlRQX0RFQlVHRlNcXG5uZXQvbDJ0cC9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJMMlRQIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctNDgtXFxubmV0L2wydHAvS2NvbmZpZzo0OTpjb25maWcgTDJUUF9WM1xcbm5ldC9sMnRwL0tjb25maWctNTAtXFx0Ym9vbCBcXFwiTDJUUHYzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbDJ0cC9LY29uZmlnLTY5LVxcbm5ldC9sMnRwL0tjb25maWc6NzA6Y29uZmlnIEwyVFBfSVBcXG5uZXQvbDJ0cC9LY29uZmlnLTcxLVxcdHRyaXN0YXRlIFxcXCJMMlRQIElQIGVuY2Fwc3VsYXRpb24gZm9yIEwyVFB2M1xcXCJcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctODYtXFxubmV0L2wydHAvS2NvbmZpZzo4Nzpjb25maWcgTDJUUF9FVEhcXG5uZXQvbDJ0cC9LY29uZmlnLTg4LVxcdHRyaXN0YXRlIFxcXCJMMlRQIGV0aGVybmV0IHBzZXVkb3dpcmUgc3VwcG9ydCBmb3IgTDJUUHYzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjoxOS4wOTE1MDMzNDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzk3MDA5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9sMnRwL2wydHBfY29yZS5jYCBhbmQgYG5ldC9sMnRwL2wydHBfZXRoLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoYXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIGBMMlRQYCBhbmQsIHNwZWNpZmljYWxseSwgYEwyVFBfRVRIYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBkb2VzIGBMMlRQX0VUSGAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzPyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTDJUUF9WM2AgYmVpbmcgcG90ZW50aWFsbHkgaW52b2x2ZWQuIFRvIGJlIGNlcnRhaW4sIEkgc2hvdWxkIGNoZWNrIHRoZSBgbmV0L2wydHAvS2NvbmZpZ2AgZmlsZS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU1NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI0LjQ4ODUxNjQzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sMnRwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ICB3aGVuIFVEUCBlbmNhcHN1bGF0aW9uIGlzIG5vdCByZXF1aXJlZC4gV2hlbiBMMlRQIGlzIGNhcnJpZWRcXG4gIDgxOlxcdFxcdCAgaW4gSVAgcGFja2V0cywgaXQgdXNlZCBJUCBwcm90b2NvbCBudW1iZXIgMTE1LCBzbyB0aGlzIHBvcnRcXG4gIDgyOlxcdFxcdCAgbXVzdCBiZSBlbmFibGVkIGluIGZpcmV3YWxscy5cXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA4NTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGwydHBfaXAuXFxuICA4NjpcXHRcXG4gIDg3OlxcdGNvbmZpZyBMMlRQX0VUSFxcbiAgODg6XFx0XFx0dHJpc3RhdGUgXFxcIkwyVFAgZXRoZXJuZXQgcHNldWRvd2lyZSBzdXBwb3J0IGZvciBMMlRQdjNcXFwiXFxuICA4OTpcXHRcXHRkZXBlbmRzIG9uIEwyVFBfVjNcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2FycnlpbmcgcmF3IGV0aGVybmV0IGZyYW1lcyBvdmVyIEwyVFB2My5cXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0ICBGcm9tIFJGQyA0NzE5IFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0NzE5LnR4dFxcdTAwM2UuXFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdCAgVGhlIExheWVyIDIgVHVubmVsaW5nIFByb3RvY29sLCBWZXJzaW9uIDMgKEwyVFB2MykgY2FuIGJlXFxuICA5NjpcXHRcXHQgIHVzZWQgYXMgYSBjb250cm9sIHByb3RvY29sIGFuZCBmb3IgZGF0YSBlbmNhcHN1bGF0aW9uIHRvIHNldFxcbiAgOTc6XFx0XFx0ICB1cCBQc2V1ZG93aXJlcyBmb3IgdHJhbnNwb3J0aW5nIGxheWVyIDIgUGFja2V0IERhdGEgVW5pdHNcXG4gIDk4OlxcdFxcdCAgYWNyb3NzIGFuIElQIG5ldHdvcmsgW1JGQzM5MzFdLlxcbiAgOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI0LjQ4ODYwMzk0N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTI2OTg4MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMMlRQIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTDJUUGAsIGBMMlRQX1YzYCwgYW5kIGBMMlRQX0VUSGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGNoYW5nZWQuIFRoZSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gd2hpY2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBtb2RpZmllZCB3aXRoaW4gdGhlIGNvZGViYXNlLlxuXG5NeSBpbml0aWFsIHNjYW4gc2hvd3MgY2hhbmdlcyBpbiB0aGVzZTpcblxuKiAgIGBsMnRwX3htaXRfY29yZWAgbG9jYXRlZCBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUaGlzIGlzIGtleTsgYW55IGNoYW5nZXMgdG8gdGhlIGNvcmUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFyZSBzaWduaWZpY2FudCBhbmQgd291bGQgYWZmZWN0IGhvdyBwYWNrZXRzIGFyZSBoYW5kbGVkLlxuKiAgIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgYWxzbyBpbiBgbmV0L2wydHAvbDJ0cF9jb3JlLmNgLiBUdW5uZWwgcmVnaXN0cmF0aW9uIGlzIG9idmlvdXNseSBpbXBvcnRhbnQgZm9yIEwyVFAncyBvcGVyYXRpb24uXG4qICAgYGwydHBfZXRoX2FkanVzdF9tdHVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gTVRVIGFkanVzdG1lbnRzIGFyZSBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGNvbXBhdGliaWxpdHkgb24gRXRoZXJuZXQgbGlua3MuXG4qICAgQW5kIGZpbmFsbHksIGBsMnRwX2V0aF9jcmVhdGVgIGluIGBuZXQvbDJ0cC9sMnRwX2V0aC5jYC4gVGhlIGNvbnRleHQgb2YgdGhlIGRpZmYgZG9lcyBpbmRpY2F0ZSB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGhhdmUgYmVlbiBjaGFuZ2VkLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGRpZmYgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjI4LjUwMTMwNjIwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MDcwNzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX2V0aF9jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvbDJ0cF9ldGguYz0xODY9c3RhdGljIHZvaWQgbDJ0cF9ldGhfYWRqdXN0X210dShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjEyLVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MjEzOnN0YXRpYyBpbnQgbDJ0cF9ldGhfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGwydHBfdHVubmVsICp0dW5uZWwsXFxubmV0L2wydHAvbDJ0cF9ldGguYy0yMTQtXFx0XFx0XFx0ICAgdTMyIHNlc3Npb25faWQsIHUzMiBwZWVyX3Nlc3Npb25faWQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGwydHBfbmxfY21kX29wcyBsMnRwX2V0aF9ubF9jbWRfb3BzID0ge1xcbm5ldC9sMnRwL2wydHBfZXRoLmM6MzA3OlxcdC5zZXNzaW9uX2NyZWF0ZVxcdD0gbDJ0cF9ldGhfY3JlYXRlLFxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMzA4LVxcdC5zZXNzaW9uX2RlbGV0ZVxcdD0gbDJ0cF9zZXNzaW9uX2RlbGV0ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6MzAuNzcyMDIwMDU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4OTI2NDUyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBMMlRQIEV0aGVybmV0IE1UVSBJc3N1ZSoqXG5cbkFscmlnaHQsIHRoZSBkaWZmIGNvbnRleHQgbWVudGlvbnMgYGwydHBfZXRoX2NyZWF0ZWAg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCB0aGUgYWN0dWFsICpwYXRjaCogbW9kaWZpZXMgYGwydHBfZXRoX2FkanVzdF9tdHVgLiBIbW0sIHRoYXQgcmFpc2VzIGEgZmxhZy4gV2h5IGFkanVzdCB0aGUgTVRVIGlmIHdlJ3JlIGFwcGFyZW50bHkgY3JlYXRpbmcgYSBuZXcgaW50ZXJmYWNlPyBBcmUgd2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBpc29sYXRlZD8gQ291bGQgdGhpcyBhZGp1c3RtZW50IGhhdmUgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIG9yIGlzIHRoZXJlIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlIHNvbWV3aGVyZT9cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgYGwydHBfZXRoX2FkanVzdF9tdHVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgKmNhbGxlcnMqLiBJIG5lZWQgdG8gc2VlICp3aG8qIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbmQgKndoZW4qLiBLbm93aW5nIHRoZSBjYWxsIHBhdGhzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGNvbnRleHQgYW5kIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyB0YXJnZXRlZCwgb3IgcG90ZW50aWFsbHkgaW1wYWN0aW5nIG90aGVyIG1vZHVsZXMuIElzIHRoaXMgYWRqdXN0IGZ1bmN0aW9uIHBhcnQgb2YgdGhlIGludGVyZmFjZSBicmluZy11cCwgbW9kaWZpY2F0aW9uLCBvciB0ZWFyZG93biBzZXF1ZW5jZT8gS25vd2luZyB0aGUgY2FsbGluZyBjb2RlIHdpbGwgdGVsbCBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg3OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjM4LjY2NDY3MTI1NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3NjYyMTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsMnRwX2V0aF9hZGp1c3RfbXR1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sMnRwL2wydHBfZXRoLmM9MTY2PXN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTE4NS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jOjE4NjpzdGF0aWMgdm9pZCBsMnRwX2V0aF9hZGp1c3RfbXR1KHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMTg3LVxcdFxcdFxcdFxcdHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2V0aC5jPTIxMz1zdGF0aWMgaW50IGwydHBfZXRoX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBsMnRwX3R1bm5lbCAqdHVubmVsLFxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYy0yNDktXFx0ZGV2LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxubmV0L2wydHAvbDJ0cF9ldGguYzoyNTA6XFx0bDJ0cF9ldGhfYWRqdXN0X210dSh0dW5uZWwsIHNlc3Npb24sIGRldik7XFxubmV0L2wydHAvbDJ0cF9ldGguYy0yNTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjQwLjk0MTI5ODg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTk3MjUyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBjb2RlIHNuaXBwZXRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGEgc2Vhc29uZWQgbmV0d29yayBlbmdpbmVlcjpcblxuKipNeSBVbmRlcnN0YW5kaW5nIG9mIHRoZSBMMlRQIEV0aGVybmV0IE1UVSBhbmQgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5SaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIGBsMnRwX2V0aF9hZGp1c3RfbXR1YCBpcyBsaWtlbHkgYSBjcnVjaWFsIGZ1bmN0aW9uIGNhbGxlZCByaWdodCB3aGVuIGFuIEwyVFAgdHVubmVsIGlzIGJlaW5nIGVzdGFibGlzaGVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBsMnRwX2V0aF9jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIGl0J3MgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoZSBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0IChNVFUpIG9mIHRoZSB1bmRlcmx5aW5nIEV0aGVybmV0IGludGVyZmFjZSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciBpbiB0aGUgTDJUUCB0dW5uZWwncyBjb25maWd1cmF0aW9uLiBJdCdzIHRoZSBmaXJzdCBsaW5lIG9mIGRlZmVuc2UgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMgbGF0ZXIgb24sIGVuc3VyaW5nIHRoZSB0dW5uZWwncyBwYXlsb2FkIGZpdHMgdGhlIEV0aGVybmV0IGZyYW1lIHNpemUuIFNtYXJ0LCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gcHJldmVudCBoZWFkYWNoZXMuXG5cblRoZW4gd2UgaGF2ZSBgbDJ0cF94bWl0X2NvcmVgLCBpdCdzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBsMnRwX3htaXRfc2tiYC4gU28sIHRoaXMgYGwydHBfeG1pdF9jb3JlYCBhcHBlYXJzIHRvIGJlIHRoZSBjb3JlLCB0aGUgZW5naW5lIG9mIHRoZSBMMlRQIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGUgYGwydHBfeG1pdF9za2JgIHdyYXBwZXIgcHJvYmFibHkgZG9lcyBzb21lIHByZXAgd29yaywgbWF5YmUgcGFja2V0IGFzc2VtYmx5IG9yIGhlYWRlciBhZGp1c3RtZW50cywgYmVmb3JlIGhhbmRpbmcgb2ZmIHRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIHRvIGBsMnRwX3htaXRfY29yZWAuIEknbSBndWVzc2luZyBgbDJ0cF94bWl0X2NvcmVgIGhhbmRsZXMgdGhpbmdzIGxpa2UgZW5jYXBzdWxhdGlvbiwgaGVhZGVyIGZvcm1hdHRpbmcsIGNoZWNrc3VtIGNhbGN1bGF0aW9ucywgYW5kIHVsdGltYXRlbHksIGdldHRpbmcgdGhlIHBhY2tldCBvbnRvIHRoZSB3aXJlLiBFZmZpY2llbnQgZGVzaWduLiBJdCdzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJuczogcHJlcGFyZSB0aGUgcGFja2V0LCB0aGVuIHNlbmQgdGhlIHBhY2tldCwgdGhhdCdzIHRoZSBsaWtlbHkgZmxvdyBoZXJlLiBJJ20gc3RhcnRpbmcgdG8gcHV0IHRoZSBwaWVjZXMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NTAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjo0Ny4wMDEwMjcxOTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ2MzYxMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF94bWl0X2NvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2wydHAvbDJ0cF9jb3JlLmM9MTIwOT1zdGF0aWMgaW50IGwydHBfeG1pdF9xdWV1ZShzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpICpmbClcXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjQtXFxubmV0L2wydHAvbDJ0cF9jb3JlLmM6MTIyNTpzdGF0aWMgaW50IGwydHBfeG1pdF9jb3JlKHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqbGVuKVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEyMjYte1xcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmM9MTMyOD1pbnQgbDJ0cF94bWl0X3NrYihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzMi1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYzoxMzMzOlxcdHJldCA9IGwydHBfeG1pdF9jb3JlKHNlc3Npb24sIHNrYiwgXFx1MDAyNmxlbik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTMzNC1cXHRpZiAocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjI6NDkuMjg1NjY3OTY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDgxMjkxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHlvdSBkZXNjcmliZWQ6XG5cbioqTDJUUCBQYWNrZXQgVHJhbnNtaXNzaW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEwyVFAgcGFja2V0cyBhcmUgaGFuZGxlZCBhdCB0aGUga2VybmVsIGxldmVsLiBTcGVjaWZpY2FsbHksIGBsMnRwX3htaXRfc2tiYC4gSXQncyBhIGtleSBmdW5jdGlvbiwgYXMgaXQncyBleHBvcnRlZCBhbmQsIGltcG9ydGFudGx5LCAqdXNlZCogYnkgYSBjb3VwbGUgb2YgY3JpdGljYWwgbW9kdWxlczogYGwydHBfZXRoLmNgIGFuZCBgbDJ0cF9wcHAuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCBgbDJ0cF94bWl0X3NrYmAgaXMgdGhlIGNvcmUgbWVjaGFuaXNtIGZvciBhY3R1YWxseSBzZW5kaW5nIG91dCBMMlRQIHRyYWZmaWMsIHdoZXRoZXIgaXQncyBlbmNhcHN1bGF0ZWQgRXRoZXJuZXQgZnJhbWVzIG9yIFBvaW50LXRvLVBvaW50IFByb3RvY29sIGRhdGEuIEknbGwgbmVlZCB0byBkaWcgaW50byBob3cgaXQncyBjYWxsZWQgd2l0aGluIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IHRoaXMgZXhwb3J0IGFuZCB1c2FnZSBwYXR0ZXJuIHBvaW50cyB0byBpdHMgZnVuZGFtZW50YWwgcm9sZS4gVW5kZXJzdGFuZGluZyBpdHMgbG9naWMgaXMgZ29pbmcgdG8gYmUgZXNzZW50aWFsIGZvciB0cm91Ymxlc2hvb3RpbmcgYW55IHRyYW5zbWlzc2lvbiBpc3N1ZXMgb3Igb3B0aW1pemluZyBMMlRQIHBlcmZvcm1hbmNlIHdpdGhpbiB0aGUgc3RhY2suIEl0IHdpbGwgYWxsb3cgYSBjb21wbGV0ZSBjb21wcmVoZW5zaW9uIG9mIHRoZSBjb21wbGV0ZSBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMjo1Mi43OTM4MDAyNzVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzU0MDM3NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF94bWl0X3NrYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2NvcmUuYz0xMjI1PXN0YXRpYyBpbnQgbDJ0cF94bWl0X2NvcmUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpsZW4pXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzI3LSAqL1xcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzMjg6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuYy0xMzI5LXtcXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5jLTEzNDQtfVxcbm5ldC9sMnRwL2wydHBfY29yZS5jOjEzNDU6RVhQT1JUX1NZTUJPTF9HUEwobDJ0cF94bWl0X3NrYik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmMtMTM0Ni1cXG4tLVxcbm5ldC9sMnRwL2wydHBfY29yZS5oPTI2MT12b2lkIGwydHBfc2Vzc2lvbl9zZXRfaGVhZGVyX2xlbihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBpbnQgdmVyc2lvbixcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaC0yNjItXFx0XFx0XFx0XFx0IGVudW0gbDJ0cF9lbmNhcF90eXBlIGVuY2FwKTtcXG5uZXQvbDJ0cC9sMnRwX2NvcmUuaDoyNjM6aW50IGwydHBfeG1pdF9za2Ioc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L2wydHAvbDJ0cF9jb3JlLmgtMjY0LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz03MD1zdGF0aWMgbmV0ZGV2X3R4X3QgbDJ0cF9ldGhfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtNzQtXFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbm5ldC9sMnRwL2wydHBfZXRoLmM6NzU6XFx0aW50IHJldCA9IGwydHBfeG1pdF9za2Ioc2Vzc2lvbiwgc2tiKTtcXG5uZXQvbDJ0cC9sMnRwX2V0aC5jLTc2LVxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0yNTA9c3RhdGljIGludCBwcHBvbDJ0cF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMwMi1cXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxubmV0L2wydHAvbDJ0cF9wcHAuYzozMDM6XFx0bDJ0cF94bWl0X3NrYihzZXNzaW9uLCBza2IpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzA0LVxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0zMzA9c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzYxLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjM2MjpcXHRsMnRwX3htaXRfc2tiKHNlc3Npb24sIHNrYik7XFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zNjMtXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIyOjU1LjEyOTIwOTY1OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE4MzMyMDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBMMlRQIFBhY2tldCBGbG93KipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gTDJUUCBwYWNrZXQgaGFuZGxpbmcuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcsIGdpdmVuIG15IGV4cGVyaWVuY2UsIHBvaW50cyB0byB0aGVzZSBhcyBjb3JlOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfeG1pdF9za2JgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuXG5cbk5vdywgdXBvbiBjbG9zZXIgY29uc2lkZXJhdGlvbiwgYGwydHBfZXRoX2Rldl94bWl0YCBhbmQgYHBwcG9sMnRwX3htaXRgIHJlYWxseSBzdGFuZCBvdXQgYXMgcHJvbWlzaW5nIGVudHJ5IHBvaW50cyBpbnRvIHRoZSB0cmFuc21pc3Npb24gcHJvY2Vzcy4gRGVmaW5pdGVseSBtYXJraW5nIHRob3NlIGZvciBjbG9zZXIgaW5zcGVjdGlvbi4gYGwydHBfdHVubmVsX3JlZ2lzdGVyYCBpcyBhbHNvIGEgY3JpdGljYWwgY29tcG9uZW50LCBzbyB0aGF0IGFsc28uXG5cbkknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGBMMlRQX1BQUGAsIHNpbmNlIGBwcHBvbDJ0cF9zZW5kbXNnYCBzdWdnZXN0cyBhIFBQUCBpbnZvbHZlbWVudC4gUmlnaHQsIGxldCdzIGhlYWQgb3ZlciB0byBgbmV0L2wydHAvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDAuMTQ3NTUzODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY1ODU4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBMMlRQX1BQUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDIuMTc0MTUxOTM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzEwODQyODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSHlwb3RoZXNpcyBGb3JtdWxhdGlvbjogUG90ZW50aWFsIEFjcm9ueW0gSWRlbnRpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciB3aGV0aGVyIFwiUFBQT0wyVFBcIiBjb3VsZCByZXByZXNlbnQgYW4gYWNyb255bSBvciBpbml0aWFsaXNtLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCBwb3NzaWJsZSBmcmFtZXdvcmtzIG9yIGRhdGEgbW9kZWxzIHRoYXQgdXNlIHN1Y2ggY29uY2lzZSwgcG90ZW50aWFsbHkgbmVzdGVkLCByZXByZXNlbnRhdGlvbnMuIEknbSBpbXBsaWNpdGx5IGNvbnNpZGVyaW5nIHRoZSBsaWtlbHkgc3RydWN0dXJlIC0gdGhyZWUgUHMsIGZvbGxvd2VkIGJ5IGFuIE8gYW5kIGFuIEwsIGEgMiwgYW5kIGZpbmFsbHkgYSBUIGFuZCBhIFAuIFRoZSBudW1lcmljIGNoYXJhY3RlciBjb3VsZCBpbmRpY2F0ZSBhIHZlcnNpb24sIG9yIGEgZ3JvdXBpbmcgZWxlbWVudDsgaXQgYWxsIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIGluZHVzdHJ5LiBNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gc3RhcnQgYnJhaW5zdG9ybWluZyBsaWtlbHkgZmllbGRzIG9yIGRvbWFpbnMgaW4gd2hpY2ggc3VjaCBhIHJlcHJlc2VudGF0aW9uIG1pZ2h0IGJlIGVtcGxveWVkLCBwZXJoYXBzIHN0YXJ0aW5nIHdpdGggc29tZSBvZiB0aGUgbW9yZSBjb21tb24sIG9yIG15IHN0cm9uZ2VzdCwgZG9tYWlucyBvZiBleHBlcnRpc2UuIFRoZSBicmV2aXR5IG9mIHRoZSBzdHJpbmcgc3VnZ2VzdHMgaXQgY291bGQgYmUgYW4gaW50ZXJuYWwgZGVzaWduYXRpb24gb3Igc29tZXRoaW5nIHNwZWNpZmljIHRvIGEgc2luZ2xlIG9yZ2FuaXphdGlvbi4gSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMzowNi4yNDUyMzg5MjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDY4ODY0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBQUE9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9OTI9Y29uZmlnIFBQUF9NVUxUSUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMDQ6Y29uZmlnIFBQUE9BVE1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEFUTVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExNjpjb25maWcgUFBQT0VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTctXFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEV0aGVybmV0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTI3PWNob2ljZVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEzOTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiMSBiaXQgKDIgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0Mjpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiMiBiaXRzICg0IGJ1Y2tldHMpXFxcIlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNDU6Y29uZmlnIFBQUE9FX0hBU0hfQklUU180XFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ2LVxcdGJvb2wgXFxcIjQgYml0cyAoMTYgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0ODpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDktXFx0Ym9vbCBcXFwiOCBiaXRzICgyNTYgYnVja2V0cylcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTE9ZW5kY2hvaWNlXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTYxPWNvbmZpZyBQUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTczOmNvbmZpZyBQUFBPTDJUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MDguMzkyMTMxNjExWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjc3MDgyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkwyVFAgTW9kdWxlIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBQUFBPTDJUUGAuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGF0J3MgcHV0IHRvZ2V0aGVyLiBUaW1lIHRvIGNoZWNrIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGF0IHRoaW5nLiBPa2F5LCBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGBuZXQvbDJ0cC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIHJldmVhbCBleGFjdGx5IHdoaWNoIGJ1aWxkIHRhcmdldHMgaW5jb3Jwb3JhdGUgYGwydHBfcHBwLmNgLiBObyBuZWVkIHRvIGd1ZXNzLCBsZXQncyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbG9vayBsaWtlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHJ1bGVzIHRoYXQgZ2VuZXJhdGUgdGhlIG9iamVjdCBmaWxlcy4gVGhpcyBpcyBnb2luZyB0byBiZSBxdWljay4gSSdsbCBmb2N1cyBvbiB0aGUgcHBwIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyMzoxNC43NTk4NDIwMTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODgyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wydHAvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUgTDJUUC5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0b2JqLSQoQ09ORklHX0wyVFApICs9IGwydHBfY29yZS5vXFxuICAgNzpcXHRcXG4gICA4OlxcdENGTEFHU19sMnRwX2NvcmUubyArPSAtSSQoc3JjKVxcbiAgIDk6XFx0XFxuICAxMDpcXHQjIEJ1aWxkIGwydHAgYXMgbW9kdWxlcyBpZiBMMlRQIGlzIE1cXG4gIDExOlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfUFBQT0wyVFApKSArPSBsMnRwX3BwcC5vXFxuICAxMjpcXHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfSVApKSArPSBsMnRwX2lwLm9cXG4gIDEzOlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9WMykpICs9IGwydHBfbmV0bGluay5vXFxuICAxNDpcXHRvYmotJChzdWJzdCB5LCQoQ09ORklHX0wyVFApLCQoQ09ORklHX0wyVFBfRVRIKSkgKz0gbDJ0cF9ldGgub1xcbiAgMTU6XFx0b2JqLSQoc3Vic3QgeSwkKENPTkZJR19MMlRQKSwkKENPTkZJR19MMlRQX0RFQlVHRlMpKSArPSBsMnRwX2RlYnVnZnMub1xcbiAgMTY6XFx0aWZuZXEgKCQoQ09ORklHX0lQVjYpLClcXG4gIDE3OlxcdG9iai0kKHN1YnN0IHksJChDT05GSUdfTDJUUCksJChDT05GSUdfTDJUUF9JUCkpICs9IGwydHBfaXA2Lm9cXG4gIDE4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIzOjE0Ljc1OTkzMTk3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzE2NDUzNDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEwyVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gTDJUUC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNhdGVnb3JpemUgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgTDJUUGAsIGBMMlRQX1YzYCwgYEwyVFBfRVRIYCwgYW5kIGBQUFBPTDJUUGAuIFRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgYGwydHBfY29yZS5jYCBhbmQgYGwydHBfZXRoLmNgLlxuXG5NeSBwcmltYXJ5IGludGVyZXN0IGxpZXMgaW4gdGhlc2UgZnVuY3Rpb25zOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfeG1pdF9za2JgLCBhbmQgYGwydHBfZXRoX2Rldl94bWl0YC4gTGV0J3MgZGlnIGludG8gZWFjaCBvZiB0aGVzZS5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAuIEdvb2QsIGl0J3MgZXhwb3J0ZWQsIHNvIHRoYXQncyBhY2Nlc3NpYmxlLiBOZXh0LCBgbDJ0cF9ldGhfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIGJ1dCBpdCdzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYC4gUmlnaHQsIHNvIHRoYXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHdoaWNoIGlzIGVzc2VudGlhbGx5IGFuIGVudHJ5IHBvaW50LiBgbDJ0cF94bWl0X3NrYmAgaXMgYWxzbyBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZCB0byBzZWUsIHNvIGl0J3MgZ2xvYmFsbHkgdmlzaWJsZS4gYGwydHBfZXRoX2Rldl94bWl0YCBpcyBzdGF0aWMsIGJ1dCBjcnVjaWFsbHksIGl0J3MgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBTbywgdGhhdCBtYWtlcyBpdCBhIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiwgYW5kIGFub3RoZXIgcG90ZW50aWFsIGVudHJ5IHBvaW50LiBPaCwgYW5kIEkgc2VlIGBsMnRwX3htaXRfY29yZWAgYnV0IGl0J3Mgc3RhdGljLCBzbyBsaWtlbHkgbm90IGRpcmVjdGx5IHJlbGV2YW50LlxuXG5TbyBub3cgdGhhdCBJJ3ZlIHJldmlld2VkIHRoZSB2aXNpYmlsaXR5LCBJIGtub3cgdGhhdCBteSBrZXkgc3ltYm9scyB3aWxsIGJlIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAsIGBsMnRwX3htaXRfc2tiYCwgYGwydHBfZXRoX2NyZWF0ZWAgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAuXG5cbkhhbmcgb24sIGxldCdzIGp1c3QgbWFrZSBzdXJlIEkndmUgZ290IHRoaXMgcmlnaHQuIEV2ZW4gdGhvdWdoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIHN0YXRpYywgaXQncyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0J3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGludGVyZXN0IGZvciBpbnRlcmFjdGlvbi4gQW5kIHRoZSBzYW1lIGdvZXMgZm9yIGBsMnRwX2V0aF9kZXZfeG1pdGAsIGJlY2F1c2UgaXQncyBhbiBuZG8gY2FsbGJhY2sgYW5kIGFjdHMgYXMgYW4gZW50cnkgcG9pbnQgYXMgd2VsbC4gT2theSwgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAgaXMgaW5kZWVkIGV4cG9ydGVkOyBjaGVja2VkIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKGwydHBfdHVubmVsX3JlZ2lzdGVyKTtgLlxuXG5MZXQncyBxdWlja2x5IHJlZnJlc2ggdGhlIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGxvb2tpbmcgYXQgYWdhaW46IGBMMlRQYCwgYEwyVFBfVjNgLCBgTDJUUF9FVEhgLCBhbmQgYFBQUE9MMlRQYC4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgcmVnYXJkaW5nIGRlcGVuZGVuY2llcz8gQWhhLCBgTDJUUF9FVEhgIGRlcGVuZHMgb24gYEwyVFBfVjNgLiBBbmQgYFBQUE9MMlRQYCBuZWVkcyBgUFBQYCBhbmQgYEwyVFBgLCBzbyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIHRvIGJlIGNvbXBsZXRlLiBUaGF0J3MgdGhlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTA1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjM6MjcuOTI0NDcwMjM2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBTZWUgaHR0cDovL2FjY2VsLXBwdHAuc291cmNlZm9yZ2UubmV0LyBmb3IgaW5mb3JtYXRpb24gaG93IHRvXFxuIDE3MTpcXHRcXHQgIHV0aWxpemUgdGhpcyBtb2R1bGUuXFxuIDE3MjpcXHRcXG4gMTczOlxcdGNvbmZpZyBQUFBPTDJUUFxcbiAxNzQ6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCBvdmVyIEwyVFBcXFwiXFxuIDE3NTpcXHRcXHRkZXBlbmRzIG9uIEwyVFBcXG4gMTc2OlxcdFxcdHNlbGVjdCBQUFBPWFxcbiAxNzc6XFx0XFx0aGVscFxcbiAxNzg6XFx0XFx0ICBTdXBwb3J0IGZvciBQUFAtb3Zlci1MMlRQIHNvY2tldCBmYW1pbHkuIEwyVFAgaXMgYSBwcm90b2NvbFxcbiAxNzk6XFx0XFx0ICB1c2VkIGJ5IElTUHMgYW5kIGVudGVycHJpc2VzIHRvIHR1bm5lbCBQUFAgdHJhZmZpYyBvdmVyIFVEUFxcbiAxODA6XFx0XFx0ICB0dW5uZWxzLiBMMlRQIGlzIHJlcGxhY2luZyBQUFRQIGZvciBWUE4gdXNlcy5cXG4gMTgxOlxcdGlmIFRUWVxcbiAxODI6XFx0XFxuIDE4MzpcXHRjb25maWcgUFBQX0FTWU5DXFxuIDE4NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1xcXCJcXG4gMTg1OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgKG9yIE0pIGhlcmUgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgUFBQIG92ZXIgc3RhbmRhcmRcXG4gMTg4OlxcdFxcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBwb3J0cywgc3VjaCBhcyBDT00xIG9yIENPTTIgb24gYSBQQy4gIElmIHlvdSB1c2VcXG4gMTg5OlxcdFxcdCAgYSBtb2RlbSAobm90IGEgc3luY2hyb25vdXMgb3IgSVNETiBtb2RlbSkgdG8gY29udGFjdCB5b3VyIElTUCwgeW91XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjIzOjI3LjkyNDU3NDMyNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjAxMTEyNzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmN5IENoYWluIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBvbiB0aGUgc3VyZmFjZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY29tcGxldGVseS4gSXQgbG9va3MgbGlrZSBgUFBQT0wyVFBgIHJlbGllcyBvbiBgTDJUUGAsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgSSBzZWUgdGhhdCBgTDJUUF9FVEhgIGlzIGRlcGVuZGVudCBvbiBgTDJUUF9WM2AsIGFuZCAqdGhhdCogaW4gdHVybiBpcyBkZXBlbmRlbnQgb24gYEwyVFBgLiBUaGlzIHNldHVwIHNjcmVhbXMgZm9yIGNhcmVmdWwgcmV2aWV3LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBMMlRQYCBkZXBlbmRlbmNpZXMgc3BlY2lmaWNhbGx5LCBqdXN0IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBlbnN1cmUgYSBzdGFibGUgYW5kIHBlcmZvcm1hbnQgY29uZmlndXJhdGlvbiwgc28gdW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZWxhdGlvbnNoaXBzIGlzIHBhcmFtb3VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI0OjMzLjkzNTcwNDI2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wydHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIEwyVFBcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJMYXllciBUd28gVHVubmVsaW5nIFByb3RvY29sIChMMlRQKVxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIExheWVyIFR3byBUdW5uZWxpbmcgUHJvdG9jb2xcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBGcm9tIFJGQyAyNjYxIFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjYxLnR4dFxcdTAwM2UuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgTDJUUCBmYWNpbGl0YXRlcyB0aGUgdHVubmVsaW5nIG9mIHBhY2tldHMgYWNyb3NzIGFuXFxuICAxNjpcXHRcXHQgIGludGVydmVuaW5nIG5ldHdvcmsgaW4gYSB3YXkgdGhhdCBpcyBhcyB0cmFuc3BhcmVudCBhc1xcbiAgMTc6XFx0XFx0ICBwb3NzaWJsZSB0byBib3RoIGVuZC11c2VycyBhbmQgYXBwbGljYXRpb25zLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIEwyVFAgaXMgb2Z0ZW4gdXNlZCB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBJUFxcbiAgMjA6XFx0XFx0ICB0dW5uZWxzLiBPbmUgSVAgdHVubmVsIG1heSBjYXJyeSB0aG91c2FuZHMgb2YgaW5kaXZpZHVhbCBQUFBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjQ6MzMuOTM1ODE0NjEzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MzA4ODYwNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEwyVFAgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggdGVzdGluZyB0aGUgTDJUUCBpbXBsZW1lbnRhdGlvbiwgYW5kIGl0J3MgY2xlYXIgdGhhdCBpdCBpbmhlcmVudGx5IHJlbGllcyBvbiBJTkVULiBUaGF0J3MgdGhlIGZvdW5kYXRpb24uIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZTogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGFuZCBgUFBQT0wyVFBgLlxuXG5Ob3csIHRoZSB0aGluZyB0aGF0J3MgbmFnZ2luZyBhdCBtZSBpcyBgUFBQT0wyVFBgLiBXaGlsZSBpdCdzIG5vdCAqc3RyaWN0bHkqIG5lY2Vzc2FyeSBmb3IgaGl0dGluZyB0aGUgYGwydHBfZXRoLmNgIGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkg4oCTIGVzcGVjaWFsbHkgdGVzdGluZyB0aGUgY29yZSBmdW5jdGlvbnMgbGlrZSBgbDJ0cF94bWl0X3NrYmAgYW5kIGBsMnRwX3R1bm5lbF9yZWdpc3RlcmAg4oCTIGluY2x1ZGluZyBpdCBvZmZlcnMgYSB2YWx1YWJsZSBhbHRlcm5hdGl2ZSBwYXRoLiBJdCBnaXZlcyBtZSBhbm90aGVyIHdheSB0byBleGVyY2lzZSB0aG9zZSBrZXkgY29kZSBzZWN0aW9ucywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgZm9yIGNvbXByZWhlbnNpdmUgdGVzdGluZy4gSSdtIGdvaW5nIHRvIGluY2x1ZGUgaXQuXG5cbkkgbmVlZCB0byBrZWVwIG15IGZvY3VzIHNoYXJwLiBJJ20gemVyb2luZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgLCBgbDJ0cF94bWl0X3NrYmAsIGBsMnRwX2V0aF9jcmVhdGVgLCBgbDJ0cF9ldGhfZGV2X3htaXRgLCBgcHBwb2wydHBfc2VuZG1zZ2AsIGFuZCBgcHBwb2wydHBfeG1pdGAuXG5cbkZpbmFsbHksIGJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSBzaG91bGQgY29uZmlybSB3aGV0aGVyIGBwcHBvbDJ0cF9zZW5kbXNnYCBhbmQgYHBwcG9sMnRwX3htaXRgIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgc2NvcGUgaXMgd2hhdCBJIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMzQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNDo1OC4yNDQ2Nzg0OTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDM0OTExMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwb2wydHBfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX3BwcC5jPTE5OD1zdGF0aWMgdm9pZCBwcHBvbDJ0cF9yZWN2KHN0cnVjdCBsMnRwX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBza19idWZmICpza2IsIGludCBkYXRhX2xlbilcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjQ5LSAqL1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6MjUwOnN0YXRpYyBpbnQgcHBwb2wydHBfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMjUxLVxcdFxcdFxcdCAgICBzaXplX3QgdG90YWxfbGVuKVxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMTgtICpcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjMxOTogKiBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyBwcHBvbDJ0cF9zZW5kbXNnKCksIGJ1dCByYXRoZXIgdGhhblxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMzIwLSAqIGJlaW5nIGNhbGxlZCB3aXRoIGEgbXNnaGRyIGZyb20gdXNlcnNwYWNlLCBpdCBpcyBjYWxsZWQgd2l0aCBhIHNrYlxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTY0OS1cXHQuZ2V0c29ja29wdF9pdGVyID0gcHBwb2wydHBfZ2V0c29ja29wdCxcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjE2NTA6XFx0LnNlbmRtc2dcXHQ9IHBwcG9sMnRwX3NlbmRtc2csXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xNjUxLVxcdC5yZWN2bXNnXFx0PSBwcHBvbDJ0cF9yZWN2bXNnLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTowMC4zODgxNzUwMzNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzczNTI3Njc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGxiYWNrIEZ1bmN0aW9uIFVzYWdlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCwgcGFydGljdWxhcmx5IHRob3NlIG1hcmtlZCBhcyBgc3RhdGljYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBldmVuIHRob3VnaCB0aGV5IGFyZSBzdGF0aWMsIHRoZXkncmUgYmVpbmcgdXRpbGl6ZWQgYXMgY2FsbGJhY2tzLiBUaGF04oCZcyB0aGUga2V5IGhlcmUuXG5cbkxldCBtZSBicmVhayBkb3duIHdoYXQgSSd2ZSBpZGVudGlmaWVkIHNvIGZhci4gSSdtIHNlZWluZyB0aGF0LCBkZXNwaXRlIGJlaW5nIGRlY2xhcmVkIGBzdGF0aWNgLCBib3RoIGBsMnRwX2V0aF9jcmVhdGVgIGlzIGFzc2lnbmVkIHRvIGBsMnRwX2V0aF9ubF9jbWRfb3BzLnNlc3Npb25fY3JlYXRlYCwgYW5kIGBsMnRwX2V0aF9kZXZfeG1pdGAgaXMgYXNzaWduZWQgdG8gYG5ldGRldl9vcHMubmRvX3N0YXJ0X3htaXRgLiBUaGlzIGRlZmluaXRlbHkgcG9pbnRzIHRvd2FyZHMgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBiZWluZyBwYXJ0IG9mIHNvbWUga2luZCBvZiBmdW5jdGlvbmFsIHRhYmxlIG9yIGNhbGxiYWNrIHN0cnVjdHVyZS5cblxuVG8gZnVydGhlciBjbGFyaWZ5IHRoaXMgcGF0dGVybiwgSSdsbCBjb21waWxlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgb3RoZXIgY2FsbGJhY2sgZnVuY3Rpb25zIEkgc2VlIGJlaW5nIGltcGxlbWVudGVkIHRvIGJldHRlciBzZWUgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHNob3VsZCByZXZpZXc6XG5cbiogICBgbDJ0cF90dW5uZWxfcmVnaXN0ZXJgXG4qICAgYGwydHBfeG1pdF9za2JgXG4qICAgYGwydHBfZXRoX2NyZWF0ZWBcbiogICBgbDJ0cF9ldGhfZGV2X3htaXRgXG4qICAgYHBwcG9sMnRwX3NlbmRtc2dgXG4qICAgYHBwcG9sMnRwX3htaXRgXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYHBwcG9sMnRwX3htaXRgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYy4gVGhpcyByZWluZm9yY2VzIHRoZSBwYXR0ZXJuIEknbSBzZWVpbmcuIEknbGwgbmVlZCB0byBleHBsb3JlIGhvdyB0aGlzIGlzIGhhcHBlbmluZyBiZWNhdXNlIHNvbWV0aGluZyBpcyB0ZWxsaW5nIG1lIHRoZXJlJ3MgbW9yZSB0byB1bmRlcnN0YW5kIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDcyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI1OjA4LjEyMzQ1NDI0MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5OTEwNDkzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHBvbDJ0cF94bWl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sMnRwL2wydHBfcHBwLmM9MTE3PXN0cnVjdCBwcHBvbDJ0cF9zZXNzaW9uIHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI0LVxcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTI1OnN0YXRpYyBpbnQgcHBwb2wydHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTI2LVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9MTI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwcG9sMnRwX2NoYW5fb3BzID0ge1xcbm5ldC9sMnRwL2wydHBfcHBwLmM6MTI4OlxcdC5zdGFydF94bWl0ID0gIHBwcG9sMnRwX3htaXQsXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xMjktfTtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmM9MjUwPXN0YXRpYyBpbnQgcHBwb2wydHBfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYy0zMjktICovXFxubmV0L2wydHAvbDJ0cF9wcHAuYzozMzA6c3RhdGljIGludCBwcHBvbDJ0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTMzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjI1OjEwLjQyMjU2NDkxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODMxNTAxMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkwyVFAgT3ZlcmhlYWQgRml4IGFuZCBGdXp6aW5nIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIG9uIHRoaXMgcGF0Y2gsIGFzc2lnbmVkIHRvIGBwcHBfY2hhbm5lbF9vcHMuc3RhcnRfeG1pdGAuIFRoZSBtYWluIHRoaW5nIGlzIGZpeGluZyBob3cgTDJUUCBvdmVyaGVhZCBpcyBjYWxjdWxhdGVkLCB3aGljaCBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhbHdheXMgZ29vZCB0byBiZSBtaW5kZnVsIG9mIHRob3NlLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgaW4gYHR1bm5lbC1cdTAwM2VsM19vdmVyaGVhZGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBwZXJmb3JtYW5jZSwgSSBzdXBwb3NlLlxuXG5UaGlzIGlzIGltbWVkaWF0ZWx5IHNjcmVhbWluZyBcImZ1enppbmcgY2FuZGlkYXRlXCIgdG8gbWUuIEFueSBjaGFuZ2UgaW4gb3ZlcmhlYWQgY2FsY3VsYXRpb24gbGlrZSB0aGlzIGNhbiBvcGVuIHVwIGludGVyZXN0aW5nIGF0dGFjayB2ZWN0b3JzLCBzbyBJJ2xsIGRlZmluaXRlbHkgd2FudCB0byBwdXQgc29tZSBmdXp6ZXJzIGFnYWluc3QgdGhpcy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJvdW5kIEwyVFAuIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIGBMMlRQX0lQYCBpcyByZWxldmFudCBoZXJlLCBmb3IgdGhlIElQIGVuY2Fwc3VsYXRpb24gcGllY2UuIExldCBtZSBwdWxsIHVwIGBuZXQvbDJ0cC9LY29uZmlnYCBhZ2FpbiwganVzdCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzIG9yIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ5NDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjU6MTUuMjU0MDY4NTYxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbDJ0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdCAgb3JpZ2luYWxseSBkZWZpbmVkIGluIFJGQyAyNjYxLCBpcyBhIHN0YW5kYXJkIG1ldGhvZCBmb3JcXG4gIDYxOlxcdFxcdCAgdHVubmVsaW5nIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIFtSRkMxNjYxXSBzZXNzaW9ucy5cXG4gIDYyOlxcdFxcdCAgTDJUUCBoYXMgc2luY2UgYmVlbiBhZG9wdGVkIGZvciB0dW5uZWxpbmcgYSBudW1iZXIgb2Ygb3RoZXJcXG4gIDYzOlxcdFxcdCAgTDIgcHJvdG9jb2xzLCBpbmNsdWRpbmcgQVRNLCBGcmFtZSBSZWxheSwgSERMQyBhbmQgZXZlbiByYXdcXG4gIDY0OlxcdFxcdCAgZXRoZXJuZXQgZnJhbWVzLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHlvdSBhcmUgY29ubmVjdGluZyB0byBMMlRQdjMgZXF1aXBtZW50LCBvciB5b3Ugd2FudCB0b1xcbiAgNjc6XFx0XFx0ICB0dW5uZWwgcmF3IGV0aGVybmV0IGZyYW1lcyB1c2luZyBMMlRQLCBzYXkgWSBoZXJlLiBJZlxcbiAgNjg6XFx0XFx0ICB1bnN1cmUsIHNheSBOLlxcbiAgNjk6XFx0XFxuICA3MDpcXHRjb25maWcgTDJUUF9JUFxcbiAgNzE6XFx0XFx0dHJpc3RhdGUgXFxcIkwyVFAgSVAgZW5jYXBzdWxhdGlvbiBmb3IgTDJUUHYzXFxcIlxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQX1YzXFxuICA3MzpcXHRcXHRoZWxwXFxuICA3NDpcXHRcXHQgIFN1cHBvcnQgZm9yIEwyVFAtb3Zlci1JUCBzb2NrZXQgZmFtaWx5LlxcbiAgNzU6XFx0XFxuICA3NjpcXHRcXHQgIFRoZSBMMlRQdjMgcHJvdG9jb2wgZGVmaW5lcyB0d28gcG9zc2libGUgZW5jYXBzdWxhdGlvbnMgZm9yXFxuICA3NzpcXHRcXHQgIEwyVFAgZnJhbWVzLCBuYW1lbHkgVURQIGFuZCBwbGFpbiBJUCAod2l0aG91dCBVRFApLiBUaGlzXFxuICA3ODpcXHRcXHQgIGRyaXZlciBwcm92aWRlcyBhIG5ldyBMMlRQSVAgc29ja2V0IGZhbWlseSB3aXRoIHdoaWNoXFxuICA3OTpcXHRcXHQgIHVzZXJzcGFjZSBMMlRQdjMgZGFlbW9ucyBtYXkgY3JlYXRlIEwyVFAvSVAgdHVubmVsIHNvY2tldHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6MjU6MTUuMjU0MjE5MjcxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjI3OTUyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBMMlRQIENvbmZpZ3VyYXRpb24gYW5kIENvZGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGNvbmZpcm1pbmcgdGhhdCBgTDJUUF9JUGAgaXMgaW5kZWVkIGZvciBJUCBlbmNhcHN1bGF0aW9uLCB0aGF0IGNoZWNrcyBvdXQuIFRoZSBwYXRjaCBhY2NvdW50cyBmb3IgYm90aCBVRFAgYW5kIElQIGVuY2Fwc3VsYXRpb24gb3ZlcmhlYWRzLCB3aGljaCBpcyBnb29kLiBUaGUgYGwydHBfdHVubmVsX3VkcF9oZHJsZW5gIGZ1bmN0aW9uIHVzZXMgdGhlIGBzaXplb2Yoc3RydWN0IHVkcGhkcilgIHdoZW4gYHR1bm5lbC1cdTAwM2VlbmNhcCA9PSBMMlRQX0VOQ0FQVFlQRV9VRFBgLiBUaGF0IG1ha2VzIHNlbnNlLCBhbmQgbWVhbnMgd2UncmUgY292ZXJlZC4gVGhpcyByZWluZm9yY2VzIHdoeSBgTDJUUF9JUGAgaXMgYSB2YWxpZCBvcHRpb24gaGVyZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uczogYEwyVFBgLCBgTDJUUF9WM2AsIGBMMlRQX0VUSGAsIGBMMlRQX0lQYCwgYW5kIGBQUFBPTDJUUGAuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGlmIGBMMlRQX0lQYCBoYXMgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIHRoZSBub3RlcywgaXQgYXBwZWFycyB0byBkZXBlbmQgb24gYEwyVFBfVjNgLCB3aGljaCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG5JJ2xsIGtlZXAgdGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbnMgaGFuZHk6XG5gTDJUUGBcbmBMMlRQX1YzYFxuYEwyVFBfRVRIYFxuYEwyVFBfSVBgXG5gUFBQT0wyVFBgXG5cbkknbGwga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIHRoZXNlIGZ1bmN0aW9uczogYGwydHBfdHVubmVsX3JlZ2lzdGVyYCwgYGwydHBfeG1pdF9za2JgLCBgbDJ0cF9ldGhfY3JlYXRlYCwgYGwydHBfZXRoX2Rldl94bWl0YCwgYHBwcG9sMnRwX3NlbmRtc2dgLCBhbmQgYHBwcG9sMnRwX3htaXRgLlxuXG5XYWl0IGEgbWludXRlLCBgbDJ0cF9ldGhfYWRqdXN0X210dWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGZyb20gYGwydHBfZXRoX2NyZWF0ZWAuIEludGVyZXN0aW5nbHksIGl0IGlzIGFsc28gY2FsbGVkIGZyb20gYGwydHBfZXRoX3Nob3dgLCBhbmQgdGhhdCBzZWVtcyBsaWtlIGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gZGVidWdmcy9zZXFfZmlsZSBmdW5jdGlvbmFsaXR5PyBJJ2QgYmV0dGVyIGludmVzdGlnYXRlIGBsMnRwX2V0aF9zaG93YCB0byB1bmRlcnN0YW5kIHRoYXQgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NDksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTo1MS44ODIxNzM5OTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjQyMzQ4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibDJ0cF9ldGhfc2hvd1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbDJ0cC9sMnRwX2V0aC5jPTE0Nj1zdGF0aWMgdm9pZCBsMnRwX2V0aF9kZWxldGUoc3RydWN0IGwydHBfc2Vzc2lvbiAqc2Vzc2lvbilcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMTY1LVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MTY2OnN0YXRpYyB2b2lkIGwydHBfZXRoX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcpXFxubmV0L2wydHAvbDJ0cF9ldGguYy0xNjcte1xcbi0tXFxubmV0L2wydHAvbDJ0cF9ldGguYz0yMTM9c3RhdGljIGludCBsMnRwX2V0aF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbDJ0cF90dW5uZWwgKnR1bm5lbCxcXG4tLVxcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjU3LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19MMlRQX0RFQlVHRlMpKVxcbm5ldC9sMnRwL2wydHBfZXRoLmM6MjU4OlxcdFxcdHNlc3Npb24tXFx1MDAzZXNob3cgPSBsMnRwX2V0aF9zaG93O1xcbm5ldC9sMnRwL2wydHBfZXRoLmMtMjU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNTo1NC4xMDY0MTY4NzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA1MTA5Mjg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKlJlZmxlY3Rpbmcgb24gRGVidWdnaW5nIFRvb2xzIGFuZCBSZXN1bHQgU2V0dGluZyoqXG5cblJpZ2h0LCBgbDJ0cF9ldGhfc2hvd2AgaXMgZGVmaW5pdGVseSBwYXJ0IG9mIHRoYXQgZGVidWdmcyByZWFsbS4gVGhhdOKAmXMgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGl0LiBHb29kLiBJIGxpa2UgaG93IHRoZSBmb2N1cyBzeW1ib2xzIGFyZSB3b3JraW5nOyB0aGV5J3JlIG1ha2luZyBpdCBlYXNpZXIgdG8gcGFyc2Ugd2hhdCdzIGdvaW5nIG9uLCBhbmQgYXJlIGFpZGluZyBpbiB0aGUgYW5hbHlzaXMuXG5cbk5vdywgSSdsbCBtb3ZlIG9uIHRvIHRoZSBuZXh0IHRhc2sgd2hpY2ggaW52b2x2ZXMgY2FsbGluZyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjY4MSwiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNzoyNjowMS4xNTc1MTIyMTRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMjE0MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkwyVFBcIixcbiAgICBcIkwyVFBfVjNcIixcbiAgICBcIkwyVFBfRVRIXCIsXG4gICAgXCJMMlRQX0lQXCIsXG4gICAgXCJQUFBPTDJUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImwydHBfdHVubmVsX3JlZ2lzdGVyXCIsXG4gICAgXCJsMnRwX3htaXRfc2tiXCIsXG4gICAgXCJsMnRwX2V0aF9jcmVhdGVcIixcbiAgICBcImwydHBfZXRoX2Rldl94bWl0XCIsXG4gICAgXCJwcHBvbDJ0cF9zZW5kbXNnXCIsXG4gICAgXCJwcHBvbDJ0cF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgTDJUUCBvdmVyaGVhZCBhbmQgaGVhZHJvb20gY2FsY3VsYXRpb25zLCBjYWNoaW5nIHRoZSBMMyBvdmVyaGVhZCBkdXJpbmcgdHVubmVsIHJlZ2lzdHJhdGlvbiBhbmQgdXNpbmcgaXQgaW4gTVRVIGFkanVzdG1lbnQgYW5kIHBhY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTDJUUCBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMMlRQXCIsXG4gICAgXCJMMlRQX1YzXCIsXG4gICAgXCJMMlRQX0VUSFwiLFxuICAgIFwiTDJUUF9JUFwiLFxuICAgIFwiUFBQT0wyVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJsMnRwX3R1bm5lbF9yZWdpc3RlclwiLFxuICAgIFwibDJ0cF94bWl0X3NrYlwiLFxuICAgIFwibDJ0cF9ldGhfY3JlYXRlXCIsXG4gICAgXCJsMnRwX2V0aF9kZXZfeG1pdFwiLFxuICAgIFwicHBwb2wydHBfc2VuZG1zZ1wiLFxuICAgIFwicHBwb2wydHBfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEwyVFAgb3ZlcmhlYWQgYW5kIGhlYWRyb29tIGNhbGN1bGF0aW9ucywgY2FjaGluZyB0aGUgTDMgb3ZlcmhlYWQgZHVyaW5nIHR1bm5lbCByZWdpc3RyYXRpb24gYW5kIHVzaW5nIGl0IGluIE1UVSBhZGp1c3RtZW50IGFuZCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEwyVFAgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvbiwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowfkpjv[1] Phase: Succeeded StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 07:26:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 07:26:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2] Phase: Succeeded StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 07:26:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 07:26:12 +0000 UTC FinishedAt: 2026-07-31 07:26:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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-workflowfkpjv/series-workflowfkpjv-convert-artifact-2145541334/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 07:26:22 +0000 UTC FinishedAt: 2026-07-31 07:48:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 07:26:22 +0000 UTC FinishedAt: 2026-07-31 07:48:32 +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:*932e5c0b-b9d9-4dac-aa1a-e8f27be5e3d9,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-workflowfkpjv/series-workflowfkpjv-convert-artifact-2145541334/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": "d5daea4a-aaa2-4258-af42-88db3c8102f5", "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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 07:26:22 +0000 UTC FinishedAt: 2026-07-31 07:47:46 +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:*932e5c0b-b9d9-4dac-aa1a-e8f27be5e3d9,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-workflowfkpjv/series-workflowfkpjv-convert-artifact-2145541334/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": "d5daea4a-aaa2-4258-af42-88db3c8102f5", "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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 07:48:32 +0000 UTC FinishedAt: 2026-07-31 07:48:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 07:48:32 +0000 UTC FinishedAt: 2026-07-31 07:48:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 07:48:32 +0000 UTC FinishedAt: 2026-07-31 07:48:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 07:48:32 +0000 UTC FinishedAt: 2026-07-31 07:48:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","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-workflowfkpjv/series-workflowfkpjv-convert-artifact-3862677097/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 07:48:43 +0000 UTC FinishedAt: 2026-07-31 07:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 07:48:43 +0000 UTC FinishedAt: 2026-07-31 07:50:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d5daea4a-aaa2-4258-af42-88db3c8102f5,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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/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-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 07:50:44 +0000 UTC FinishedAt: 2026-07-31 07:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 07:50:44 +0000 UTC FinishedAt: 2026-07-31 07:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 07:50:44 +0000 UTC FinishedAt: 2026-07-31 08:10:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 07:50:44 +0000 UTC FinishedAt: 2026-07-31 08:10:48 +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:*932e5c0b-b9d9-4dac-aa1a-e8f27be5e3d9,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-workflowfkpjv/series-workflowfkpjv-convert-artifact-3862677097/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": "d8a56b43-680a-4adc-812e-d97e5841f1fb", "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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 07:50:44 +0000 UTC FinishedAt: 2026-07-31 08:10:38 +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:*932e5c0b-b9d9-4dac-aa1a-e8f27be5e3d9,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-workflowfkpjv/series-workflowfkpjv-convert-artifact-3862677097/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": "d8a56b43-680a-4adc-812e-d97e5841f1fb", "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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 08:10:48 +0000 UTC FinishedAt: 2026-07-31 08:10:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 08:10:48 +0000 UTC FinishedAt: 2026-07-31 08:10:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 08:10:48 +0000 UTC FinishedAt: 2026-07-31 08:12:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 08:10:48 +0000 UTC FinishedAt: 2026-07-31 08:12:42 +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:*d8a56b43-680a-4adc-812e-d97e5841f1fb,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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/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-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"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:*d5daea4a-aaa2-4258-af42-88db3c8102f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d8a56b43-680a-4adc-812e-d97e5841f1fb,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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:12:58 +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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"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-workflowfkpjv/series-workflowfkpjv-convert-artifact-2795015358/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-retest Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:29:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d5daea4a-aaa2-4258-af42-88db3c8102f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d8a56b43-680a-4adc-812e-d97e5841f1fb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:12:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},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-workflowfkpjv/series-workflowfkpjv-convert-artifact-3342860101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:12:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 08:12:52 +0000 UTC FinishedAt: 2026-07-31 08:12:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 08:13:02 +0000 UTC FinishedAt: 2026-07-31 11:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 08:13:02 +0000 UTC FinishedAt: 2026-07-31 11:14:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d5daea4a-aaa2-4258-af42-88db3c8102f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d8a56b43-680a-4adc-812e-d97e5841f1fb,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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/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-workflowfkpjv/series-workflowfkpjv-convert-artifact-2795015358/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,} --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-retest[1] Phase: Succeeded StartedAt: 2026-07-31 08:13:02 +0000 UTC FinishedAt: 2026-07-31 08:29:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkpjv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"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":["l2tp_tunnel_register","l2tp_xmit_skb","l2tp_eth_create","l2tp_eth_dev_xmit","pppol2tp_sendmsg","pppol2tp_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["L2TP","L2TP_V3","L2TP_ETH","L2TP_IP","PPPOL2TP"],"series_id":"73d4e6fc-4879-47b4-a82a-a3c9769114d7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["9b3d30fe-b87f-4b00-99a6-464f0a271312"]},track:KASAN)[10].run-retest[1].retest Phase: Succeeded StartedAt: 2026-07-31 08:13:02 +0000 UTC FinishedAt: 2026-07-31 08:29:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d5daea4a-aaa2-4258-af42-88db3c8102f5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d8a56b43-680a-4adc-812e-d97e5841f1fb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflowfkpjv/series-workflowfkpjv-build-action-3104258412/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-workflowfkpjv/series-workflowfkpjv-build-action-4059039301/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflowfkpjv/series-workflowfkpjv-convert-artifact-3342860101/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,}