Name: series-workflowqm97h Phase: Succeeded StartedAt: 2026-08-04 06:38:35 +0000 UTC FinishedAt: 2026-08-04 07:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[0] Phase: Succeeded StartedAt: 2026-08-04 06:38:35 +0000 UTC FinishedAt: 2026-08-04 06:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 06:38:35 +0000 UTC FinishedAt: 2026-08-04 06:43:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211" ], "series_id": "693085be-424d-4a50-9662-b917153d9c2b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mac_sta_add", "mt7925_mac_sta_remove", "mt7925_mcu_apply_regd", "mt7925_mcu_set_clc", "mt7925_regd_change", "mt7925_mcu_regd_update" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3MjllYWRmYWNiMDM1ZmJjMGJhYmM2ZTkzMWE0ZWM1NmJjYzNiMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuaW5kZXggODRiNTVmMDA4YjNkMy4uMzAwYWQwYjA5YjY5NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5AQCAtOTA4LDYgJiM0Mzs5MDgsODYgQEAgbXQ3OTI1X2dldF9yYXRlc190YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdHJldHVybiBtdmlmLVx1MDAzZWJhc2ljX3JhdGVzX2lkeDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO210NzkyNV9jYWxjX3ZpZl9udW0odm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbiYjNDM7e1xuJiM0MztcdHUzMiAqbnVtID0gcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwcml2KVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHZpZi1cdTAwM2V0eXBlKSB7XG4mIzQzO1x0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxuJiM0MztcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVDpcbiYjNDM7XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuJiM0MztcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0dPOlxuJiM0MztcdFx0Km51bSAmIzQzOz0gMTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO210NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsXG4mIzQzO1x0XHRcdFx0Ym9vbCBpc19hZGQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXZpZi1cdTAwM2VwaHk7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcbiYjNDM7XHR1MzIgdmFsaWRfdmlmX251bSA9IDA7XG4mIzQzO1x0ZW51bSBtdDc5MnhfcmVnX3Bvd2VyX3R5cGUgb2xkX3Bvd2VyX3R5cGU7XG4mIzQzO1x0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0b2xkX3Bvd2VyX3R5cGUgPSBwaHktXHUwMDNlcG93ZXJfdHlwZTtcbiYjNDM7XG4mIzQzO1x0LyogVHJ5IHRvIGdldCBjaGFubmVsIGZyb20gbGlua19jb25mIGZpcnN0LCB0aGVuIHZpZi1cdTAwM2Vic3NfY29uZiwgdGhlbiBwaHkgKi9cbiYjNDM7XHRpZiAobGlua19jb25mIFx1MDAyNlx1MDAyNiBsaW5rX2NvbmYtXHUwMDNlY2hhbnJlcS5vcGVyLmNoYW4pXG4mIzQzO1x0XHRjaGFuID0gbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuO1xuJiM0MztcdGVsc2UgaWYgKHZpZi1cdTAwM2Vic3NfY29uZi5jaGFucmVxLm9wZXIuY2hhbilcbiYjNDM7XHRcdGNoYW4gPSB2aWYtXHUwMDNlYnNzX2NvbmYuY2hhbnJlcS5vcGVyLmNoYW47XG4mIzQzO1x0ZWxzZSBpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuKVxuJiM0MztcdFx0Y2hhbiA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYW5kZWYuY2hhbjtcbiYjNDM7XG4mIzQzO1x0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxuJiM0MztcdFx0XHRcdFx0ICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXG4mIzQzO1x0XHRcdFx0XHQgICAgbXQ3OTI1X2NhbGNfdmlmX251bSwgXHUwMDI2dmFsaWRfdmlmX251bSk7XG4mIzQzO1xuJiM0MztcdGlmICh2YWxpZF92aWZfbnVtIFx1MDAzZSAxKSB7XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghaXNfYWRkKVxuJiM0MztcdFx0dmlmLVx1MDAzZWJzc19jb25mLnBvd2VyX3R5cGUgPSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHZpZi1cdTAwM2Vic3NfY29uZi5wb3dlcl90eXBlKSB7XG4mIzQzO1x0Y2FzZSBJRUVFODAyMTFfUkVHX1NQX0FQOlxuJiM0MztcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9TUDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19WTFBfQVA6XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1ZMUDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19MUElfQVA6XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0xQSTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19VTlNFVF9BUDpcbiYjNDM7XHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfVU5TRVQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdHBvd2VyX3R5cGVfY2hhbmdlZCA9IChvbGRfcG93ZXJfdHlwZSAhPSBwaHktXHUwMDNlcG93ZXJfdHlwZSk7XG4mIzQzO1xuJiM0MztcdGlmIChwb3dlcl90eXBlX2NoYW5nZWQgXHUwMDI2XHUwMDI2IGNoYW4gXHUwMDI2XHUwMDI2IGNoYW4tXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbiYjNDM7XHRcdG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi1cdTAwM2VtdDc2LmFscGhhMiwgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YSxcbkBAIC0xMDMwLDYgJiM0MzsxMTEwLDggQEAgc3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG4gXHRcdFx0Z290byBvdXRfcG07XG4gXHR9XG4gXG4mIzQzO1x0bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7XG4mIzQzO1xuIFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgXHUwMDI2ZGV2LVx1MDAzZXBtKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzMjAsNiAmIzQzOzE0MDIsOCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG4gXHRtdDc2X3djaWRfY2xlYW51cChtZGV2LCB3Y2lkKTtcbiBcdG10NzZfd2NpZF9tYXNrX2NsZWFyKG1kZXYtXHUwMDNld2NpZF9tYXNrLCBpZHgpO1xuIFxuJiM0MztcdG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUodmlmLCBsaW5rX2NvbmYsIGZhbHNlKTtcbiYjNDM7XG4gXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZkZXYtXHUwMDNlcG0pO1xuIH1cbiBcbkBAIC0xOTAwLDcgJiM0MzsxOTg0LDcgQEAgc3RhdGljIGludCBtdDc5MjVfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4gXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5hbHBoYTIsXG4tXHRcdFx0IGRldi1cdTAwM2Vjb3VudHJ5X2llX2Vudik7XG4mIzQzO1x0XHRcdFx0IGRldi1cdTAwM2Vjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0Z290byBvdXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZmEyOWM0ODZhNDU1My4uZTQxNDQyYjI3NjM0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuQEAgLTM2MjQsNyAmIzQzOzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XG4gc3RhdGljIGludFxuIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdCAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCxcbi1cdFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICpzZWc7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuQEAgLTM2NDIsMTkgJiM0MzszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdHU4IHBhZDE7XG4gXHRcdHU4IGFscGhhMlsyXTtcbiBcdFx0dTggdHlwZVsyXTtcbi1cdFx0dTggcnN2ZFs2NF07XG4mIzQzO1x0XHR1OCBlbnZfNmc7XG4mIzQzO1x0XHR1OCByc3ZkWzYzXTtcbiBcdH0gX19wYWNrZWQgcmVxID0ge1xuIFx0XHQudGFnID0gY3B1X3RvX2xlMTYoMHgzKSxcbiBcbiBcdFx0LmlkeCA9IGlkeCxcbiBcdFx0LmVudiA9IGVudl9jYXAsXG4mIzQzO1x0XHQuZW52XzZnID0gZGV2LVx1MDAzZXBoeS5wb3dlcl90eXBlLFxuIFx0fTtcbiBcdGludCByZXQsIHZhbGlkX2NudCA9IDA7XG4gXHR1OCAqcG9zLCAqbGFzdF9wb3M7XG4mIzQzO1x0dTggdGFyZ2V0XzZnX3R5cGU7XG4gXG4gXHRpZiAoIWNsYylcbiBcdFx0cmV0dXJuIDA7XG4gXG4mIzQzO1x0LyogRGV0ZXJtaW5lIHRhcmdldCA2RyBwb3dlciB0eXBlIGJhc2VkIG9uIHBoeS1cdTAwM2Vwb3dlcl90eXBlICovXG4mIzQzO1x0c3dpdGNoIChkZXYtXHUwMDNlcGh5LnBvd2VyX3R5cGUpIHtcbiYjNDM7XHRjYXNlIE1UX0FQX0xQSTpcbiYjNDM7XHRcdHRhcmdldF82Z190eXBlID0gJiMzOTswJiMzOTs7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIE1UX0FQX1NQOlxuJiM0MztcdFx0dGFyZ2V0XzZnX3R5cGUgPSAmIzM5OzEmIzM5OztcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTVRfQVBfVkxQOlxuJiM0MztcdFx0dGFyZ2V0XzZnX3R5cGUgPSAmIzM5OzImIzM5OztcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHR0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MCYjMzk7OyAvKiBkZWZhdWx0IHRvIExQSSAqL1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJlcS52ZXIgPSBjbGMtXHUwMDNldmVyO1xuIFx0cG9zID0gY2xjLVx1MDAzZWRhdGEgJiM0Mzsgc2l6ZW9mKCpzZWcpICogY2xjLVx1MDAzZXQwLm5yX3NlZztcbiBcdGxhc3RfcG9zID0gY2xjLVx1MDAzZWRhdGEgJiM0MzsgbGUzMl90b19jcHUoKihfX2xlMzIgKikoY2xjLVx1MDAzZWRhdGEgJiM0MzsgNCkpO1xuQEAgLTM2NjYsNiAmIzQzOzM2ODUsMjMgQEAgX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbiBcdFx0ICAgIHJ1bGUtXHUwMDNlYWxwaGEyWzFdICE9IGFscGhhMlsxXSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XG4mIzQzO1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbiYjNDM7XHRcdCAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspXG4mIzQzO1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKVxuJiM0MztcdFx0ICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZVxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHtcbiYjNDM7XHRcdFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xuJiM0MztcdFx0XHRpZiAocnVsZS1cdTAwM2V0eXBlWzBdICE9IHRhcmdldF82Z190eXBlKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0LyogU2VuZCAyLzVHIGFuZCA2RyBMUEkgYW5kIFZMUCBvbmx5ICovXG4mIzQzO1x0XHRcdGlmIChydWxlLVx1MDAzZXR5cGVbMF0gIT0gJiMzOTstJiMzOTsgXHUwMDI2XHUwMDI2IHJ1bGUtXHUwMDNldHlwZVswXSAhPSAmIzM5OzAmIzM5OyBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgIHJ1bGUtXHUwMDNldHlwZVswXSAhPSAmIzM5OzImIzM5OylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdHNlZyA9IChzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICopY2xjLVx1MDAzZWRhdGFcbiBcdFx0XHQgICYjNDM7IHJ1bGUtXHUwMDNlc2VnX2lkeCAtIDE7XG4gXG5AQCAtMzY5OSw3ICYjNDM7MzczNSw3IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gfVxuIFxuIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbi1cdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXApXG4mIzQzO1x0XHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbiBcdGludCBpLCByZXQ7XG5AQCAtMzcxNCwxMyAmIzQzOzM3NTAsMTMgQEAgaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgZW52X2NhcCxcbi1cdFx0XHRcdFx0ICAgcGh5LVx1MDAzZWNsY1tpXSwgaSk7XG4mIzQzO1x0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gXG4gXHRcdC8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCBcJiMzNDswMFwmIzM0OyBhcyBkZWZhdWx0ICovXG4gXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbiBcdFx0XHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIFwmIzM0OzAwXCYjMzQ7LFxuIFx0XHRcdFx0XHRcdCAgIEVOVklST05fSU5ET09SLFxuLVx0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGkpO1xuJiM0MztcdFx0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi5lM2ZlZjQxY2JiMzM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzg1LDcgJiM0MzszODUsOSBAQCBpbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpO1xuIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbi1cdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXApO1xuJiM0MztcdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzQzO1x0XHRcdCAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfbWxvX3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcbiBcdFx0XHQgICB1MTYgc2VsX2xpbmtzLCBpbnQgZHVyYXRpb24sIHU4IHRva2VuX2lkKTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuaW5kZXggZjRiZWI3ZjUyMDQzYy4uNWE4NWRlOWE0YzY3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jXG5AQCAtMTM3LDE0ICYjNDM7MTM3LDE0IEBAIG10NzkyNV9yZWdkX2NoYW5uZWxfdXBkYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyBpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcbiYjNDM7aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuJiM0MztcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcbiBcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBody1cdTAwM2V3aXBoeTtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudik7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFxuIFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiBcdGlmIChkZXYtXHUwMDNlcmVnZF9jaGFuZ2UpXG4tXHRcdHJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYpO1xuJiM0MztcdFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xuIFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiBcdGRldi1cdTAwM2VyZWdkX2NoYW5nZSA9IGZhbHNlO1xuIFx0ZGV2LVx1MDAzZXJlZ2RfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbkBAIC00NTMsNyAmIzQzOzQ1Myw3IEBAIGludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuIFx0fSBlbHNlIGlmIChwaHktXHUwMDNlY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcbiBcdFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SKTtcbiYjNDM7XHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SLCBmYWxzZSk7XG4gXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdkX2NoYW5nZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3MjllYWRmYWNiMDM1ZmJjMGJhYmM2ZTkzMWE0ZWM1NmJjYzNiMDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCmluZGV4IDg0YjU1ZjAwOGIzZDMuLjMwMGFkMGIwOWI2OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKQEAgLTkwOCw2ICYjNDM7OTA4LDg2IEBAIG10NzkyNV9nZXRfcmF0ZXNfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAJcmV0dXJuIG12aWYtJmd0O2Jhc2ljX3JhdGVzX2lkeDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7bXQ3OTI1X2NhbGNfdmlmX251bSh2b2lkICpwcml2LCB1OCAqbWFjLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQomIzQzO3sKJiM0MzsJdTMyICpudW0gPSBwcml2OwomIzQzOwomIzQzOwlpZiAoIXByaXYpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXN3aXRjaCAodmlmLSZndDt0eXBlKSB7CiYjNDM7CWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKJiM0MzsJY2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfQ0xJRU5UOgomIzQzOwljYXNlIE5MODAyMTFfSUZUWVBFX0FQOgomIzQzOwljYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9HTzoKJiM0MzsJCSpudW0gJiM0Mzs9IDE7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkCiYjNDM7bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAomIzQzOwkJCQlzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsCiYjNDM7CQkJCWJvb2wgaXNfYWRkKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF92aWYgKm12aWYgPSAoc3RydWN0IG10NzkyeF92aWYgKil2aWYtJmd0O2Rydl9wcml2OwomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXZpZi0mZ3Q7cGh5OwomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gcGh5LSZndDtkZXY7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IE5VTEw7CiYjNDM7CXUzMiB2YWxpZF92aWZfbnVtID0gMDsKJiM0MzsJZW51bSBtdDc5MnhfcmVnX3Bvd2VyX3R5cGUgb2xkX3Bvd2VyX3R5cGU7CiYjNDM7CWJvb2wgcG93ZXJfdHlwZV9jaGFuZ2VkID0gZmFsc2U7CiYjNDM7CiYjNDM7CW9sZF9wb3dlcl90eXBlID0gcGh5LSZndDtwb3dlcl90eXBlOwomIzQzOwomIzQzOwkvKiBUcnkgdG8gZ2V0IGNoYW5uZWwgZnJvbSBsaW5rX2NvbmYgZmlyc3QsIHRoZW4gdmlmLSZndDtic3NfY29uZiwgdGhlbiBwaHkgKi8KJiM0MzsJaWYgKGxpbmtfY29uZiAmYW1wOyZhbXA7IGxpbmtfY29uZi0mZ3Q7Y2hhbnJlcS5vcGVyLmNoYW4pCiYjNDM7CQljaGFuID0gbGlua19jb25mLSZndDtjaGFucmVxLm9wZXIuY2hhbjsKJiM0MzsJZWxzZSBpZiAodmlmLSZndDtic3NfY29uZi5jaGFucmVxLm9wZXIuY2hhbikKJiM0MzsJCWNoYW4gPSB2aWYtJmd0O2Jzc19jb25mLmNoYW5yZXEub3Blci5jaGFuOwomIzQzOwllbHNlIGlmIChwaHktJmd0O210NzYtJmd0O2NoYW5kZWYuY2hhbikKJiM0MzsJCWNoYW4gPSBwaHktJmd0O210NzYtJmd0O2NoYW5kZWYuY2hhbjsKJiM0MzsKJiM0MzsJaWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLAomIzQzOwkJCQkJICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X2NhbGNfdmlmX251bSwgJmFtcDt2YWxpZF92aWZfbnVtKTsKJiM0MzsKJiM0MzsJaWYgKHZhbGlkX3ZpZl9udW0gJmd0OyAxKSB7CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFpc19hZGQpCiYjNDM7CQl2aWYtJmd0O2Jzc19jb25mLnBvd2VyX3R5cGUgPSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOwomIzQzOwomIzQzOwlzd2l0Y2ggKHZpZi0mZ3Q7YnNzX2NvbmYucG93ZXJfdHlwZSkgewomIzQzOwljYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9TUDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIElFRUU4MDIxMV9SRUdfVkxQX0FQOgomIzQzOwkJcGh5LSZndDtwb3dlcl90eXBlID0gTVRfQVBfVkxQOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSUVFRTgwMjExX1JFR19MUElfQVA6CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9MUEk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOgomIzQzOwkJcGh5LSZndDtwb3dlcl90eXBlID0gTVRfQVBfVU5TRVQ7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeS0mZ3Q7cG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJcG93ZXJfdHlwZV9jaGFuZ2VkID0gKG9sZF9wb3dlcl90eXBlICE9IHBoeS0mZ3Q7cG93ZXJfdHlwZSk7CiYjNDM7CiYjNDM7CWlmIChwb3dlcl90eXBlX2NoYW5nZWQgJmFtcDsmYW1wOyBjaGFuICZhbXA7JmFtcDsgY2hhbi0mZ3Q7YmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikKJiM0MzsJCW10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi0mZ3Q7bXQ3Ni5hbHBoYTIsIGRldi0mZ3Q7Y291bnRyeV9pZV9lbnYsIHRydWUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAJCQkJICAgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEsCkBAIC0xMDMwLDYgJiM0MzsxMTEwLDggQEAgc3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsCiAJCQlnb3RvIG91dF9wbTsKIAl9CiAKJiM0MzsJbXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7CiYjNDM7CiAJbXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZCgmYW1wO2Rldi0mZ3Q7bXBoeSwgJmFtcDtkZXYtJmd0O3BtKTsKIAogCXJldHVybiAwOwpAQCAtMTMyMCw2ICYjNDM7MTQwMiw4IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwKIAltdDc2X3djaWRfY2xlYW51cChtZGV2LCB3Y2lkKTsKIAltdDc2X3djaWRfbWFza19jbGVhcihtZGV2LSZndDt3Y2lkX21hc2ssIGlkeCk7CiAKJiM0MzsJbXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgZmFsc2UpOwomIzQzOwogCW10NzZfY29ubmFjX3Bvd2VyX3NhdmVfc2NoZWQoJmFtcDtkZXYtJmd0O21waHksICZhbXA7ZGV2LSZndDtwbSk7CiB9CiAKQEAgLTE5MDAsNyAmIzQzOzE5ODQsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiAJbXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTsKIAllcnIgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBkZXYtJmd0O210NzYuYWxwaGEyLAotCQkJIGRldi0mZ3Q7Y291bnRyeV9pZV9lbnYpOwomIzQzOwkJCQkgZGV2LSZndDtjb3VudHJ5X2llX2VudiwgZmFsc2UpOwogCWlmIChlcnIgJmx0OyAwKQogCQlnb3RvIG91dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwppbmRleCBmYTI5YzQ4NmE0NTUzLi5lNDE0NDJiMjc2MzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtMzYyNCw3ICYjNDM7MzYyNCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X2NoYW5uZWxfZG9tYWluKTsKIHN0YXRpYyBpbnQKIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCSAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwKLQkJICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpCiYjNDM7CQkgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSkKIHsKIAlzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICpzZWc7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKQEAgLTM2NDIsMTkgJiM0MzszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCXU4IHBhZDE7CiAJCXU4IGFscGhhMlsyXTsKIAkJdTggdHlwZVsyXTsKLQkJdTggcnN2ZFs2NF07CiYjNDM7CQl1OCBlbnZfNmc7CiYjNDM7CQl1OCByc3ZkWzYzXTsKIAl9IF9fcGFja2VkIHJlcSA9IHsKIAkJLnRhZyA9IGNwdV90b19sZTE2KDB4MyksCiAKIAkJLmlkeCA9IGlkeCwKIAkJLmVudiA9IGVudl9jYXAsCiYjNDM7CQkuZW52XzZnID0gZGV2LSZndDtwaHkucG93ZXJfdHlwZSwKIAl9OwogCWludCByZXQsIHZhbGlkX2NudCA9IDA7CiAJdTggKnBvcywgKmxhc3RfcG9zOwomIzQzOwl1OCB0YXJnZXRfNmdfdHlwZTsKIAogCWlmICghY2xjKQogCQlyZXR1cm4gMDsKIAomIzQzOwkvKiBEZXRlcm1pbmUgdGFyZ2V0IDZHIHBvd2VyIHR5cGUgYmFzZWQgb24gcGh5LSZndDtwb3dlcl90eXBlICovCiYjNDM7CXN3aXRjaCAoZGV2LSZndDtwaHkucG93ZXJfdHlwZSkgewomIzQzOwljYXNlIE1UX0FQX0xQSToKJiM0MzsJCXRhcmdldF82Z190eXBlID0gJiMzOTswJiMzOTs7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNVF9BUF9TUDoKJiM0MzsJCXRhcmdldF82Z190eXBlID0gJiMzOTsxJiMzOTs7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNVF9BUF9WTFA6CiYjNDM7CQl0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MiYjMzk7OwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQl0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MCYjMzk7OyAvKiBkZWZhdWx0IHRvIExQSSAqLwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKIAlyZXEudmVyID0gY2xjLSZndDt2ZXI7CiAJcG9zID0gY2xjLSZndDtkYXRhICYjNDM7IHNpemVvZigqc2VnKSAqIGNsYy0mZ3Q7dDAubnJfc2VnOwogCWxhc3RfcG9zID0gY2xjLSZndDtkYXRhICYjNDM7IGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy0mZ3Q7ZGF0YSAmIzQzOyA0KSk7CkBAIC0zNjY2LDYgJiM0MzszNjg1LDIzIEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCSAgICBydWxlLSZndDthbHBoYTJbMV0gIT0gYWxwaGEyWzFdKQogCQkJY29udGludWU7CiAKJiM0MzsJCS8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6CiYjNDM7CQkgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKCkKJiM0MzsJCSAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspCiYjNDM7CQkgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKQomIzQzOwkJICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZQomIzQzOwkJICovCiYjNDM7CQlpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHsKJiM0MzsJCQkvKiBPbmx5IHNlbmQgdGhlIHNwZWNpZmljIDZHIHBvd2VyIHRhYmxlICovCiYjNDM7CQkJaWYgKHJ1bGUtJmd0O3R5cGVbMF0gIT0gdGFyZ2V0XzZnX3R5cGUpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKiBTZW5kIDIvNUcgYW5kIDZHIExQSSBhbmQgVkxQIG9ubHkgKi8KJiM0MzsJCQlpZiAocnVsZS0mZ3Q7dHlwZVswXSAhPSAmIzM5Oy0mIzM5OyAmYW1wOyZhbXA7IHJ1bGUtJmd0O3R5cGVbMF0gIT0gJiMzOTswJiMzOTsgJmFtcDsmYW1wOwomIzQzOwkJCSAgICBydWxlLSZndDt0eXBlWzBdICE9ICYjMzk7MiYjMzk7KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJc2VnID0gKHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKiljbGMtJmd0O2RhdGEKIAkJCSAgJiM0MzsgcnVsZS0mZ3Q7c2VnX2lkeCAtIDE7CiAKQEAgLTM2OTksNyAmIzQzOzM3MzUsNyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAogfQogCiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCi0JCSAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKQomIzQzOwkJICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpCiB7CiAJc3RydWN0IG10NzkyeF9waHkgKnBoeSA9IChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqKSZhbXA7ZGV2LSZndDtwaHk7CiAJaW50IGksIHJldDsKQEAgLTM3MTQsMTMgJiM0MzszNzUwLDEzIEBAIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMiwKIAkJCWNvbnRpbnVlOwogCiAJCXJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnZfY2FwLAotCQkJCQkgICBwaHktJmd0O2NsY1tpXSwgaSk7CiYjNDM7CQkJCQkgICBwaHktJmd0O2NsY1tpXSwgaSwgcG93ZXJfdHlwZV9jaGFuZ2UpOwogCiAJCS8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCAmIzM0OzAwJiMzNDsgYXMgZGVmYXVsdCAqLwogCQlpZiAocmV0ID09IC1FTk9FTlQpCiAJCQlyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsICYjMzQ7MDAmIzM0OywKIAkJCQkJCSAgIEVOVklST05fSU5ET09SLAotCQkJCQkJICAgcGh5LSZndDtjbGNbaV0sIGkpOwomIzQzOwkJCQkJCSAgIHBoeS0mZ3Q7Y2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7CiAJCWlmIChyZXQgJmx0OyAwKQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDMyMWU3MzIzNDdmMmYuLmUzZmVmNDFjYmIzMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCkBAIC0zODUsNyAmIzQzOzM4NSw5IEBAIGludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpOwogaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAotCQkgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCk7CiYjNDM7CQkgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7CiYjNDM7aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAomIzQzOwkJCSAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTsKIGludCBtdDc5MjVfbWN1X3NldF9tbG9fcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLAogCQkJICAgdTE2IHNlbF9saW5rcywgaW50IGR1cmF0aW9uLCB1OCB0b2tlbl9pZCk7CiBpbnQgbXQ3OTI1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jCmluZGV4IGY0YmViN2Y1MjA0M2MuLjVhODVkZTlhNGM2NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMKQEAgLTEzNywxNCAmIzQzOzEzNywxNCBAQCBtdDc5MjVfcmVnZF9jaGFubmVsX3VwZGF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCX0KIH0KIAotc3RhdGljIGludCBtdDc5MjVfbWN1X2FwcGx5X3JlZ2Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMiwKLQkJCQkgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudikKJiM0MztpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiYjNDM7CQkJICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnYsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7CiAJc3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LSZndDt3aXBoeTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYpOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudiwgcG93ZXJfdHlwZV9jaGFuZ2UpOwogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC0xNjcsNyAmIzQzOzE2Nyw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAKIAltdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpOwogCWlmIChkZXYtJmd0O3JlZ2RfY2hhbmdlKQotCQlyZXQgPSBtdDc5MjVfbWN1X2FwcGx5X3JlZ2QoZGV2LCBhbHBoYTIsIGNvdW50cnlfaWVfZW52KTsKJiM0MzsJCXJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYsIGZhbHNlKTsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCWRldi0mZ3Q7cmVnZF9jaGFuZ2UgPSBmYWxzZTsKIAlkZXYtJmd0O3JlZ2RfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKQEAgLTQ1Myw3ICYjNDM7NDUzLDcgQEAgaW50IG10NzkyNV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpCiAJfSBlbHNlIGlmIChwaHktJmd0O2NoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHsKIAkJcmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTsKIAl9IGVsc2UgewotCQlyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUik7CiYjNDM7CQlyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUiwgZmFsc2UpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdkX2NoYW5nZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10NzkyNWAgZHJpdmVyIHdpdGhpbiBNZWRpYVRlayYjMzk7cyBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIGZ1bmN0aW9uYWxpdHkgdG8gZGVhbCB3aXRoIDZHSHogcG93ZXIgdHlwZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHksIExQSSwgU1AsIGFuZCBWTFAuIEFuZCwgaXQgbWVudGlvbnMgYXBwbHlpbmcgcmVndWxhdG9yeSB1cGRhdGVzIHVzaW5nIHRoZSBNQ1UuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhOyB0aGlzIGtpbmQgb2YgdXBkYXRlIGNhbiBiZSB0cmlja3kuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eS4gU2luY2UgdGhlIGBtdDc5MjVgIGRyaXZlciBoYW5kbGVzIE1lZGlhVGVrIE1UNzkyNSBQQ0llL1VTQiB3aXJlbGVzcyBkZXZpY2Vz4oCmIGhhbmcgb24sIGlzIGl0IFBDSWUgKm9yKiBVU0I/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciBmaWxlcyB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7bmFuLmMmIzM0OywKICAgICYjMzQ7bmFuLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Nzg1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1IFVTQiBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBzeXN0ZW0gaGFzIGJvdGggYHBjaS5jYCBhbmQgYHVzYi5jYCDigJMgaW50ZXJlc3RpbmcuIFRoZSBwcmVzZW5jZSBvZiBhIFVTQiBkcml2ZXIgaW1tZWRpYXRlbHkgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLiBJJiMzOTttIHRoaW5raW5nLCBzaW5jZSBpdCYjMzk7cyBVU0IsIHdlIGNvdWxkIGVtdWxhdGUgaXQgdXNpbmcgYSBVU0IgZ2FkZ2V0IG9yIGV2ZW4gYSBkdW1teSBIQ0QuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgU3l6a2FsbGVyISBXYWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZnV6emluZyBVU0IgZGV2aWNlcyB1c2luZyB2aGNpLCBkb2VzbiYjMzk7dCBpdD8gWWVzISBUaGF0JiMzOTtzIGl0LCB0aGUgVVNCIGRyaXZlciBpcyBkZWZpbml0ZWx5IGZ1enplZC1hYmxlIHVzaW5nIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBmcmFtZXdvcmsuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGBtdDc5MjVgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgb3B0aW9ucyBhcmUuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIE1UNzkyNVUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBgTVQ3OTI1VWAgZGVwZW5kcyBvbi4gV2hhdCBhcmUgdGhlIHN1cHBvcnRpbmcgZWxlbWVudHMsIHRoZSBwcmUtcmVxdWlzaXRlcywgdGhlIG90aGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgaW50ZXJ3b3ZlbiB3aXRoIHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgdGVjaG5vbG9neT8gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHB1enpsZSBkb2VzIGl0IGNvbm5lY3Qgd2l0aD8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBsaXN0aW5nIGRlcGVuZGVuY2llcywgYnV0IHVuZGVyc3RhbmRpbmcgdGhlICoqbmF0dXJlKiogb2YgdGhvc2UgZGVwZW5kZW5jaWVzLiBBcmUgd2UgdGFsa2luZyBoYXJkd2FyZSwgZmlybXdhcmUsIGRyaXZlcnMsIHNwZWNpZmljIHNvZnR3YXJlIGxpYnJhcmllcywgb3IgZXh0ZXJuYWwgc3lzdGVtcz8gQXJlIHRoZXNlIGRlcGVuZGVuY2llcyBjcml0aWNhbCwgb3B0aW9uYWwsIG9yIHNvbWV0aGluZyBpbiBiZXR3ZWVuPyBBcmUgdGhlcmUgY2FzY2FkaW5nIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBidXJpZWQgd2l0aGluIHRoZSBvdGhlciBkZXBlbmRlbmNpZXM/CkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXAgYW5kIHRyeSBhbmQgZ2V0IGEgZ3Jhc3Agb2YgaG93IHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiB0ZWNobm9sb2d5IG9wZXJhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoaXMgYE1UNzkyNVVgIG1vZHVsZSByZWxpZXMgaGVhdmlseSBvbiBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLCB3aGljaCBpcyBhIGZhaXJseSBzdGFuZGFyZCBzZXR1cCBmb3IgYSBVU0Igd2lyZWxlc3MgZGV2aWNlLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBhbmQgYF9fbXQ3OTI1X21jdV9zZXRfY2xjYC4gVGhleSYjMzk7cmUgc2NhdHRlcmVkIGFjcm9zcyBgbWFpbi5jYCBhbmQgYG1jdS5jYCwgYm90aCBvZiB3aGljaCBhcmUgcGFydCBvZiB0aGUgYE1UNzkyNV9DT01NT05gIGNvZGViYXNlLCB3aGljaCBnaXZlcyBhIGhpbnQgYWJvdXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZHJpdmVyLgoKVGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIGhvdyB0aGVzZSBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSBgbXQ3OTI1X21hY19saW5rX3N0YV9hZGRgLCBhcmUgYWN0dWFsbHkgdHJpZ2dlcmVkLiBHaXZlbiB0aGUgZGVwZW5kZW5jeSBvbiBgTUFDODAyMTFgLCBpdOKAmXMgaGlnaGx5IHByb2JhYmxlIHRoYXQgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBpcyBob29rZWQgaW50byBgTUFDODAyMTFgJiMzOTtzIGNhbGxiYWNrIHN5c3RlbS4gQWRkaW5nIG9yIHJlbW92aW5nIHN0YXRpb25zIGlzIGEgY29yZSBvcGVyYXRpb24gd2l0aGluIGEgd2lyZWxlc3MgbmV0d29yaywgc28gaXTigJlzIGxvZ2ljYWwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIGludm9sdmVkIHdoZW4gYSBzdGF0aW9uIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gbm93IGJ5IGV4YW1pbmluZyB0aGUgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBmdW5jdGlvbiBpdHNlbGYgYW5kIGhvdyBpdCYjMzk7cyByZWdpc3RlcmVkIHdpdGggYE1BQzgwMjExYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY19saW5rX3N0YV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTkzMj1tdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTk5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo5OTE6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtOTkyLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTE3Mz1tdDc5MjVfbWFjX3N0YV9hZGRfbGlua3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMS1cdFx0bGlua19zdGEgPSBtdDc5Mnhfc3RhX3RvX2xpbmtfc3RhKHZpZiwgc3RhLCBsaW5rX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjAyOlx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdmlmLCBsaW5rX3N0YSwgbWxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyMDMtXHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTIyND1pbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTI0MjpcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX3N0YV9hZGQobWRldiwgdmlmLCBcdTAwMjZzdGEtXHUwMDNlZGVmbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQzLVx0XHRcdFx0XHQgICAgICBcdTAwMjZtc3RhLVx1MDAzZWRlZmxpbmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKlZlcmlmaWNhdGlvbiBvZiBgbXQ3OTI1X21hY19zdGFfYWRkYCBhcyBhIG1hYzgwMjExIENhbGxiYWNrKioKCk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBgbXQ3OTI1X21hY19zdGFfYWRkYCwgaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBgc3RhX2FkZGAgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgaXQmIzM5O3MgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgbWFjODAyMTEgY29yZSB3aGVuIGEgbmV3IHN0YXRpb24gKFNUQSksIGVzc2VudGlhbGx5IGEgd2lyZWxlc3MgY2xpZW50LCBuZWVkcyB0byBiZSBhZGRlZCBvciByZWdpc3RlcmVkIHdpdGggYSBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciAoTUFDKSBkZXZpY2UgdGhhdCYjMzk7cyBiYXNlZCBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuCgpHaXZlbiB0aGF0IGNsYWltLCBteSBmaXJzdCBpbnN0aW5jdCwgYXMgYSBuZXR3b3JraW5nIHNwZWNpYWxpc3QsIGlzIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSB0aGlzIGFzc2VydGlvbi4gSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyBjb3JyZWN0bHkgaG9va2VkIHVwIGFuZCBmdW5jdGlvbnMgYXMgdGhlIGludGVuZGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBTVEEgYWRkaXRpb25zIHdpdGhpbiB0aGUgTVQ3OTI1IGRyaXZlciYjMzk7cyBpbnRlZ3JhdGlvbiB3aXRoIG1hYzgwMjExLiBJdCYjMzk7cyBjcnVjaWFsIHRoaXMgaXMgY29ycmVjdDsgb3RoZXJ3aXNlLCB0aGUgZHJpdmVyJiMzOTtzIGFzc29jaWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIHdpcmVsZXNzIGNsaWVudHMgd2lsbCBiZSBjb21wbGV0ZWx5IGJyb2tlbi4gVGhpcyBtZWFucyBJIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLCB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgaW4gdGhlbSwgYW5kIGxpa2VseSB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY19zdGFfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xMTcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMTczOm10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTExNzQtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHVuc2lnbmVkIGxvbmcgbmV3X2xpbmtzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyMjQ6aW50IG10NzkyNV9tYWNfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyNS1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTI0MDpcdFx0ZXJyID0gbXQ3OTI1X21hY19zdGFfYWRkX2xpbmtzKGRldiwgdmlmLCBzdGEsIHN0YS1cdTAwM2V2YWxpZF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyNDg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTk6XHRlcnIgPSBtdDc5MjVfbWFjX3N0YV9hZGRfbGlua3MoZGV2LCB2aWYsIHN0YSwgYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDIwLVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDE9aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMwMjppbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwMy1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTUyOD1zdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ0LVx0XHQucnhfcG9sbF9jb21wbGV0ZSA9IG10NzkyeF9yeF9wb2xsX2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ1Olx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2NC1cdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTY1Olx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2Ni1cdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk5OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBtdDc5MjVfbWFjX3N0YV9hZGRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgdXNlZCBpbiBib3RoIFBDSSBhbmQgVVNCIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIuIFRoYXQmIzM5O3MgZ29vZCBuZXdzOyB0aGUgVVNCIGltcGxlbWVudGF0aW9uIG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiB0ZXN0aW5nIGl0IHVzaW5nIHZoY2ksIHdoaWNoIGlzIGFsd2F5cyBlYXNpZXIgdG8gbWFuYWdlIGZvciBmdXp6aW5nLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgbXQ3OTI1X21hY19saW5rX3N0YV9hZGRgIGFuZCBgbXQ3OTI1X21hY19saW5rX3N0YV9yZW1vdmVgIHRvIGNhbGwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBwbHVzIGBtdDc5MjVfbWN1X3NldF9jbGNgIGFuZCBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYCwgc28gdGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSB2dWxuZXJhYmxlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCBjb3JyZWN0bHkuCgpGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgTVQ3OTI1VWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gYE1UNzkyNUVgIHdvdWxkIGFsc28gYmUgZ29vZCB0byB0ZXN0LCBidXQgc2luY2UgdmhjaSB3aWxsIGJlIHVzZWQsIGBNVDc5MjVVYCBpcyB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIGluaXRpYWwgZnV6emluZy4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHNvIHRob3NlIHNob3VsZCBhbHJlYWR5IGJlIGFjY291bnRlZCBmb3IuIEFoLCBgTVQ3OTI1X0NPTU1PTmAgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBieSBgTVQ3OTI1VWAsIHNvIG5vdGhpbmcgdG8gd29ycnkgYWJvdXQgdGhlcmUuIFNvIGVuYWJsaW5nIGBNVDc5MjVVYCBhbmQgYE1UNzkyNUVgIHNob3VsZCBjb3ZlciB1cy4KCk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBTaW5jZSB0aGUgbGluayBmdW5jdGlvbnMgYXJlIHN0YXRpYywgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBhbmQgYG10NzkyNV9tY3Vfc2V0X2NsY2AuCgpKdXN0IG5lZWQgdG8gY29uZmlybSB0aGF0IGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgIGFjdHVhbGx5IGV4aXN0cy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE0MTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0MTE6bXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTQxMi1cdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdW5zaWduZWQgbG9uZyBvbGRfbGlua3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTQ3ODp2b2lkIG10NzkyNV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTQ3OS1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTE1LVx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTE2Olx0XHRtdDc5MjVfbWFjX3N0YV9yZW1vdmVfbGlua3MoZGV2LCB2aWYsIHN0YSwgbXN0YS1cdTAwM2V2YWxpZF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUxNy1cdFx0bXQ3OTI1X21jdV9kZWxfZGV2KG1kZXYsIHZpZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE1MzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTMxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTU6XHRlcnIgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmVfbGlua3MoZGV2LCB2aWYsIHN0YSwgcmVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE2LVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDU9aW50IG10NzkyNV9tYWNfc3RhX2V2ZW50KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwNi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgZW51bSBtdDc2X3N0YV9ldmVudCBldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozMDc6dm9pZCBtdDc5MjVfbWFjX3N0YV9yZW1vdmUoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzA4LVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTUyOD1zdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ2LVx0XHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo1NDc6XHRcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ4LVx0XHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjYtXHRcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2NzpcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjgtXHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM5MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTVQ3OTI1IERyaXZlciBTeW1ib2wgRXhwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cyBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgaXMgcHJlc2VudCBhbmQsIGNydWNpYWxseSwgaXQmIzM5O3MgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb24gdG8gYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAuIEhtbSwgaW5pdGlhbGx5LCBpdCBsb29rZWQgbGlrZSBpdCAqd2FzbiYjMzk7dCogZXhwb3J0ZWQuIEJ1dCB3YWl0IGEgc2Vjb25kLCB0aGlzIGlzIGEgYml0IGRlY2VwdGl2ZSwgaXNuJiMzOTt0IGl0PyBUaGUgcGF0Y2ggaGlzdG9yeSBzaG93cyBpdCB3YXMgY2hhbmdlZCBmcm9tIGEgYHN0YXRpYyBpbnRgIHRvIGEgcGxhaW4gYGludGAsIGFuZCBpdCYjMzk7cyBiZWVuIGluY2x1ZGVkIGluIGBtdDc5MjUuaGAgbm93LiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vIGxvbmdlciBzdGF0aWMsIGFuZCB0aGF0IG1ha2VzIGFsbCB0aGUgZGlmZmVyZW5jZSDigJMgaXQmIzM5O3MgZWZmZWN0aXZlbHkgZXhwb3J0ZWQgbm93IGJ5IHZpcnR1ZSBvZiB0aGF0IGNoYW5nZS4KCkFscmlnaHQsIG1vdmluZyBvbiwgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgbm9uLXN0YXRpYyBhcyB3ZWxsLiBHb29kLgoKYG10NzkyNV9yZWdkX2NoYW5nZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZC4KClNvLCB0YWtpbmcgc3RvY2sgb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQsIG15IGxpc3Qgb2YgdGhlIHN5bWJvbHMgdGhhdCBzaG91bGQgYmUgaW4gZm9jdXMsIGdpdmVuIHRoZSBjaGFuZ2VzLCBub3cgaXM6CgotICAgYG10NzkyNV9tYWNfc3RhX2FkZGAKLSAgIGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgCi0gICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYAotICAgYG10NzkyNV9tY3Vfc2V0X2NsY2AKLSAgIGBtdDc5MjVfcmVnZF9jaGFuZ2VgCi0gICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAKCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBpZiBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAgZXZlbiBleGlzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVnZF91cGRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MzYyNT1fX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2ODgtXHRcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzozNjg5Olx0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2OTAtXHRcdCAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9ODI0PXN0YXRpYyBpbnQgX210NzkyNV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4MDpcdG10NzkyNV9tY3VfcmVnZF91cGRhdGUoZGV2LCBtZGV2LVx1MDAzZWFscGhhMiwgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4MS1mYWlsZWQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jPTE0MD1pbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoxNjE6aW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0xNjItXHRcdFx0ICAgZW51bSBlbnZpcm9ubWVudF9jYXAgY291bnRyeV9pZV9lbnYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVnZF91cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0xODA9dm9pZCBtdDc5MjVfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoyMTc6XHRtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKGRldiwgcmVxLVx1MDAzZWFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0yMTgtXHRcdFx0ICAgICAgIHJlcS1cdTAwM2Vjb3VudHJ5X2llX2Vudik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jPTI5MT1pbnQgbXQ3OTI1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY3LVx0ZGV2LVx1MDAzZXJlZ2RfY2hhbmdlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzozNjg6XHRtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKGRldiwgYWxwaGEyLCBFTlZJUk9OX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuaD00Mz1zdHJ1Y3QgbXQ3OTI1X3JlZ2RfcXVlcnlfcmVxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmgtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmg6NjI6aW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuaC02My1cdFx0XHQgICBlbnVtIGVudmlyb25tZW50X2NhcCBjb3VudHJ5X2llX2Vudik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mzc3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAgZGVmaW5pdGVseSBleGlzdHMsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHN0YXRpYyBmdW5jdGlvbiwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGZyb206IGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgYW5kIGBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZWAuIFNpbmNlIGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgaXMgc3RhdGljLCB0aGF0IGltcGxpZXMgaXQgaXMgY2FsbGVkIG9ubHkgZnJvbSBgbXQ3OTI1X21hY19zdGFfYWRkYC4gVGh1cywgdGhlIGZ1bmN0aW9ucyBgbXQ3OTI1X21hY19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgc2VlbSBsaWtlIGxvZ2ljYWwgZW50cnkgcG9pbnRzIHRvIG9ic2VydmUgdGhlIGVmZmVjdHMgb2YgdGhpcyBwYXRjaC4KCkkgc2hvdWxkIHZlcmlmeSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZXhpc3QuIExldCYjMzk7cyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBMaXN0aW5nIGJvdGggYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAgc2VlbXMgc3VmZmljaWVudCB0byBjYXB0dXJlIHRoZSBkZXBlbmRlbmNpZXMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkLiBBaCwgYG10NzkyNV9zZXRfc2FyX3NwZWNzYCBpcyBjaGFuZ2VkOiBpdCBub3cgcGFzc2VzIGBmYWxzZWAgdG8gYG10NzkyNV9tY3Vfc2V0X2NsY2AuIE5vdyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgYG10NzkyNV9zZXRfc2FyX3NwZWNzYCBpcyBleHBvcnRlZCBvciBzdGF0aWMuIFRoYXQgd2lsbCBkZXRlcm1pbmUgaG93IHdpZGVseSB0aGlzIG1vZGlmaWNhdGlvbiByaXBwbGVzIHRocm91Z2ggdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3NldF9zYXJfc3BlY3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE5NjM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxOTc5OnN0YXRpYyBpbnQgbXQ3OTI1X3NldF9zYXJfc3BlY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk4MC1cdFx0XHRcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjgwMD1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5MjVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yODQ3LVx0LmZsdXNoID0gbXQ3OTJ4X2ZsdXNoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4NDg6XHQuc2V0X3Nhcl9zcGVjcyA9IG10NzkyNV9zZXRfc2FyX3NwZWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI4NDktXHQucmVtYWluX29uX2NoYW5uZWwgPSBtdDc5MjVfcmVtYWluX29uX2NoYW5uZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTE4CgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogMjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0FSIFNwZWNpZmljYXRpb25zIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzZXRfc2FyX3NwZWNzYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoaW4gYGllZWU4MDIxMV9vcHNgLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBtYWM4MDIxMSwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7Q2FuIEkganVzdCBkaXJlY3RseSByZWZlcmVuY2UgYG10NzkyNV9zZXRfc2FyX3NwZWNzYD8mIzM0OyBCdXQgYmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0IGNvdWxkIGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzICpub3QqIGlubGluZWQuCgpUaGUga2V5IHRoZW4gaXMgdGhhdCBgbXQ3OTI1X21jdV9zZXRfY2xjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgc2V0X3Nhcl9zcGVjc2AgZnVuY3Rpb24gYW5kICp0aGF0KiBpcyBleHBvcnRlZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYy4gU28gSSBjYW4gZm9sbG93IHRoYXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGZvY2FsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGFyZWEuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3Q6CgoqICAgYG10NzkyNV9tYWNfc3RhX2FkZGAKKiAgIGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgCiogICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYAoqICAgYG10NzkyNV9tY3Vfc2V0X2NsY2AKKiAgIGBtdDc5MjVfcmVnZF9jaGFuZ2VgCiogICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAKCkhhbmcgb24gYSBzZWNvbmQuIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgIGlzIG5vbi1zdGF0aWMsIGJ1dCBpcyBpdCBleHBvcnRlZD8gVGhhdCYjMzk7cyB0aGUgbWlzc2luZyBwaWVjZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyBhY3R1YWxseSB2aXNpYmxlIG91dHNpZGUgaXRzIG1vZHVsZS4gVGltZSB0byBjaGVjay4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwobXQ3OTI1X21jdV9hcHBseV9yZWdkXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNDcKCQkJCQkJCW91dHB1dDogNjAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uJiMzOTtzIFNjb3BlKioKCkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpc24mIzM5O3QgZXhwb3J0ZWQsIGJ1dCB0aGUgZ29vZCBuZXdzIGlzLCBpdCYjMzk7cyAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMgZWl0aGVyLiBUaGF0JiMzOTtzIGFjdHVhbGx5IGEgcHJldHR5IHN0YW5kYXJkIGFuZCBhY2NlcHRhYmxlIHNldHVwLiBJdCBpbXBsaWVzIHRoYXQgd2hpbGUgaXQmIzM5O3MgaW50ZW5kZWQgZm9yIGludGVybmFsIG1vZHVsZSB1c2UsIGl0JiMzOTtzIHN0aWxsIGFjY2Vzc2libGUgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG9mZmVycyB0aGUgZmxleGliaWxpdHkgb2YgaW50ZXItZmlsZSB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlciBpZiBuZWVkZWQuIE5vIHJlZCBmbGFncyBoZXJlLiBUaGlzIGlzIHBlcmZlY3RseSB3b3JrYWJsZS4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIG91dCB3aGF0IGBtdDc5MjVfbWN1X3NldF9jbGNgIGlzIGFib3V0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTF9HUExcXChtdDc5MjVfbWN1X3NldF9jbGNcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzUzNQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipDb25zaWRlcmluZyBOb24tU3RhdGljLCBOb24tRXhwb3J0ZWQgVmFyaWFibGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNvbWV0aGluZyYjMzk7cyBjYXVnaHQgbXkgZXllOiBhIHZhcmlhYmxlIHRoYXQmIzM5O3MgKm5vdCogZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGludGVybmFsIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBidXQgYWxzbyAqbm90KiBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHBvdGVudGlhbGx5IGhhcyBicm9hZGVyIHNjb3BlIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQgYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgbGVha2luZyBzb21lIHZhbHVlIGl0IHNob3VsZG4mIzM5O3QgYmUuCgpUaGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYG10NzkyNV9yZWdkX2NoYW5nZWAuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSBhIGxpa2VseSBwbGFjZSB0byBmaW5kIGludGVyYWN0aW9ucyB3aXRoIHdoYXRldmVyIHRoaXMgdmFyaWFibGUgaXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgdmFyaWFibGUgZmFjdG9ycyBpbnRvIHRoZSBsb2dpYyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKG10NzkyNV9yZWdkX2NoYW5nZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9NDI4PWludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy00NTgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjQ1OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnZF9jaGFuZ2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTQ2MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMTUKCQkJCQkJCW91dHB1dDogMjQ3CgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHJlYWR5IGZvciByZXZpZXcuIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBleHBvcnRlZCBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIE1lZGlhVGVrIG10NzkyNSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2VkIG9uIHN0YXRpb24gbWFuYWdlbWVudCBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBtdDc5MjVfbWFjX3N0YV9hZGRgLCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCwgYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAsIGBtdDc5MjVfbWN1X3NldF9jbGNgLCBgbXQ3OTI1X3JlZ2RfY2hhbmdlYCwgYW5kIGBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KClRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSByZWxldmFudCBoZXJlIGFyZSBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYC4gVGhlIHBhdGNoJiMzOTtzIGRlc2NyaXB0aW9uIGhpZ2hsaWdodHMgdGhlIGhhbmRsaW5nIG9mIDZHSHogcG93ZXIgdHlwZSBjaGFuZ2VzIGFuZCB0aGUgcmVndWxhdG9yeSB1cGRhdGVzIG1hbmFnZWQgdGhyb3VnaCB0aGUgTUNVLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZXhwb3NlZCB0aHJvdWdoIHRoZSBtYWM4MDIxMSBpbnRlcmZhY2UsIG1lYW5pbmcgYWRkaW5nL3JlbW92aW5nIHN0YXRpb25zIGFuZCByZWd1bGF0b3J5IGRvbWFpbiB1cGRhdGVzIHdpbGwgdHJpZ2dlciB0aGlzLiBUaGlzIGhhcyBmdXp6aW5nIHdyaXR0ZW4gYWxsIG92ZXIgaXQ7IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGVzZSBmdW5jdGlvbnMgYXJlIHJpcGUgZm9yIHRlc3RpbmcuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBTaW5jZSBgTUFDODAyMTFgIGlzIGEgY29tbW9uIHN1YnN5c3RlbSBkZXBlbmRlbmN5LCBJIHdpbGwgaW5jbHVkZSBgTVQ3OTI1VWAsIGBNVDc5MjVFYCwgYW5kIGBNQUM4MDIxMWAgaW4gbXkgY29uZmlndXJhdGlvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgdGhlIGluaXRpYWwgYXNzZXNzbWVudC4gSSYjMzk7bGwgZmxhZyBpdCBmb3IgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY19zdGFfYWRkJiMzNDssCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX3JlbW92ZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X2FwcGx5X3JlZ2QmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9zZXRfY2xjJiMzNDssCiAgICAmIzM0O210NzkyNV9yZWdkX2NoYW5nZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlZ2RfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyAoTFBJLCBTUCwgVkxQKSBhbmQgYXBwbHkgcmVndWxhdG9yeSB1cGRhdGVzIHZpYSB0aGUgTUNVLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgb3BlcmF0aW9ucyBzdWNoIGFzIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIE1UNzkyNSBkcml2ZXIgaW5jbHVkZXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4sIHZoY2kpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDcuNjUyNTcwOTgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzUzMDMwODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDcuNjUyNTc4NDEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUyMDMwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNzI5ZWFkZmFjYjAzNWZiYzBiYWJjNmU5MzFhNGVjNTZiY2MzYjAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuaW5kZXggODRiNTVmMDA4YjNkMy4uMzAwYWQwYjA5YjY5NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5AQCAtOTA4LDYgKzkwOCw4NiBAQCBtdDc5MjVfZ2V0X3JhdGVzX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRyZXR1cm4gbXZpZi1cXHUwMDNlYmFzaWNfcmF0ZXNfaWR4O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZFxcbittdDc5MjVfY2FsY192aWZfbnVtKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuK3tcXG4rXFx0dTMyICpudW0gPSBwcml2O1xcbitcXG4rXFx0aWYgKCFwcml2KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRzd2l0Y2ggKHZpZi1cXHUwMDNldHlwZSkge1xcbitcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxuK1xcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVDpcXG4rXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG4rXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XFxuK1xcdFxcdCpudW0gKz0gMTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkXFxuK210NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mLFxcbitcXHRcXHRcXHRcXHRib29sIGlzX2FkZClcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuK1xcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdmlmLVxcdTAwM2VwaHk7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcXG4rXFx0dTMyIHZhbGlkX3ZpZl9udW0gPSAwO1xcbitcXHRlbnVtIG10NzkyeF9yZWdfcG93ZXJfdHlwZSBvbGRfcG93ZXJfdHlwZTtcXG4rXFx0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcXG4rXFxuK1xcdG9sZF9wb3dlcl90eXBlID0gcGh5LVxcdTAwM2Vwb3dlcl90eXBlO1xcbitcXG4rXFx0LyogVHJ5IHRvIGdldCBjaGFubmVsIGZyb20gbGlua19jb25mIGZpcnN0LCB0aGVuIHZpZi1cXHUwMDNlYnNzX2NvbmYsIHRoZW4gcGh5ICovXFxuK1xcdGlmIChsaW5rX2NvbmYgXFx1MDAyNlxcdTAwMjYgbGlua19jb25mLVxcdTAwM2VjaGFucmVxLm9wZXIuY2hhbilcXG4rXFx0XFx0Y2hhbiA9IGxpbmtfY29uZi1cXHUwMDNlY2hhbnJlcS5vcGVyLmNoYW47XFxuK1xcdGVsc2UgaWYgKHZpZi1cXHUwMDNlYnNzX2NvbmYuY2hhbnJlcS5vcGVyLmNoYW4pXFxuK1xcdFxcdGNoYW4gPSB2aWYtXFx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuO1xcbitcXHRlbHNlIGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYW5kZWYuY2hhbilcXG4rXFx0XFx0Y2hhbiA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhbmRlZi5jaGFuO1xcbitcXG4rXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgSUVFRTgwMjExX0lGQUNFX0lURVJfUkVTVU1FX0FMTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG10NzkyNV9jYWxjX3ZpZl9udW0sIFxcdTAwMjZ2YWxpZF92aWZfbnVtKTtcXG4rXFxuK1xcdGlmICh2YWxpZF92aWZfbnVtIFxcdTAwM2UgMSkge1xcbitcXHRcXHRwaHktXFx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFpc19hZGQpXFxuK1xcdFxcdHZpZi1cXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSA9IElFRUU4MDIxMV9SRUdfVU5TRVRfQVA7XFxuK1xcbitcXHRzd2l0Y2ggKHZpZi1cXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSkge1xcbitcXHRjYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6XFxuK1xcdFxcdHBoeS1cXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1NQO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX1ZMUF9BUDpcXG4rXFx0XFx0cGh5LVxcdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfVkxQO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX0xQSV9BUDpcXG4rXFx0XFx0cGh5LVxcdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfTFBJO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOlxcbitcXHRcXHRwaHktXFx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9VTlNFVDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeS1cXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitvdXQ6XFxuK1xcdHBvd2VyX3R5cGVfY2hhbmdlZCA9IChvbGRfcG93ZXJfdHlwZSAhPSBwaHktXFx1MDAzZXBvd2VyX3R5cGUpO1xcbitcXG4rXFx0aWYgKHBvd2VyX3R5cGVfY2hhbmdlZCBcXHUwMDI2XFx1MDAyNiBjaGFuIFxcdTAwMjZcXHUwMDI2IGNoYW4tXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuK1xcdFxcdG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5hbHBoYTIsIGRldi1cXHUwMDNlY291bnRyeV9pZV9lbnYsIHRydWUpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEsXFxuQEAgLTEwMzAsNiArMTExMCw4IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbiBcXHRcXHRcXHRnb3RvIG91dF9wbTtcXG4gXFx0fVxcbiBcXG4rXFx0bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7XFxuK1xcbiBcXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZkZXYtXFx1MDAzZXBtKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC0xMzIwLDYgKzE0MDIsOCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuIFxcdG10NzZfd2NpZF9jbGVhbnVwKG1kZXYsIHdjaWQpO1xcbiBcXHRtdDc2X3djaWRfbWFza19jbGVhcihtZGV2LVxcdTAwM2V3Y2lkX21hc2ssIGlkeCk7XFxuIFxcbitcXHRtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHZpZiwgbGlua19jb25mLCBmYWxzZSk7XFxuK1xcbiBcXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZkZXYtXFx1MDAzZXBtKTtcXG4gfVxcbiBcXG5AQCAtMTkwMCw3ICsxOTg0LDcgQEAgc3RhdGljIGludCBtdDc5MjVfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuIFxcdGVyciA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGRldi1cXHUwMDNlbXQ3Ni5hbHBoYTIsXFxuLVxcdFxcdFxcdCBkZXYtXFx1MDAzZWNvdW50cnlfaWVfZW52KTtcXG4rXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbmluZGV4IGZhMjljNDg2YTQ1NTMuLmU0MTQ0MmIyNzYzNGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbkBAIC0zNjI0LDcgKzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XFxuIHN0YXRpYyBpbnRcXG4gX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gXFx0XFx0ICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwLFxcbi1cXHRcXHQgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeClcXG4rXFx0XFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IG10NzkyNV9jbGNfc2VnbWVudCAqc2VnO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbkBAIC0zNjQyLDE5ICszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdHU4IHBhZDE7XFxuIFxcdFxcdHU4IGFscGhhMlsyXTtcXG4gXFx0XFx0dTggdHlwZVsyXTtcXG4tXFx0XFx0dTggcnN2ZFs2NF07XFxuK1xcdFxcdHU4IGVudl82ZztcXG4rXFx0XFx0dTggcnN2ZFs2M107XFxuIFxcdH0gX19wYWNrZWQgcmVxID0ge1xcbiBcXHRcXHQudGFnID0gY3B1X3RvX2xlMTYoMHgzKSxcXG4gXFxuIFxcdFxcdC5pZHggPSBpZHgsXFxuIFxcdFxcdC5lbnYgPSBlbnZfY2FwLFxcbitcXHRcXHQuZW52XzZnID0gZGV2LVxcdTAwM2VwaHkucG93ZXJfdHlwZSxcXG4gXFx0fTtcXG4gXFx0aW50IHJldCwgdmFsaWRfY250ID0gMDtcXG4gXFx0dTggKnBvcywgKmxhc3RfcG9zO1xcbitcXHR1OCB0YXJnZXRfNmdfdHlwZTtcXG4gXFxuIFxcdGlmICghY2xjKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdC8qIERldGVybWluZSB0YXJnZXQgNkcgcG93ZXIgdHlwZSBiYXNlZCBvbiBwaHktXFx1MDAzZXBvd2VyX3R5cGUgKi9cXG4rXFx0c3dpdGNoIChkZXYtXFx1MDAzZXBoeS5wb3dlcl90eXBlKSB7XFxuK1xcdGNhc2UgTVRfQVBfTFBJOlxcbitcXHRcXHR0YXJnZXRfNmdfdHlwZSA9ICcwJztcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgTVRfQVBfU1A6XFxuK1xcdFxcdHRhcmdldF82Z190eXBlID0gJzEnO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNVF9BUF9WTFA6XFxuK1xcdFxcdHRhcmdldF82Z190eXBlID0gJzInO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0dGFyZ2V0XzZnX3R5cGUgPSAnMCc7IC8qIGRlZmF1bHQgdG8gTFBJICovXFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbiBcXHRyZXEudmVyID0gY2xjLVxcdTAwM2V2ZXI7XFxuIFxcdHBvcyA9IGNsYy1cXHUwMDNlZGF0YSArIHNpemVvZigqc2VnKSAqIGNsYy1cXHUwMDNldDAubnJfc2VnO1xcbiBcXHRsYXN0X3BvcyA9IGNsYy1cXHUwMDNlZGF0YSArIGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy1cXHUwMDNlZGF0YSArIDQpKTtcXG5AQCAtMzY2Niw2ICszNjg1LDIzIEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdCAgICBydWxlLVxcdTAwM2VhbHBoYTJbMV0gIT0gYWxwaGEyWzFdKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuK1xcdFxcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XFxuK1xcdFxcdCAqIHBvd2VyX3R5cGVfY2hhbmdlID09IGZhbHNlOiBmcm9tIG10NzkyNV9tY3VfcmVnZF91cGRhdGUoKVxcbitcXHRcXHQgKiAgIC0gU2VuZCAyLzVHICgnLScpIGFuZCA2RyBMUEkgKCcwJykgYW5kIDZHIFZMUCAoJzInKVxcbitcXHRcXHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKVxcbitcXHRcXHQgKiAgIC0gU2VuZCBvbmx5IHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSBiYXNlZCBvbiBwb3dlcl90eXBlXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHtcXG4rXFx0XFx0XFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xcbitcXHRcXHRcXHRpZiAocnVsZS1cXHUwMDNldHlwZVswXSAhPSB0YXJnZXRfNmdfdHlwZSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdC8qIFNlbmQgMi81RyBhbmQgNkcgTFBJIGFuZCBWTFAgb25seSAqL1xcbitcXHRcXHRcXHRpZiAocnVsZS1cXHUwMDNldHlwZVswXSAhPSAnLScgXFx1MDAyNlxcdTAwMjYgcnVsZS1cXHUwMDNldHlwZVswXSAhPSAnMCcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIHJ1bGUtXFx1MDAzZXR5cGVbMF0gIT0gJzInKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0c2VnID0gKHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKiljbGMtXFx1MDAzZWRhdGFcXG4gXFx0XFx0XFx0ICArIHJ1bGUtXFx1MDAzZXNlZ19pZHggLSAxO1xcbiBcXG5AQCAtMzY5OSw3ICszNzM1LDcgQEAgX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gfVxcbiBcXG4gaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcClcXG4rXFx0XFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqKVxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4gXFx0aW50IGksIHJldDtcXG5AQCAtMzcxNCwxMyArMzc1MCwxMyBAQCBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cmV0ID0gX19tdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudl9jYXAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHBoeS1cXHUwMDNlY2xjW2ldLCBpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgcGh5LVxcdTAwM2VjbGNbaV0sIGksIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4gXFxuIFxcdFxcdC8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCBcXFwiMDBcXFwiIGFzIGRlZmF1bHQgKi9cXG4gXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbiBcXHRcXHRcXHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIFxcXCIwMFxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIEVOVklST05fSU5ET09SLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICBwaHktXFx1MDAzZWNsY1tpXSwgaSk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHBoeS1cXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi5lM2ZlZjQxY2JiMzM4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5AQCAtMzg1LDcgKzM4NSw5IEBAIGludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcXG4gaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCk7XFxuK1xcdFxcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwLCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4raW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbitcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7XFxuIGludCBtdDc5MjVfbWN1X3NldF9tbG9fcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLFxcbiBcXHRcXHRcXHQgICB1MTYgc2VsX2xpbmtzLCBpbnQgZHVyYXRpb24sIHU4IHRva2VuX2lkKTtcXG4gaW50IG10NzkyNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jXFxuaW5kZXggZjRiZWI3ZjUyMDQzYy4uNWE4NWRlOWE0YzY3OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcXG5AQCAtMTM3LDE0ICsxMzcsMTQgQEAgbXQ3OTI1X3JlZ2RfY2hhbm5lbF91cGRhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcXG4raW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbitcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4gXFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LVxcdTAwM2V3aXBoeTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgZW52KTtcXG4rXFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbkBAIC0xNjcsNyArMTY3LDcgQEAgaW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gXFxuIFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuIFxcdGlmIChkZXYtXFx1MDAzZXJlZ2RfY2hhbmdlKVxcbi1cXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2FwcGx5X3JlZ2QoZGV2LCBhbHBoYTIsIGNvdW50cnlfaWVfZW52KTtcXG4rXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xcbiBcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbiBcXHRkZXYtXFx1MDAzZXJlZ2RfY2hhbmdlID0gZmFsc2U7XFxuIFxcdGRldi1cXHUwMDNlcmVnZF9pbl9wcm9ncmVzcyA9IGZhbHNlO1xcbkBAIC00NTMsNyArNDUzLDcgQEAgaW50IG10NzkyNV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuIFxcdH0gZWxzZSBpZiAocGh5LVxcdTAwM2VjaGlwX2NhcCBcXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcXG4gXFx0XFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmV0dXJuIG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgRU5WSVJPTl9JTkRPT1IpO1xcbitcXHRcXHRyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUiwgZmFsc2UpO1xcbiBcXHR9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2RfY2hhbmdlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDguMjI4NDY3NzgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMxMTc3MTI1MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzcyOWVhZGZhY2IwMzVmYmMwYmFiYzZlOTMxYTRlYzU2YmNjM2IwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbmluZGV4IDg0YjU1ZjAwOGIzZDMuLjMwMGFkMGIwOWI2OTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTkwOCw2ICs5MDgsODYgQEAgbXQ3OTI1X2dldF9yYXRlc190YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdHJldHVybiBtdmlmLVx1MDAzZWJhc2ljX3JhdGVzX2lkeDtcbiB9XG4gXG4rc3RhdGljIHZvaWRcbittdDc5MjVfY2FsY192aWZfbnVtKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4re1xuK1x0dTMyICpudW0gPSBwcml2O1xuK1xuK1x0aWYgKCFwcml2KVxuK1x0XHRyZXR1cm47XG4rXG4rXHRzd2l0Y2ggKHZpZi1cdTAwM2V0eXBlKSB7XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQ6XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuK1x0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XG4rXHRcdCpudW0gKz0gMTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWRcbittdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4rXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsXG4rXHRcdFx0XHRib29sIGlzX2FkZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbitcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdmlmLVx1MDAzZXBoeTtcbitcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuK1x0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcbitcdHUzMiB2YWxpZF92aWZfbnVtID0gMDtcbitcdGVudW0gbXQ3OTJ4X3JlZ19wb3dlcl90eXBlIG9sZF9wb3dlcl90eXBlO1xuK1x0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcbitcbitcdG9sZF9wb3dlcl90eXBlID0gcGh5LVx1MDAzZXBvd2VyX3R5cGU7XG4rXG4rXHQvKiBUcnkgdG8gZ2V0IGNoYW5uZWwgZnJvbSBsaW5rX2NvbmYgZmlyc3QsIHRoZW4gdmlmLVx1MDAzZWJzc19jb25mLCB0aGVuIHBoeSAqL1xuK1x0aWYgKGxpbmtfY29uZiBcdTAwMjZcdTAwMjYgbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuKVxuK1x0XHRjaGFuID0gbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuO1xuK1x0ZWxzZSBpZiAodmlmLVx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuKVxuK1x0XHRjaGFuID0gdmlmLVx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuO1xuK1x0ZWxzZSBpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuKVxuK1x0XHRjaGFuID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuO1xuK1xuK1x0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxuK1x0XHRcdFx0XHQgICAgSUVFRTgwMjExX0lGQUNFX0lURVJfUkVTVU1FX0FMTCxcbitcdFx0XHRcdFx0ICAgIG10NzkyNV9jYWxjX3ZpZl9udW0sIFx1MDAyNnZhbGlkX3ZpZl9udW0pO1xuK1xuK1x0aWYgKHZhbGlkX3ZpZl9udW0gXHUwMDNlIDEpIHtcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGlmICghaXNfYWRkKVxuK1x0XHR2aWYtXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSA9IElFRUU4MDIxMV9SRUdfVU5TRVRfQVA7XG4rXG4rXHRzd2l0Y2ggKHZpZi1cdTAwM2Vic3NfY29uZi5wb3dlcl90eXBlKSB7XG4rXHRjYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6XG4rXHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfU1A7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX1ZMUF9BUDpcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9WTFA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX0xQSV9BUDpcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9MUEk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOlxuK1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1VOU0VUO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfREVGQVVMVDtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rb3V0OlxuK1x0cG93ZXJfdHlwZV9jaGFuZ2VkID0gKG9sZF9wb3dlcl90eXBlICE9IHBoeS1cdTAwM2Vwb3dlcl90eXBlKTtcbitcbitcdGlmIChwb3dlcl90eXBlX2NoYW5nZWQgXHUwMDI2XHUwMDI2IGNoYW4gXHUwMDI2XHUwMDI2IGNoYW4tXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbitcdFx0bXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgZGV2LVx1MDAzZW10NzYuYWxwaGEyLCBkZXYtXHUwMDNlY291bnRyeV9pZV9lbnYsIHRydWUpO1xuK31cbitcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YSxcbkBAIC0xMDMwLDYgKzExMTAsOCBAQCBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRnb3RvIG91dF9wbTtcbiBcdH1cbiBcbitcdG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUodmlmLCBsaW5rX2NvbmYsIHRydWUpO1xuK1xuIFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgXHUwMDI2ZGV2LVx1MDAzZXBtKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzMjAsNiArMTQwMiw4IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdG10NzZfd2NpZF9jbGVhbnVwKG1kZXYsIHdjaWQpO1xuIFx0bXQ3Nl93Y2lkX21hc2tfY2xlYXIobWRldi1cdTAwM2V3Y2lkX21hc2ssIGlkeCk7XG4gXG4rXHRtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHZpZiwgbGlua19jb25mLCBmYWxzZSk7XG4rXG4gXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZkZXYtXHUwMDNlcG0pO1xuIH1cbiBcbkBAIC0xOTAwLDcgKzE5ODQsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiBcdGVyciA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGRldi1cdTAwM2VtdDc2LmFscGhhMixcbi1cdFx0XHQgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52KTtcbitcdFx0XHRcdCBkZXYtXHUwMDNlY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbmluZGV4IGZhMjljNDg2YTQ1NTMuLmU0MTQ0MmIyNzYzNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0zNjI0LDcgKzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XG4gc3RhdGljIGludFxuIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdCAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCxcbi1cdFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpXG4rXHRcdCAgICAgc3RydWN0IG10NzkyNV9jbGMgKmNsYywgdTggaWR4LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKnNlZztcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG5AQCAtMzY0MiwxOSArMzY0MiwzOCBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHR1OCBwYWQxO1xuIFx0XHR1OCBhbHBoYTJbMl07XG4gXHRcdHU4IHR5cGVbMl07XG4tXHRcdHU4IHJzdmRbNjRdO1xuK1x0XHR1OCBlbnZfNmc7XG4rXHRcdHU4IHJzdmRbNjNdO1xuIFx0fSBfX3BhY2tlZCByZXEgPSB7XG4gXHRcdC50YWcgPSBjcHVfdG9fbGUxNigweDMpLFxuIFxuIFx0XHQuaWR4ID0gaWR4LFxuIFx0XHQuZW52ID0gZW52X2NhcCxcbitcdFx0LmVudl82ZyA9IGRldi1cdTAwM2VwaHkucG93ZXJfdHlwZSxcbiBcdH07XG4gXHRpbnQgcmV0LCB2YWxpZF9jbnQgPSAwO1xuIFx0dTggKnBvcywgKmxhc3RfcG9zO1xuK1x0dTggdGFyZ2V0XzZnX3R5cGU7XG4gXG4gXHRpZiAoIWNsYylcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHQvKiBEZXRlcm1pbmUgdGFyZ2V0IDZHIHBvd2VyIHR5cGUgYmFzZWQgb24gcGh5LVx1MDAzZXBvd2VyX3R5cGUgKi9cbitcdHN3aXRjaCAoZGV2LVx1MDAzZXBoeS5wb3dlcl90eXBlKSB7XG4rXHRjYXNlIE1UX0FQX0xQSTpcbitcdFx0dGFyZ2V0XzZnX3R5cGUgPSAnMCc7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNVF9BUF9TUDpcbitcdFx0dGFyZ2V0XzZnX3R5cGUgPSAnMSc7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNVF9BUF9WTFA6XG4rXHRcdHRhcmdldF82Z190eXBlID0gJzInO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHRhcmdldF82Z190eXBlID0gJzAnOyAvKiBkZWZhdWx0IHRvIExQSSAqL1xuK1x0XHRicmVhaztcbitcdH1cbitcbiBcdHJlcS52ZXIgPSBjbGMtXHUwMDNldmVyO1xuIFx0cG9zID0gY2xjLVx1MDAzZWRhdGEgKyBzaXplb2YoKnNlZykgKiBjbGMtXHUwMDNldDAubnJfc2VnO1xuIFx0bGFzdF9wb3MgPSBjbGMtXHUwMDNlZGF0YSArIGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy1cdTAwM2VkYXRhICsgNCkpO1xuQEAgLTM2NjYsNiArMzY4NSwyMyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHQgICAgcnVsZS1cdTAwM2VhbHBoYTJbMV0gIT0gYWxwaGEyWzFdKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHQvKiBGaWx0ZXIgcG93ZXIgdGFibGVzIGJhc2VkIG9uIGNhbGwgc291cmNlOlxuK1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbitcdFx0ICogICAtIFNlbmQgMi81RyAoJy0nKSBhbmQgNkcgTFBJICgnMCcpIGFuZCA2RyBWTFAgKCcyJylcbitcdFx0ICogcG93ZXJfdHlwZV9jaGFuZ2UgPT0gdHJ1ZTogZnJvbSBtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKClcbitcdFx0ICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZVxuK1x0XHQgKi9cbitcdFx0aWYgKHBvd2VyX3R5cGVfY2hhbmdlKSB7XG4rXHRcdFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xuK1x0XHRcdGlmIChydWxlLVx1MDAzZXR5cGVbMF0gIT0gdGFyZ2V0XzZnX3R5cGUpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHQvKiBTZW5kIDIvNUcgYW5kIDZHIExQSSBhbmQgVkxQIG9ubHkgKi9cbitcdFx0XHRpZiAocnVsZS1cdTAwM2V0eXBlWzBdICE9ICctJyBcdTAwMjZcdTAwMjYgcnVsZS1cdTAwM2V0eXBlWzBdICE9ICcwJyBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgcnVsZS1cdTAwM2V0eXBlWzBdICE9ICcyJylcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4rXG4gXHRcdHNlZyA9IChzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICopY2xjLVx1MDAzZWRhdGFcbiBcdFx0XHQgICsgcnVsZS1cdTAwM2VzZWdfaWR4IC0gMTtcbiBcbkBAIC0zNjk5LDcgKzM3MzUsNyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIH1cbiBcbiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKVxuK1x0XHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbiBcdGludCBpLCByZXQ7XG5AQCAtMzcxNCwxMyArMzc1MCwxMyBAQCBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnZfY2FwLFxuLVx0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpKTtcbitcdFx0XHRcdFx0ICAgcGh5LVx1MDAzZWNsY1tpXSwgaSwgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuIFxuIFx0XHQvKiBJZiBubyBjb3VudHJ5IGZvdW5kLCBzZXQgXCIwMFwiIGFzIGRlZmF1bHQgKi9cbiBcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuIFx0XHRcdHJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgXCIwMFwiLFxuIFx0XHRcdFx0XHRcdCAgIEVOVklST05fSU5ET09SLFxuLVx0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGkpO1xuK1x0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGksIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbmluZGV4IDMyMWU3MzIzNDdmMmYuLmUzZmVmNDFjYmIzMzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbkBAIC0zODUsNyArMzg1LDkgQEAgaW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKTtcbitcdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuK2ludCBtdDc5MjVfbWN1X2FwcGx5X3JlZ2Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbitcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gaW50IG10NzkyNV9tY3Vfc2V0X21sb19yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSwgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqbWNvbmYsXG4gXHRcdFx0ICAgdTE2IHNlbF9saW5rcywgaW50IGR1cmF0aW9uLCB1OCB0b2tlbl9pZCk7XG4gaW50IG10NzkyNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcbmluZGV4IGY0YmViN2Y1MjA0M2MuLjVhODVkZTlhNGM2NzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuQEAgLTEzNywxNCArMTM3LDE0IEBAIG10NzkyNV9yZWdkX2NoYW5uZWxfdXBkYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyBpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcbitpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4rXHRcdFx0ICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnYsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gaHctXHUwMDNld2lwaHk7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYpO1xuK1x0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXG4gXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuIFx0aWYgKGRldi1cdTAwM2VyZWdkX2NoYW5nZSlcbi1cdFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2Vudik7XG4rXHRcdHJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcbiBcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gXHRkZXYtXHUwMDNlcmVnZF9jaGFuZ2UgPSBmYWxzZTtcbiBcdGRldi1cdTAwM2VyZWdkX2luX3Byb2dyZXNzID0gZmFsc2U7XG5AQCAtNDUzLDcgKzQ1Myw3IEBAIGludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuIFx0fSBlbHNlIGlmIChwaHktXHUwMDNlY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcbiBcdFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SKTtcbitcdFx0cmV0dXJuIG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgRU5WSVJPTl9JTkRPT1IsIGZhbHNlKTtcbiBcdH1cbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2RfY2hhbmdlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjQ4LjIyODQ5MDUyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzU2ODU4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciB3aXRoaW4gTWVkaWFUZWsncyBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgZnVuY3Rpb25hbGl0eSB0byBkZWFsIHdpdGggNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSwgTFBJLCBTUCwgYW5kIFZMUC4gQW5kLCBpdCBtZW50aW9ucyBhcHBseWluZyByZWd1bGF0b3J5IHVwZGF0ZXMgdXNpbmcgdGhlIE1DVS4gVGhhdCdzIGEgY3JpdGljYWwgYXJlYTsgdGhpcyBraW5kIG9mIHVwZGF0ZSBjYW4gYmUgdHJpY2t5LlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eS4gU2luY2UgdGhlIGBtdDc5MjVgIGRyaXZlciBoYW5kbGVzIE1lZGlhVGVrIE1UNzkyNSBQQ0llL1VTQiB3aXJlbGVzcyBkZXZpY2Vz4oCmIGhhbmcgb24sIGlzIGl0IFBDSWUgKm9yKiBVU0I/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciBmaWxlcyB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzAwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NTYuMzY0MTgxMzQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtdDc5MjUuaFwiLFxuICAgIFwibmFuLmNcIixcbiAgICBcIm5hbi5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInRlc3Rtb2RlLmNcIixcbiAgICBcInVzYi5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjU2LjM2NDI4MjQ2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NTE1NzQ4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBVU0IgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBzeXN0ZW0gaGFzIGJvdGggYHBjaS5jYCBhbmQgYHVzYi5jYCDigJMgaW50ZXJlc3RpbmcuIFRoZSBwcmVzZW5jZSBvZiBhIFVTQiBkcml2ZXIgaW1tZWRpYXRlbHkgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLiBJJ20gdGhpbmtpbmcsIHNpbmNlIGl0J3MgVVNCLCB3ZSBjb3VsZCBlbXVsYXRlIGl0IHVzaW5nIGEgVVNCIGdhZGdldCBvciBldmVuIGEgZHVtbXkgSENELiBCdXQgdGhlbiBJIHJlbWVtYmVyIFN5emthbGxlciEgV2FpdCwgU3l6a2FsbGVyICpkb2VzKiBoYXZlIHN1cHBvcnQgZm9yIGZ1enppbmcgVVNCIGRldmljZXMgdXNpbmcgdmhjaSwgZG9lc24ndCBpdD8gWWVzISBUaGF0J3MgaXQsIHRoZSBVU0IgZHJpdmVyIGlzIGRlZmluaXRlbHkgZnV6emVkLWFibGUgdXNpbmcgU3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgZnJhbWV3b3JrLiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgbXQ3OTI1YCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlLiBUaGlzIGNvdWxkIGJlIHByb21pc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MToxNS44ODAwMzQzMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3NTkzODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE1Ljk0MTgwMDI0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjg0MDU1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGBNVDc5MjVVYCBkZXBlbmRzIG9uLiBXaGF0IGFyZSB0aGUgc3VwcG9ydGluZyBlbGVtZW50cywgdGhlIHByZS1yZXF1aXNpdGVzLCB0aGUgb3RoZXIgY29tcG9uZW50cyB0aGF0IGFyZSBpbnRlcndvdmVuIHdpdGggdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBvciB0ZWNobm9sb2d5PyBXaGF0IG90aGVyIHBpZWNlcyBvZiB0aGUgcHV6emxlIGRvZXMgaXQgY29ubmVjdCB3aXRoPyBUaGlzIGlzbid0IGp1c3QgYWJvdXQgbGlzdGluZyBkZXBlbmRlbmNpZXMsIGJ1dCB1bmRlcnN0YW5kaW5nIHRoZSAqKm5hdHVyZSoqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgaGFyZHdhcmUsIGZpcm13YXJlLCBkcml2ZXJzLCBzcGVjaWZpYyBzb2Z0d2FyZSBsaWJyYXJpZXMsIG9yIGV4dGVybmFsIHN5c3RlbXM/IEFyZSB0aGVzZSBkZXBlbmRlbmNpZXMgY3JpdGljYWwsIG9wdGlvbmFsLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gQXJlIHRoZXJlIGNhc2NhZGluZyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYnVyaWVkIHdpdGhpbiB0aGUgb3RoZXIgZGVwZW5kZW5jaWVzP1xuSSdsbCBuZWVkIHRvIGRpZyBkZWVwIGFuZCB0cnkgYW5kIGdldCBhIGdyYXNwIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgdGVjaG5vbG9neSBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE5LjM3MDIwOTA1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE5LjM3MDM1MzY5N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODAwMTc5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgYE1UNzkyNVVgIG1vZHVsZSByZWxpZXMgaGVhdmlseSBvbiBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLCB3aGljaCBpcyBhIGZhaXJseSBzdGFuZGFyZCBzZXR1cCBmb3IgYSBVU0Igd2lyZWxlc3MgZGV2aWNlLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBhbmQgYF9fbXQ3OTI1X21jdV9zZXRfY2xjYC4gVGhleSdyZSBzY2F0dGVyZWQgYWNyb3NzIGBtYWluLmNgIGFuZCBgbWN1LmNgLCBib3RoIG9mIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSBgTVQ3OTI1X0NPTU1PTmAgY29kZWJhc2UsIHdoaWNoIGdpdmVzIGEgaGludCBhYm91dCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIuXG5cblRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyBob3cgdGhlc2UgZnVuY3Rpb25zLCBwYXJ0aWN1bGFybHkgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYXJlIGFjdHVhbGx5IHRyaWdnZXJlZC4gR2l2ZW4gdGhlIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYCwgaXTigJlzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgaXMgaG9va2VkIGludG8gYE1BQzgwMjExYCdzIGNhbGxiYWNrIHN5c3RlbS4gQWRkaW5nIG9yIHJlbW92aW5nIHN0YXRpb25zIGlzIGEgY29yZSBvcGVyYXRpb24gd2l0aGluIGEgd2lyZWxlc3MgbmV0d29yaywgc28gaXTigJlzIGxvZ2ljYWwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIGludm9sdmVkIHdoZW4gYSBzdGF0aW9uIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gbm93IGJ5IGV4YW1pbmluZyB0aGUgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBmdW5jdGlvbiBpdHNlbGYgYW5kIGhvdyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBgTUFDODAyMTFgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjQuNTUwMzc2MTkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njg0Mjg2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTkzMj1tdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo5OTE6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTk5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTExNzM9bXQ3OTI1X21hY19zdGFfYWRkX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMS1cXHRcXHRsaW5rX3N0YSA9IG10NzkyeF9zdGFfdG9fbGlua19zdGEodmlmLCBzdGEsIGxpbmtfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjAyOlxcdFxcdGVyciA9IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHZpZiwgbGlua19zdGEsIG1saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMy1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTIyND1pbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyNDI6XFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX3N0YV9hZGQobWRldiwgdmlmLCBcXHUwMDI2c3RhLVxcdTAwM2VkZWZsaW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtc3RhLVxcdTAwM2VkZWZsaW5rKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjQuNjE3MjI0MTA2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzEwNTU3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipWZXJpZmljYXRpb24gb2YgYG10NzkyNV9tYWNfc3RhX2FkZGAgYXMgYSBtYWM4MDIxMSBDYWxsYmFjayoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBgbXQ3OTI1X21hY19zdGFfYWRkYCwgaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBgc3RhX2FkZGAgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgaXQncyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBtYWM4MDIxMSBjb3JlIHdoZW4gYSBuZXcgc3RhdGlvbiAoU1RBKSwgZXNzZW50aWFsbHkgYSB3aXJlbGVzcyBjbGllbnQsIG5lZWRzIHRvIGJlIGFkZGVkIG9yIHJlZ2lzdGVyZWQgd2l0aCBhIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIChNQUMpIGRldmljZSB0aGF0J3MgYmFzZWQgb24gdGhlIE1UNzkyNSBjaGlwc2V0LlxuXG5HaXZlbiB0aGF0IGNsYWltLCBteSBmaXJzdCBpbnN0aW5jdCwgYXMgYSBuZXR3b3JraW5nIHNwZWNpYWxpc3QsIGlzIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSB0aGlzIGFzc2VydGlvbi4gSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyBjb3JyZWN0bHkgaG9va2VkIHVwIGFuZCBmdW5jdGlvbnMgYXMgdGhlIGludGVuZGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBTVEEgYWRkaXRpb25zIHdpdGhpbiB0aGUgTVQ3OTI1IGRyaXZlcidzIGludGVncmF0aW9uIHdpdGggbWFjODAyMTEuIEl0J3MgY3J1Y2lhbCB0aGlzIGlzIGNvcnJlY3Q7IG90aGVyd2lzZSwgdGhlIGRyaXZlcidzIGFzc29jaWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIHdpcmVsZXNzIGNsaWVudHMgd2lsbCBiZSBjb21wbGV0ZWx5IGJyb2tlbi4gVGhpcyBtZWFucyBJIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLCB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgaW4gdGhlbSwgYW5kIGxpa2VseSB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgaXQncyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzUxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjguODQ4Mjg0MjY4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc2NTYzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWFjX3N0YV9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xMTcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTE3MzptdDc5MjVfbWFjX3N0YV9hZGRfbGlua3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTE3NC1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdW5zaWduZWQgbG9uZyBuZXdfbGlua3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTIyNDppbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyNS1cXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjQwOlxcdFxcdGVyciA9IG10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhkZXYsIHZpZiwgc3RhLCBzdGEtXFx1MDAzZXZhbGlkX2xpbmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjQ4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfc3RhX2FkZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjQwMj1tdDc5MjVfY2hhbmdlX3N0YV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNDE5OlxcdGVyciA9IG10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhkZXYsIHZpZiwgc3RhLCBhZGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDIwLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzAxPWludCBtdDc5MjVfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzAyOmludCBtdDc5MjVfbWFjX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwMy1cXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01Mjg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ0LVxcdFxcdC5yeF9wb2xsX2NvbXBsZXRlID0gbXQ3OTJ4X3J4X3BvbGxfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ1OlxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2NC1cXHRcXHQucnhfY2hlY2sgPSBtdDc5MjVfcnhfY2hlY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTY1OlxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjI4LjkyMzA1NTU5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzkzNDgxOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgdXNlZCBpbiBib3RoIFBDSSBhbmQgVVNCIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIuIFRoYXQncyBnb29kIG5ld3M7IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gb3BlbnMgdXAgdGhlIHBvc3NpYmlsaXR5IG9mIHRlc3RpbmcgaXQgdXNpbmcgdmhjaSwgd2hpY2ggaXMgYWx3YXlzIGVhc2llciB0byBtYW5hZ2UgZm9yIGZ1enppbmcuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgdG91Y2hpbmcgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCB0byBjYWxsIGBtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlYCwgcGx1cyBgbXQ3OTI1X21jdV9zZXRfY2xjYCBhbmQgYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAsIHNvIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgdnVsbmVyYWJsZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCBjb3JyZWN0bHkuXG5cbkZpcnN0LCBJIG5lZWQgdG8gZW5hYmxlIGBNVDc5MjVVYC4gVGhhdCdzIHRoZSBrZXkuIGBNVDc5MjVFYCB3b3VsZCBhbHNvIGJlIGdvb2QgdG8gdGVzdCwgYnV0IHNpbmNlIHZoY2kgd2lsbCBiZSB1c2VkLCBgTVQ3OTI1VWAgaXMgdGhlIG9idmlvdXMgY2hvaWNlIGZvciBpbml0aWFsIGZ1enppbmcuIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBzbyB0aG9zZSBzaG91bGQgYWxyZWFkeSBiZSBhY2NvdW50ZWQgZm9yLiBBaCwgYE1UNzkyNV9DT01NT05gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBzbyBub3RoaW5nIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBTbyBlbmFibGluZyBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYCBzaG91bGQgY292ZXIgdXMuXG5cbk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBTaW5jZSB0aGUgbGluayBmdW5jdGlvbnMgYXJlIHN0YXRpYywgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBhbmQgYG10NzkyNV9tY3Vfc2V0X2NsY2AuXG5cbkp1c3QgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgYWN0dWFsbHkgZXhpc3RzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTk5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjM3LjMxNjUzOTcxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA1OTk4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21hY19zdGFfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTQxMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0MTE6bXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0MTItXFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHVuc2lnbmVkIGxvbmcgb2xkX2xpbmtzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0Nzg6dm9pZCBtdDc5MjVfbWFjX3N0YV9yZW1vdmUoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNDc5LVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUxNS1cXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTE2OlxcdFxcdG10NzkyNV9tYWNfc3RhX3JlbW92ZV9saW5rcyhkZXYsIHZpZiwgc3RhLCBtc3RhLVxcdTAwM2V2YWxpZF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MTctXFx0XFx0bXQ3OTI1X21jdV9kZWxfZGV2KG1kZXYsIHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUyOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE1MzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfcmVtb3ZlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI0MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTU6XFx0ZXJyID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKGRldiwgdmlmLCBzdGEsIHJlbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI0MTYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDU9aW50IG10NzkyNV9tYWNfc3RhX2V2ZW50KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMDYtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGVudW0gbXQ3Nl9zdGFfZXZlbnQgZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMwNzp2b2lkIG10NzkyNV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzA4LVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTI4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ3OlxcdFxcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0OC1cXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTY2LVxcdFxcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjc6XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTY4LVxcdFxcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MTozNy40MDcxNDYwMDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYzMTczNjcxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1UNzkyNSBEcml2ZXIgU3ltYm9sIEV4cG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIHN5bWJvbCBleHBvcnQgc3RhdHVzIG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBNVDc5MjUgZHJpdmVyLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCBpcyBwcmVzZW50IGFuZCwgY3J1Y2lhbGx5LCBpdCdzIGV4cG9ydGVkLCBzbyB0aGF0J3MgZ29vZC5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLiBIbW0sIGluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgaXQgKndhc24ndCogZXhwb3J0ZWQuIEJ1dCB3YWl0IGEgc2Vjb25kLCB0aGlzIGlzIGEgYml0IGRlY2VwdGl2ZSwgaXNuJ3QgaXQ/IFRoZSBwYXRjaCBoaXN0b3J5IHNob3dzIGl0IHdhcyBjaGFuZ2VkIGZyb20gYSBgc3RhdGljIGludGAgdG8gYSBwbGFpbiBgaW50YCwgYW5kIGl0J3MgYmVlbiBpbmNsdWRlZCBpbiBgbXQ3OTI1LmhgIG5vdy4gVGhhdCBtZWFucyBpdCdzIG5vIGxvbmdlciBzdGF0aWMsIGFuZCB0aGF0IG1ha2VzIGFsbCB0aGUgZGlmZmVyZW5jZSDigJMgaXQncyBlZmZlY3RpdmVseSBleHBvcnRlZCBub3cgYnkgdmlydHVlIG9mIHRoYXQgY2hhbmdlLlxuXG5BbHJpZ2h0LCBtb3Zpbmcgb24sIGBtdDc5MjVfbWN1X3NldF9jbGNgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbC4gR29vZC5cblxuYG10NzkyNV9yZWdkX2NoYW5nZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZC5cblxuU28sIHRha2luZyBzdG9jayBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLCBteSBsaXN0IG9mIHRoZSBzeW1ib2xzIHRoYXQgc2hvdWxkIGJlIGluIGZvY3VzLCBnaXZlbiB0aGUgY2hhbmdlcywgbm93IGlzOlxuXG4tICAgYG10NzkyNV9tYWNfc3RhX2FkZGBcbi0gICBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYFxuLSAgIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgXG4tICAgYG10NzkyNV9tY3Vfc2V0X2NsY2Bcbi0gICBgbXQ3OTI1X3JlZ2RfY2hhbmdlYFxuLSAgIGBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlYFxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYG10NzkyNV9tY3VfcmVnZF91cGRhdGVgIGV2ZW4gZXhpc3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM5MywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjowMy43MjQ1MTU0NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjI5OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTM2MjU9X19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2ODgtXFx0XFx0LyogRmlsdGVyIHBvd2VyIHRhYmxlcyBiYXNlZCBvbiBjYWxsIHNvdXJjZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzozNjg5OlxcdFxcdCAqIHBvd2VyX3R5cGVfY2hhbmdlID09IGZhbHNlOiBmcm9tIG10NzkyNV9tY3VfcmVnZF91cGRhdGUoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2OTAtXFx0XFx0ICogICAtIFNlbmQgMi81RyAoJy0nKSBhbmQgNkcgTFBJICgnMCcpIGFuZCA2RyBWTFAgKCcyJylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTgyND1zdGF0aWMgaW50IF9tdDc5MjVfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGJvb2wgcmVzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4ODA6XFx0bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShkZXYsIG1kZXYtXFx1MDAzZWFscGhhMiwgZGV2LVxcdTAwM2Vjb3VudHJ5X2llX2Vudik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtODgxLWZhaWxlZDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0xNDA9aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MTYxOmludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2Mi1cXHRcXHRcXHQgICBlbnVtIGVudmlyb25tZW50X2NhcCBjb3VudHJ5X2llX2VudilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0xNzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoxNzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9MTgwPXZvaWQgbXQ3OTI1X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MjE3OlxcdG10NzkyNV9tY3VfcmVnZF91cGRhdGUoZGV2LCByZXEtXFx1MDAzZWFscGhhMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMjE4LVxcdFxcdFxcdCAgICAgICByZXEtXFx1MDAzZWNvdW50cnlfaWVfZW52KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0yOTE9aW50IG10NzkyNV9yZWdkX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY3LVxcdGRldi1cXHUwMDNlcmVnZF9jaGFuZ2UgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzozNjg6XFx0bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShkZXYsIGFscGhhMiwgRU5WSVJPTl9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmg9NDM9c3RydWN0IG10NzkyNV9yZWdkX3F1ZXJ5X3JlcSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmgtNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5oOjYyOmludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5oLTYzLVxcdFxcdFxcdCAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGNvdW50cnlfaWVfZW52KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDI6MDMuODA4NzQ5MzY4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjA5Mzc0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gYG10NzkyNV9tY3VfcmVnZF91cGRhdGVgIGRlZmluaXRlbHkgZXhpc3RzLCB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHN0YXRpYyBmdW5jdGlvbiwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgd2hlcmUgaXQncyBjYWxsZWQgZnJvbTogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYC4gU2luY2UgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBpcyBzdGF0aWMsIHRoYXQgaW1wbGllcyBpdCBpcyBjYWxsZWQgb25seSBmcm9tIGBtdDc5MjVfbWFjX3N0YV9hZGRgLiBUaHVzLCB0aGUgZnVuY3Rpb25zIGBtdDc5MjVfbWFjX3N0YV9hZGRgIGFuZCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCBzZWVtIGxpa2UgbG9naWNhbCBlbnRyeSBwb2ludHMgdG8gb2JzZXJ2ZSB0aGUgZWZmZWN0cyBvZiB0aGlzIHBhdGNoLlxuXG5JIHNob3VsZCB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGV4aXN0LiBMZXQncyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBMaXN0aW5nIGJvdGggYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAgc2VlbXMgc3VmZmljaWVudCB0byBjYXB0dXJlIHRoZSBkZXBlbmRlbmNpZXMuXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgd2VyZSBtb2RpZmllZC4gQWgsIGBtdDc5MjVfc2V0X3Nhcl9zcGVjc2AgaXMgY2hhbmdlZDogaXQgbm93IHBhc3NlcyBgZmFsc2VgIHRvIGBtdDc5MjVfbWN1X3NldF9jbGNgLiBOb3cgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBtdDc5MjVfc2V0X3Nhcl9zcGVjc2AgaXMgZXhwb3J0ZWQgb3Igc3RhdGljLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIGhvdyB3aWRlbHkgdGhpcyBtb2RpZmljYXRpb24gcmlwcGxlcyB0aHJvdWdoIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mzc3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjEwLjg2OTY5MDQ0OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MzI1ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3NldF9zYXJfc3BlY3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xOTYzPWludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTk3OTpzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xOTgwLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yODAwPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjg0Ny1cXHQuZmx1c2ggPSBtdDc5MnhfZmx1c2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4NDg6XFx0LnNldF9zYXJfc3BlY3MgPSBtdDc5MjVfc2V0X3Nhcl9zcGVjcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjg0OS1cXHQucmVtYWluX29uX2NoYW5uZWwgPSBtdDc5MjVfcmVtYWluX29uX2NoYW5uZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjEwLjkzMDYyODQxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzgwMzY2MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0FSIFNwZWNpZmljYXRpb25zIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc2V0X3Nhcl9zcGVjc2AgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoaW4gYGllZWU4MDIxMV9vcHNgLiBUaGF0IG1lYW5zIGl0J3MgYWNjZXNzaWJsZSB0aHJvdWdoIG1hYzgwMjExLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJDYW4gSSBqdXN0IGRpcmVjdGx5IHJlZmVyZW5jZSBgbXQ3OTI1X3NldF9zYXJfc3BlY3NgP1wiIEJ1dCBiZWNhdXNlIGl0J3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkLCBvciBtaWdodCBub3QgZXZlbiBoYXZlIGEgdW5pcXVlIHN5bWJvbCBhZGRyZXNzLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgKm5vdCogaW5saW5lZC5cblxuVGhlIGtleSB0aGVuIGlzIHRoYXQgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgY2FsbGVkIHdpdGhpbiB0aGUgYHNldF9zYXJfc3BlY3NgIGZ1bmN0aW9uIGFuZCAqdGhhdCogaXMgZXhwb3J0ZWQsIGl0J3Mgbm9uLXN0YXRpYy4gU28gSSBjYW4gZm9sbG93IHRoYXQuXG5cbkFscmlnaHQsIGxldCdzIGlkZW50aWZ5IHRoZSBmb2NhbCBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBhcmVhLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlLiBIZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgIGBtdDc5MjVfbWFjX3N0YV9hZGRgXG4qICAgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWBcbiogICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYFxuKiAgIGBtdDc5MjVfbWN1X3NldF9jbGNgXG4qICAgYG10NzkyNV9yZWdkX2NoYW5nZWBcbiogICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWBcblxuSGFuZyBvbiBhIHNlY29uZC4gYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAgaXMgbm9uLXN0YXRpYywgYnV0IGlzIGl0IGV4cG9ydGVkPyBUaGF0J3MgdGhlIG1pc3NpbmcgcGllY2UuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQncyBhY3R1YWxseSB2aXNpYmxlIG91dHNpZGUgaXRzIG1vZHVsZS4gVGltZSB0byBjaGVjay4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjUxOCwiT3V0cHV0VG9rZW5zIjo2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoxOS43MTA5OTY0MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU5NDM5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzkyNV9tY3VfYXBwbHlfcmVnZFxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDI6MTkuODE1NTk4ODI1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTI4NTk0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24ncyBTY29wZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpc24ndCBleHBvcnRlZCwgYnV0IHRoZSBnb29kIG5ld3MgaXMsIGl0J3MgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljIGVpdGhlci4gVGhhdCdzIGFjdHVhbGx5IGEgcHJldHR5IHN0YW5kYXJkIGFuZCBhY2NlcHRhYmxlIHNldHVwLiBJdCBpbXBsaWVzIHRoYXQgd2hpbGUgaXQncyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgbW9kdWxlIHVzZSwgaXQncyBzdGlsbCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBvZmZlcnMgdGhlIGZsZXhpYmlsaXR5IG9mIGludGVyLWZpbGUgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIgaWYgbmVlZGVkLiBObyByZWQgZmxhZ3MgaGVyZS4gVGhpcyBpcyBwZXJmZWN0bHkgd29ya2FibGUuXG5cbk5vdywgbGV0J3MgbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgb3V0IHdoYXQgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgYWJvdXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNDcsIk91dHB1dFRva2VucyI6NjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoyMy43Mjg0NjA1MTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTkyODExLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwobXQ3OTI1X21jdV9zZXRfY2xjXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoyMy44MjAwNjA3MzJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2MTQ0NDU0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25zaWRlcmluZyBOb24tU3RhdGljLCBOb24tRXhwb3J0ZWQgVmFyaWFibGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcncyBjYXVnaHQgbXkgZXllOiBhIHZhcmlhYmxlIHRoYXQncyAqbm90KiBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIG1vZHVsZSwgYnV0IGFsc28gKm5vdCogc3RhdGljLCB3aGljaCBtZWFucyBpdCBwb3RlbnRpYWxseSBoYXMgYnJvYWRlciBzY29wZSB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQgYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2hlcmUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3lzdGVtLiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgbGVha2luZyBzb21lIHZhbHVlIGl0IHNob3VsZG4ndCBiZS5cblxuVGhlIG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGludmVzdGlnYXRlIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgYSBsaWtlbHkgcGxhY2UgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCB3aGF0ZXZlciB0aGlzIHZhcmlhYmxlIGlzLiBJJ2xsIHN0YXJ0IHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgdmFyaWFibGUgZmFjdG9ycyBpbnRvIHRoZSBsb2dpYyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUzNSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjM2LjQzNDUwOTU0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyNzU0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzkyNV9yZWdkX2NoYW5nZVxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9NDI4PWludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTQ1OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjQ1OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnZF9jaGFuZ2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy00NjAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjM2LjUxNjc5MDc0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzMwMDk1NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVhZHkgZm9yIHJldmlldy4gSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggZXhwb3J0ZWQgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBNZWRpYVRlayBtdDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNlZCBvbiBzdGF0aW9uIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBgbXQ3OTI1X21jdV9zZXRfY2xjYCwgYG10NzkyNV9yZWdkX2NoYW5nZWAsIGFuZCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy5cblxuVGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUgYXJlIGBNVDc5MjVVYCBhbmQgYE1UNzkyNUVgLiBUaGUgcGF0Y2gncyBkZXNjcmlwdGlvbiBoaWdobGlnaHRzIHRoZSBoYW5kbGluZyBvZiA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyBhbmQgdGhlIHJlZ3VsYXRvcnkgdXBkYXRlcyBtYW5hZ2VkIHRocm91Z2ggdGhlIE1DVS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGV4cG9zZWQgdGhyb3VnaCB0aGUgbWFjODAyMTEgaW50ZXJmYWNlLCBtZWFuaW5nIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcyB3aWxsIHRyaWdnZXIgdGhpcy4gVGhpcyBoYXMgZnV6emluZyB3cml0dGVuIGFsbCBvdmVyIGl0OyB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2UgZnVuY3Rpb25zIGFyZSByaXBlIGZvciB0ZXN0aW5nLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIExldCdzIHNlZS4uLiBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFBDSWAuIFNpbmNlIGBNQUM4MDIxMWAgaXMgYSBjb21tb24gc3Vic3lzdGVtIGRlcGVuZGVuY3ksIEkgd2lsbCBpbmNsdWRlIGBNVDc5MjVVYCwgYE1UNzkyNUVgLCBhbmQgYE1BQzgwMjExYCBpbiBteSBjb25maWd1cmF0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQuXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQuIEknbGwgZmxhZyBpdCBmb3IgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMTUsIk91dHB1dFRva2VucyI6MjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjU5LjI0Njg4OTU1M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODcwMDM1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9hZGRcIixcbiAgICBcIm10NzkyNV9tYWNfc3RhX3JlbW92ZVwiLFxuICAgIFwibXQ3OTI1X21jdV9hcHBseV9yZWdkXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NldF9jbGNcIixcbiAgICBcIm10NzkyNV9yZWdkX2NoYW5nZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWdkX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyAoTFBJLCBTUCwgVkxQKSBhbmQgYXBwbHkgcmVndWxhdG9yeSB1cGRhdGVzIHZpYSB0aGUgTUNVLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgb3BlcmF0aW9ucyBzdWNoIGFzIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIE1UNzkyNSBkcml2ZXIgaW5jbHVkZXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4sIHZoY2kpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 06:38:35 +0000 UTC FinishedAt: 2026-08-04 06:43:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E", "MAC80211" ], "series_id": "693085be-424d-4a50-9662-b917153d9c2b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mac_sta_add", "mt7925_mac_sta_remove", "mt7925_mcu_apply_regd", "mt7925_mcu_set_clc", "mt7925_regd_change", "mt7925_mcu_regd_update" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3MjllYWRmYWNiMDM1ZmJjMGJhYmM2ZTkzMWE0ZWM1NmJjYzNiMDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuaW5kZXggODRiNTVmMDA4YjNkMy4uMzAwYWQwYjA5YjY5NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5AQCAtOTA4LDYgJiM0Mzs5MDgsODYgQEAgbXQ3OTI1X2dldF9yYXRlc190YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdHJldHVybiBtdmlmLVx1MDAzZWJhc2ljX3JhdGVzX2lkeDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO210NzkyNV9jYWxjX3ZpZl9udW0odm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbiYjNDM7e1xuJiM0MztcdHUzMiAqbnVtID0gcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwcml2KVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHZpZi1cdTAwM2V0eXBlKSB7XG4mIzQzO1x0Y2FzZSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OOlxuJiM0MztcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVDpcbiYjNDM7XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuJiM0MztcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0dPOlxuJiM0MztcdFx0Km51bSAmIzQzOz0gMTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO210NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiYjNDM7XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsXG4mIzQzO1x0XHRcdFx0Ym9vbCBpc19hZGQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXZpZi1cdTAwM2VwaHk7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHBoeS1cdTAwM2VkZXY7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcbiYjNDM7XHR1MzIgdmFsaWRfdmlmX251bSA9IDA7XG4mIzQzO1x0ZW51bSBtdDc5MnhfcmVnX3Bvd2VyX3R5cGUgb2xkX3Bvd2VyX3R5cGU7XG4mIzQzO1x0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0b2xkX3Bvd2VyX3R5cGUgPSBwaHktXHUwMDNlcG93ZXJfdHlwZTtcbiYjNDM7XG4mIzQzO1x0LyogVHJ5IHRvIGdldCBjaGFubmVsIGZyb20gbGlua19jb25mIGZpcnN0LCB0aGVuIHZpZi1cdTAwM2Vic3NfY29uZiwgdGhlbiBwaHkgKi9cbiYjNDM7XHRpZiAobGlua19jb25mIFx1MDAyNlx1MDAyNiBsaW5rX2NvbmYtXHUwMDNlY2hhbnJlcS5vcGVyLmNoYW4pXG4mIzQzO1x0XHRjaGFuID0gbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuO1xuJiM0MztcdGVsc2UgaWYgKHZpZi1cdTAwM2Vic3NfY29uZi5jaGFucmVxLm9wZXIuY2hhbilcbiYjNDM7XHRcdGNoYW4gPSB2aWYtXHUwMDNlYnNzX2NvbmYuY2hhbnJlcS5vcGVyLmNoYW47XG4mIzQzO1x0ZWxzZSBpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuKVxuJiM0MztcdFx0Y2hhbiA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYW5kZWYuY2hhbjtcbiYjNDM7XG4mIzQzO1x0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxuJiM0MztcdFx0XHRcdFx0ICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXG4mIzQzO1x0XHRcdFx0XHQgICAgbXQ3OTI1X2NhbGNfdmlmX251bSwgXHUwMDI2dmFsaWRfdmlmX251bSk7XG4mIzQzO1xuJiM0MztcdGlmICh2YWxpZF92aWZfbnVtIFx1MDAzZSAxKSB7XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmICghaXNfYWRkKVxuJiM0MztcdFx0dmlmLVx1MDAzZWJzc19jb25mLnBvd2VyX3R5cGUgPSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHZpZi1cdTAwM2Vic3NfY29uZi5wb3dlcl90eXBlKSB7XG4mIzQzO1x0Y2FzZSBJRUVFODAyMTFfUkVHX1NQX0FQOlxuJiM0MztcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9TUDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19WTFBfQVA6XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1ZMUDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19MUElfQVA6XG4mIzQzO1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0xQSTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgSUVFRTgwMjExX1JFR19VTlNFVF9BUDpcbiYjNDM7XHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfVU5TRVQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdHBvd2VyX3R5cGVfY2hhbmdlZCA9IChvbGRfcG93ZXJfdHlwZSAhPSBwaHktXHUwMDNlcG93ZXJfdHlwZSk7XG4mIzQzO1xuJiM0MztcdGlmIChwb3dlcl90eXBlX2NoYW5nZWQgXHUwMDI2XHUwMDI2IGNoYW4gXHUwMDI2XHUwMDI2IGNoYW4tXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbiYjNDM7XHRcdG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi1cdTAwM2VtdDc2LmFscGhhMiwgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52LCB0cnVlKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YSxcbkBAIC0xMDMwLDYgJiM0MzsxMTEwLDggQEAgc3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG4gXHRcdFx0Z290byBvdXRfcG07XG4gXHR9XG4gXG4mIzQzO1x0bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7XG4mIzQzO1xuIFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgXHUwMDI2ZGV2LVx1MDAzZXBtKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzMjAsNiAmIzQzOzE0MDIsOCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG4gXHRtdDc2X3djaWRfY2xlYW51cChtZGV2LCB3Y2lkKTtcbiBcdG10NzZfd2NpZF9tYXNrX2NsZWFyKG1kZXYtXHUwMDNld2NpZF9tYXNrLCBpZHgpO1xuIFxuJiM0MztcdG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUodmlmLCBsaW5rX2NvbmYsIGZhbHNlKTtcbiYjNDM7XG4gXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZkZXYtXHUwMDNlcG0pO1xuIH1cbiBcbkBAIC0xOTAwLDcgJiM0MzsxOTg0LDcgQEAgc3RhdGljIGludCBtdDc5MjVfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4gXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5hbHBoYTIsXG4tXHRcdFx0IGRldi1cdTAwM2Vjb3VudHJ5X2llX2Vudik7XG4mIzQzO1x0XHRcdFx0IGRldi1cdTAwM2Vjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0Z290byBvdXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZmEyOWM0ODZhNDU1My4uZTQxNDQyYjI3NjM0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuQEAgLTM2MjQsNyAmIzQzOzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XG4gc3RhdGljIGludFxuIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdCAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCxcbi1cdFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICpzZWc7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuQEAgLTM2NDIsMTkgJiM0MzszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdHU4IHBhZDE7XG4gXHRcdHU4IGFscGhhMlsyXTtcbiBcdFx0dTggdHlwZVsyXTtcbi1cdFx0dTggcnN2ZFs2NF07XG4mIzQzO1x0XHR1OCBlbnZfNmc7XG4mIzQzO1x0XHR1OCByc3ZkWzYzXTtcbiBcdH0gX19wYWNrZWQgcmVxID0ge1xuIFx0XHQudGFnID0gY3B1X3RvX2xlMTYoMHgzKSxcbiBcbiBcdFx0LmlkeCA9IGlkeCxcbiBcdFx0LmVudiA9IGVudl9jYXAsXG4mIzQzO1x0XHQuZW52XzZnID0gZGV2LVx1MDAzZXBoeS5wb3dlcl90eXBlLFxuIFx0fTtcbiBcdGludCByZXQsIHZhbGlkX2NudCA9IDA7XG4gXHR1OCAqcG9zLCAqbGFzdF9wb3M7XG4mIzQzO1x0dTggdGFyZ2V0XzZnX3R5cGU7XG4gXG4gXHRpZiAoIWNsYylcbiBcdFx0cmV0dXJuIDA7XG4gXG4mIzQzO1x0LyogRGV0ZXJtaW5lIHRhcmdldCA2RyBwb3dlciB0eXBlIGJhc2VkIG9uIHBoeS1cdTAwM2Vwb3dlcl90eXBlICovXG4mIzQzO1x0c3dpdGNoIChkZXYtXHUwMDNlcGh5LnBvd2VyX3R5cGUpIHtcbiYjNDM7XHRjYXNlIE1UX0FQX0xQSTpcbiYjNDM7XHRcdHRhcmdldF82Z190eXBlID0gJiMzOTswJiMzOTs7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIE1UX0FQX1NQOlxuJiM0MztcdFx0dGFyZ2V0XzZnX3R5cGUgPSAmIzM5OzEmIzM5OztcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgTVRfQVBfVkxQOlxuJiM0MztcdFx0dGFyZ2V0XzZnX3R5cGUgPSAmIzM5OzImIzM5OztcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHR0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MCYjMzk7OyAvKiBkZWZhdWx0IHRvIExQSSAqL1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJlcS52ZXIgPSBjbGMtXHUwMDNldmVyO1xuIFx0cG9zID0gY2xjLVx1MDAzZWRhdGEgJiM0Mzsgc2l6ZW9mKCpzZWcpICogY2xjLVx1MDAzZXQwLm5yX3NlZztcbiBcdGxhc3RfcG9zID0gY2xjLVx1MDAzZWRhdGEgJiM0MzsgbGUzMl90b19jcHUoKihfX2xlMzIgKikoY2xjLVx1MDAzZWRhdGEgJiM0MzsgNCkpO1xuQEAgLTM2NjYsNiAmIzQzOzM2ODUsMjMgQEAgX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbiBcdFx0ICAgIHJ1bGUtXHUwMDNlYWxwaGEyWzFdICE9IGFscGhhMlsxXSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiYjNDM7XHRcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XG4mIzQzO1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbiYjNDM7XHRcdCAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspXG4mIzQzO1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKVxuJiM0MztcdFx0ICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZVxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHtcbiYjNDM7XHRcdFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xuJiM0MztcdFx0XHRpZiAocnVsZS1cdTAwM2V0eXBlWzBdICE9IHRhcmdldF82Z190eXBlKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0LyogU2VuZCAyLzVHIGFuZCA2RyBMUEkgYW5kIFZMUCBvbmx5ICovXG4mIzQzO1x0XHRcdGlmIChydWxlLVx1MDAzZXR5cGVbMF0gIT0gJiMzOTstJiMzOTsgXHUwMDI2XHUwMDI2IHJ1bGUtXHUwMDNldHlwZVswXSAhPSAmIzM5OzAmIzM5OyBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgIHJ1bGUtXHUwMDNldHlwZVswXSAhPSAmIzM5OzImIzM5OylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdHNlZyA9IChzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICopY2xjLVx1MDAzZWRhdGFcbiBcdFx0XHQgICYjNDM7IHJ1bGUtXHUwMDNlc2VnX2lkeCAtIDE7XG4gXG5AQCAtMzY5OSw3ICYjNDM7MzczNSw3IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gfVxuIFxuIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbi1cdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXApXG4mIzQzO1x0XHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbiBcdGludCBpLCByZXQ7XG5AQCAtMzcxNCwxMyAmIzQzOzM3NTAsMTMgQEAgaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgZW52X2NhcCxcbi1cdFx0XHRcdFx0ICAgcGh5LVx1MDAzZWNsY1tpXSwgaSk7XG4mIzQzO1x0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gXG4gXHRcdC8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCBcJiMzNDswMFwmIzM0OyBhcyBkZWZhdWx0ICovXG4gXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbiBcdFx0XHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIFwmIzM0OzAwXCYjMzQ7LFxuIFx0XHRcdFx0XHRcdCAgIEVOVklST05fSU5ET09SLFxuLVx0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGkpO1xuJiM0MztcdFx0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi5lM2ZlZjQxY2JiMzM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzg1LDcgJiM0MzszODUsOSBAQCBpbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpO1xuIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbi1cdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXApO1xuJiM0MztcdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4mIzQzO1x0XHRcdCAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfbWxvX3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcbiBcdFx0XHQgICB1MTYgc2VsX2xpbmtzLCBpbnQgZHVyYXRpb24sIHU4IHRva2VuX2lkKTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuaW5kZXggZjRiZWI3ZjUyMDQzYy4uNWE4NWRlOWE0YzY3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jXG5AQCAtMTM3LDE0ICYjNDM7MTM3LDE0IEBAIG10NzkyNV9yZWdkX2NoYW5uZWxfdXBkYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyBpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcbiYjNDM7aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuJiM0MztcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcbiBcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBody1cdTAwM2V3aXBoeTtcbiBcdGludCByZXQ7XG4gXG4tXHRyZXQgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudik7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBpbnQgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFxuIFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiBcdGlmIChkZXYtXHUwMDNlcmVnZF9jaGFuZ2UpXG4tXHRcdHJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYpO1xuJiM0MztcdFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xuIFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiBcdGRldi1cdTAwM2VyZWdkX2NoYW5nZSA9IGZhbHNlO1xuIFx0ZGV2LVx1MDAzZXJlZ2RfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbkBAIC00NTMsNyAmIzQzOzQ1Myw3IEBAIGludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuIFx0fSBlbHNlIGlmIChwaHktXHUwMDNlY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcbiBcdFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SKTtcbiYjNDM7XHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SLCBmYWxzZSk7XG4gXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdkX2NoYW5nZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3MjllYWRmYWNiMDM1ZmJjMGJhYmM2ZTkzMWE0ZWM1NmJjYzNiMDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCmluZGV4IDg0YjU1ZjAwOGIzZDMuLjMwMGFkMGIwOWI2OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKQEAgLTkwOCw2ICYjNDM7OTA4LDg2IEBAIG10NzkyNV9nZXRfcmF0ZXNfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAJcmV0dXJuIG12aWYtJmd0O2Jhc2ljX3JhdGVzX2lkeDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7bXQ3OTI1X2NhbGNfdmlmX251bSh2b2lkICpwcml2LCB1OCAqbWFjLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQomIzQzO3sKJiM0MzsJdTMyICpudW0gPSBwcml2OwomIzQzOwomIzQzOwlpZiAoIXByaXYpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXN3aXRjaCAodmlmLSZndDt0eXBlKSB7CiYjNDM7CWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKJiM0MzsJY2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfQ0xJRU5UOgomIzQzOwljYXNlIE5MODAyMTFfSUZUWVBFX0FQOgomIzQzOwljYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9HTzoKJiM0MzsJCSpudW0gJiM0Mzs9IDE7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkCiYjNDM7bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAomIzQzOwkJCQlzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsCiYjNDM7CQkJCWJvb2wgaXNfYWRkKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF92aWYgKm12aWYgPSAoc3RydWN0IG10NzkyeF92aWYgKil2aWYtJmd0O2Rydl9wcml2OwomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXZpZi0mZ3Q7cGh5OwomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gcGh5LSZndDtkZXY7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IE5VTEw7CiYjNDM7CXUzMiB2YWxpZF92aWZfbnVtID0gMDsKJiM0MzsJZW51bSBtdDc5MnhfcmVnX3Bvd2VyX3R5cGUgb2xkX3Bvd2VyX3R5cGU7CiYjNDM7CWJvb2wgcG93ZXJfdHlwZV9jaGFuZ2VkID0gZmFsc2U7CiYjNDM7CiYjNDM7CW9sZF9wb3dlcl90eXBlID0gcGh5LSZndDtwb3dlcl90eXBlOwomIzQzOwomIzQzOwkvKiBUcnkgdG8gZ2V0IGNoYW5uZWwgZnJvbSBsaW5rX2NvbmYgZmlyc3QsIHRoZW4gdmlmLSZndDtic3NfY29uZiwgdGhlbiBwaHkgKi8KJiM0MzsJaWYgKGxpbmtfY29uZiAmYW1wOyZhbXA7IGxpbmtfY29uZi0mZ3Q7Y2hhbnJlcS5vcGVyLmNoYW4pCiYjNDM7CQljaGFuID0gbGlua19jb25mLSZndDtjaGFucmVxLm9wZXIuY2hhbjsKJiM0MzsJZWxzZSBpZiAodmlmLSZndDtic3NfY29uZi5jaGFucmVxLm9wZXIuY2hhbikKJiM0MzsJCWNoYW4gPSB2aWYtJmd0O2Jzc19jb25mLmNoYW5yZXEub3Blci5jaGFuOwomIzQzOwllbHNlIGlmIChwaHktJmd0O210NzYtJmd0O2NoYW5kZWYuY2hhbikKJiM0MzsJCWNoYW4gPSBwaHktJmd0O210NzYtJmd0O2NoYW5kZWYuY2hhbjsKJiM0MzsKJiM0MzsJaWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLAomIzQzOwkJCQkJICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X2NhbGNfdmlmX251bSwgJmFtcDt2YWxpZF92aWZfbnVtKTsKJiM0MzsKJiM0MzsJaWYgKHZhbGlkX3ZpZl9udW0gJmd0OyAxKSB7CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFpc19hZGQpCiYjNDM7CQl2aWYtJmd0O2Jzc19jb25mLnBvd2VyX3R5cGUgPSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOwomIzQzOwomIzQzOwlzd2l0Y2ggKHZpZi0mZ3Q7YnNzX2NvbmYucG93ZXJfdHlwZSkgewomIzQzOwljYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9TUDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIElFRUU4MDIxMV9SRUdfVkxQX0FQOgomIzQzOwkJcGh5LSZndDtwb3dlcl90eXBlID0gTVRfQVBfVkxQOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSUVFRTgwMjExX1JFR19MUElfQVA6CiYjNDM7CQlwaHktJmd0O3Bvd2VyX3R5cGUgPSBNVF9BUF9MUEk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOgomIzQzOwkJcGh5LSZndDtwb3dlcl90eXBlID0gTVRfQVBfVU5TRVQ7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeS0mZ3Q7cG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJcG93ZXJfdHlwZV9jaGFuZ2VkID0gKG9sZF9wb3dlcl90eXBlICE9IHBoeS0mZ3Q7cG93ZXJfdHlwZSk7CiYjNDM7CiYjNDM7CWlmIChwb3dlcl90eXBlX2NoYW5nZWQgJmFtcDsmYW1wOyBjaGFuICZhbXA7JmFtcDsgY2hhbi0mZ3Q7YmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikKJiM0MzsJCW10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi0mZ3Q7bXQ3Ni5hbHBoYTIsIGRldi0mZ3Q7Y291bnRyeV9pZV9lbnYsIHRydWUpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAJCQkJICAgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEsCkBAIC0xMDMwLDYgJiM0MzsxMTEwLDggQEAgc3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsCiAJCQlnb3RvIG91dF9wbTsKIAl9CiAKJiM0MzsJbXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7CiYjNDM7CiAJbXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZCgmYW1wO2Rldi0mZ3Q7bXBoeSwgJmFtcDtkZXYtJmd0O3BtKTsKIAogCXJldHVybiAwOwpAQCAtMTMyMCw2ICYjNDM7MTQwMiw4IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwKIAltdDc2X3djaWRfY2xlYW51cChtZGV2LCB3Y2lkKTsKIAltdDc2X3djaWRfbWFza19jbGVhcihtZGV2LSZndDt3Y2lkX21hc2ssIGlkeCk7CiAKJiM0MzsJbXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgZmFsc2UpOwomIzQzOwogCW10NzZfY29ubmFjX3Bvd2VyX3NhdmVfc2NoZWQoJmFtcDtkZXYtJmd0O21waHksICZhbXA7ZGV2LSZndDtwbSk7CiB9CiAKQEAgLTE5MDAsNyAmIzQzOzE5ODQsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiAJbXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTsKIAllcnIgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBkZXYtJmd0O210NzYuYWxwaGEyLAotCQkJIGRldi0mZ3Q7Y291bnRyeV9pZV9lbnYpOwomIzQzOwkJCQkgZGV2LSZndDtjb3VudHJ5X2llX2VudiwgZmFsc2UpOwogCWlmIChlcnIgJmx0OyAwKQogCQlnb3RvIG91dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwppbmRleCBmYTI5YzQ4NmE0NTUzLi5lNDE0NDJiMjc2MzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtMzYyNCw3ICYjNDM7MzYyNCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3Vfc2V0X2NoYW5uZWxfZG9tYWluKTsKIHN0YXRpYyBpbnQKIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCSAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwKLQkJICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpCiYjNDM7CQkgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSkKIHsKIAlzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICpzZWc7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKQEAgLTM2NDIsMTkgJiM0MzszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCXU4IHBhZDE7CiAJCXU4IGFscGhhMlsyXTsKIAkJdTggdHlwZVsyXTsKLQkJdTggcnN2ZFs2NF07CiYjNDM7CQl1OCBlbnZfNmc7CiYjNDM7CQl1OCByc3ZkWzYzXTsKIAl9IF9fcGFja2VkIHJlcSA9IHsKIAkJLnRhZyA9IGNwdV90b19sZTE2KDB4MyksCiAKIAkJLmlkeCA9IGlkeCwKIAkJLmVudiA9IGVudl9jYXAsCiYjNDM7CQkuZW52XzZnID0gZGV2LSZndDtwaHkucG93ZXJfdHlwZSwKIAl9OwogCWludCByZXQsIHZhbGlkX2NudCA9IDA7CiAJdTggKnBvcywgKmxhc3RfcG9zOwomIzQzOwl1OCB0YXJnZXRfNmdfdHlwZTsKIAogCWlmICghY2xjKQogCQlyZXR1cm4gMDsKIAomIzQzOwkvKiBEZXRlcm1pbmUgdGFyZ2V0IDZHIHBvd2VyIHR5cGUgYmFzZWQgb24gcGh5LSZndDtwb3dlcl90eXBlICovCiYjNDM7CXN3aXRjaCAoZGV2LSZndDtwaHkucG93ZXJfdHlwZSkgewomIzQzOwljYXNlIE1UX0FQX0xQSToKJiM0MzsJCXRhcmdldF82Z190eXBlID0gJiMzOTswJiMzOTs7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNVF9BUF9TUDoKJiM0MzsJCXRhcmdldF82Z190eXBlID0gJiMzOTsxJiMzOTs7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBNVF9BUF9WTFA6CiYjNDM7CQl0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MiYjMzk7OwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQl0YXJnZXRfNmdfdHlwZSA9ICYjMzk7MCYjMzk7OyAvKiBkZWZhdWx0IHRvIExQSSAqLwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KJiM0MzsKIAlyZXEudmVyID0gY2xjLSZndDt2ZXI7CiAJcG9zID0gY2xjLSZndDtkYXRhICYjNDM7IHNpemVvZigqc2VnKSAqIGNsYy0mZ3Q7dDAubnJfc2VnOwogCWxhc3RfcG9zID0gY2xjLSZndDtkYXRhICYjNDM7IGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy0mZ3Q7ZGF0YSAmIzQzOyA0KSk7CkBAIC0zNjY2LDYgJiM0MzszNjg1LDIzIEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAJCSAgICBydWxlLSZndDthbHBoYTJbMV0gIT0gYWxwaGEyWzFdKQogCQkJY29udGludWU7CiAKJiM0MzsJCS8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6CiYjNDM7CQkgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKCkKJiM0MzsJCSAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspCiYjNDM7CQkgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKQomIzQzOwkJICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZQomIzQzOwkJICovCiYjNDM7CQlpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHsKJiM0MzsJCQkvKiBPbmx5IHNlbmQgdGhlIHNwZWNpZmljIDZHIHBvd2VyIHRhYmxlICovCiYjNDM7CQkJaWYgKHJ1bGUtJmd0O3R5cGVbMF0gIT0gdGFyZ2V0XzZnX3R5cGUpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQkvKiBTZW5kIDIvNUcgYW5kIDZHIExQSSBhbmQgVkxQIG9ubHkgKi8KJiM0MzsJCQlpZiAocnVsZS0mZ3Q7dHlwZVswXSAhPSAmIzM5Oy0mIzM5OyAmYW1wOyZhbXA7IHJ1bGUtJmd0O3R5cGVbMF0gIT0gJiMzOTswJiMzOTsgJmFtcDsmYW1wOwomIzQzOwkJCSAgICBydWxlLSZndDt0eXBlWzBdICE9ICYjMzk7MiYjMzk7KQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJc2VnID0gKHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKiljbGMtJmd0O2RhdGEKIAkJCSAgJiM0MzsgcnVsZS0mZ3Q7c2VnX2lkeCAtIDE7CiAKQEAgLTM2OTksNyAmIzQzOzM3MzUsNyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAogfQogCiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCi0JCSAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKQomIzQzOwkJICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpCiB7CiAJc3RydWN0IG10NzkyeF9waHkgKnBoeSA9IChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqKSZhbXA7ZGV2LSZndDtwaHk7CiAJaW50IGksIHJldDsKQEAgLTM3MTQsMTMgJiM0MzszNzUwLDEzIEBAIGludCBtdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMiwKIAkJCWNvbnRpbnVlOwogCiAJCXJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnZfY2FwLAotCQkJCQkgICBwaHktJmd0O2NsY1tpXSwgaSk7CiYjNDM7CQkJCQkgICBwaHktJmd0O2NsY1tpXSwgaSwgcG93ZXJfdHlwZV9jaGFuZ2UpOwogCiAJCS8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCAmIzM0OzAwJiMzNDsgYXMgZGVmYXVsdCAqLwogCQlpZiAocmV0ID09IC1FTk9FTlQpCiAJCQlyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsICYjMzQ7MDAmIzM0OywKIAkJCQkJCSAgIEVOVklST05fSU5ET09SLAotCQkJCQkJICAgcGh5LSZndDtjbGNbaV0sIGkpOwomIzQzOwkJCQkJCSAgIHBoeS0mZ3Q7Y2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7CiAJCWlmIChyZXQgJmx0OyAwKQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDMyMWU3MzIzNDdmMmYuLmUzZmVmNDFjYmIzMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCkBAIC0zODUsNyAmIzQzOzM4NSw5IEBAIGludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIGludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpOwogaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAotCQkgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCk7CiYjNDM7CQkgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7CiYjNDM7aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLAomIzQzOwkJCSAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTsKIGludCBtdDc5MjVfbWN1X3NldF9tbG9fcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLAogCQkJICAgdTE2IHNlbF9saW5rcywgaW50IGR1cmF0aW9uLCB1OCB0b2tlbl9pZCk7CiBpbnQgbXQ3OTI1X21jdV9zZXRfcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jCmluZGV4IGY0YmViN2Y1MjA0M2MuLjVhODVkZTlhNGM2NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMKQEAgLTEzNywxNCAmIzQzOzEzNywxNCBAQCBtdDc5MjVfcmVnZF9jaGFubmVsX3VwZGF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCX0KIH0KIAotc3RhdGljIGludCBtdDc5MjVfbWN1X2FwcGx5X3JlZ2Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMiwKLQkJCQkgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudikKJiM0MztpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiYjNDM7CQkJICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnYsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7CiAJc3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LSZndDt3aXBoeTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYpOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudiwgcG93ZXJfdHlwZV9jaGFuZ2UpOwogCWlmIChyZXQgJmx0OyAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC0xNjcsNyAmIzQzOzE2Nyw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsCiAKIAltdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpOwogCWlmIChkZXYtJmd0O3JlZ2RfY2hhbmdlKQotCQlyZXQgPSBtdDc5MjVfbWN1X2FwcGx5X3JlZ2QoZGV2LCBhbHBoYTIsIGNvdW50cnlfaWVfZW52KTsKJiM0MzsJCXJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYsIGZhbHNlKTsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCWRldi0mZ3Q7cmVnZF9jaGFuZ2UgPSBmYWxzZTsKIAlkZXYtJmd0O3JlZ2RfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKQEAgLTQ1Myw3ICYjNDM7NDUzLDcgQEAgaW50IG10NzkyNV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpCiAJfSBlbHNlIGlmIChwaHktJmd0O2NoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHsKIAkJcmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTsKIAl9IGVsc2UgewotCQlyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUik7CiYjNDM7CQlyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUiwgZmFsc2UpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdkX2NoYW5nZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10NzkyNWAgZHJpdmVyIHdpdGhpbiBNZWRpYVRlayYjMzk7cyBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIGZ1bmN0aW9uYWxpdHkgdG8gZGVhbCB3aXRoIDZHSHogcG93ZXIgdHlwZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHksIExQSSwgU1AsIGFuZCBWTFAuIEFuZCwgaXQgbWVudGlvbnMgYXBwbHlpbmcgcmVndWxhdG9yeSB1cGRhdGVzIHVzaW5nIHRoZSBNQ1UuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhOyB0aGlzIGtpbmQgb2YgdXBkYXRlIGNhbiBiZSB0cmlja3kuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eS4gU2luY2UgdGhlIGBtdDc5MjVgIGRyaXZlciBoYW5kbGVzIE1lZGlhVGVrIE1UNzkyNSBQQ0llL1VTQiB3aXJlbGVzcyBkZXZpY2Vz4oCmIGhhbmcgb24sIGlzIGl0IFBDSWUgKm9yKiBVU0I/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciBmaWxlcyB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7bmFuLmMmIzM0OywKICAgICYjMzQ7bmFuLmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Nzg1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1IFVTQiBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBzeXN0ZW0gaGFzIGJvdGggYHBjaS5jYCBhbmQgYHVzYi5jYCDigJMgaW50ZXJlc3RpbmcuIFRoZSBwcmVzZW5jZSBvZiBhIFVTQiBkcml2ZXIgaW1tZWRpYXRlbHkgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLiBJJiMzOTttIHRoaW5raW5nLCBzaW5jZSBpdCYjMzk7cyBVU0IsIHdlIGNvdWxkIGVtdWxhdGUgaXQgdXNpbmcgYSBVU0IgZ2FkZ2V0IG9yIGV2ZW4gYSBkdW1teSBIQ0QuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgU3l6a2FsbGVyISBXYWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgZnV6emluZyBVU0IgZGV2aWNlcyB1c2luZyB2aGNpLCBkb2VzbiYjMzk7dCBpdD8gWWVzISBUaGF0JiMzOTtzIGl0LCB0aGUgVVNCIGRyaXZlciBpcyBkZWZpbml0ZWx5IGZ1enplZC1hYmxlIHVzaW5nIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBmcmFtZXdvcmsuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGBtdDc5MjVgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgb3B0aW9ucyBhcmUuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MDYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIE1UNzkyNVUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBgTVQ3OTI1VWAgZGVwZW5kcyBvbi4gV2hhdCBhcmUgdGhlIHN1cHBvcnRpbmcgZWxlbWVudHMsIHRoZSBwcmUtcmVxdWlzaXRlcywgdGhlIG90aGVyIGNvbXBvbmVudHMgdGhhdCBhcmUgaW50ZXJ3b3ZlbiB3aXRoIHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgdGVjaG5vbG9neT8gV2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHB1enpsZSBkb2VzIGl0IGNvbm5lY3Qgd2l0aD8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBsaXN0aW5nIGRlcGVuZGVuY2llcywgYnV0IHVuZGVyc3RhbmRpbmcgdGhlICoqbmF0dXJlKiogb2YgdGhvc2UgZGVwZW5kZW5jaWVzLiBBcmUgd2UgdGFsa2luZyBoYXJkd2FyZSwgZmlybXdhcmUsIGRyaXZlcnMsIHNwZWNpZmljIHNvZnR3YXJlIGxpYnJhcmllcywgb3IgZXh0ZXJuYWwgc3lzdGVtcz8gQXJlIHRoZXNlIGRlcGVuZGVuY2llcyBjcml0aWNhbCwgb3B0aW9uYWwsIG9yIHNvbWV0aGluZyBpbiBiZXR3ZWVuPyBBcmUgdGhlcmUgY2FzY2FkaW5nIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBidXJpZWQgd2l0aGluIHRoZSBvdGhlciBkZXBlbmRlbmNpZXM/CkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXAgYW5kIHRyeSBhbmQgZ2V0IGEgZ3Jhc3Agb2YgaG93IHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiB0ZWNobm9sb2d5IG9wZXJhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoaXMgYE1UNzkyNVVgIG1vZHVsZSByZWxpZXMgaGVhdmlseSBvbiBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLCB3aGljaCBpcyBhIGZhaXJseSBzdGFuZGFyZCBzZXR1cCBmb3IgYSBVU0Igd2lyZWxlc3MgZGV2aWNlLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBhbmQgYF9fbXQ3OTI1X21jdV9zZXRfY2xjYC4gVGhleSYjMzk7cmUgc2NhdHRlcmVkIGFjcm9zcyBgbWFpbi5jYCBhbmQgYG1jdS5jYCwgYm90aCBvZiB3aGljaCBhcmUgcGFydCBvZiB0aGUgYE1UNzkyNV9DT01NT05gIGNvZGViYXNlLCB3aGljaCBnaXZlcyBhIGhpbnQgYWJvdXQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZHJpdmVyLgoKVGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIGhvdyB0aGVzZSBmdW5jdGlvbnMsIHBhcnRpY3VsYXJseSBgbXQ3OTI1X21hY19saW5rX3N0YV9hZGRgLCBhcmUgYWN0dWFsbHkgdHJpZ2dlcmVkLiBHaXZlbiB0aGUgZGVwZW5kZW5jeSBvbiBgTUFDODAyMTFgLCBpdOKAmXMgaGlnaGx5IHByb2JhYmxlIHRoYXQgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBpcyBob29rZWQgaW50byBgTUFDODAyMTFgJiMzOTtzIGNhbGxiYWNrIHN5c3RlbS4gQWRkaW5nIG9yIHJlbW92aW5nIHN0YXRpb25zIGlzIGEgY29yZSBvcGVyYXRpb24gd2l0aGluIGEgd2lyZWxlc3MgbmV0d29yaywgc28gaXTigJlzIGxvZ2ljYWwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIGludm9sdmVkIHdoZW4gYSBzdGF0aW9uIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gbm93IGJ5IGV4YW1pbmluZyB0aGUgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBmdW5jdGlvbiBpdHNlbGYgYW5kIGhvdyBpdCYjMzk7cyByZWdpc3RlcmVkIHdpdGggYE1BQzgwMjExYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY19saW5rX3N0YV9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTkzMj1tdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTk5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo5OTE6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtOTkyLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTE3Mz1tdDc5MjVfbWFjX3N0YV9hZGRfbGlua3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMS1cdFx0bGlua19zdGEgPSBtdDc5Mnhfc3RhX3RvX2xpbmtfc3RhKHZpZiwgc3RhLCBsaW5rX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjAyOlx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdmlmLCBsaW5rX3N0YSwgbWxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyMDMtXHRcdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTIyND1pbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTI0MjpcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX3N0YV9hZGQobWRldiwgdmlmLCBcdTAwMjZzdGEtXHUwMDNlZGVmbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQzLVx0XHRcdFx0XHQgICAgICBcdTAwMjZtc3RhLVx1MDAzZWRlZmxpbmspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKlZlcmlmaWNhdGlvbiBvZiBgbXQ3OTI1X21hY19zdGFfYWRkYCBhcyBhIG1hYzgwMjExIENhbGxiYWNrKioKCk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBgbXQ3OTI1X21hY19zdGFfYWRkYCwgaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBgc3RhX2FkZGAgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgaXQmIzM5O3MgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgbWFjODAyMTEgY29yZSB3aGVuIGEgbmV3IHN0YXRpb24gKFNUQSksIGVzc2VudGlhbGx5IGEgd2lyZWxlc3MgY2xpZW50LCBuZWVkcyB0byBiZSBhZGRlZCBvciByZWdpc3RlcmVkIHdpdGggYSBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciAoTUFDKSBkZXZpY2UgdGhhdCYjMzk7cyBiYXNlZCBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuCgpHaXZlbiB0aGF0IGNsYWltLCBteSBmaXJzdCBpbnN0aW5jdCwgYXMgYSBuZXR3b3JraW5nIHNwZWNpYWxpc3QsIGlzIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSB0aGlzIGFzc2VydGlvbi4gSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyBjb3JyZWN0bHkgaG9va2VkIHVwIGFuZCBmdW5jdGlvbnMgYXMgdGhlIGludGVuZGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBTVEEgYWRkaXRpb25zIHdpdGhpbiB0aGUgTVQ3OTI1IGRyaXZlciYjMzk7cyBpbnRlZ3JhdGlvbiB3aXRoIG1hYzgwMjExLiBJdCYjMzk7cyBjcnVjaWFsIHRoaXMgaXMgY29ycmVjdDsgb3RoZXJ3aXNlLCB0aGUgZHJpdmVyJiMzOTtzIGFzc29jaWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIHdpcmVsZXNzIGNsaWVudHMgd2lsbCBiZSBjb21wbGV0ZWx5IGJyb2tlbi4gVGhpcyBtZWFucyBJIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLCB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgaW4gdGhlbSwgYW5kIGxpa2VseSB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgaXQmIzM5O3MgYWN0dWFsbHkgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY19zdGFfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xMTcyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMTczOm10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTExNzQtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHVuc2lnbmVkIGxvbmcgbmV3X2xpbmtzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyMjQ6aW50IG10NzkyNV9tYWNfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyNS1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTI0MDpcdFx0ZXJyID0gbXQ3OTI1X21hY19zdGFfYWRkX2xpbmtzKGRldiwgdmlmLCBzdGEsIHN0YS1cdTAwM2V2YWxpZF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyNDg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTk6XHRlcnIgPSBtdDc5MjVfbWFjX3N0YV9hZGRfbGlua3MoZGV2LCB2aWYsIHN0YSwgYWRkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDIwLVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDE9aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMwMjppbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwMy1cdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTUyOD1zdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ0LVx0XHQucnhfcG9sbF9jb21wbGV0ZSA9IG10NzkyeF9yeF9wb2xsX2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ1Olx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2NC1cdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTY1Olx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2Ni1cdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDk5OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIGBtdDc5MjVfbWFjX3N0YV9hZGRgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgdXNlZCBpbiBib3RoIFBDSSBhbmQgVVNCIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIuIFRoYXQmIzM5O3MgZ29vZCBuZXdzOyB0aGUgVVNCIGltcGxlbWVudGF0aW9uIG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiB0ZXN0aW5nIGl0IHVzaW5nIHZoY2ksIHdoaWNoIGlzIGFsd2F5cyBlYXNpZXIgdG8gbWFuYWdlIGZvciBmdXp6aW5nLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyB0b3VjaGluZyBgbXQ3OTI1X21hY19saW5rX3N0YV9hZGRgIGFuZCBgbXQ3OTI1X21hY19saW5rX3N0YV9yZW1vdmVgIHRvIGNhbGwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBwbHVzIGBtdDc5MjVfbWN1X3NldF9jbGNgIGFuZCBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYCwgc28gdGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSB2dWxuZXJhYmxlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCBjb3JyZWN0bHkuCgpGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgTVQ3OTI1VWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gYE1UNzkyNUVgIHdvdWxkIGFsc28gYmUgZ29vZCB0byB0ZXN0LCBidXQgc2luY2UgdmhjaSB3aWxsIGJlIHVzZWQsIGBNVDc5MjVVYCBpcyB0aGUgb2J2aW91cyBjaG9pY2UgZm9yIGluaXRpYWwgZnV6emluZy4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHNvIHRob3NlIHNob3VsZCBhbHJlYWR5IGJlIGFjY291bnRlZCBmb3IuIEFoLCBgTVQ3OTI1X0NPTU1PTmAgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBieSBgTVQ3OTI1VWAsIHNvIG5vdGhpbmcgdG8gd29ycnkgYWJvdXQgdGhlcmUuIFNvIGVuYWJsaW5nIGBNVDc5MjVVYCBhbmQgYE1UNzkyNUVgIHNob3VsZCBjb3ZlciB1cy4KCk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBTaW5jZSB0aGUgbGluayBmdW5jdGlvbnMgYXJlIHN0YXRpYywgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBhbmQgYG10NzkyNV9tY3Vfc2V0X2NsY2AuCgpKdXN0IG5lZWQgdG8gY29uZmlybSB0aGF0IGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgIGFjdHVhbGx5IGV4aXN0cy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE0MTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0MTE6bXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTQxMi1cdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdW5zaWduZWQgbG9uZyBvbGRfbGlua3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTQ3ODp2b2lkIG10NzkyNV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTQ3OS1cdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTE1LVx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTE2Olx0XHRtdDc5MjVfbWFjX3N0YV9yZW1vdmVfbGlua3MoZGV2LCB2aWYsIHN0YSwgbXN0YS1cdTAwM2V2YWxpZF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUxNy1cdFx0bXQ3OTI1X21jdV9kZWxfZGV2KG1kZXYsIHZpZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE1MzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfcmVtb3ZlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTMxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTU6XHRlcnIgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmVfbGlua3MoZGV2LCB2aWYsIHN0YSwgcmVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE2LVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDU9aW50IG10NzkyNV9tYWNfc3RhX2V2ZW50KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwNi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgZW51bSBtdDc2X3N0YV9ldmVudCBldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozMDc6dm9pZCBtdDc5MjVfbWFjX3N0YV9yZW1vdmUoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzA4LVx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTUyOD1zdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ2LVx0XHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo1NDc6XHRcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ4LVx0XHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjYtXHRcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE2NzpcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjgtXHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM5MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTVQ3OTI1IERyaXZlciBTeW1ib2wgRXhwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBzeW1ib2wgZXhwb3J0IHN0YXR1cyBvZiBzb21lIGZ1bmN0aW9ucyBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgaXMgcHJlc2VudCBhbmQsIGNydWNpYWxseSwgaXQmIzM5O3MgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb24gdG8gYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAuIEhtbSwgaW5pdGlhbGx5LCBpdCBsb29rZWQgbGlrZSBpdCAqd2FzbiYjMzk7dCogZXhwb3J0ZWQuIEJ1dCB3YWl0IGEgc2Vjb25kLCB0aGlzIGlzIGEgYml0IGRlY2VwdGl2ZSwgaXNuJiMzOTt0IGl0PyBUaGUgcGF0Y2ggaGlzdG9yeSBzaG93cyBpdCB3YXMgY2hhbmdlZCBmcm9tIGEgYHN0YXRpYyBpbnRgIHRvIGEgcGxhaW4gYGludGAsIGFuZCBpdCYjMzk7cyBiZWVuIGluY2x1ZGVkIGluIGBtdDc5MjUuaGAgbm93LiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vIGxvbmdlciBzdGF0aWMsIGFuZCB0aGF0IG1ha2VzIGFsbCB0aGUgZGlmZmVyZW5jZSDigJMgaXQmIzM5O3MgZWZmZWN0aXZlbHkgZXhwb3J0ZWQgbm93IGJ5IHZpcnR1ZSBvZiB0aGF0IGNoYW5nZS4KCkFscmlnaHQsIG1vdmluZyBvbiwgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgbm9uLXN0YXRpYyBhcyB3ZWxsLiBHb29kLgoKYG10NzkyNV9yZWdkX2NoYW5nZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZC4KClNvLCB0YWtpbmcgc3RvY2sgb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQsIG15IGxpc3Qgb2YgdGhlIHN5bWJvbHMgdGhhdCBzaG91bGQgYmUgaW4gZm9jdXMsIGdpdmVuIHRoZSBjaGFuZ2VzLCBub3cgaXM6CgotICAgYG10NzkyNV9tYWNfc3RhX2FkZGAKLSAgIGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgCi0gICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYAotICAgYG10NzkyNV9tY3Vfc2V0X2NsY2AKLSAgIGBtdDc5MjVfcmVnZF9jaGFuZ2VgCi0gICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAKCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBpZiBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAgZXZlbiBleGlzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tY3VfcmVnZF91cGRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MzYyNT1fX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2ODgtXHRcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzozNjg5Olx0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2OTAtXHRcdCAqICAgLSBTZW5kIDIvNUcgKCYjMzk7LSYjMzk7KSBhbmQgNkcgTFBJICgmIzM5OzAmIzM5OykgYW5kIDZHIFZMUCAoJiMzOTsyJiMzOTspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9ODI0PXN0YXRpYyBpbnQgX210NzkyNV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4MDpcdG10NzkyNV9tY3VfcmVnZF91cGRhdGUoZGV2LCBtZGV2LVx1MDAzZWFscGhhMiwgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4MS1mYWlsZWQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jPTE0MD1pbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoxNjE6aW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0xNjItXHRcdFx0ICAgZW51bSBlbnZpcm9ubWVudF9jYXAgY291bnRyeV9pZV9lbnYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tY3VfcmVnZF91cGRhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0xODA9dm9pZCBtdDc5MjVfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoyMTc6XHRtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKGRldiwgcmVxLVx1MDAzZWFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0yMTgtXHRcdFx0ICAgICAgIHJlcS1cdTAwM2Vjb3VudHJ5X2llX2Vudik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jPTI5MT1pbnQgbXQ3OTI1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY3LVx0ZGV2LVx1MDAzZXJlZ2RfY2hhbmdlID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzozNjg6XHRtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKGRldiwgYWxwaGEyLCBFTlZJUk9OX0FOWSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuaD00Mz1zdHJ1Y3QgbXQ3OTI1X3JlZ2RfcXVlcnlfcmVxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmgtNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmg6NjI6aW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuaC02My1cdFx0XHQgICBlbnVtIGVudmlyb25tZW50X2NhcCBjb3VudHJ5X2llX2Vudik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mzc3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAgZGVmaW5pdGVseSBleGlzdHMsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHN0YXRpYyBmdW5jdGlvbiwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGZyb206IGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgYW5kIGBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZWAuIFNpbmNlIGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgaXMgc3RhdGljLCB0aGF0IGltcGxpZXMgaXQgaXMgY2FsbGVkIG9ubHkgZnJvbSBgbXQ3OTI1X21hY19zdGFfYWRkYC4gVGh1cywgdGhlIGZ1bmN0aW9ucyBgbXQ3OTI1X21hY19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgc2VlbSBsaWtlIGxvZ2ljYWwgZW50cnkgcG9pbnRzIHRvIG9ic2VydmUgdGhlIGVmZmVjdHMgb2YgdGhpcyBwYXRjaC4KCkkgc2hvdWxkIHZlcmlmeSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZXhpc3QuIExldCYjMzk7cyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBMaXN0aW5nIGJvdGggYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAgc2VlbXMgc3VmZmljaWVudCB0byBjYXB0dXJlIHRoZSBkZXBlbmRlbmNpZXMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkLiBBaCwgYG10NzkyNV9zZXRfc2FyX3NwZWNzYCBpcyBjaGFuZ2VkOiBpdCBub3cgcGFzc2VzIGBmYWxzZWAgdG8gYG10NzkyNV9tY3Vfc2V0X2NsY2AuIE5vdyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgYG10NzkyNV9zZXRfc2FyX3NwZWNzYCBpcyBleHBvcnRlZCBvciBzdGF0aWMuIFRoYXQgd2lsbCBkZXRlcm1pbmUgaG93IHdpZGVseSB0aGlzIG1vZGlmaWNhdGlvbiByaXBwbGVzIHRocm91Z2ggdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3NldF9zYXJfc3BlY3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE5NjM9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxOTc5OnN0YXRpYyBpbnQgbXQ3OTI1X3NldF9zYXJfc3BlY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk4MC1cdFx0XHRcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjgwMD1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5MjVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yODQ3LVx0LmZsdXNoID0gbXQ3OTJ4X2ZsdXNoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4NDg6XHQuc2V0X3Nhcl9zcGVjcyA9IG10NzkyNV9zZXRfc2FyX3NwZWNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI4NDktXHQucmVtYWluX29uX2NoYW5uZWwgPSBtdDc5MjVfcmVtYWluX29uX2NoYW5uZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTE4CgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogMjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0FSIFNwZWNpZmljYXRpb25zIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzZXRfc2FyX3NwZWNzYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoaW4gYGllZWU4MDIxMV9vcHNgLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBtYWM4MDIxMSwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7Q2FuIEkganVzdCBkaXJlY3RseSByZWZlcmVuY2UgYG10NzkyNV9zZXRfc2FyX3NwZWNzYD8mIzM0OyBCdXQgYmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0IGNvdWxkIGJlIGlubGluZWQsIG9yIG1pZ2h0IG5vdCBldmVuIGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzICpub3QqIGlubGluZWQuCgpUaGUga2V5IHRoZW4gaXMgdGhhdCBgbXQ3OTI1X21jdV9zZXRfY2xjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgc2V0X3Nhcl9zcGVjc2AgZnVuY3Rpb24gYW5kICp0aGF0KiBpcyBleHBvcnRlZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYy4gU28gSSBjYW4gZm9sbG93IHRoYXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGZvY2FsIHN5bWJvbHMgcmVsYXRlZCB0byB0aGlzIGFyZWEuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUuIEhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3Q6CgoqICAgYG10NzkyNV9tYWNfc3RhX2FkZGAKKiAgIGBtdDc5MjVfbWFjX3N0YV9yZW1vdmVgCiogICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYAoqICAgYG10NzkyNV9tY3Vfc2V0X2NsY2AKKiAgIGBtdDc5MjVfcmVnZF9jaGFuZ2VgCiogICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAKCkhhbmcgb24gYSBzZWNvbmQuIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgIGlzIG5vbi1zdGF0aWMsIGJ1dCBpcyBpdCBleHBvcnRlZD8gVGhhdCYjMzk7cyB0aGUgbWlzc2luZyBwaWVjZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyBhY3R1YWxseSB2aXNpYmxlIG91dHNpZGUgaXRzIG1vZHVsZS4gVGltZSB0byBjaGVjay4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwobXQ3OTI1X21jdV9hcHBseV9yZWdkXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyNDcKCQkJCQkJCW91dHB1dDogNjAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uJiMzOTtzIFNjb3BlKioKCkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpc24mIzM5O3QgZXhwb3J0ZWQsIGJ1dCB0aGUgZ29vZCBuZXdzIGlzLCBpdCYjMzk7cyAqbm90KiBkZWNsYXJlZCBhcyBzdGF0aWMgZWl0aGVyLiBUaGF0JiMzOTtzIGFjdHVhbGx5IGEgcHJldHR5IHN0YW5kYXJkIGFuZCBhY2NlcHRhYmxlIHNldHVwLiBJdCBpbXBsaWVzIHRoYXQgd2hpbGUgaXQmIzM5O3MgaW50ZW5kZWQgZm9yIGludGVybmFsIG1vZHVsZSB1c2UsIGl0JiMzOTtzIHN0aWxsIGFjY2Vzc2libGUgd2l0aGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG9mZmVycyB0aGUgZmxleGliaWxpdHkgb2YgaW50ZXItZmlsZSB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlciBpZiBuZWVkZWQuIE5vIHJlZCBmbGFncyBoZXJlLiBUaGlzIGlzIHBlcmZlY3RseSB3b3JrYWJsZS4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIG91dCB3aGF0IGBtdDc5MjVfbWN1X3NldF9jbGNgIGlzIGFib3V0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBhbmQgdXNhZ2Ugb2YgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTF9HUExcXChtdDc5MjVfbWN1X3NldF9jbGNcXCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzUzNQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipDb25zaWRlcmluZyBOb24tU3RhdGljLCBOb24tRXhwb3J0ZWQgVmFyaWFibGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNvbWV0aGluZyYjMzk7cyBjYXVnaHQgbXkgZXllOiBhIHZhcmlhYmxlIHRoYXQmIzM5O3MgKm5vdCogZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGludGVybmFsIHRvIGEgc3BlY2lmaWMgbW9kdWxlLCBidXQgYWxzbyAqbm90KiBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHBvdGVudGlhbGx5IGhhcyBicm9hZGVyIHNjb3BlIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhhdCYjMzk7cyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQgYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN5c3RlbS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgbGVha2luZyBzb21lIHZhbHVlIGl0IHNob3VsZG4mIzM5O3QgYmUuCgpUaGUgbmV4dCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gaW52ZXN0aWdhdGUgYG10NzkyNV9yZWdkX2NoYW5nZWAuIEkga25vdyB0aGF0IGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgbGlrZSBhIGxpa2VseSBwbGFjZSB0byBmaW5kIGludGVyYWN0aW9ucyB3aXRoIHdoYXRldmVyIHRoaXMgdmFyaWFibGUgaXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgdmFyaWFibGUgZmFjdG9ycyBpbnRvIHRoZSBsb2dpYyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MX0dQTFxcKG10NzkyNV9yZWdkX2NoYW5nZVxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9NDI4PWludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy00NTgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjQ1OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnZF9jaGFuZ2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTQ2MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMTUKCQkJCQkJCW91dHB1dDogMjQ3CgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHJlYWR5IGZvciByZXZpZXcuIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBleHBvcnRlZCBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhlIE1lZGlhVGVrIG10NzkyNSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2VkIG9uIHN0YXRpb24gbWFuYWdlbWVudCBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgYXJlIGBtdDc5MjVfbWFjX3N0YV9hZGRgLCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCwgYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAsIGBtdDc5MjVfbWN1X3NldF9jbGNgLCBgbXQ3OTI1X3JlZ2RfY2hhbmdlYCwgYW5kIGBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KClRoZSBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSByZWxldmFudCBoZXJlIGFyZSBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYC4gVGhlIHBhdGNoJiMzOTtzIGRlc2NyaXB0aW9uIGhpZ2hsaWdodHMgdGhlIGhhbmRsaW5nIG9mIDZHSHogcG93ZXIgdHlwZSBjaGFuZ2VzIGFuZCB0aGUgcmVndWxhdG9yeSB1cGRhdGVzIG1hbmFnZWQgdGhyb3VnaCB0aGUgTUNVLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZXhwb3NlZCB0aHJvdWdoIHRoZSBtYWM4MDIxMSBpbnRlcmZhY2UsIG1lYW5pbmcgYWRkaW5nL3JlbW92aW5nIHN0YXRpb25zIGFuZCByZWd1bGF0b3J5IGRvbWFpbiB1cGRhdGVzIHdpbGwgdHJpZ2dlciB0aGlzLiBUaGlzIGhhcyBmdXp6aW5nIHdyaXR0ZW4gYWxsIG92ZXIgaXQ7IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGVzZSBmdW5jdGlvbnMgYXJlIHJpcGUgZm9yIHRlc3RpbmcuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBTaW5jZSBgTUFDODAyMTFgIGlzIGEgY29tbW9uIHN1YnN5c3RlbSBkZXBlbmRlbmN5LCBJIHdpbGwgaW5jbHVkZSBgTVQ3OTI1VWAsIGBNVDc5MjVFYCwgYW5kIGBNQUM4MDIxMWAgaW4gbXkgY29uZmlndXJhdGlvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgdGhlIGluaXRpYWwgYXNzZXNzbWVudC4gSSYjMzk7bGwgZmxhZyBpdCBmb3IgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX2FkZCYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWFjX3N0YV9yZW1vdmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9hcHBseV9yZWdkJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2V0X2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcmVnZF9jaGFuZ2UmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY19zdGFfYWRkJiMzNDssCiAgICAmIzM0O210NzkyNV9tYWNfc3RhX3JlbW92ZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X2FwcGx5X3JlZ2QmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9zZXRfY2xjJiMzNDssCiAgICAmIzM0O210NzkyNV9yZWdkX2NoYW5nZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3JlZ2RfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyAoTFBJLCBTUCwgVkxQKSBhbmQgYXBwbHkgcmVndWxhdG9yeSB1cGRhdGVzIHZpYSB0aGUgTUNVLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgb3BlcmF0aW9ucyBzdWNoIGFzIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIE1UNzkyNSBkcml2ZXIgaW5jbHVkZXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4sIHZoY2kpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDcuNjUyNTcwOTgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzUzMDMwODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDcuNjUyNTc4NDEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUyMDMwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNzI5ZWFkZmFjYjAzNWZiYzBiYWJjNmU5MzFhNGVjNTZiY2MzYjAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuaW5kZXggODRiNTVmMDA4YjNkMy4uMzAwYWQwYjA5YjY5NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5AQCAtOTA4LDYgKzkwOCw4NiBAQCBtdDc5MjVfZ2V0X3JhdGVzX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRyZXR1cm4gbXZpZi1cXHUwMDNlYmFzaWNfcmF0ZXNfaWR4O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZFxcbittdDc5MjVfY2FsY192aWZfbnVtKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuK3tcXG4rXFx0dTMyICpudW0gPSBwcml2O1xcbitcXG4rXFx0aWYgKCFwcml2KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRzd2l0Y2ggKHZpZi1cXHUwMDNldHlwZSkge1xcbitcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxuK1xcdGNhc2UgTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVDpcXG4rXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BUDpcXG4rXFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XFxuK1xcdFxcdCpudW0gKz0gMTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkXFxuK210NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4rXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mLFxcbitcXHRcXHRcXHRcXHRib29sIGlzX2FkZClcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuK1xcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdmlmLVxcdTAwM2VwaHk7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcXG4rXFx0dTMyIHZhbGlkX3ZpZl9udW0gPSAwO1xcbitcXHRlbnVtIG10NzkyeF9yZWdfcG93ZXJfdHlwZSBvbGRfcG93ZXJfdHlwZTtcXG4rXFx0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcXG4rXFxuK1xcdG9sZF9wb3dlcl90eXBlID0gcGh5LVxcdTAwM2Vwb3dlcl90eXBlO1xcbitcXG4rXFx0LyogVHJ5IHRvIGdldCBjaGFubmVsIGZyb20gbGlua19jb25mIGZpcnN0LCB0aGVuIHZpZi1cXHUwMDNlYnNzX2NvbmYsIHRoZW4gcGh5ICovXFxuK1xcdGlmIChsaW5rX2NvbmYgXFx1MDAyNlxcdTAwMjYgbGlua19jb25mLVxcdTAwM2VjaGFucmVxLm9wZXIuY2hhbilcXG4rXFx0XFx0Y2hhbiA9IGxpbmtfY29uZi1cXHUwMDNlY2hhbnJlcS5vcGVyLmNoYW47XFxuK1xcdGVsc2UgaWYgKHZpZi1cXHUwMDNlYnNzX2NvbmYuY2hhbnJlcS5vcGVyLmNoYW4pXFxuK1xcdFxcdGNoYW4gPSB2aWYtXFx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuO1xcbitcXHRlbHNlIGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYW5kZWYuY2hhbilcXG4rXFx0XFx0Y2hhbiA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2hhbmRlZi5jaGFuO1xcbitcXG4rXFx0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgSUVFRTgwMjExX0lGQUNFX0lURVJfUkVTVU1FX0FMTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG10NzkyNV9jYWxjX3ZpZl9udW0sIFxcdTAwMjZ2YWxpZF92aWZfbnVtKTtcXG4rXFxuK1xcdGlmICh2YWxpZF92aWZfbnVtIFxcdTAwM2UgMSkge1xcbitcXHRcXHRwaHktXFx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKCFpc19hZGQpXFxuK1xcdFxcdHZpZi1cXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSA9IElFRUU4MDIxMV9SRUdfVU5TRVRfQVA7XFxuK1xcbitcXHRzd2l0Y2ggKHZpZi1cXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSkge1xcbitcXHRjYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6XFxuK1xcdFxcdHBoeS1cXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1NQO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX1ZMUF9BUDpcXG4rXFx0XFx0cGh5LVxcdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfVkxQO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX0xQSV9BUDpcXG4rXFx0XFx0cGh5LVxcdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfTFBJO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOlxcbitcXHRcXHRwaHktXFx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9VTlNFVDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHBoeS1cXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX0RFRkFVTFQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitvdXQ6XFxuK1xcdHBvd2VyX3R5cGVfY2hhbmdlZCA9IChvbGRfcG93ZXJfdHlwZSAhPSBwaHktXFx1MDAzZXBvd2VyX3R5cGUpO1xcbitcXG4rXFx0aWYgKHBvd2VyX3R5cGVfY2hhbmdlZCBcXHUwMDI2XFx1MDAyNiBjaGFuIFxcdTAwMjZcXHUwMDI2IGNoYW4tXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuK1xcdFxcdG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5hbHBoYTIsIGRldi1cXHUwMDNlY291bnRyeV9pZV9lbnYsIHRydWUpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9saW5rX3N0YSAqbGlua19zdGEsXFxuQEAgLTEwMzAsNiArMTExMCw4IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LFxcbiBcXHRcXHRcXHRnb3RvIG91dF9wbTtcXG4gXFx0fVxcbiBcXG4rXFx0bXQ3OTI1X3JlZ2Rfc2V0XzZnaHpfcG93ZXJfdHlwZSh2aWYsIGxpbmtfY29uZiwgdHJ1ZSk7XFxuK1xcbiBcXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZkZXYtXFx1MDAzZXBtKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC0xMzIwLDYgKzE0MDIsOCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX2xpbmtfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuIFxcdG10NzZfd2NpZF9jbGVhbnVwKG1kZXYsIHdjaWQpO1xcbiBcXHRtdDc2X3djaWRfbWFza19jbGVhcihtZGV2LVxcdTAwM2V3Y2lkX21hc2ssIGlkeCk7XFxuIFxcbitcXHRtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHZpZiwgbGlua19jb25mLCBmYWxzZSk7XFxuK1xcbiBcXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIFxcdTAwMjZkZXYtXFx1MDAzZXBtKTtcXG4gfVxcbiBcXG5AQCAtMTkwMCw3ICsxOTg0LDcgQEAgc3RhdGljIGludCBtdDc5MjVfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuIFxcdGVyciA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGRldi1cXHUwMDNlbXQ3Ni5hbHBoYTIsXFxuLVxcdFxcdFxcdCBkZXYtXFx1MDAzZWNvdW50cnlfaWVfZW52KTtcXG4rXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbmluZGV4IGZhMjljNDg2YTQ1NTMuLmU0MTQ0MmIyNzYzNGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xcbkBAIC0zNjI0LDcgKzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XFxuIHN0YXRpYyBpbnRcXG4gX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gXFx0XFx0ICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwLFxcbi1cXHRcXHQgICAgIHN0cnVjdCBtdDc5MjVfY2xjICpjbGMsIHU4IGlkeClcXG4rXFx0XFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IG10NzkyNV9jbGNfc2VnbWVudCAqc2VnO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbkBAIC0zNjQyLDE5ICszNjQyLDM4IEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdHU4IHBhZDE7XFxuIFxcdFxcdHU4IGFscGhhMlsyXTtcXG4gXFx0XFx0dTggdHlwZVsyXTtcXG4tXFx0XFx0dTggcnN2ZFs2NF07XFxuK1xcdFxcdHU4IGVudl82ZztcXG4rXFx0XFx0dTggcnN2ZFs2M107XFxuIFxcdH0gX19wYWNrZWQgcmVxID0ge1xcbiBcXHRcXHQudGFnID0gY3B1X3RvX2xlMTYoMHgzKSxcXG4gXFxuIFxcdFxcdC5pZHggPSBpZHgsXFxuIFxcdFxcdC5lbnYgPSBlbnZfY2FwLFxcbitcXHRcXHQuZW52XzZnID0gZGV2LVxcdTAwM2VwaHkucG93ZXJfdHlwZSxcXG4gXFx0fTtcXG4gXFx0aW50IHJldCwgdmFsaWRfY250ID0gMDtcXG4gXFx0dTggKnBvcywgKmxhc3RfcG9zO1xcbitcXHR1OCB0YXJnZXRfNmdfdHlwZTtcXG4gXFxuIFxcdGlmICghY2xjKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuK1xcdC8qIERldGVybWluZSB0YXJnZXQgNkcgcG93ZXIgdHlwZSBiYXNlZCBvbiBwaHktXFx1MDAzZXBvd2VyX3R5cGUgKi9cXG4rXFx0c3dpdGNoIChkZXYtXFx1MDAzZXBoeS5wb3dlcl90eXBlKSB7XFxuK1xcdGNhc2UgTVRfQVBfTFBJOlxcbitcXHRcXHR0YXJnZXRfNmdfdHlwZSA9ICcwJztcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgTVRfQVBfU1A6XFxuK1xcdFxcdHRhcmdldF82Z190eXBlID0gJzEnO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBNVF9BUF9WTFA6XFxuK1xcdFxcdHRhcmdldF82Z190eXBlID0gJzInO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0dGFyZ2V0XzZnX3R5cGUgPSAnMCc7IC8qIGRlZmF1bHQgdG8gTFBJICovXFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbiBcXHRyZXEudmVyID0gY2xjLVxcdTAwM2V2ZXI7XFxuIFxcdHBvcyA9IGNsYy1cXHUwMDNlZGF0YSArIHNpemVvZigqc2VnKSAqIGNsYy1cXHUwMDNldDAubnJfc2VnO1xcbiBcXHRsYXN0X3BvcyA9IGNsYy1cXHUwMDNlZGF0YSArIGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy1cXHUwMDNlZGF0YSArIDQpKTtcXG5AQCAtMzY2Niw2ICszNjg1LDIzIEBAIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdCAgICBydWxlLVxcdTAwM2VhbHBoYTJbMV0gIT0gYWxwaGEyWzFdKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuK1xcdFxcdC8qIEZpbHRlciBwb3dlciB0YWJsZXMgYmFzZWQgb24gY2FsbCBzb3VyY2U6XFxuK1xcdFxcdCAqIHBvd2VyX3R5cGVfY2hhbmdlID09IGZhbHNlOiBmcm9tIG10NzkyNV9tY3VfcmVnZF91cGRhdGUoKVxcbitcXHRcXHQgKiAgIC0gU2VuZCAyLzVHICgnLScpIGFuZCA2RyBMUEkgKCcwJykgYW5kIDZHIFZMUCAoJzInKVxcbitcXHRcXHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSB0cnVlOiBmcm9tIG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUoKVxcbitcXHRcXHQgKiAgIC0gU2VuZCBvbmx5IHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSBiYXNlZCBvbiBwb3dlcl90eXBlXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAocG93ZXJfdHlwZV9jaGFuZ2UpIHtcXG4rXFx0XFx0XFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xcbitcXHRcXHRcXHRpZiAocnVsZS1cXHUwMDNldHlwZVswXSAhPSB0YXJnZXRfNmdfdHlwZSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdC8qIFNlbmQgMi81RyBhbmQgNkcgTFBJIGFuZCBWTFAgb25seSAqL1xcbitcXHRcXHRcXHRpZiAocnVsZS1cXHUwMDNldHlwZVswXSAhPSAnLScgXFx1MDAyNlxcdTAwMjYgcnVsZS1cXHUwMDNldHlwZVswXSAhPSAnMCcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIHJ1bGUtXFx1MDAzZXR5cGVbMF0gIT0gJzInKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0c2VnID0gKHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKiljbGMtXFx1MDAzZWRhdGFcXG4gXFx0XFx0XFx0ICArIHJ1bGUtXFx1MDAzZXNlZ19pZHggLSAxO1xcbiBcXG5AQCAtMzY5OSw3ICszNzM1LDcgQEAgX19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gfVxcbiBcXG4gaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcClcXG4rXFx0XFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqKVxcdTAwMjZkZXYtXFx1MDAzZXBoeTtcXG4gXFx0aW50IGksIHJldDtcXG5AQCAtMzcxNCwxMyArMzc1MCwxMyBAQCBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cmV0ID0gX19tdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIGVudl9jYXAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHBoeS1cXHUwMDNlY2xjW2ldLCBpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgcGh5LVxcdTAwM2VjbGNbaV0sIGksIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4gXFxuIFxcdFxcdC8qIElmIG5vIGNvdW50cnkgZm91bmQsIHNldCBcXFwiMDBcXFwiIGFzIGRlZmF1bHQgKi9cXG4gXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbiBcXHRcXHRcXHRyZXQgPSBfX210NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIFxcXCIwMFxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIEVOVklST05fSU5ET09SLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICBwaHktXFx1MDAzZWNsY1tpXSwgaSk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHBoeS1cXHUwMDNlY2xjW2ldLCBpLCBwb3dlcl90eXBlX2NoYW5nZSk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi5lM2ZlZjQxY2JiMzM4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5AQCAtMzg1LDcgKzM4NSw5IEBAIGludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcXG4gaW50IG10NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCk7XFxuK1xcdFxcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwLCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4raW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbitcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7XFxuIGludCBtdDc5MjVfbWN1X3NldF9tbG9fcm9jKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIHN0cnVjdCBtdDc5MnhfYnNzX2NvbmYgKm1jb25mLFxcbiBcXHRcXHRcXHQgICB1MTYgc2VsX2xpbmtzLCBpbnQgZHVyYXRpb24sIHU4IHRva2VuX2lkKTtcXG4gaW50IG10NzkyNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jXFxuaW5kZXggZjRiZWI3ZjUyMDQzYy4uNWE4NWRlOWE0YzY3OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcXG5AQCAtMTM3LDE0ICsxMzcsMTQgQEAgbXQ3OTI1X3JlZ2RfY2hhbm5lbF91cGRhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgaW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi1cXHRcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcXG4raW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbitcXHRcXHRcXHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4gXFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LVxcdTAwM2V3aXBoeTtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgZW52KTtcXG4rXFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbkBAIC0xNjcsNyArMTY3LDcgQEAgaW50IG10NzkyNV9tY3VfcmVnZF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4gXFxuIFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuIFxcdGlmIChkZXYtXFx1MDAzZXJlZ2RfY2hhbmdlKVxcbi1cXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2FwcGx5X3JlZ2QoZGV2LCBhbHBoYTIsIGNvdW50cnlfaWVfZW52KTtcXG4rXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2VudiwgZmFsc2UpO1xcbiBcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbiBcXHRkZXYtXFx1MDAzZXJlZ2RfY2hhbmdlID0gZmFsc2U7XFxuIFxcdGRldi1cXHUwMDNlcmVnZF9pbl9wcm9ncmVzcyA9IGZhbHNlO1xcbkBAIC00NTMsNyArNDUzLDcgQEAgaW50IG10NzkyNV9yZWdkX2NoYW5nZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuIFxcdH0gZWxzZSBpZiAocGh5LVxcdTAwM2VjaGlwX2NhcCBcXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcXG4gXFx0XFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmV0dXJuIG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgRU5WSVJPTl9JTkRPT1IpO1xcbitcXHRcXHRyZXR1cm4gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBFTlZJUk9OX0lORE9PUiwgZmFsc2UpO1xcbiBcXHR9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2RfY2hhbmdlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NDguMjI4NDY3NzgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMxMTc3MTI1MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzcyOWVhZGZhY2IwMzVmYmMwYmFiYzZlOTMxYTRlYzU2YmNjM2IwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbmluZGV4IDg0YjU1ZjAwOGIzZDMuLjMwMGFkMGIwOWI2OTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTkwOCw2ICs5MDgsODYgQEAgbXQ3OTI1X2dldF9yYXRlc190YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdHJldHVybiBtdmlmLVx1MDAzZWJhc2ljX3JhdGVzX2lkeDtcbiB9XG4gXG4rc3RhdGljIHZvaWRcbittdDc5MjVfY2FsY192aWZfbnVtKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4re1xuK1x0dTMyICpudW0gPSBwcml2O1xuK1xuK1x0aWYgKCFwcml2KVxuK1x0XHRyZXR1cm47XG4rXG4rXHRzd2l0Y2ggKHZpZi1cdTAwM2V0eXBlKSB7XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQ6XG4rXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuK1x0Y2FzZSBOTDgwMjExX0lGVFlQRV9QMlBfR086XG4rXHRcdCpudW0gKz0gMTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWRcbittdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4rXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYsXG4rXHRcdFx0XHRib29sIGlzX2FkZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbitcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdmlmLVx1MDAzZXBoeTtcbitcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuK1x0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gTlVMTDtcbitcdHUzMiB2YWxpZF92aWZfbnVtID0gMDtcbitcdGVudW0gbXQ3OTJ4X3JlZ19wb3dlcl90eXBlIG9sZF9wb3dlcl90eXBlO1xuK1x0Ym9vbCBwb3dlcl90eXBlX2NoYW5nZWQgPSBmYWxzZTtcbitcbitcdG9sZF9wb3dlcl90eXBlID0gcGh5LVx1MDAzZXBvd2VyX3R5cGU7XG4rXG4rXHQvKiBUcnkgdG8gZ2V0IGNoYW5uZWwgZnJvbSBsaW5rX2NvbmYgZmlyc3QsIHRoZW4gdmlmLVx1MDAzZWJzc19jb25mLCB0aGVuIHBoeSAqL1xuK1x0aWYgKGxpbmtfY29uZiBcdTAwMjZcdTAwMjYgbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuKVxuK1x0XHRjaGFuID0gbGlua19jb25mLVx1MDAzZWNoYW5yZXEub3Blci5jaGFuO1xuK1x0ZWxzZSBpZiAodmlmLVx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuKVxuK1x0XHRjaGFuID0gdmlmLVx1MDAzZWJzc19jb25mLmNoYW5yZXEub3Blci5jaGFuO1xuK1x0ZWxzZSBpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuKVxuK1x0XHRjaGFuID0gcGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhbmRlZi5jaGFuO1xuK1xuK1x0aWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMobXQ3Nl9odyhkZXYpLFxuK1x0XHRcdFx0XHQgICAgSUVFRTgwMjExX0lGQUNFX0lURVJfUkVTVU1FX0FMTCxcbitcdFx0XHRcdFx0ICAgIG10NzkyNV9jYWxjX3ZpZl9udW0sIFx1MDAyNnZhbGlkX3ZpZl9udW0pO1xuK1xuK1x0aWYgKHZhbGlkX3ZpZl9udW0gXHUwMDNlIDEpIHtcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9ERUZBVUxUO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGlmICghaXNfYWRkKVxuK1x0XHR2aWYtXHUwMDNlYnNzX2NvbmYucG93ZXJfdHlwZSA9IElFRUU4MDIxMV9SRUdfVU5TRVRfQVA7XG4rXG4rXHRzd2l0Y2ggKHZpZi1cdTAwM2Vic3NfY29uZi5wb3dlcl90eXBlKSB7XG4rXHRjYXNlIElFRUU4MDIxMV9SRUdfU1BfQVA6XG4rXHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfU1A7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX1ZMUF9BUDpcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9WTFA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX0xQSV9BUDpcbitcdFx0cGh5LVx1MDAzZXBvd2VyX3R5cGUgPSBNVF9BUF9MUEk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBJRUVFODAyMTFfUkVHX1VOU0VUX0FQOlxuK1x0XHRwaHktXHUwMDNlcG93ZXJfdHlwZSA9IE1UX0FQX1VOU0VUO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeS1cdTAwM2Vwb3dlcl90eXBlID0gTVRfQVBfREVGQVVMVDtcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rb3V0OlxuK1x0cG93ZXJfdHlwZV9jaGFuZ2VkID0gKG9sZF9wb3dlcl90eXBlICE9IHBoeS1cdTAwM2Vwb3dlcl90eXBlKTtcbitcbitcdGlmIChwb3dlcl90eXBlX2NoYW5nZWQgXHUwMDI2XHUwMDI2IGNoYW4gXHUwMDI2XHUwMDI2IGNoYW4tXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbitcdFx0bXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgZGV2LVx1MDAzZW10NzYuYWxwaGEyLCBkZXYtXHUwMDNlY291bnRyeV9pZV9lbnYsIHRydWUpO1xuK31cbitcbiBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfc3RhICpsaW5rX3N0YSxcbkBAIC0xMDMwLDYgKzExMTAsOCBAQCBzdGF0aWMgaW50IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdFx0XHRnb3RvIG91dF9wbTtcbiBcdH1cbiBcbitcdG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGUodmlmLCBsaW5rX2NvbmYsIHRydWUpO1xuK1xuIFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgXHUwMDI2ZGV2LVx1MDAzZXBtKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzMjAsNiArMTQwMiw4IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbiBcdG10NzZfd2NpZF9jbGVhbnVwKG1kZXYsIHdjaWQpO1xuIFx0bXQ3Nl93Y2lkX21hc2tfY2xlYXIobWRldi1cdTAwM2V3Y2lkX21hc2ssIGlkeCk7XG4gXG4rXHRtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHZpZiwgbGlua19jb25mLCBmYWxzZSk7XG4rXG4gXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBcdTAwMjZkZXYtXHUwMDNlcG0pO1xuIH1cbiBcbkBAIC0xOTAwLDcgKzE5ODQsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiBcdGVyciA9IG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGRldi1cdTAwM2VtdDc2LmFscGhhMixcbi1cdFx0XHQgZGV2LVx1MDAzZWNvdW50cnlfaWVfZW52KTtcbitcdFx0XHRcdCBkZXYtXHUwMDNlY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbmluZGV4IGZhMjljNDg2YTQ1NTMuLmU0MTQ0MmIyNzYzNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0zNjI0LDcgKzM2MjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF9jaGFubmVsX2RvbWFpbik7XG4gc3RhdGljIGludFxuIF9fbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdCAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCxcbi1cdFx0ICAgICBzdHJ1Y3QgbXQ3OTI1X2NsYyAqY2xjLCB1OCBpZHgpXG4rXHRcdCAgICAgc3RydWN0IG10NzkyNV9jbGMgKmNsYywgdTggaWR4LCBib29sIHBvd2VyX3R5cGVfY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBtdDc5MjVfY2xjX3NlZ21lbnQgKnNlZztcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG5AQCAtMzY0MiwxOSArMzY0MiwzOCBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHR1OCBwYWQxO1xuIFx0XHR1OCBhbHBoYTJbMl07XG4gXHRcdHU4IHR5cGVbMl07XG4tXHRcdHU4IHJzdmRbNjRdO1xuK1x0XHR1OCBlbnZfNmc7XG4rXHRcdHU4IHJzdmRbNjNdO1xuIFx0fSBfX3BhY2tlZCByZXEgPSB7XG4gXHRcdC50YWcgPSBjcHVfdG9fbGUxNigweDMpLFxuIFxuIFx0XHQuaWR4ID0gaWR4LFxuIFx0XHQuZW52ID0gZW52X2NhcCxcbitcdFx0LmVudl82ZyA9IGRldi1cdTAwM2VwaHkucG93ZXJfdHlwZSxcbiBcdH07XG4gXHRpbnQgcmV0LCB2YWxpZF9jbnQgPSAwO1xuIFx0dTggKnBvcywgKmxhc3RfcG9zO1xuK1x0dTggdGFyZ2V0XzZnX3R5cGU7XG4gXG4gXHRpZiAoIWNsYylcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHQvKiBEZXRlcm1pbmUgdGFyZ2V0IDZHIHBvd2VyIHR5cGUgYmFzZWQgb24gcGh5LVx1MDAzZXBvd2VyX3R5cGUgKi9cbitcdHN3aXRjaCAoZGV2LVx1MDAzZXBoeS5wb3dlcl90eXBlKSB7XG4rXHRjYXNlIE1UX0FQX0xQSTpcbitcdFx0dGFyZ2V0XzZnX3R5cGUgPSAnMCc7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNVF9BUF9TUDpcbitcdFx0dGFyZ2V0XzZnX3R5cGUgPSAnMSc7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBNVF9BUF9WTFA6XG4rXHRcdHRhcmdldF82Z190eXBlID0gJzInO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHRhcmdldF82Z190eXBlID0gJzAnOyAvKiBkZWZhdWx0IHRvIExQSSAqL1xuK1x0XHRicmVhaztcbitcdH1cbitcbiBcdHJlcS52ZXIgPSBjbGMtXHUwMDNldmVyO1xuIFx0cG9zID0gY2xjLVx1MDAzZWRhdGEgKyBzaXplb2YoKnNlZykgKiBjbGMtXHUwMDNldDAubnJfc2VnO1xuIFx0bGFzdF9wb3MgPSBjbGMtXHUwMDNlZGF0YSArIGxlMzJfdG9fY3B1KCooX19sZTMyICopKGNsYy1cdTAwM2VkYXRhICsgNCkpO1xuQEAgLTM2NjYsNiArMzY4NSwyMyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIFx0XHQgICAgcnVsZS1cdTAwM2VhbHBoYTJbMV0gIT0gYWxwaGEyWzFdKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHQvKiBGaWx0ZXIgcG93ZXIgdGFibGVzIGJhc2VkIG9uIGNhbGwgc291cmNlOlxuK1x0XHQgKiBwb3dlcl90eXBlX2NoYW5nZSA9PSBmYWxzZTogZnJvbSBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKClcbitcdFx0ICogICAtIFNlbmQgMi81RyAoJy0nKSBhbmQgNkcgTFBJICgnMCcpIGFuZCA2RyBWTFAgKCcyJylcbitcdFx0ICogcG93ZXJfdHlwZV9jaGFuZ2UgPT0gdHJ1ZTogZnJvbSBtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKClcbitcdFx0ICogICAtIFNlbmQgb25seSB0aGUgc3BlY2lmaWMgNkcgcG93ZXIgdGFibGUgYmFzZWQgb24gcG93ZXJfdHlwZVxuK1x0XHQgKi9cbitcdFx0aWYgKHBvd2VyX3R5cGVfY2hhbmdlKSB7XG4rXHRcdFx0LyogT25seSBzZW5kIHRoZSBzcGVjaWZpYyA2RyBwb3dlciB0YWJsZSAqL1xuK1x0XHRcdGlmIChydWxlLVx1MDAzZXR5cGVbMF0gIT0gdGFyZ2V0XzZnX3R5cGUpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHQvKiBTZW5kIDIvNUcgYW5kIDZHIExQSSBhbmQgVkxQIG9ubHkgKi9cbitcdFx0XHRpZiAocnVsZS1cdTAwM2V0eXBlWzBdICE9ICctJyBcdTAwMjZcdTAwMjYgcnVsZS1cdTAwM2V0eXBlWzBdICE9ICcwJyBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgcnVsZS1cdTAwM2V0eXBlWzBdICE9ICcyJylcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4rXG4gXHRcdHNlZyA9IChzdHJ1Y3QgbXQ3OTI1X2NsY19zZWdtZW50ICopY2xjLVx1MDAzZWRhdGFcbiBcdFx0XHQgICsgcnVsZS1cdTAwM2VzZWdfaWR4IC0gMTtcbiBcbkBAIC0zNjk5LDcgKzM3MzUsNyBAQCBfX210NzkyNV9tY3Vfc2V0X2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxuIH1cbiBcbiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKVxuK1x0XHQgICAgICAgZW51bSBlbnZpcm9ubWVudF9jYXAgZW52X2NhcCwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopXHUwMDI2ZGV2LVx1MDAzZXBoeTtcbiBcdGludCBpLCByZXQ7XG5AQCAtMzcxNCwxMyArMzc1MCwxMyBAQCBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnZfY2FwLFxuLVx0XHRcdFx0XHQgICBwaHktXHUwMDNlY2xjW2ldLCBpKTtcbitcdFx0XHRcdFx0ICAgcGh5LVx1MDAzZWNsY1tpXSwgaSwgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuIFxuIFx0XHQvKiBJZiBubyBjb3VudHJ5IGZvdW5kLCBzZXQgXCIwMFwiIGFzIGRlZmF1bHQgKi9cbiBcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuIFx0XHRcdHJldCA9IF9fbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgXCIwMFwiLFxuIFx0XHRcdFx0XHRcdCAgIEVOVklST05fSU5ET09SLFxuLVx0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGkpO1xuK1x0XHRcdFx0XHRcdCAgIHBoeS1cdTAwM2VjbGNbaV0sIGksIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbmluZGV4IDMyMWU3MzIzNDdmMmYuLmUzZmVmNDFjYmIzMzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbkBAIC0zODUsNyArMzg1LDkgQEAgaW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBpbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KTtcbiBpbnQgbXQ3OTI1X21jdV9zZXRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdCAgICAgICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnZfY2FwKTtcbitcdFx0ICAgICAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudl9jYXAsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpO1xuK2ludCBtdDc5MjVfbWN1X2FwcGx5X3JlZ2Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcbitcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudiwgYm9vbCBwb3dlcl90eXBlX2NoYW5nZSk7XG4gaW50IG10NzkyNV9tY3Vfc2V0X21sb19yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSwgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqbWNvbmYsXG4gXHRcdFx0ICAgdTE2IHNlbF9saW5rcywgaW50IGR1cmF0aW9uLCB1OCB0b2tlbl9pZCk7XG4gaW50IG10NzkyNV9tY3Vfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcbmluZGV4IGY0YmViN2Y1MjA0M2MuLjVhODVkZTlhNGM2NzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuY1xuQEAgLTEzNywxNCArMTM3LDE0IEBAIG10NzkyNV9yZWdkX2NoYW5uZWxfdXBkYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyBpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4tXHRcdFx0XHQgIGVudW0gZW52aXJvbm1lbnRfY2FwIGVudilcbitpbnQgbXQ3OTI1X21jdV9hcHBseV9yZWdkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4rXHRcdFx0ICBlbnVtIGVudmlyb25tZW50X2NhcCBlbnYsIGJvb2wgcG93ZXJfdHlwZV9jaGFuZ2UpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XG4gXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gaHctXHUwMDNld2lwaHk7XG4gXHRpbnQgcmV0O1xuIFxuLVx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYpO1xuK1x0cmV0ID0gbXQ3OTI1X21jdV9zZXRfY2xjKGRldiwgYWxwaGEyLCBlbnYsIHBvd2VyX3R5cGVfY2hhbmdlKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdHJldHVybiByZXQ7XG4gXG5AQCAtMTY3LDcgKzE2Nyw3IEBAIGludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXG4gXG4gXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuIFx0aWYgKGRldi1cdTAwM2VyZWdkX2NoYW5nZSlcbi1cdFx0cmV0ID0gbXQ3OTI1X21jdV9hcHBseV9yZWdkKGRldiwgYWxwaGEyLCBjb3VudHJ5X2llX2Vudik7XG4rXHRcdHJldCA9IG10NzkyNV9tY3VfYXBwbHlfcmVnZChkZXYsIGFscGhhMiwgY291bnRyeV9pZV9lbnYsIGZhbHNlKTtcbiBcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gXHRkZXYtXHUwMDNlcmVnZF9jaGFuZ2UgPSBmYWxzZTtcbiBcdGRldi1cdTAwM2VyZWdkX2luX3Byb2dyZXNzID0gZmFsc2U7XG5AQCAtNDUzLDcgKzQ1Myw3IEBAIGludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuIFx0fSBlbHNlIGlmIChwaHktXHUwMDNlY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF8xMURfRU4pIHtcbiBcdFx0cmV0dXJuIHJlZ3VsYXRvcnlfaGludCh3aXBoeSwgYWxwaGEyKTtcbiBcdH0gZWxzZSB7XG4tXHRcdHJldHVybiBtdDc5MjVfbWN1X3NldF9jbGMoZGV2LCBhbHBoYTIsIEVOVklST05fSU5ET09SKTtcbitcdFx0cmV0dXJuIG10NzkyNV9tY3Vfc2V0X2NsYyhkZXYsIGFscGhhMiwgRU5WSVJPTl9JTkRPT1IsIGZhbHNlKTtcbiBcdH1cbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2RfY2hhbmdlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjQ4LjIyODQ5MDUyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzU2ODU4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciB3aXRoaW4gTWVkaWFUZWsncyBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyBsaWtlIGl0J3MgYWRkaW5nIHNvbWUgZnVuY3Rpb25hbGl0eSB0byBkZWFsIHdpdGggNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSwgTFBJLCBTUCwgYW5kIFZMUC4gQW5kLCBpdCBtZW50aW9ucyBhcHBseWluZyByZWd1bGF0b3J5IHVwZGF0ZXMgdXNpbmcgdGhlIE1DVS4gVGhhdCdzIGEgY3JpdGljYWwgYXJlYTsgdGhpcyBraW5kIG9mIHVwZGF0ZSBjYW4gYmUgdHJpY2t5LlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIG5ldyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eS4gU2luY2UgdGhlIGBtdDc5MjVgIGRyaXZlciBoYW5kbGVzIE1lZGlhVGVrIE1UNzkyNSBQQ0llL1VTQiB3aXJlbGVzcyBkZXZpY2Vz4oCmIGhhbmcgb24sIGlzIGl0IFBDSWUgKm9yKiBVU0I/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQuIExldCBtZSBxdWlja2x5IHNlYXJjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciBmaWxlcyB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzAwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NTYuMzY0MTgxMzQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtdDc5MjUuaFwiLFxuICAgIFwibmFuLmNcIixcbiAgICBcIm5hbi5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInRlc3Rtb2RlLmNcIixcbiAgICBcInVzYi5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjU2LjM2NDI4MjQ2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NTE1NzQ4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1UNzkyNSBVU0IgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBzeXN0ZW0gaGFzIGJvdGggYHBjaS5jYCBhbmQgYHVzYi5jYCDigJMgaW50ZXJlc3RpbmcuIFRoZSBwcmVzZW5jZSBvZiBhIFVTQiBkcml2ZXIgaW1tZWRpYXRlbHkgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLiBJJ20gdGhpbmtpbmcsIHNpbmNlIGl0J3MgVVNCLCB3ZSBjb3VsZCBlbXVsYXRlIGl0IHVzaW5nIGEgVVNCIGdhZGdldCBvciBldmVuIGEgZHVtbXkgSENELiBCdXQgdGhlbiBJIHJlbWVtYmVyIFN5emthbGxlciEgV2FpdCwgU3l6a2FsbGVyICpkb2VzKiBoYXZlIHN1cHBvcnQgZm9yIGZ1enppbmcgVVNCIGRldmljZXMgdXNpbmcgdmhjaSwgZG9lc24ndCBpdD8gWWVzISBUaGF0J3MgaXQsIHRoZSBVU0IgZHJpdmVyIGlzIGRlZmluaXRlbHkgZnV6emVkLWFibGUgdXNpbmcgU3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgZnJhbWV3b3JrLiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgbXQ3OTI1YCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIG9wdGlvbnMgYXJlLiBUaGlzIGNvdWxkIGJlIHByb21pc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MToxNS44ODAwMzQzMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3NTkzODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE1Ljk0MTgwMDI0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mjg0MDU1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBNVDc5MjVVKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGBNVDc5MjVVYCBkZXBlbmRzIG9uLiBXaGF0IGFyZSB0aGUgc3VwcG9ydGluZyBlbGVtZW50cywgdGhlIHByZS1yZXF1aXNpdGVzLCB0aGUgb3RoZXIgY29tcG9uZW50cyB0aGF0IGFyZSBpbnRlcndvdmVuIHdpdGggdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSBvciB0ZWNobm9sb2d5PyBXaGF0IG90aGVyIHBpZWNlcyBvZiB0aGUgcHV6emxlIGRvZXMgaXQgY29ubmVjdCB3aXRoPyBUaGlzIGlzbid0IGp1c3QgYWJvdXQgbGlzdGluZyBkZXBlbmRlbmNpZXMsIGJ1dCB1bmRlcnN0YW5kaW5nIHRoZSAqKm5hdHVyZSoqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgaGFyZHdhcmUsIGZpcm13YXJlLCBkcml2ZXJzLCBzcGVjaWZpYyBzb2Z0d2FyZSBsaWJyYXJpZXMsIG9yIGV4dGVybmFsIHN5c3RlbXM/IEFyZSB0aGVzZSBkZXBlbmRlbmNpZXMgY3JpdGljYWwsIG9wdGlvbmFsLCBvciBzb21ldGhpbmcgaW4gYmV0d2Vlbj8gQXJlIHRoZXJlIGNhc2NhZGluZyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYnVyaWVkIHdpdGhpbiB0aGUgb3RoZXIgZGVwZW5kZW5jaWVzP1xuSSdsbCBuZWVkIHRvIGRpZyBkZWVwIGFuZCB0cnkgYW5kIGdldCBhIGdyYXNwIG9mIGhvdyB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgdGVjaG5vbG9neSBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQwNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE5LjM3MDIwOTA1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjE5LjM3MDM1MzY5N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODAwMTc5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoaXMgYE1UNzkyNVVgIG1vZHVsZSByZWxpZXMgaGVhdmlseSBvbiBgTUFDODAyMTFgIGFuZCB0aGUgYFVTQmAgc3Vic3lzdGVtLCB3aGljaCBpcyBhIGZhaXJseSBzdGFuZGFyZCBzZXR1cCBmb3IgYSBVU0Igd2lyZWxlc3MgZGV2aWNlLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLCBhbmQgYF9fbXQ3OTI1X21jdV9zZXRfY2xjYC4gVGhleSdyZSBzY2F0dGVyZWQgYWNyb3NzIGBtYWluLmNgIGFuZCBgbWN1LmNgLCBib3RoIG9mIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSBgTVQ3OTI1X0NPTU1PTmAgY29kZWJhc2UsIHdoaWNoIGdpdmVzIGEgaGludCBhYm91dCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIuXG5cblRoZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyBob3cgdGhlc2UgZnVuY3Rpb25zLCBwYXJ0aWN1bGFybHkgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCwgYXJlIGFjdHVhbGx5IHRyaWdnZXJlZC4gR2l2ZW4gdGhlIGRlcGVuZGVuY3kgb24gYE1BQzgwMjExYCwgaXTigJlzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZGAgaXMgaG9va2VkIGludG8gYE1BQzgwMjExYCdzIGNhbGxiYWNrIHN5c3RlbS4gQWRkaW5nIG9yIHJlbW92aW5nIHN0YXRpb25zIGlzIGEgY29yZSBvcGVyYXRpb24gd2l0aGluIGEgd2lyZWxlc3MgbmV0d29yaywgc28gaXTigJlzIGxvZ2ljYWwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIGludm9sdmVkIHdoZW4gYSBzdGF0aW9uIGNvbm5lY3RzIG9yIGRpc2Nvbm5lY3RzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24gbm93IGJ5IGV4YW1pbmluZyB0aGUgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBmdW5jdGlvbiBpdHNlbGYgYW5kIGhvdyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBgTUFDODAyMTFgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTM2LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjQuNTUwMzc2MTkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njg0Mjg2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTkzMj1tdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo5OTE6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfc3RhX2FkZChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTk5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTExNzM9bXQ3OTI1X21hY19zdGFfYWRkX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMS1cXHRcXHRsaW5rX3N0YSA9IG10NzkyeF9zdGFfdG9fbGlua19zdGEodmlmLCBzdGEsIGxpbmtfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjAyOlxcdFxcdGVyciA9IG10NzkyNV9tYWNfbGlua19zdGFfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHZpZiwgbGlua19zdGEsIG1saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIwMy1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTIyND1pbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQxLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjEyNDI6XFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX3N0YV9hZGQobWRldiwgdmlmLCBcXHUwMDI2c3RhLVxcdTAwM2VkZWZsaW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjQzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtc3RhLVxcdTAwM2VkZWZsaW5rKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjQuNjE3MjI0MTA2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzEwNTU3NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipWZXJpZmljYXRpb24gb2YgYG10NzkyNV9tYWNfc3RhX2FkZGAgYXMgYSBtYWM4MDIxMSBDYWxsYmFjayoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGluIHF1ZXN0aW9uLCBgbXQ3OTI1X21hY19zdGFfYWRkYCwgaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBgc3RhX2FkZGAgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmsuIFRoaXMgbWVhbnMgaXQncyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBtYWM4MDIxMSBjb3JlIHdoZW4gYSBuZXcgc3RhdGlvbiAoU1RBKSwgZXNzZW50aWFsbHkgYSB3aXJlbGVzcyBjbGllbnQsIG5lZWRzIHRvIGJlIGFkZGVkIG9yIHJlZ2lzdGVyZWQgd2l0aCBhIE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIChNQUMpIGRldmljZSB0aGF0J3MgYmFzZWQgb24gdGhlIE1UNzkyNSBjaGlwc2V0LlxuXG5HaXZlbiB0aGF0IGNsYWltLCBteSBmaXJzdCBpbnN0aW5jdCwgYXMgYSBuZXR3b3JraW5nIHNwZWNpYWxpc3QsIGlzIHRvIGltbWVkaWF0ZWx5IHZlcmlmeSB0aGlzIGFzc2VydGlvbi4gSSB3YW50IHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyBjb3JyZWN0bHkgaG9va2VkIHVwIGFuZCBmdW5jdGlvbnMgYXMgdGhlIGludGVuZGVkIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBTVEEgYWRkaXRpb25zIHdpdGhpbiB0aGUgTVQ3OTI1IGRyaXZlcidzIGludGVncmF0aW9uIHdpdGggbWFjODAyMTEuIEl0J3MgY3J1Y2lhbCB0aGlzIGlzIGNvcnJlY3Q7IG90aGVyd2lzZSwgdGhlIGRyaXZlcidzIGFzc29jaWF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIHdpcmVsZXNzIGNsaWVudHMgd2lsbCBiZSBjb21wbGV0ZWx5IGJyb2tlbi4gVGhpcyBtZWFucyBJIHdvdWxkIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLCB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHJlZ2lzdGVyZWQgaW4gdGhlbSwgYW5kIGxpa2VseSB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgaXQncyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzUxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MjguODQ4Mjg0MjY4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc2NTYzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVfbWFjX3N0YV9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xMTcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTE3MzptdDc5MjVfbWFjX3N0YV9hZGRfbGlua3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTE3NC1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdW5zaWduZWQgbG9uZyBuZXdfbGlua3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTIyNDppbnQgbXQ3OTI1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTIyNS1cXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjQwOlxcdFxcdGVyciA9IG10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhkZXYsIHZpZiwgc3RhLCBzdGEtXFx1MDAzZXZhbGlkX2xpbmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTI0MS1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxMjQ4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfc3RhX2FkZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTEyNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjQwMj1tdDc5MjVfY2hhbmdlX3N0YV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNDE5OlxcdGVyciA9IG10NzkyNV9tYWNfc3RhX2FkZF9saW5rcyhkZXYsIHZpZiwgc3RhLCBhZGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNDIwLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzAxPWludCBtdDc5MjVfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzAyOmludCBtdDc5MjVfbWFjX3N0YV9hZGQoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMwMy1cXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01Mjg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTQ0LVxcdFxcdC5yeF9wb2xsX2NvbXBsZXRlID0gbXQ3OTJ4X3J4X3BvbGxfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ1OlxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2NC1cXHRcXHQucnhfY2hlY2sgPSBtdDc5MjVfcnhfY2hlY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTY1OlxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjI4LjkyMzA1NTU5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzkzNDgxOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBgbXQ3OTI1X21hY19zdGFfYWRkYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgdXNlZCBpbiBib3RoIFBDSSBhbmQgVVNCIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIuIFRoYXQncyBnb29kIG5ld3M7IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gb3BlbnMgdXAgdGhlIHBvc3NpYmlsaXR5IG9mIHRlc3RpbmcgaXQgdXNpbmcgdmhjaSwgd2hpY2ggaXMgYWx3YXlzIGVhc2llciB0byBtYW5hZ2UgZm9yIGZ1enppbmcuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgdG91Y2hpbmcgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYCB0byBjYWxsIGBtdDc5MjVfcmVnZF9zZXRfNmdoel9wb3dlcl90eXBlYCwgcGx1cyBgbXQ3OTI1X21jdV9zZXRfY2xjYCBhbmQgYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAsIHNvIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgdnVsbmVyYWJsZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCBjb3JyZWN0bHkuXG5cbkZpcnN0LCBJIG5lZWQgdG8gZW5hYmxlIGBNVDc5MjVVYC4gVGhhdCdzIHRoZSBrZXkuIGBNVDc5MjVFYCB3b3VsZCBhbHNvIGJlIGdvb2QgdG8gdGVzdCwgYnV0IHNpbmNlIHZoY2kgd2lsbCBiZSB1c2VkLCBgTVQ3OTI1VWAgaXMgdGhlIG9idmlvdXMgY2hvaWNlIGZvciBpbml0aWFsIGZ1enppbmcuIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBzbyB0aG9zZSBzaG91bGQgYWxyZWFkeSBiZSBhY2NvdW50ZWQgZm9yLiBBaCwgYE1UNzkyNV9DT01NT05gIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBzbyBub3RoaW5nIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBTbyBlbmFibGluZyBgTVQ3OTI1VWAgYW5kIGBNVDc5MjVFYCBzaG91bGQgY292ZXIgdXMuXG5cbk5vdywgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBTaW5jZSB0aGUgbGluayBmdW5jdGlvbnMgYXJlIHN0YXRpYywgSSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBhbmQgYG10NzkyNV9tY3Vfc2V0X2NsY2AuXG5cbkp1c3QgbmVlZCB0byBjb25maXJtIHRoYXQgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAgYWN0dWFsbHkgZXhpc3RzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTk5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjM3LjMxNjUzOTcxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA1OTk4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21hY19zdGFfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTQxMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0MTE6bXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0MTItXFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHVuc2lnbmVkIGxvbmcgb2xkX2xpbmtzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE0NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE0Nzg6dm9pZCBtdDc5MjVfbWFjX3N0YV9yZW1vdmUoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNDc5LVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUxNS1cXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTE2OlxcdFxcdG10NzkyNV9tYWNfc3RhX3JlbW92ZV9saW5rcyhkZXYsIHZpZiwgc3RhLCBtc3RhLVxcdTAwM2V2YWxpZF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MTctXFx0XFx0bXQ3OTI1X21jdV9kZWxfZGV2KG1kZXYsIHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUyOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE1MzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY19zdGFfcmVtb3ZlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNDAyPW10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI0MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI0MTU6XFx0ZXJyID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlX2xpbmtzKGRldiwgdmlmLCBzdGEsIHJlbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI0MTYtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zMDU9aW50IG10NzkyNV9tYWNfc3RhX2V2ZW50KHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMDYtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGVudW0gbXQ3Nl9zdGFfZXZlbnQgZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMwNzp2b2lkIG10NzkyNV9tYWNfc3RhX3JlbW92ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzA4LVxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTI4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0Ni1cXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTQ3OlxcdFxcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU0OC1cXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTY2LVxcdFxcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjc6XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTY4LVxcdFxcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MTozNy40MDcxNDYwMDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYzMTczNjcxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1UNzkyNSBEcml2ZXIgU3ltYm9sIEV4cG9ydCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIHN5bWJvbCBleHBvcnQgc3RhdHVzIG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBNVDc5MjUgZHJpdmVyLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCBpcyBwcmVzZW50IGFuZCwgY3J1Y2lhbGx5LCBpdCdzIGV4cG9ydGVkLCBzbyB0aGF0J3MgZ29vZC5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLiBIbW0sIGluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgaXQgKndhc24ndCogZXhwb3J0ZWQuIEJ1dCB3YWl0IGEgc2Vjb25kLCB0aGlzIGlzIGEgYml0IGRlY2VwdGl2ZSwgaXNuJ3QgaXQ/IFRoZSBwYXRjaCBoaXN0b3J5IHNob3dzIGl0IHdhcyBjaGFuZ2VkIGZyb20gYSBgc3RhdGljIGludGAgdG8gYSBwbGFpbiBgaW50YCwgYW5kIGl0J3MgYmVlbiBpbmNsdWRlZCBpbiBgbXQ3OTI1LmhgIG5vdy4gVGhhdCBtZWFucyBpdCdzIG5vIGxvbmdlciBzdGF0aWMsIGFuZCB0aGF0IG1ha2VzIGFsbCB0aGUgZGlmZmVyZW5jZSDigJMgaXQncyBlZmZlY3RpdmVseSBleHBvcnRlZCBub3cgYnkgdmlydHVlIG9mIHRoYXQgY2hhbmdlLlxuXG5BbHJpZ2h0LCBtb3Zpbmcgb24sIGBtdDc5MjVfbWN1X3NldF9jbGNgIGlzIG5vbi1zdGF0aWMgYXMgd2VsbC4gR29vZC5cblxuYG10NzkyNV9yZWdkX2NoYW5nZWAgaXMgZGVmaW5pdGVseSBleHBvcnRlZC5cblxuU28sIHRha2luZyBzdG9jayBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLCBteSBsaXN0IG9mIHRoZSBzeW1ib2xzIHRoYXQgc2hvdWxkIGJlIGluIGZvY3VzLCBnaXZlbiB0aGUgY2hhbmdlcywgbm93IGlzOlxuXG4tICAgYG10NzkyNV9tYWNfc3RhX2FkZGBcbi0gICBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYFxuLSAgIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgXG4tICAgYG10NzkyNV9tY3Vfc2V0X2NsY2Bcbi0gICBgbXQ3OTI1X3JlZ2RfY2hhbmdlYFxuLSAgIGBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlYFxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgaWYgYG10NzkyNV9tY3VfcmVnZF91cGRhdGVgIGV2ZW4gZXhpc3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM5MywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjowMy43MjQ1MTU0NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjI5OTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTM2MjU9X19tdDc5MjVfbWN1X3NldF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2ODgtXFx0XFx0LyogRmlsdGVyIHBvd2VyIHRhYmxlcyBiYXNlZCBvbiBjYWxsIHNvdXJjZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzozNjg5OlxcdFxcdCAqIHBvd2VyX3R5cGVfY2hhbmdlID09IGZhbHNlOiBmcm9tIG10NzkyNV9tY3VfcmVnZF91cGRhdGUoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM2OTAtXFx0XFx0ICogICAtIFNlbmQgMi81RyAoJy0nKSBhbmQgNkcgTFBJICgnMCcpIGFuZCA2RyBWTFAgKCcyJylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTgyND1zdGF0aWMgaW50IF9tdDc5MjVfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGJvb2wgcmVzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4ODA6XFx0bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShkZXYsIG1kZXYtXFx1MDAzZWFscGhhMiwgZGV2LVxcdTAwM2Vjb3VudHJ5X2llX2Vudik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtODgxLWZhaWxlZDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0xNDA9aW50IG10NzkyNV9tY3VfYXBwbHlfcmVnZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqYWxwaGEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MTYxOmludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE2Mi1cXHRcXHRcXHQgICBlbnVtIGVudmlyb25tZW50X2NhcCBjb3VudHJ5X2llX2VudilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0xNzctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzoxNzg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9yZWdkX3VwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9MTgwPXZvaWQgbXQ3OTI1X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6MjE3OlxcdG10NzkyNV9tY3VfcmVnZF91cGRhdGUoZGV2LCByZXEtXFx1MDAzZWFscGhhMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMjE4LVxcdFxcdFxcdCAgICAgICByZXEtXFx1MDAzZWNvdW50cnlfaWVfZW52KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0yOTE9aW50IG10NzkyNV9yZWdkX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmMtMzY3LVxcdGRldi1cXHUwMDNlcmVnZF9jaGFuZ2UgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYzozNjg6XFx0bXQ3OTI1X21jdV9yZWdkX3VwZGF0ZShkZXYsIGFscGhhMiwgRU5WSVJPTl9BTlkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmg9NDM9c3RydWN0IG10NzkyNV9yZWdkX3F1ZXJ5X3JlcSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmgtNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5oOjYyOmludCBtdDc5MjVfbWN1X3JlZ2RfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5oLTYzLVxcdFxcdFxcdCAgIGVudW0gZW52aXJvbm1lbnRfY2FwIGNvdW50cnlfaWVfZW52KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDI6MDMuODA4NzQ5MzY4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjA5Mzc0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gYG10NzkyNV9tY3VfcmVnZF91cGRhdGVgIGRlZmluaXRlbHkgZXhpc3RzLCB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIHN0YXRpYyBmdW5jdGlvbiwgYG10NzkyNV9yZWdkX3NldF82Z2h6X3Bvd2VyX3R5cGVgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgd2hlcmUgaXQncyBjYWxsZWQgZnJvbTogYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBhbmQgYG10NzkyNV9tYWNfbGlua19zdGFfcmVtb3ZlYC4gU2luY2UgYG10NzkyNV9tYWNfbGlua19zdGFfYWRkYCBpcyBzdGF0aWMsIHRoYXQgaW1wbGllcyBpdCBpcyBjYWxsZWQgb25seSBmcm9tIGBtdDc5MjVfbWFjX3N0YV9hZGRgLiBUaHVzLCB0aGUgZnVuY3Rpb25zIGBtdDc5MjVfbWFjX3N0YV9hZGRgIGFuZCBgbXQ3OTI1X21hY19zdGFfcmVtb3ZlYCBzZWVtIGxpa2UgbG9naWNhbCBlbnRyeSBwb2ludHMgdG8gb2JzZXJ2ZSB0aGUgZWZmZWN0cyBvZiB0aGlzIHBhdGNoLlxuXG5JIHNob3VsZCB2ZXJpZnkgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGV4aXN0LiBMZXQncyBzZWUuLi4gYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIHdoaWxlIGBNVDc5MjVFYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBMaXN0aW5nIGJvdGggYE1UNzkyNVVgIGFuZCBgTVQ3OTI1RWAgc2VlbXMgc3VmZmljaWVudCB0byBjYXB0dXJlIHRoZSBkZXBlbmRlbmNpZXMuXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgd2VyZSBtb2RpZmllZC4gQWgsIGBtdDc5MjVfc2V0X3Nhcl9zcGVjc2AgaXMgY2hhbmdlZDogaXQgbm93IHBhc3NlcyBgZmFsc2VgIHRvIGBtdDc5MjVfbWN1X3NldF9jbGNgLiBOb3cgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBtdDc5MjVfc2V0X3Nhcl9zcGVjc2AgaXMgZXhwb3J0ZWQgb3Igc3RhdGljLiBUaGF0IHdpbGwgZGV0ZXJtaW5lIGhvdyB3aWRlbHkgdGhpcyBtb2RpZmljYXRpb24gcmlwcGxlcyB0aHJvdWdoIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mzc3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjEwLjg2OTY5MDQ0OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MzI1ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3NldF9zYXJfc3BlY3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xOTYzPWludCBtdDc5MjVfc2V0X3R4X3Nhcl9wd3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTk3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTk3OTpzdGF0aWMgaW50IG10NzkyNV9zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xOTgwLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yODAwPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjg0Ny1cXHQuZmx1c2ggPSBtdDc5MnhfZmx1c2gsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4NDg6XFx0LnNldF9zYXJfc3BlY3MgPSBtdDc5MjVfc2V0X3Nhcl9zcGVjcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjg0OS1cXHQucmVtYWluX29uX2NoYW5uZWwgPSBtdDc5MjVfcmVtYWluX29uX2NoYW5uZWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjEwLjkzMDYyODQxM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzgwMzY2MDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0FSIFNwZWNpZmljYXRpb25zIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc2V0X3Nhcl9zcGVjc2AgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoaW4gYGllZWU4MDIxMV9vcHNgLiBUaGF0IG1lYW5zIGl0J3MgYWNjZXNzaWJsZSB0aHJvdWdoIG1hYzgwMjExLCByaWdodD8gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJDYW4gSSBqdXN0IGRpcmVjdGx5IHJlZmVyZW5jZSBgbXQ3OTI1X3NldF9zYXJfc3BlY3NgP1wiIEJ1dCBiZWNhdXNlIGl0J3Mgc3RhdGljLCBpdCBjb3VsZCBiZSBpbmxpbmVkLCBvciBtaWdodCBub3QgZXZlbiBoYXZlIGEgdW5pcXVlIHN5bWJvbCBhZGRyZXNzLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgcmVnaXN0ZXJlZCBhcyBhIGNhbGxiYWNrIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgKm5vdCogaW5saW5lZC5cblxuVGhlIGtleSB0aGVuIGlzIHRoYXQgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgY2FsbGVkIHdpdGhpbiB0aGUgYHNldF9zYXJfc3BlY3NgIGZ1bmN0aW9uIGFuZCAqdGhhdCogaXMgZXhwb3J0ZWQsIGl0J3Mgbm9uLXN0YXRpYy4gU28gSSBjYW4gZm9sbG93IHRoYXQuXG5cbkFscmlnaHQsIGxldCdzIGlkZW50aWZ5IHRoZSBmb2NhbCBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcyBhcmVhLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlLiBIZXJlJ3Mgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgIGBtdDc5MjVfbWFjX3N0YV9hZGRgXG4qICAgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWBcbiogICBgbXQ3OTI1X21jdV9hcHBseV9yZWdkYFxuKiAgIGBtdDc5MjVfbWN1X3NldF9jbGNgXG4qICAgYG10NzkyNV9yZWdkX2NoYW5nZWBcbiogICBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWBcblxuSGFuZyBvbiBhIHNlY29uZC4gYG10NzkyNV9tY3VfYXBwbHlfcmVnZGAgaXMgbm9uLXN0YXRpYywgYnV0IGlzIGl0IGV4cG9ydGVkPyBUaGF0J3MgdGhlIG1pc3NpbmcgcGllY2UuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQncyBhY3R1YWxseSB2aXNpYmxlIG91dHNpZGUgaXRzIG1vZHVsZS4gVGltZSB0byBjaGVjay4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjUxOCwiT3V0cHV0VG9rZW5zIjo2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoxOS43MTA5OTY0MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDU5NDM5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzkyNV9tY3VfYXBwbHlfcmVnZFxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDI6MTkuODE1NTk4ODI1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTI4NTk0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24ncyBTY29wZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpc24ndCBleHBvcnRlZCwgYnV0IHRoZSBnb29kIG5ld3MgaXMsIGl0J3MgKm5vdCogZGVjbGFyZWQgYXMgc3RhdGljIGVpdGhlci4gVGhhdCdzIGFjdHVhbGx5IGEgcHJldHR5IHN0YW5kYXJkIGFuZCBhY2NlcHRhYmxlIHNldHVwLiBJdCBpbXBsaWVzIHRoYXQgd2hpbGUgaXQncyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgbW9kdWxlIHVzZSwgaXQncyBzdGlsbCBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBvZmZlcnMgdGhlIGZsZXhpYmlsaXR5IG9mIGludGVyLWZpbGUgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIgaWYgbmVlZGVkLiBObyByZWQgZmxhZ3MgaGVyZS4gVGhpcyBpcyBwZXJmZWN0bHkgd29ya2FibGUuXG5cbk5vdywgbGV0J3MgbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgb3V0IHdoYXQgYG10NzkyNV9tY3Vfc2V0X2NsY2AgaXMgYWJvdXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBkZWZpbml0aW9uIGFuZCB1c2FnZSBvZiB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyNDcsIk91dHB1dFRva2VucyI6NjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoyMy43Mjg0NjA1MTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTkyODExLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwobXQ3OTI1X21jdV9zZXRfY2xjXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MjoyMy44MjAwNjA3MzJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2MTQ0NDU0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25zaWRlcmluZyBOb24tU3RhdGljLCBOb24tRXhwb3J0ZWQgVmFyaWFibGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcncyBjYXVnaHQgbXkgZXllOiBhIHZhcmlhYmxlIHRoYXQncyAqbm90KiBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIG1vZHVsZSwgYnV0IGFsc28gKm5vdCogc3RhdGljLCB3aGljaCBtZWFucyBpdCBwb3RlbnRpYWxseSBoYXMgYnJvYWRlciBzY29wZSB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBhbmQgaXQgYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2hlcmUgYW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3lzdGVtLiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgbGVha2luZyBzb21lIHZhbHVlIGl0IHNob3VsZG4ndCBiZS5cblxuVGhlIG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGludmVzdGlnYXRlIGBtdDc5MjVfcmVnZF9jaGFuZ2VgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgYSBsaWtlbHkgcGxhY2UgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCB3aGF0ZXZlciB0aGlzIHZhcmlhYmxlIGlzLiBJJ2xsIHN0YXJ0IHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgdmFyaWFibGUgZmFjdG9ycyBpbnRvIHRoZSBsb2dpYyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biBleGFjdGx5IGhvdyB0aGlzIHZhcmlhYmxlIGlzIGJlaW5nIGhhbmRsZWQgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzUzNSwiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjM2LjQzNDUwOTU0OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyNzU0NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTF9HUExcXFxcKG10NzkyNV9yZWdkX2NoYW5nZVxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9NDI4PWludCBtdDc5MjVfcmVnZF9jaGFuZ2Uoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTQ1OC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjQ1OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnZF9jaGFuZ2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy00NjAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjM2LjUxNjc5MDc0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNzMwMDk1NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVhZHkgZm9yIHJldmlldy4gSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggZXhwb3J0ZWQgc3ltYm9scyByZWxhdGVkIHRvIHRoZSBNZWRpYVRlayBtdDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNlZCBvbiBzdGF0aW9uIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBgbXQ3OTI1X21hY19zdGFfYWRkYCwgYG10NzkyNV9tYWNfc3RhX3JlbW92ZWAsIGBtdDc5MjVfbWN1X2FwcGx5X3JlZ2RgLCBgbXQ3OTI1X21jdV9zZXRfY2xjYCwgYG10NzkyNV9yZWdkX2NoYW5nZWAsIGFuZCBgbXQ3OTI1X21jdV9yZWdkX3VwZGF0ZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy5cblxuVGhlIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUgYXJlIGBNVDc5MjVVYCBhbmQgYE1UNzkyNUVgLiBUaGUgcGF0Y2gncyBkZXNjcmlwdGlvbiBoaWdobGlnaHRzIHRoZSBoYW5kbGluZyBvZiA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyBhbmQgdGhlIHJlZ3VsYXRvcnkgdXBkYXRlcyBtYW5hZ2VkIHRocm91Z2ggdGhlIE1DVS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGV4cG9zZWQgdGhyb3VnaCB0aGUgbWFjODAyMTEgaW50ZXJmYWNlLCBtZWFuaW5nIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcyB3aWxsIHRyaWdnZXIgdGhpcy4gVGhpcyBoYXMgZnV6emluZyB3cml0dGVuIGFsbCBvdmVyIGl0OyB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2UgZnVuY3Rpb25zIGFyZSByaXBlIGZvciB0ZXN0aW5nLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIExldCdzIHNlZS4uLiBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFBDSWAuIFNpbmNlIGBNQUM4MDIxMWAgaXMgYSBjb21tb24gc3Vic3lzdGVtIGRlcGVuZGVuY3ksIEkgd2lsbCBpbmNsdWRlIGBNVDc5MjVVYCwgYE1UNzkyNUVgLCBhbmQgYE1BQzgwMjExYCBpbiBteSBjb25maWd1cmF0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQuXG5cbkFscmlnaHQsIHRoYXQgY292ZXJzIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQuIEknbGwgZmxhZyBpdCBmb3IgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMTUsIk91dHB1dFRva2VucyI6MjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQyOjU5LjI0Njg4OTU1M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODcwMDM1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9hZGRcIixcbiAgICBcIm10NzkyNV9tYWNfc3RhX3JlbW92ZVwiLFxuICAgIFwibXQ3OTI1X21jdV9hcHBseV9yZWdkXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NldF9jbGNcIixcbiAgICBcIm10NzkyNV9yZWdkX2NoYW5nZVwiLFxuICAgIFwibXQ3OTI1X21jdV9yZWdkX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSA2R0h6IHBvd2VyIHR5cGUgY2hhbmdlcyAoTFBJLCBTUCwgVkxQKSBhbmQgYXBwbHkgcmVndWxhdG9yeSB1cGRhdGVzIHZpYSB0aGUgTUNVLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTEgb3BlcmF0aW9ucyBzdWNoIGFzIGFkZGluZy9yZW1vdmluZyBzdGF0aW9ucyBhbmQgcmVndWxhdG9yeSBkb21haW4gdXBkYXRlcy4gVGhlIE1UNzkyNSBkcml2ZXIgaW5jbHVkZXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4sIHZoY2kpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY19zdGFfYWRkXCIsXG4gICAgXCJtdDc5MjVfbWFjX3N0YV9yZW1vdmVcIixcbiAgICBcIm10NzkyNV9tY3VfYXBwbHlfcmVnZFwiLFxuICAgIFwibXQ3OTI1X21jdV9zZXRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcmVnZF9jaGFuZ2VcIixcbiAgICBcIm10NzkyNV9tY3VfcmVnZF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byBoYW5kbGUgNkdIeiBwb3dlciB0eXBlIGNoYW5nZXMgKExQSSwgU1AsIFZMUCkgYW5kIGFwcGx5IHJlZ3VsYXRvcnkgdXBkYXRlcyB2aWEgdGhlIE1DVS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExIG9wZXJhdGlvbnMgc3VjaCBhcyBhZGRpbmcvcmVtb3Zpbmcgc3RhdGlvbnMgYW5kIHJlZ3VsYXRvcnkgZG9tYWluIHVwZGF0ZXMuIFRoZSBNVDc5MjUgZHJpdmVyIGluY2x1ZGVzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuLCB2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[1] Phase: Succeeded StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 06:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 06:43:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2] Phase: Succeeded StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 07:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 07:51:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 06:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 06:43:11 +0000 UTC FinishedAt: 2026-08-04 06:43:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowqm97h/series-workflowqm97h-convert-artifact-843231912/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 06:43:21 +0000 UTC FinishedAt: 2026-08-04 07:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 06:43:21 +0000 UTC FinishedAt: 2026-08-04 07:17:02 +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:*23321b83-392a-4865-9018-eee34610c56d,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-workflowqm97h/series-workflowqm97h-convert-artifact-843231912/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": "871699ef-b16f-4425-980e-3f310241b1c9", "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-workflowqm97h/series-workflowqm97h-build-action-2669881630/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 06:43:21 +0000 UTC FinishedAt: 2026-08-04 07:16:47 +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:*23321b83-392a-4865-9018-eee34610c56d,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-workflowqm97h/series-workflowqm97h-convert-artifact-843231912/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": "871699ef-b16f-4425-980e-3f310241b1c9", "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-workflowqm97h/series-workflowqm97h-build-action-2669881630/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 07:17:02 +0000 UTC FinishedAt: 2026-08-04 07:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 07:17:02 +0000 UTC FinishedAt: 2026-08-04 07:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 07:17:02 +0000 UTC FinishedAt: 2026-08-04 07:17:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 07:17:02 +0000 UTC FinishedAt: 2026-08-04 07:17:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflowqm97h/series-workflowqm97h-convert-artifact-399227791/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 07:17:13 +0000 UTC FinishedAt: 2026-08-04 07:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 07:17:13 +0000 UTC FinishedAt: 2026-08-04 07:19:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*871699ef-b16f-4425-980e-3f310241b1c9,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-workflowqm97h/series-workflowqm97h-build-action-2669881630/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-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 07:19:35 +0000 UTC FinishedAt: 2026-08-04 07:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 07:19:35 +0000 UTC FinishedAt: 2026-08-04 07:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 07:19:35 +0000 UTC FinishedAt: 2026-08-04 07:46:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 07:19:35 +0000 UTC FinishedAt: 2026-08-04 07:46:15 +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:*23321b83-392a-4865-9018-eee34610c56d,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-workflowqm97h/series-workflowqm97h-convert-artifact-399227791/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": "5069cb71-33ab-4b52-adf1-0bf944a449f4", "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-workflowqm97h/series-workflowqm97h-build-action-2881789091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 07:19:35 +0000 UTC FinishedAt: 2026-08-04 07:46:04 +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:*23321b83-392a-4865-9018-eee34610c56d,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-workflowqm97h/series-workflowqm97h-convert-artifact-399227791/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": "5069cb71-33ab-4b52-adf1-0bf944a449f4", "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-workflowqm97h/series-workflowqm97h-build-action-2881789091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 07:46:15 +0000 UTC FinishedAt: 2026-08-04 07:46:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 07:46:15 +0000 UTC FinishedAt: 2026-08-04 07:46:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 07:46:15 +0000 UTC FinishedAt: 2026-08-04 07:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 07:46:15 +0000 UTC FinishedAt: 2026-08-04 07:48:19 +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:*5069cb71-33ab-4b52-adf1-0bf944a449f4,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-workflowqm97h/series-workflowqm97h-build-action-2881789091/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-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 07:48:41 +0000 UTC FinishedAt: 2026-08-04 07:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 07:48:41 +0000 UTC FinishedAt: 2026-08-04 07:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 07:48:44 +0000 UTC FinishedAt: 2026-08-04 07:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 07:48:44 +0000 UTC FinishedAt: 2026-08-04 07:51: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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"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:*871699ef-b16f-4425-980e-3f310241b1c9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5069cb71-33ab-4b52-adf1-0bf944a449f4,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-workflowqm97h/series-workflowqm97h-build-action-2669881630/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-workflowqm97h/series-workflowqm97h-build-action-2881789091/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 07:48:45 +0000 UTC FinishedAt: 2026-08-04 07:49:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 07:48:47 +0000 UTC FinishedAt: 2026-08-04 07:48:51 +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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"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-workflowqm97h/series-workflowqm97h-convert-artifact-401479240/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 07:48:47 +0000 UTC FinishedAt: 2026-08-04 07:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 07:49:09 +0000 UTC FinishedAt: 2026-08-04 07:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqm97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925_mac_sta_add","mt7925_mac_sta_remove","mt7925_mcu_apply_regd","mt7925_mcu_set_clc","mt7925_regd_change","mt7925_mcu_regd_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E","MAC80211"],"series_id":"693085be-424d-4a50-9662-b917153d9c2b","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 07:49:09 +0000 UTC FinishedAt: 2026-08-04 07:51:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*871699ef-b16f-4425-980e-3f310241b1c9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5069cb71-33ab-4b52-adf1-0bf944a449f4,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-workflowqm97h/series-workflowqm97h-build-action-2669881630/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-workflowqm97h/series-workflowqm97h-build-action-2881789091/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-workflowqm97h/series-workflowqm97h-convert-artifact-401479240/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,}